diff --git a/.changeset/angry-walls-fetch.md b/.changeset/angry-walls-fetch.md new file mode 100644 index 000000000..4627f660e --- /dev/null +++ b/.changeset/angry-walls-fetch.md @@ -0,0 +1,5 @@ +--- +"@hyperdx/app": patch +--- + +Remove react-select for mantine diff --git a/packages/app/package.json b/packages/app/package.json index e79e0a29f..62bcb39f0 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -86,7 +86,6 @@ "react-markdown": "^8.0.4", "react-papaparse": "^4.4.0", "react-query": "^3.39.3", - "react-select": "^5.7.0", "react-sortable-hoc": "^2.0.0", "react-useportal": "^1.0.18", "recharts": "^2.12.7", diff --git a/packages/app/src/ChartUtils.tsx b/packages/app/src/ChartUtils.tsx index c53b72eeb..a9e8517dc 100644 --- a/packages/app/src/ChartUtils.tsx +++ b/packages/app/src/ChartUtils.tsx @@ -1,6 +1,5 @@ import { useMemo, useRef } from 'react'; import { add } from 'date-fns'; -import Select from 'react-select'; import { z } from 'zod'; import { filterColumnMetaByType, @@ -197,33 +196,6 @@ export function seriesToUrlSearchQueryParam({ }); } -export function TableSelect({ - table, - setTableAndAggFn, -}: { - setTableAndAggFn: (table: SourceTable, fn: AggFn) => void; - table: string; -}) { - return ( - v.value === value)} - onChange={newValue => onChange(newValue?.value)} - classNamePrefix="ds-react-select" - /> - ); -} diff --git a/packages/app/src/GranularityPicker.tsx b/packages/app/src/GranularityPicker.tsx index 449836c0b..f942372c5 100644 --- a/packages/app/src/GranularityPicker.tsx +++ b/packages/app/src/GranularityPicker.tsx @@ -1,8 +1,8 @@ import { memo } from 'react'; import { useController, UseControllerProps } from 'react-hook-form'; +import { Select } from '@mantine/core'; import { Granularity } from './ChartUtils'; -import DSSelect from './DSSelect'; export default function GranularityPicker({ value, @@ -14,9 +14,9 @@ export default function GranularityPicker({ disabled?: boolean; }) { return ( - + onChange((v ?? undefined) as Granularity | 'auto' | undefined) + } value={value} /> ); diff --git a/packages/app/src/components/DBColumnMultiSelect.tsx b/packages/app/src/components/DBColumnMultiSelect.tsx deleted file mode 100644 index 2bb74b771..000000000 --- a/packages/app/src/components/DBColumnMultiSelect.tsx +++ /dev/null @@ -1,144 +0,0 @@ -import React, { MouseEventHandler, useMemo } from 'react'; -import { - components, - MultiValueGenericProps, - MultiValueProps, - OnChangeValue, - Props, -} from 'react-select'; -import AsyncSelect from 'react-select/async'; -import { - SortableContainer, - SortableContainerProps, - SortableElement, - SortableHandle, - SortEndHandler, -} from 'react-sortable-hoc'; - -import api from '@/api'; -import { useColumns } from '@/hooks/useMetadata'; - -// import { usePropertyOptions } from './ChartUtils'; - -function arrayMove(array: readonly T[], from: number, to: number) { - const slicedArray = array.slice(); - slicedArray.splice( - to < 0 ? array.length + to : to, - 0, - slicedArray.splice(from, 1)[0], - ); - return slicedArray; -} - -const SortableMultiValue = SortableElement( - (props: MultiValueProps<{ value: string; label: string }, true>) => { - // this prevents the menu from being opened/closed when the user clicks - // on a value to begin dragging it. ideally, detecting a click (instead of - // a drag) would still focus the control and toggle the menu, but that - // requires some magic with refs that are out of scope for this example - const onMouseDown: MouseEventHandler = e => { - e.preventDefault(); - e.stopPropagation(); - }; - const innerProps = { ...props.innerProps, onMouseDown }; - return ; - }, -); - -const SortableMultiValueLabel = SortableHandle( - (props: MultiValueGenericProps<{ value: string; label: string }, true>) => ( - - ), -); - -const SortableSelect = SortableContainer(AsyncSelect) as React.ComponentClass< - Props<{ value: string; label: string }, true> & SortableContainerProps ->; - -export default function DBColumnMultiSelect({ - values, - setValues, - database, - connectionId, - table, -}: { - database: string | undefined; - table: string | undefined; - connectionId: string | undefined; - values: string[]; - setValues: (value: string[]) => void; -}) { - const { data: columns } = useColumns({ - databaseName: database ?? '', - tableName: table ?? '', - connectionId: connectionId ?? '', - }); - - const propertyOptions = (columns ?? []).map((column: { name: string }) => ({ - value: column.name, - label: column.name, - })); - - const onChange = ( - selectedOptions: OnChangeValue<(typeof propertyOptions)[number], true>, - ) => setValues(selectedOptions.map(o => o.value)); - - const onSortEnd: SortEndHandler = ({ - oldIndex, - newIndex, - }: { - oldIndex: number; - newIndex: number; - }) => { - const newValue = arrayMove(values, oldIndex, newIndex); - setValues(newValue); - }; - - return ( - { - return Promise.resolve([ - { value: undefined, label: 'None' }, - ...propertyOptions - .filter(v => - input.length > 0 - ? v.value.toLowerCase().includes(input.toLowerCase()) - : true, - ) - .slice(0, 1000), // TODO: better surface too many results... somehow? - ]); - }} - defaultOptions={[ - { value: undefined, label: 'None' }, - ...propertyOptions - // Filter out index properties on initial dropdown - .filter(v => v.value.match(/\.\d+(\.|$)/) == null) - .slice(0, 1000), // TODO: better surface too many results... somehow? - ]} - useDragHandle - // react-sortable-hoc props: - axis="xy" - onSortEnd={onSortEnd} - distance={4} - // small fix for https://github.com/clauderic/react-sortable-hoc/pull/352: - getHelperDimensions={({ node }) => node.getBoundingClientRect()} - // react-select props: - isMulti - value={values.flatMap(v => { - const propertyOption = propertyOptions.find(o => o.value === v); - return propertyOption != null ? [propertyOption] : []; - })} - onChange={onChange} - components={{ - // @ts-ignore - MultiValue: SortableMultiValue, - // @ts-ignore - MultiValueLabel: SortableMultiValueLabel, - }} - closeMenuOnSelect={false} - /> - ); -} diff --git a/packages/app/styles/AppNav.module.scss b/packages/app/styles/AppNav.module.scss index 16bc37445..363d9a3ac 100644 --- a/packages/app/styles/AppNav.module.scss +++ b/packages/app/styles/AppNav.module.scss @@ -35,7 +35,7 @@ text-transform: uppercase; font-size: 11px; letter-spacing: 1px; - margin-bottom: 2x; + margin-bottom: 2px; margin-top: 6px; padding-left: 16px; width: 100%; diff --git a/packages/app/styles/app.scss b/packages/app/styles/app.scss index aa1a8b029..5c786779b 100644 --- a/packages/app/styles/app.scss +++ b/packages/app/styles/app.scss @@ -180,69 +180,6 @@ body { } } -.ds-select { - &.w-auto { - .ds-react-select__menu { - width: auto; - } - } - &.text-nowrap { - .ds-react-select__option { - text-wrap: nowrap; - } - } - - &.input-bg .ds-react-select__control { - background: var(--color-bg-field); - } - - .ds-react-select__control { - background: var(--color-bg-field); - border: 1px solid var(--color-border); - } - - .ds-react-select__menu { - background: var(--color-bg-field); - border: 1px solid var(--color-border); - } - - .ds-react-select__option { - color: var(--color-text); - } - - .ds-react-select__option--is-focused { - background: var(--color-bg-muted); - } - - .ds-react-select__option--is-selected { - background: var(--color-bg-muted); - } - - .ds-react-select__multi-value { - background: var(--color-bg-field); - - .ds-react-select__multi-value__label { - color: var(--color-text); - } - } - - .ds-react-select__indicator-separator { - width: 0; - } - .ds-react-select__indicator { - color: var(--color-text-muted); - } - - .ds-react-select__input-container, - .ds-react-select__placeholder, - .ds-react-select__single-value { - // @apply text-neutral-600 dark:text-neutral-200; - color: var(--color-text); - // background: $bg-dark; - background: transparent; - } -} - // React Grid for Dashboarding .react-grid-item.react-grid-placeholder { // Override the default placeholder color from red diff --git a/packages/app/tests/e2e/features/shared/multiline.spec.ts b/packages/app/tests/e2e/features/shared/multiline.spec.ts index e4fa4cbc1..d13cb0c8c 100644 --- a/packages/app/tests/e2e/features/shared/multiline.spec.ts +++ b/packages/app/tests/e2e/features/shared/multiline.spec.ts @@ -54,6 +54,7 @@ test.describe('Multiline Input', { tag: '@search' }, () => { page: Page, editor: Locator, additionalLines: string[], + mode: EditorConfig['mode'], ) => { const initialBox = await editor.boundingBox(); const initialHeight = initialBox?.height || 0; @@ -61,11 +62,11 @@ test.describe('Multiline Input', { tag: '@search' }, () => { // Add more content for (const line of additionalLines) { await editor.press('Shift+Enter'); - await editor.type(line); + await editor.pressSequentially(line); } // Wait for potential height changes to take effect - await page.waitForTimeout(200); + await page.waitForTimeout(500); const expandedBox = await editor.boundingBox(); const expandedHeight = expandedBox?.height || 0; @@ -77,16 +78,24 @@ test.describe('Multiline Input', { tag: '@search' }, () => { `Height did not expand: initial=${initialHeight}, final=${expandedHeight}`, ); - // Fallback: verify that content was actually added (multiline functionality works) - const content = await editor.textContent(); - const inputValue = await editor.inputValue().catch(() => null); - const actualContent = content || inputValue || ''; - - // Check that we have multiple lines of content - const lineCount = actualContent - .split('\n') - .filter(line => line.trim()).length; - expect(lineCount).toBeGreaterThan(1); + // For SQL - its rendered in CodeMirror, we can check line count through its DOM + if (mode === 'SQL') { + const numLines = await editor.evaluate( + node => node.querySelectorAll('.cm-line').length, + ); + expect(numLines).toBeGreaterThan(1); + // For Lucene - fallback to checking the value of the textarea + } else { + const content = await editor.textContent(); + const inputValue = await editor.inputValue().catch(() => null); + const actualContent = content || inputValue || ''; + + // Check that we have multiple lines of content + const lineCount = actualContent + .split('\n') + .filter(line => line.trim()).length; + expect(lineCount).toBeGreaterThan(1); + } } else { expect(expandedHeight).toBeGreaterThan(initialHeight); } @@ -151,7 +160,7 @@ test.describe('Multiline Input', { tag: '@search' }, () => { 'user_id:* AND session_id:exists', ]; - await testHeightExpansion(page, editor, additionalLines); + await testHeightExpansion(page, editor, additionalLines, config.mode); }); // SQL-specific max height test diff --git a/yarn.lock b/yarn.lock index e7ab304f2..ed0353c49 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2750,7 +2750,7 @@ __metadata: languageName: node linkType: hard -"@babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.16.7, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.2.0, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.6.2, @babel/runtime@npm:^7.7.2, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": +"@babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.16.7, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.2.0, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.6.2, @babel/runtime@npm:^7.7.2, @babel/runtime@npm:^7.8.7, @babel/runtime@npm:^7.9.2": version: 7.21.0 resolution: "@babel/runtime@npm:7.21.0" dependencies: @@ -3469,25 +3469,6 @@ __metadata: languageName: node linkType: hard -"@emotion/babel-plugin@npm:^11.10.6": - version: 11.10.6 - resolution: "@emotion/babel-plugin@npm:11.10.6" - dependencies: - "@babel/helper-module-imports": "npm:^7.16.7" - "@babel/runtime": "npm:^7.18.3" - "@emotion/hash": "npm:^0.9.0" - "@emotion/memoize": "npm:^0.8.0" - "@emotion/serialize": "npm:^1.1.1" - babel-plugin-macros: "npm:^3.1.0" - convert-source-map: "npm:^1.5.0" - escape-string-regexp: "npm:^4.0.0" - find-root: "npm:^1.1.0" - source-map: "npm:^0.5.7" - stylis: "npm:4.1.3" - checksum: 10c0/734ab5d59f8a64ec2cb140f71483f74910ada115bf78ce5b645a9e3e379554ffd79045edb74efb8c1d8f856ef4d302bf8ac59b969b1cc28dedcd5000072e63ce - languageName: node - linkType: hard - "@emotion/babel-plugin@npm:^11.12.0": version: 11.12.0 resolution: "@emotion/babel-plugin@npm:11.12.0" @@ -3507,19 +3488,6 @@ __metadata: languageName: node linkType: hard -"@emotion/cache@npm:^11.10.5, @emotion/cache@npm:^11.4.0": - version: 11.10.5 - resolution: "@emotion/cache@npm:11.10.5" - dependencies: - "@emotion/memoize": "npm:^0.8.0" - "@emotion/sheet": "npm:^1.2.1" - "@emotion/utils": "npm:^1.2.0" - "@emotion/weak-memoize": "npm:^0.3.0" - stylis: "npm:4.1.3" - checksum: 10c0/eeb6891ab04cf17ace0e175742550b97c30df777d6c5b145e91c4c9fbd783c29b4dabe12a8c786b78f37176313a8295c9b90c69d875e6caab5f7e4677a18be91 - languageName: node - linkType: hard - "@emotion/cache@npm:^11.13.0": version: 11.13.1 resolution: "@emotion/cache@npm:11.13.1" @@ -3533,13 +3501,6 @@ __metadata: languageName: node linkType: hard -"@emotion/hash@npm:^0.9.0": - version: 0.9.0 - resolution: "@emotion/hash@npm:0.9.0" - checksum: 10c0/0910d3e9ec46cc780f691c96fb6f6f67b4f080b50ecf4f441bc4b33b5906e28099f530a368fe0b31c6bad38a857ac44df3c36f8978be603789d71330ac01af12 - languageName: node - linkType: hard - "@emotion/hash@npm:^0.9.2": version: 0.9.2 resolution: "@emotion/hash@npm:0.9.2" @@ -3556,13 +3517,6 @@ __metadata: languageName: node linkType: hard -"@emotion/memoize@npm:^0.8.0": - version: 0.8.0 - resolution: "@emotion/memoize@npm:0.8.0" - checksum: 10c0/246087ec09b32b295af67a094253831f398aabd953d03d14f186acb8607ed2a755e944f5e20b5ccebb461f15c2e5ccbf8fe977bcf3be951cf10961c504e1e65b - languageName: node - linkType: hard - "@emotion/memoize@npm:^0.9.0": version: 0.9.0 resolution: "@emotion/memoize@npm:0.9.0" @@ -3591,40 +3545,6 @@ __metadata: languageName: node linkType: hard -"@emotion/react@npm:^11.8.1": - version: 11.10.6 - resolution: "@emotion/react@npm:11.10.6" - dependencies: - "@babel/runtime": "npm:^7.18.3" - "@emotion/babel-plugin": "npm:^11.10.6" - "@emotion/cache": "npm:^11.10.5" - "@emotion/serialize": "npm:^1.1.1" - "@emotion/use-insertion-effect-with-fallbacks": "npm:^1.0.0" - "@emotion/utils": "npm:^1.2.0" - "@emotion/weak-memoize": "npm:^0.3.0" - hoist-non-react-statics: "npm:^3.3.1" - peerDependencies: - react: ">=16.8.0" - peerDependenciesMeta: - "@types/react": - optional: true - checksum: 10c0/4c5ce8ef279a8ce0d371414720d9b2b195ce6b30abf82d99a856ef3b7dc8643f8a32b9b01fded35d94ab9159e4982f7eb0ffa3c4b1aabb102180383e56232bcf - languageName: node - linkType: hard - -"@emotion/serialize@npm:^1.1.1": - version: 1.1.1 - resolution: "@emotion/serialize@npm:1.1.1" - dependencies: - "@emotion/hash": "npm:^0.9.0" - "@emotion/memoize": "npm:^0.8.0" - "@emotion/unitless": "npm:^0.8.0" - "@emotion/utils": "npm:^1.2.0" - csstype: "npm:^3.0.2" - checksum: 10c0/ea353abbf530ede8b74fe4df30eb626f245f710ce0bfcb9d34e72630a1dede688fddf02b1143f33a1a4ef5b66b70715a3c1cd6a12ec43f5b585ed60d4f3e8712 - languageName: node - linkType: hard - "@emotion/serialize@npm:^1.2.0, @emotion/serialize@npm:^1.3.0, @emotion/serialize@npm:^1.3.1": version: 1.3.2 resolution: "@emotion/serialize@npm:1.3.2" @@ -3638,13 +3558,6 @@ __metadata: languageName: node linkType: hard -"@emotion/sheet@npm:^1.2.1": - version: 1.2.1 - resolution: "@emotion/sheet@npm:1.2.1" - checksum: 10c0/88268c00005d310df3ebb249b839ad0b234943da5a0cc614b232b9bd4ae600292dca9b0f61c45cde3a592c77459e880d77a2aa73af20ec3c0d579afccc3f71af - languageName: node - linkType: hard - "@emotion/sheet@npm:^1.4.0": version: 1.4.0 resolution: "@emotion/sheet@npm:1.4.0" @@ -3679,22 +3592,6 @@ __metadata: languageName: node linkType: hard -"@emotion/unitless@npm:^0.8.0": - version: 0.8.0 - resolution: "@emotion/unitless@npm:0.8.0" - checksum: 10c0/1f2cfb7c0ccb83c20b1c6d8d92a74a93da4b2a440f9a0d49ded08647faf299065a2ffde17e1335920fa10397b85f8635bbfe14f3cd29222a59ea81d978478072 - languageName: node - linkType: hard - -"@emotion/use-insertion-effect-with-fallbacks@npm:^1.0.0": - version: 1.0.0 - resolution: "@emotion/use-insertion-effect-with-fallbacks@npm:1.0.0" - peerDependencies: - react: ">=16.8.0" - checksum: 10c0/0c5fbd36a4f416a5abaf428ba3dca6e79018c4c74016ecb4e3991a11cf8b5dbd306d7770fee09692971335e33f97e3b555deda595e5ae7831841505078bd07d7 - languageName: node - linkType: hard - "@emotion/use-insertion-effect-with-fallbacks@npm:^1.0.1": version: 1.0.1 resolution: "@emotion/use-insertion-effect-with-fallbacks@npm:1.0.1" @@ -3713,13 +3610,6 @@ __metadata: languageName: node linkType: hard -"@emotion/utils@npm:^1.2.0": - version: 1.2.0 - resolution: "@emotion/utils@npm:1.2.0" - checksum: 10c0/7051cec83bb49688549667484058d3a19a30001fa3692c23f7a2e727c05121f952854e1196feb9ece4fa36914705ebf474edba833a2178bdc133c654b5e3ca7d - languageName: node - linkType: hard - "@emotion/utils@npm:^1.4.0, @emotion/utils@npm:^1.4.1": version: 1.4.1 resolution: "@emotion/utils@npm:1.4.1" @@ -3727,13 +3617,6 @@ __metadata: languageName: node linkType: hard -"@emotion/weak-memoize@npm:^0.3.0": - version: 0.3.0 - resolution: "@emotion/weak-memoize@npm:0.3.0" - checksum: 10c0/1771687cc3b3280371de12698f1b78756c64654fc7d15ce76e1fb5d4adf9fd49d4411e41276bbfd5b521ef9cef647196aa9dca26f936c466fb80bf48491fa844 - languageName: node - linkType: hard - "@emotion/weak-memoize@npm:^0.4.0": version: 0.4.0 resolution: "@emotion/weak-memoize@npm:0.4.0" @@ -4161,13 +4044,6 @@ __metadata: languageName: node linkType: hard -"@floating-ui/core@npm:^1.2.3": - version: 1.2.3 - resolution: "@floating-ui/core@npm:1.2.3" - checksum: 10c0/978c517a20a55e74ef14170d50ca5eeddd65360b190593b8e042bfe759106eb59aadc965a47f4c2bfbe44ef7f7d146a27bb9b8348b12abb55371e878d1033be5 - languageName: node - linkType: hard - "@floating-ui/core@npm:^1.6.0": version: 1.6.0 resolution: "@floating-ui/core@npm:1.6.0" @@ -4177,15 +4053,6 @@ __metadata: languageName: node linkType: hard -"@floating-ui/dom@npm:^1.0.1": - version: 1.2.4 - resolution: "@floating-ui/dom@npm:1.2.4" - dependencies: - "@floating-ui/core": "npm:^1.2.3" - checksum: 10c0/e58c0a8819e7205df0e8f609dbfbeb487add9ba2ee016b0f874b7dca0377a231cccfd76a8e5a97b47408eeb06f4c7685f97e767abee5fd4f2a502262689de477 - languageName: node - linkType: hard - "@floating-ui/dom@npm:^1.6.1": version: 1.6.1 resolution: "@floating-ui/dom@npm:1.6.1" @@ -4499,7 +4366,6 @@ __metadata: react-markdown: "npm:^8.0.4" react-papaparse: "npm:^4.4.0" react-query: "npm:^3.39.3" - react-select: "npm:^5.7.0" react-sortable-hoc: "npm:^2.0.0" react-useportal: "npm:^1.0.18" recharts: "npm:^2.12.7" @@ -10359,15 +10225,6 @@ __metadata: languageName: node linkType: hard -"@types/react-transition-group@npm:^4.4.0": - version: 4.4.5 - resolution: "@types/react-transition-group@npm:4.4.5" - dependencies: - "@types/react": "npm:*" - checksum: 10c0/c0d81634ca5e1efac3ca6f6f006245976d584833ab9e933edf08b66551c1c7b9f0bc7878897f57ba44b137d3754583d623c932fe4b7721840ae5218ec2414942 - languageName: node - linkType: hard - "@types/react@npm:18.3.1": version: 18.3.1 resolution: "@types/react@npm:18.3.1" @@ -20912,13 +20769,6 @@ __metadata: languageName: node linkType: hard -"memoize-one@npm:^6.0.0": - version: 6.0.0 - resolution: "memoize-one@npm:6.0.0" - checksum: 10c0/45c88e064fd715166619af72e8cf8a7a17224d6edf61f7a8633d740ed8c8c0558a4373876c9b8ffc5518c2b65a960266adf403cc215cb1e90f7e262b58991f54 - languageName: node - linkType: hard - "memoizerific@npm:^1.11.3": version: 1.11.3 resolution: "memoizerific@npm:1.11.3" @@ -24077,7 +23927,7 @@ __metadata: languageName: node linkType: hard -"prop-types@npm:15.x, prop-types@npm:^15.0.0, prop-types@npm:^15.5.7, prop-types@npm:^15.6.0, prop-types@npm:^15.6.2, prop-types@npm:^15.7.2, prop-types@npm:^15.8.1": +"prop-types@npm:15.x, prop-types@npm:^15.0.0, prop-types@npm:^15.5.7, prop-types@npm:^15.6.2, prop-types@npm:^15.7.2, prop-types@npm:^15.8.1": version: 15.8.1 resolution: "prop-types@npm:15.8.1" dependencies: @@ -24820,26 +24670,6 @@ __metadata: languageName: node linkType: hard -"react-select@npm:^5.7.0": - version: 5.7.0 - resolution: "react-select@npm:5.7.0" - dependencies: - "@babel/runtime": "npm:^7.12.0" - "@emotion/cache": "npm:^11.4.0" - "@emotion/react": "npm:^11.8.1" - "@floating-ui/dom": "npm:^1.0.1" - "@types/react-transition-group": "npm:^4.4.0" - memoize-one: "npm:^6.0.0" - prop-types: "npm:^15.6.0" - react-transition-group: "npm:^4.3.0" - use-isomorphic-layout-effect: "npm:^1.1.2" - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 10c0/5ab64144930245cabedd08a399deaa35a19281163b0d4637811ae1cffd3b9ba45090d640c4f3ab95864229d07509fbdee69e960d074ad22dbacb223d21876443 - languageName: node - linkType: hard - "react-simple-animate@npm:^3.3.12": version: 3.5.2 resolution: "react-simple-animate@npm:3.5.2" @@ -24908,7 +24738,7 @@ __metadata: languageName: node linkType: hard -"react-transition-group@npm:4.4.5, react-transition-group@npm:^4.3.0, react-transition-group@npm:^4.4.5": +"react-transition-group@npm:4.4.5, react-transition-group@npm:^4.4.5": version: 4.4.5 resolution: "react-transition-group@npm:4.4.5" dependencies: @@ -27214,13 +27044,6 @@ __metadata: languageName: node linkType: hard -"stylis@npm:4.1.3": - version: 4.1.3 - resolution: "stylis@npm:4.1.3" - checksum: 10c0/3e4670f26f79bcfba628dcc2756d9d415edfcbf4ec51e40f3b628fd15286222257317cad57390752964eba85cca6163a7621ce90038d68dd630a674479e52334 - languageName: node - linkType: hard - "stylis@npm:4.2.0": version: 4.2.0 resolution: "stylis@npm:4.2.0" @@ -28878,7 +28701,7 @@ __metadata: languageName: node linkType: hard -"use-isomorphic-layout-effect@npm:^1.1.1, use-isomorphic-layout-effect@npm:^1.1.2": +"use-isomorphic-layout-effect@npm:^1.1.1": version: 1.1.2 resolution: "use-isomorphic-layout-effect@npm:1.1.2" peerDependencies: