mirror of
https://github.com/hyperdxio/hyperdx
synced 2026-04-21 13:37:15 +00:00
remove react select (#1367)
Co-authored-by: Elizabet Oliveira <elizabet.oliveira@clickhouse.com>
This commit is contained in:
parent
af6a8d0dac
commit
44a6a08a29
10 changed files with 37 additions and 460 deletions
5
.changeset/angry-walls-fetch.md
Normal file
5
.changeset/angry-walls-fetch.md
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
"@hyperdx/app": patch
|
||||
---
|
||||
|
||||
Remove react-select for mantine
|
||||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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 (
|
||||
<Select
|
||||
options={TABLES}
|
||||
className="ds-select w-auto text-nowrap"
|
||||
value={TABLES.find(v => v.value === table)}
|
||||
onChange={opt => {
|
||||
const val = opt?.value ?? 'logs';
|
||||
if (val === 'logs') {
|
||||
setTableAndAggFn('logs', 'count');
|
||||
} else if (val === 'metrics') {
|
||||
// TODO: This should set rate if metric field is a sum
|
||||
// or we should just reset the field if changing tables
|
||||
setTableAndAggFn('metrics', 'max');
|
||||
}
|
||||
}}
|
||||
classNamePrefix="ds-react-select"
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
||||
export function TableToggle({
|
||||
table,
|
||||
setTableAndAggFn,
|
||||
|
|
|
|||
|
|
@ -1,26 +0,0 @@
|
|||
import Select from 'react-select';
|
||||
|
||||
export default function DSSelect<
|
||||
Option extends { value: string | undefined; label: React.ReactNode },
|
||||
>({
|
||||
options,
|
||||
value,
|
||||
onChange,
|
||||
disabled,
|
||||
}: {
|
||||
options: Option[];
|
||||
disabled?: boolean;
|
||||
value: string | undefined;
|
||||
onChange: (value: Option['value'] | undefined) => void;
|
||||
}) {
|
||||
return (
|
||||
<Select
|
||||
isDisabled={disabled}
|
||||
options={options}
|
||||
className="ds-select"
|
||||
value={options.find(v => v.value === value)}
|
||||
onChange={newValue => onChange(newValue?.value)}
|
||||
classNamePrefix="ds-react-select"
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
|
@ -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 (
|
||||
<DSSelect
|
||||
<Select
|
||||
disabled={disabled}
|
||||
options={[
|
||||
data={[
|
||||
{
|
||||
value: 'auto' as const,
|
||||
label: 'Auto Granularity',
|
||||
|
|
@ -58,7 +58,9 @@ export default function GranularityPicker({
|
|||
label: '7 Day Granularity',
|
||||
},
|
||||
]}
|
||||
onChange={onChange}
|
||||
onChange={v =>
|
||||
onChange((v ?? undefined) as Granularity | 'auto' | undefined)
|
||||
}
|
||||
value={value}
|
||||
/>
|
||||
);
|
||||
|
|
|
|||
|
|
@ -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<T>(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<HTMLDivElement> = e => {
|
||||
e.preventDefault();
|
||||
e.stopPropagation();
|
||||
};
|
||||
const innerProps = { ...props.innerProps, onMouseDown };
|
||||
return <components.MultiValue {...props} innerProps={innerProps} />;
|
||||
},
|
||||
);
|
||||
|
||||
const SortableMultiValueLabel = SortableHandle(
|
||||
(props: MultiValueGenericProps<{ value: string; label: string }, true>) => (
|
||||
<components.MultiValueLabel {...props} />
|
||||
),
|
||||
);
|
||||
|
||||
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 (
|
||||
<SortableSelect
|
||||
className="ds-select"
|
||||
classNamePrefix="ds-react-select"
|
||||
// @ts-ignore I don't think it's understanding we're using async select here
|
||||
loadOptions={(input: string) => {
|
||||
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}
|
||||
/>
|
||||
);
|
||||
}
|
||||
|
|
@ -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%;
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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 || '';
|
||||
// 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);
|
||||
// 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
|
||||
|
|
|
|||
185
yarn.lock
185
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:
|
||||
|
|
|
|||
Loading…
Reference in a new issue