diff --git a/frontend/package.json b/frontend/package.json index 48c33a04fc..e88cc97035 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -22,10 +22,11 @@ "license": "ISC", "dependencies": { "@ant-design/icons": "^4.6.2", + "@grafana/data": "^8.4.3", "@testing-library/jest-dom": "^5.11.4", "@testing-library/react": "^11.1.0", "@testing-library/user-event": "^12.1.10", - "antd": "^4.16.13", + "antd": "4.19.2", "axios": "^0.21.0", "babel-eslint": "^10.1.0", "babel-jest": "^26.6.0", @@ -63,6 +64,7 @@ "react-vis": "^1.11.7", "redux": "^4.0.5", "redux-thunk": "^2.3.0", + "stream": "^0.0.2", "style-loader": "1.3.0", "styled-components": "^5.2.1", "terser-webpack-plugin": "^5.2.5", diff --git a/frontend/src/components/Graph/index.tsx b/frontend/src/components/Graph/index.tsx index 4cf6c04a0f..f24be5bd65 100644 --- a/frontend/src/components/Graph/index.tsx +++ b/frontend/src/components/Graph/index.tsx @@ -28,6 +28,8 @@ import { AppState } from 'store/reducers'; import AppReducer from 'types/reducer/app'; import { useXAxisTimeUnit } from './xAxisConfig'; +import { getYAxisFormattedValue } from './yAxisConfig'; + Chart.register( LineElement, PointElement, @@ -55,6 +57,7 @@ const Graph = ({ isStacked, onClickHandler, name, + yAxisUnit = 'short', }: GraphProps): JSX.Element => { const { isDarkMode } = useSelector((state) => state.app); const chartRef = useRef(null); @@ -132,6 +135,12 @@ const Graph = ({ display: true, color: getGridColor(), }, + ticks: { + // Include a dollar sign in the ticks + callback: function (value, index, ticks) { + return getYAxisFormattedValue(value, yAxisUnit); + }, + }, }, stacked: { display: isStacked === undefined ? false : 'auto', @@ -179,6 +188,7 @@ interface GraphProps { label?: string[]; onClickHandler?: graphOnClickHandler; name: string; + yAxisUnit?: string; } export type graphOnClickHandler = ( diff --git a/frontend/src/components/Graph/yAxisConfig.ts b/frontend/src/components/Graph/yAxisConfig.ts new file mode 100644 index 0000000000..bf2a1cc525 --- /dev/null +++ b/frontend/src/components/Graph/yAxisConfig.ts @@ -0,0 +1,16 @@ +import { formattedValueToString, getValueFormat } from '@grafana/data'; + +export const getYAxisFormattedValue = ( + value: number, + format: string, + decimal?: number, +): string => { + try { + return formattedValueToString( + getValueFormat(format)(value, undefined, undefined, undefined), + ); + } catch (error) { + console.error(error); + } + return `${value}`; +}; diff --git a/frontend/src/container/GridGraphComponent/index.tsx b/frontend/src/container/GridGraphComponent/index.tsx index ba3107f96b..97593f2483 100644 --- a/frontend/src/container/GridGraphComponent/index.tsx +++ b/frontend/src/container/GridGraphComponent/index.tsx @@ -16,6 +16,7 @@ const GridGraphComponent = ({ isStacked, onClickHandler, name, + yAxisUnit, }: GridGraphComponentProps): JSX.Element | null => { const location = history.location.pathname; @@ -33,6 +34,7 @@ const GridGraphComponent = ({ xAxisType: 'time', onClickHandler: onClickHandler, name, + yAxisUnit: yAxisUnit, }} /> ); @@ -72,6 +74,7 @@ export interface GridGraphComponentProps { isStacked?: boolean; onClickHandler?: graphOnClickHandler; name: string; + yAxisUnit?: string; } export default GridGraphComponent; diff --git a/frontend/src/container/GridGraphLayout/Graph/FullView/index.tsx b/frontend/src/container/GridGraphLayout/Graph/FullView/index.tsx index 06665218fc..b6e32f9aed 100644 --- a/frontend/src/container/GridGraphLayout/Graph/FullView/index.tsx +++ b/frontend/src/container/GridGraphLayout/Graph/FullView/index.tsx @@ -32,6 +32,7 @@ const FullView = ({ onClickHandler, noDataGraph = false, name, + yAxisUnit, }: FullViewProps): JSX.Element => { const { minTime, maxTime, selectedTime: globalSelectedTime } = useSelector< AppState, @@ -221,6 +222,7 @@ const FullView = ({ title: widget.title, onClickHandler: onClickHandler, name, + yAxisUnit, }} /> {/* */} @@ -241,6 +243,7 @@ interface FullViewProps { onClickHandler?: graphOnClickHandler; noDataGraph?: boolean; name: string; + yAxisUnit?: string; } export default FullView; diff --git a/frontend/src/container/GridGraphLayout/Graph/index.tsx b/frontend/src/container/GridGraphLayout/Graph/index.tsx index 0cf795b06d..f00135e0a5 100644 --- a/frontend/src/container/GridGraphLayout/Graph/index.tsx +++ b/frontend/src/container/GridGraphLayout/Graph/index.tsx @@ -30,6 +30,7 @@ const GridCardGraph = ({ deleteWidget, isDeleted, name, + yAxisUnit }: GridCardGraphProps): JSX.Element => { const [state, setState] = useState({ loading: true, @@ -149,7 +150,7 @@ const GridCardGraph = ({ destroyOnClose > - + @@ -199,6 +200,7 @@ const GridCardGraph = ({ opacity: widget.opacity, title: widget.title, name, + yAxisUnit, }} /> @@ -222,6 +224,7 @@ interface GridCardGraphProps extends DispatchProps { widget: Widgets; isDeleted: React.MutableRefObject; name: string; + yAxisUnit: string | undefined; } const mapDispatchToProps = ( diff --git a/frontend/src/container/GridGraphLayout/index.tsx b/frontend/src/container/GridGraphLayout/index.tsx index cbbec4a2a7..9c1fda8257 100644 --- a/frontend/src/container/GridGraphLayout/index.tsx +++ b/frontend/src/container/GridGraphLayout/index.tsx @@ -38,7 +38,6 @@ const GridGraph = (): JSX.Element => { const [selectedDashboard] = dashboards; const { data } = selectedDashboard; const { widgets } = data; - const [layouts, setLayout] = useState([]); const AddWidgetWrapper = useCallback(() => , []); @@ -64,6 +63,7 @@ const GridGraph = (): JSX.Element => { name={e.id + index + 'non-expanded'} isDeleted={isDeleted} widget={widgets[index]} + yAxisUnit={e.yAxisUnit} /> ), }; @@ -73,7 +73,11 @@ const GridGraph = (): JSX.Element => { ...e, y: 0, Component: (): JSX.Element => ( - + ), })); } diff --git a/frontend/src/container/MetricsApplication/Tabs/Application.tsx b/frontend/src/container/MetricsApplication/Tabs/Application.tsx index 005033f999..ac7cb51798 100644 --- a/frontend/src/container/MetricsApplication/Tabs/Application.tsx +++ b/frontend/src/container/MetricsApplication/Tabs/Application.tsx @@ -34,8 +34,7 @@ const Application = ({ getWidget }: DashboardProps): JSX.Element => { urlParams.set(METRICS_PAGE_QUERY_PARAM.endTime, tPlusOne.toString()); history.replace( - `${ - ROUTES.TRACE + `${ROUTES.TRACE }?${urlParams.toString()}&selected={"serviceName":["${servicename}"],"status":["ok","error"]}&filterToFetchData=["duration","status","serviceName"]&userSelectedFilter={"status":["error","ok"],"serviceName":["${servicename}"]}&isSelectedFilterSkipped=true`, ); }; @@ -88,8 +87,7 @@ const Application = ({ getWidget }: DashboardProps): JSX.Element => { urlParams.set(METRICS_PAGE_QUERY_PARAM.endTime, tPlusOne.toString()); history.replace( - `${ - ROUTES.TRACE + `${ROUTES.TRACE }?${urlParams.toString()}&selected={"serviceName":["${servicename}"],"status":["error"]}&filterToFetchData=["duration","status","serviceName"]&userSelectedFilter={"status":["error"],"serviceName":["${servicename}"]}&isSelectedFilterSkipped=true`, ); }; @@ -159,6 +157,7 @@ const Application = ({ getWidget }: DashboardProps): JSX.Element => { ); }), }} + yAxisUnit="ms" /> @@ -191,6 +190,7 @@ const Application = ({ getWidget }: DashboardProps): JSX.Element => { legend: 'Request per second', }, ])} + yAxisUnit="short" /> @@ -225,6 +225,7 @@ const Application = ({ getWidget }: DashboardProps): JSX.Element => { legend: 'Error Percentage (%)', }, ])} + yAxisUnit="%" /> diff --git a/frontend/src/container/MetricsApplication/Tabs/DBCall.tsx b/frontend/src/container/MetricsApplication/Tabs/DBCall.tsx index 44fda1e230..c883333bdd 100644 --- a/frontend/src/container/MetricsApplication/Tabs/DBCall.tsx +++ b/frontend/src/container/MetricsApplication/Tabs/DBCall.tsx @@ -26,6 +26,7 @@ const DBCall = ({ getWidget }: DBCallProps): JSX.Element => { legend: '{{db_system}}', }, ])} + yAxisUnit="short" /> @@ -45,6 +46,7 @@ const DBCall = ({ getWidget }: DBCallProps): JSX.Element => { legend: '', }, ])} + yAxisUnit="ms" /> diff --git a/frontend/src/container/MetricsApplication/Tabs/External.tsx b/frontend/src/container/MetricsApplication/Tabs/External.tsx index 8e159ce8b7..b0d6cc0312 100644 --- a/frontend/src/container/MetricsApplication/Tabs/External.tsx +++ b/frontend/src/container/MetricsApplication/Tabs/External.tsx @@ -26,6 +26,7 @@ const External = ({ getWidget }: ExternalProps): JSX.Element => { legend: '{{http_url}}', }, ])} + yAxisUnit="%" /> @@ -45,6 +46,7 @@ const External = ({ getWidget }: ExternalProps): JSX.Element => { legend: 'Average Duration', }, ])} + yAxisUnit="ms" /> @@ -66,6 +68,7 @@ const External = ({ getWidget }: ExternalProps): JSX.Element => { legend: '{{http_url}}', }, ])} + yAxisUnit="short" /> @@ -85,6 +88,7 @@ const External = ({ getWidget }: ExternalProps): JSX.Element => { legend: '{{http_url}}', }, ])} + yAxisUnit="ms" /> diff --git a/frontend/src/container/NewWidget/LeftContainer/WidgetGraph/WidgetGraph.tsx b/frontend/src/container/NewWidget/LeftContainer/WidgetGraph/WidgetGraph.tsx index 7966e43d8b..9f334ff25e 100644 --- a/frontend/src/container/NewWidget/LeftContainer/WidgetGraph/WidgetGraph.tsx +++ b/frontend/src/container/NewWidget/LeftContainer/WidgetGraph/WidgetGraph.tsx @@ -10,7 +10,7 @@ import DashboardReducer from 'types/reducer/dashboards'; import { NotFoundContainer } from './styles'; -const WidgetGraph = ({ selectedGraph }: WidgetGraphProps): JSX.Element => { +const WidgetGraph = ({ selectedGraph,yAxisUnit }: WidgetGraphProps): JSX.Element => { const { dashboards } = useSelector( (state) => state.dashboards, ); @@ -51,6 +51,7 @@ const WidgetGraph = ({ selectedGraph }: WidgetGraphProps): JSX.Element => { data={chartDataSet} GRAPH_TYPES={selectedGraph} name={widgetId || 'legend_widget'} + yAxisUnit={yAxisUnit} /> ); }; diff --git a/frontend/src/container/NewWidget/LeftContainer/WidgetGraph/index.tsx b/frontend/src/container/NewWidget/LeftContainer/WidgetGraph/index.tsx index d844862875..c84c5e6bb1 100644 --- a/frontend/src/container/NewWidget/LeftContainer/WidgetGraph/index.tsx +++ b/frontend/src/container/NewWidget/LeftContainer/WidgetGraph/index.tsx @@ -11,7 +11,7 @@ import { NewWidgetProps } from '../../index'; import { AlertIconContainer, Container, NotFoundContainer } from './styles'; import WidgetGraphComponent from './WidgetGraph'; -const WidgetGraph = ({ selectedGraph }: WidgetGraphProps): JSX.Element => { +const WidgetGraph = ({ selectedGraph, yAxisUnit }: WidgetGraphProps): JSX.Element => { const { dashboards, isQueryFired } = useSelector( (state) => state.dashboards, ); @@ -47,7 +47,7 @@ const WidgetGraph = ({ selectedGraph }: WidgetGraphProps): JSX.Element => { )} - {isQueryFired && } + {isQueryFired && } ); }; diff --git a/frontend/src/container/NewWidget/LeftContainer/index.tsx b/frontend/src/container/NewWidget/LeftContainer/index.tsx index 58b2c8f3ab..4a855feba7 100644 --- a/frontend/src/container/NewWidget/LeftContainer/index.tsx +++ b/frontend/src/container/NewWidget/LeftContainer/index.tsx @@ -9,10 +9,11 @@ import WidgetGraph from './WidgetGraph'; const LeftContainer = ({ selectedGraph, selectedTime, + yAxisUnit, }: LeftContainerProps): JSX.Element => { return ( <> - + diff --git a/frontend/src/container/NewWidget/RightContainer/YAxisUnitSelector.tsx b/frontend/src/container/NewWidget/RightContainer/YAxisUnitSelector.tsx new file mode 100644 index 0000000000..4d8687e074 --- /dev/null +++ b/frontend/src/container/NewWidget/RightContainer/YAxisUnitSelector.tsx @@ -0,0 +1,39 @@ +import { AutoComplete, Col, Input, Typography } from 'antd'; +import { find } from 'lodash-es'; +import React from 'react'; + +import { flattenedCategories } from './dataFormatCategories'; + +const findCategoryById = (searchValue) => + find(flattenedCategories, (option) => option.id == searchValue); +const findCategoryByName = (searchValue) => + find(flattenedCategories, (option) => option.name == searchValue); + +const YAxisUnitSelector = ({ defaultValue, onSelect }): JSX.Element => { + const onSelectHandler = (selectedValue: string): void => { + onSelect(findCategoryByName(selectedValue)?.id); + }; + const options = flattenedCategories.map((options) => ({ + value: options.name, + })); + return ( + +
+ Y Axis Unit +
+ + option!.value.toUpperCase().indexOf(inputValue.toUpperCase()) !== -1 + } + > + + + + ); +}; + +export default YAxisUnitSelector; diff --git a/frontend/src/container/NewWidget/RightContainer/dataFormatCategories.ts b/frontend/src/container/NewWidget/RightContainer/dataFormatCategories.ts new file mode 100644 index 0000000000..460e2a5efd --- /dev/null +++ b/frontend/src/container/NewWidget/RightContainer/dataFormatCategories.ts @@ -0,0 +1,390 @@ +import { flattenDeep } from 'lodash-es'; + +export const dataTypeCategories = [ + { + name: 'Time', + formats: [ + { name: 'Hertz (1/s)', id: 'hertz' }, + { name: 'nanoseconds (ns)', id: 'ns' }, + { name: 'microseconds (µs)', id: 'µs' }, + { name: 'milliseconds (ms)', id: 'ms' }, + { name: 'seconds (s)', id: 's' }, + { name: 'minutes (m)', id: 'm' }, + { name: 'hours (h)', id: 'h' }, + { name: 'days (d)', id: 'd' }, + { name: 'duration (ms)', id: 'dtdurationms' }, + { name: 'duration (s)', id: 'dtdurations' }, + { name: 'duration (hh:mm:ss)', id: 'dthms' }, + { name: 'duration (d hh:mm:ss)', id: 'dtdhms' }, + { name: 'Timeticks (s/100)', id: 'timeticks' }, + { name: 'clock (ms)', id: 'clockms' }, + { name: 'clock (s)', id: 'clocks' }, + ], + }, + { + name: 'Throughput', + formats: [ + { name: 'counts/sec (cps)', id: 'cps' }, + { name: 'ops/sec (ops)', id: 'ops' }, + { name: 'requests/sec (rps)', id: 'reqps' }, + { name: 'reads/sec (rps)', id: 'rps' }, + { name: 'writes/sec (wps)', id: 'wps' }, + { name: 'I/O ops/sec (iops)', id: 'iops' }, + { name: 'counts/min (cpm)', id: 'cpm' }, + { name: 'ops/min (opm)', id: 'opm' }, + { name: 'reads/min (rpm)', id: 'rpm' }, + { name: 'writes/min (wpm)', id: 'wpm' }, + ], + }, + { + name: 'Data', + formats: [ + { name: 'bytes(IEC)', id: 'bytes' }, + { name: 'bytes(SI)', id: 'decbytes' }, + { name: 'bits(IEC)', id: 'bits' }, + { name: 'bits(SI)', id: 'decbits' }, + { name: 'kibibytes', id: 'kbytes' }, + { name: 'kilobytes', id: 'deckbytes' }, + { name: 'mebibytes', id: 'mbytes' }, + { name: 'megabytes', id: 'decmbytes' }, + { name: 'gibibytes', id: 'gbytes' }, + { name: 'gigabytes', id: 'decgbytes' }, + { name: 'tebibytes', id: 'tbytes' }, + { name: 'terabytes', id: 'dectbytes' }, + { name: 'pebibytes', id: 'pbytes' }, + { name: 'petabytes', id: 'decpbytes' }, + ], + }, + { + name: 'Data rate', + formats: [ + { name: 'packets/sec', id: 'pps' }, + { name: 'bytes/sec(IEC)', id: 'binBps' }, + { name: 'bytes/sec(SI)', id: 'Bps' }, + { name: 'bits/sec(IEC)', id: 'binbps' }, + { name: 'bits/sec(SI)', id: 'bps' }, + { name: 'kibibytes/sec', id: 'KiBs' }, + { name: 'kibibits/sec', id: 'Kibits' }, + { name: 'kilobytes/sec', id: 'KBs' }, + { name: 'kilobits/sec', id: 'Kbits' }, + { name: 'mebibytes/sec', id: 'MiBs' }, + { name: 'mebibits/sec', id: 'Mibits' }, + { name: 'megabytes/sec', id: 'MBs' }, + { name: 'megabits/sec', id: 'Mbits' }, + { name: 'gibibytes/sec', id: 'GiBs' }, + { name: 'gibibits/sec', id: 'Gibits' }, + { name: 'gigabytes/sec', id: 'GBs' }, + { name: 'gigabits/sec', id: 'Gbits' }, + { name: 'tebibytes/sec', id: 'TiBs' }, + { name: 'tebibits/sec', id: 'Tibits' }, + { name: 'terabytes/sec', id: 'TBs' }, + { name: 'terabits/sec', id: 'Tbits' }, + { name: 'pebibytes/sec', id: 'PiBs' }, + { name: 'pebibits/sec', id: 'Pibits' }, + { name: 'petabytes/sec', id: 'PBs' }, + { name: 'petabits/sec', id: 'Pbits' }, + ], + }, + { + name: 'Hash rate', + formats: [ + { name: 'hashes/sec', id: 'Hs' }, + { name: 'kilohashes/sec', id: 'KHs' }, + { name: 'megahashes/sec', id: 'MHs' }, + { name: 'gigahashes/sec', id: 'GHs' }, + { name: 'terahashes/sec', id: 'THs' }, + { name: 'petahashes/sec', id: 'PHs' }, + { name: 'exahashes/sec', id: 'EHs' }, + ], + }, + + { + name: 'Acceleration', + formats: [ + { name: 'Meters/sec²', id: 'accMS2' }, + { name: 'Feet/sec²', id: 'accFS2' }, + { name: 'G unit', id: 'accG' }, + ], + }, + { + name: 'Angle', + formats: [ + { name: 'Degrees (°)', id: 'degree' }, + { name: 'Radians', id: 'radian' }, + { name: 'Gradian', id: 'grad' }, + { name: 'Arc Minutes', id: 'arcmin' }, + { name: 'Arc Seconds', id: 'arcsec' }, + ], + }, + { + name: 'Area', + formats: [ + { name: 'Square Meters (m²)', id: 'areaM2' }, + { name: 'Square Feet (ft²)', id: 'areaF2' }, + { name: 'Square Miles (mi²)', id: 'areaMI2' }, + ], + }, + { + name: 'Computation', + formats: [ + { name: 'FLOP/s', id: 'flops' }, + { name: 'MFLOP/s', id: 'mflops' }, + { name: 'GFLOP/s', id: 'gflops' }, + { name: 'TFLOP/s', id: 'tflops' }, + { name: 'PFLOP/s', id: 'pflops' }, + { name: 'EFLOP/s', id: 'eflops' }, + { name: 'ZFLOP/s', id: 'zflops' }, + { name: 'YFLOP/s', id: 'yflops' }, + ], + }, + { + name: 'Concentration', + formats: [ + { name: 'parts-per-million (ppm)', id: 'ppm' }, + { name: 'parts-per-billion (ppb)', id: 'conppb' }, + { name: 'nanogram per cubic meter (ng/m³)', id: 'conngm3' }, + { name: 'nanogram per normal cubic meter (ng/Nm³)', id: 'conngNm3' }, + { name: 'microgram per cubic meter (μg/m³)', id: 'conμgm3' }, + { name: 'microgram per normal cubic meter (μg/Nm³)', id: 'conμgNm3' }, + { name: 'milligram per cubic meter (mg/m³)', id: 'conmgm3' }, + { name: 'milligram per normal cubic meter (mg/Nm³)', id: 'conmgNm3' }, + { name: 'gram per cubic meter (g/m³)', id: 'congm3' }, + { name: 'gram per normal cubic meter (g/Nm³)', id: 'congNm3' }, + { name: 'milligrams per decilitre (mg/dL)', id: 'conmgdL' }, + { name: 'millimoles per litre (mmol/L)', id: 'conmmolL' }, + ], + }, + { + name: 'Currency', + formats: [ + { name: 'Dollars ($)', id: 'currencyUSD' }, + { name: 'Pounds (£)', id: 'currencyGBP' }, + { name: 'Euro (€)', id: 'currencyEUR' }, + { name: 'Yen (¥)', id: 'currencyJPY' }, + { name: 'Rubles (₽)', id: 'currencyRUB' }, + { name: 'Hryvnias (₴)', id: 'currencyUAH' }, + { name: 'Real (R$)', id: 'currencyBRL' }, + { name: 'Danish Krone (kr)', id: 'currencyDKK' }, + { name: 'Icelandic Króna (kr)', id: 'currencyISK' }, + { name: 'Norwegian Krone (kr)', id: 'currencyNOK' }, + { name: 'Swedish Krona (kr)', id: 'currencySEK' }, + { name: 'Czech koruna (czk)', id: 'currencyCZK' }, + { name: 'Swiss franc (CHF)', id: 'currencyCHF' }, + { name: 'Polish Złoty (PLN)', id: 'currencyPLN' }, + { name: 'Bitcoin (฿)', id: 'currencyBTC' }, + { name: 'Milli Bitcoin (฿)', id: 'currencymBTC' }, + { name: 'Micro Bitcoin (฿)', id: 'currencyμBTC' }, + { name: 'South African Rand (R)', id: 'currencyZAR' }, + { name: 'Indian Rupee (₹)', id: 'currencyINR' }, + { name: 'South Korean Won (₩)', id: 'currencyKRW' }, + { name: 'Indonesian Rupiah (Rp)', id: 'currencyIDR' }, + { name: 'Philippine Peso (PHP)', id: 'currencyPHP' }, + { name: 'Vietnamese Dong (VND)', id: 'currencyVND' }, + ], + }, + + { + name: 'Date & time', + formats: [ + { name: 'Datetime ISO', id: 'dateTimeAsIso' }, + { + name: 'Datetime ISO (No date if today)', + id: 'dateTimeAsIsoNoDateIfToday', + }, + { name: 'Datetime US', id: 'dateTimeAsUS' }, + { name: 'Datetime US (No date if today)', id: 'dateTimeAsUSNoDateIfToday' }, + { name: 'Datetime local', id: 'dateTimeAsLocal' }, + { + name: 'Datetime local (No date if today)', + id: 'dateTimeAsLocalNoDateIfToday', + }, + { name: 'Datetime default', id: 'dateTimeAsSystem' }, + { name: 'From Now', id: 'dateTimeFromNow' }, + ], + }, + { + name: 'Energy', + formats: [ + { name: 'Watt (W)', id: 'watt' }, + { name: 'Kilowatt (kW)', id: 'kwatt' }, + { name: 'Megawatt (MW)', id: 'megwatt' }, + { name: 'Gigawatt (GW)', id: 'gwatt' }, + { name: 'Milliwatt (mW)', id: 'mwatt' }, + { name: 'Watt per square meter (W/m²)', id: 'Wm2' }, + { name: 'Volt-Ampere (VA)', id: 'voltamp' }, + { name: 'Kilovolt-Ampere (kVA)', id: 'kvoltamp' }, + { name: 'Volt-Ampere reactive (VAr)', id: 'voltampreact' }, + { name: 'Kilovolt-Ampere reactive (kVAr)', id: 'kvoltampreact' }, + { name: 'Watt-hour (Wh)', id: 'watth' }, + { name: 'Watt-hour per Kilogram (Wh/kg)', id: 'watthperkg' }, + { name: 'Kilowatt-hour (kWh)', id: 'kwatth' }, + { name: 'Kilowatt-min (kWm)', id: 'kwattm' }, + { name: 'Ampere-hour (Ah)', id: 'amph' }, + { name: 'Kiloampere-hour (kAh)', id: 'kamph' }, + { name: 'Milliampere-hour (mAh)', id: 'mamph' }, + { name: 'Joule (J)', id: 'joule' }, + { name: 'Electron volt (eV)', id: 'ev' }, + { name: 'Ampere (A)', id: 'amp' }, + { name: 'Kiloampere (kA)', id: 'kamp' }, + { name: 'Milliampere (mA)', id: 'mamp' }, + { name: 'Volt (V)', id: 'volt' }, + { name: 'Kilovolt (kV)', id: 'kvolt' }, + { name: 'Millivolt (mV)', id: 'mvolt' }, + { name: 'Decibel-milliwatt (dBm)', id: 'dBm' }, + { name: 'Ohm (Ω)', id: 'ohm' }, + { name: 'Kiloohm (kΩ)', id: 'kohm' }, + { name: 'Megaohm (MΩ)', id: 'Mohm' }, + { name: 'Farad (F)', id: 'farad' }, + { name: 'Microfarad (µF)', id: 'µfarad' }, + { name: 'Nanofarad (nF)', id: 'nfarad' }, + { name: 'Picofarad (pF)', id: 'pfarad' }, + { name: 'Femtofarad (fF)', id: 'ffarad' }, + { name: 'Henry (H)', id: 'henry' }, + { name: 'Millihenry (mH)', id: 'mhenry' }, + { name: 'Microhenry (µH)', id: 'µhenry' }, + { name: 'Lumens (Lm)', id: 'lumens' }, + ], + }, + { + name: 'Flow', + formats: [ + { name: 'Gallons/min (gpm)', id: 'flowgpm' }, + { name: 'Cubic meters/sec (cms)', id: 'flowcms' }, + { name: 'Cubic feet/sec (cfs)', id: 'flowcfs' }, + { name: 'Cubic feet/min (cfm)', id: 'flowcfm' }, + { name: 'Litre/hour', id: 'litreh' }, + { name: 'Litre/min (L/min)', id: 'flowlpm' }, + { name: 'milliLitre/min (mL/min)', id: 'flowmlpm' }, + { name: 'Lux (lx)', id: 'lux' }, + ], + }, + { + name: 'Force', + formats: [ + { name: 'Newton-meters (Nm)', id: 'forceNm' }, + { name: 'Kilonewton-meters (kNm)', id: 'forcekNm' }, + { name: 'Newtons (N)', id: 'forceN' }, + { name: 'Kilonewtons (kN)', id: 'forcekN' }, + ], + }, + { + name: 'Mass', + formats: [ + { name: 'milligram (mg)', id: 'massmg' }, + { name: 'gram (g)', id: 'massg' }, + { name: 'pound (lb)', id: 'masslb' }, + { name: 'kilogram (kg)', id: 'masskg' }, + { name: 'metric ton (t)', id: 'masst' }, + ], + }, + { + name: 'Length', + formats: [ + { name: 'millimeter (mm)', id: 'lengthmm' }, + { name: 'inch (in)', id: 'lengthin' }, + { name: 'feet (ft)', id: 'lengthft' }, + { name: 'meter (m)', id: 'lengthm' }, + { name: 'kilometer (km)', id: 'lengthkm' }, + { name: 'mile (mi)', id: 'lengthmi' }, + ], + }, + { + name: 'Pressure', + formats: [ + { name: 'Millibars', id: 'pressurembar' }, + { name: 'Bars', id: 'pressurebar' }, + { name: 'Kilobars', id: 'pressurekbar' }, + { name: 'Pascals', id: 'pressurepa' }, + { name: 'Hectopascals', id: 'pressurehpa' }, + { name: 'Kilopascals', id: 'pressurekpa' }, + { name: 'Inches of mercury', id: 'pressurehg' }, + { name: 'PSI', id: 'pressurepsi' }, + ], + }, + { + name: 'Radiation', + formats: [ + { name: 'Becquerel (Bq)', id: 'radbq' }, + { name: 'curie (Ci)', id: 'radci' }, + { name: 'Gray (Gy)', id: 'radgy' }, + { name: 'rad', id: 'radrad' }, + { name: 'Sievert (Sv)', id: 'radsv' }, + { name: 'milliSievert (mSv)', id: 'radmsv' }, + { name: 'microSievert (µSv)', id: 'radusv' }, + { name: 'rem', id: 'radrem' }, + { name: 'Exposure (C/kg)', id: 'radexpckg' }, + { name: 'roentgen (R)', id: 'radr' }, + { name: 'Sievert/hour (Sv/h)', id: 'radsvh' }, + { name: 'milliSievert/hour (mSv/h)', id: 'radmsvh' }, + { name: 'microSievert/hour (µSv/h)', id: 'radusvh' }, + ], + }, + { + name: 'Rotational Speed', + formats: [ + { name: 'Revolutions per minute (rpm)', id: 'rotrpm' }, + { name: 'Hertz (Hz)', id: 'rothz' }, + { name: 'Radians per second (rad/s)', id: 'rotrads' }, + { name: 'Degrees per second (°/s)', id: 'rotdegs' }, + ], + }, + { + name: 'Temperature', + formats: [ + { name: 'Celsius (°C)', id: 'celsius' }, + { name: 'Fahrenheit (°F)', id: 'fahrenheit' }, + { name: 'Kelvin (K)', id: 'kelvin' }, + ], + }, + { + name: 'Velocity', + formats: [ + { name: 'meters/second (m/s)', id: 'velocityms' }, + { name: 'kilometers/hour (km/h)', id: 'velocitykmh' }, + { name: 'miles/hour (mph)', id: 'velocitymph' }, + { name: 'knot (kn)', id: 'velocityknot' }, + ], + }, + { + name: 'Volume', + formats: [ + { name: 'millilitre (mL)', id: 'mlitre' }, + { name: 'litre (L)', id: 'litre' }, + { name: 'cubic meter', id: 'm3' }, + { name: 'Normal cubic meter', id: 'Nm3' }, + { name: 'cubic decimeter', id: 'dm3' }, + { name: 'gallons', id: 'gallons' }, + ], + }, + { + name: 'Boolean', + formats: [ + { name: 'True / False', id: 'bool' }, + { name: 'Yes / No', id: 'bool_yes_no' }, + { name: 'On / Off', id: 'bool_on_off' }, + ], + }, + { + name: 'Misc', + formats: [ + { name: 'String', id: 'string' }, + { name: 'short', id: 'short' }, + { name: 'Percent (0-100)', id: 'percent' }, + { name: 'Percent (0.0-1.0)', id: 'percentunit' }, + { name: 'Humidity (%H)', id: 'humidity' }, + { name: 'Decibel', id: 'dB' }, + { name: 'Hexadecimal (0x)', id: 'hex0x' }, + { name: 'Hexadecimal', id: 'hex' }, + { name: 'Scientific notation', id: 'sci' }, + { name: 'Locale format', id: 'locale' }, + { name: 'Pixels', id: 'pixel' }, + ], + }, +]; + + +export const flattenedCategories = flattenDeep( + dataTypeCategories.map((category) => { + return category.formats; + }), +); diff --git a/frontend/src/container/NewWidget/RightContainer/index.tsx b/frontend/src/container/NewWidget/RightContainer/index.tsx index 079c5d48e1..c3cf3af033 100644 --- a/frontend/src/container/NewWidget/RightContainer/index.tsx +++ b/frontend/src/container/NewWidget/RightContainer/index.tsx @@ -10,7 +10,10 @@ import { GRAPH_TYPES } from 'container/NewDashboard/ComponentsSlider'; import GraphTypes from 'container/NewDashboard/ComponentsSlider/menuItems'; import React, { useCallback } from 'react'; +import { dataTypeCategories } from './dataFormatCategories'; +// import {ca} from '@grafana/data' import { timePreferance } from './timeItems'; +import YAxisUnitSelector from './YAxisUnitSelector'; const { TextArea } = Input; import TimePreference from 'components/TimePreferenceDropDown'; @@ -35,6 +38,8 @@ const RightContainer = ({ selectedGraph, setSelectedTime, selectedTime, + yAxisUnit, + setYAxisUnit, }: RightContainerProps): JSX.Element => { const onChangeHandler = useCallback( (setFunc: React.Dispatch>, value: string) => { @@ -144,6 +149,7 @@ const RightContainer = ({ setSelectedTime, }} /> + ); }; @@ -162,6 +168,8 @@ interface RightContainerProps { selectedGraph: GRAPH_TYPES; setSelectedTime: React.Dispatch>; selectedTime: timePreferance; + yAxisUnit: string; + setYAxisUnit: React.Dispatch>; } export default RightContainer; diff --git a/frontend/src/container/NewWidget/index.tsx b/frontend/src/container/NewWidget/index.tsx index 832aec9f4b..36a95e9b49 100644 --- a/frontend/src/container/NewWidget/index.tsx +++ b/frontend/src/container/NewWidget/index.tsx @@ -17,7 +17,10 @@ import { SaveDashboard, SaveDashboardProps, } from 'store/actions/dashboard/saveDashboard'; -import { UpdateQuery, UpdateQueryProps } from 'store/actions/dashboard/updateQuery'; +import { + UpdateQuery, + UpdateQueryProps, +} from 'store/actions/dashboard/updateQuery'; import { AppState } from 'store/reducers'; import AppActions from 'types/actions'; import { GlobalTime } from 'types/actions/globalTime'; @@ -40,7 +43,7 @@ const NewWidget = ({ applySettingsToPanel, saveSettingOfPanel, getQueryResults, - updateQuery + updateQuery, }: Props): JSX.Element => { const { dashboards } = useSelector( (state) => state.dashboards, @@ -74,6 +77,7 @@ const NewWidget = ({ const [description, setDescription] = useState( selectedWidget?.description || '', ); + const [yAxisUnit, setYAxisUnit] = useState(selectedWidget?.yAxisUnit); const [stacked, setStacked] = useState( selectedWidget?.isStacked || false, @@ -106,6 +110,7 @@ const NewWidget = ({ opacity, timePreferance: selectedTime.enum, title, + yAxisUnit, widgetId: query.get('widgetId') || '', dashboardId: dashboardId, }); @@ -127,11 +132,12 @@ const NewWidget = ({ updateQuery({ widgetId: selectedWidget?.id || '', query: element.query || '', - legend: element.legend || '', - currentIndex: index + legend: element.legend || '', + currentIndex: index, + yAxisUnit, }); - }) - + }); + applySettingsToPanel({ description, isStacked: stacked, @@ -140,8 +146,9 @@ const NewWidget = ({ timePreferance: selectedTime.enum, title, widgetId: selectedWidget?.id || '', + yAxisUnit }); - } + }; const onClickDiscardHandler = useCallback(() => { push(generatePath(ROUTES.DASHBOARD, { dashboardId })); @@ -181,7 +188,7 @@ const NewWidget = ({ - + @@ -194,12 +201,14 @@ const NewWidget = ({ stacked, setStacked, opacity, + yAxisUnit, setOpacity, selectedNullZeroValue, setSelectedNullZeroValue, selectedGraph, setSelectedTime, selectedTime, + setYAxisUnit, }} /> @@ -233,7 +242,7 @@ const mapDispatchToProps = ( applySettingsToPanel: bindActionCreators(ApplySettingsToPanel, dispatch), saveSettingOfPanel: bindActionCreators(SaveDashboard, dispatch), getQueryResults: bindActionCreators(GetQueryResults, dispatch), - updateQuery: bindActionCreators(UpdateQuery, dispatch) + updateQuery: bindActionCreators(UpdateQuery, dispatch), }); type Props = DispatchProps & NewWidgetProps; diff --git a/frontend/src/container/Trace/Graph/index.tsx b/frontend/src/container/Trace/Graph/index.tsx index ce667aec67..e4ab7c49ea 100644 --- a/frontend/src/container/Trace/Graph/index.tsx +++ b/frontend/src/container/Trace/Graph/index.tsx @@ -10,9 +10,10 @@ import { getChartData, getChartDataforGroupBy } from './config'; import { Container } from './styles'; const TraceGraph = (): JSX.Element => { - const { spansGraph, selectedGroupBy } = useSelector( - (state) => state.traces, - ); + const { spansGraph, selectedGroupBy, yAxisUnit } = useSelector< + AppState, + TraceReducer + >((state) => state.traces); const { loading, error, errorMessage, payload } = spansGraph; @@ -40,7 +41,12 @@ const TraceGraph = (): JSX.Element => { return ( - + ); }; diff --git a/frontend/src/container/Trace/TraceGraphFilter/config.ts b/frontend/src/container/Trace/TraceGraphFilter/config.ts index 0c97ca78d5..50769235c8 100644 --- a/frontend/src/container/Trace/TraceGraphFilter/config.ts +++ b/frontend/src/container/Trace/TraceGraphFilter/config.ts @@ -1,6 +1,7 @@ interface Dropdown { key: string; displayValue: string; + yAxisUnit?: string; } export const groupBy: Dropdown[] = [ @@ -60,32 +61,42 @@ export const groupBy: Dropdown[] = [ ]; export const functions: Dropdown[] = [ - { displayValue: 'Count', key: 'count' }, - { displayValue: 'Rate per sec', key: 'ratePerSec' }, - { displayValue: 'Sum(duration in ns)', key: 'sum' }, - { displayValue: 'Avg(duration in ns)', key: 'avg' }, + { displayValue: 'Count', key: 'count', yAxisUnit: 'short' }, + { + displayValue: 'Rate per sec', + key: 'ratePerSec', + yAxisUnit: 'reqps', + }, + { displayValue: 'Sum(duration in ns)', key: 'sum', yAxisUnit: 'ns' }, + { displayValue: 'Avg(duration in ns)', key: 'avg', yAxisUnit: 'ns' }, { displayValue: 'Max(duration in ns)', key: 'max', + yAxisUnit: 'ns', }, { displayValue: 'Min(duration in ns)', key: 'min', + yAxisUnit: 'ns', }, { displayValue: '50th percentile(duration in ns)', key: 'p50', + yAxisUnit: 'ns', }, { displayValue: '90th percentile(duration in ns)', key: 'p90', + yAxisUnit: 'ns', }, { displayValue: '95th percentile(duration in ns)', key: 'p95', + yAxisUnit: 'ns', }, { displayValue: '99th percentile(duration in ns)', key: 'p99', + yAxisUnit: 'ns', }, ]; diff --git a/frontend/src/container/Trace/TraceGraphFilter/index.tsx b/frontend/src/container/Trace/TraceGraphFilter/index.tsx index e6aad7374a..e929efadee 100644 --- a/frontend/src/container/Trace/TraceGraphFilter/index.tsx +++ b/frontend/src/container/Trace/TraceGraphFilter/index.tsx @@ -31,6 +31,7 @@ const TraceGraphFilter = () => { type: UPDATE_SELECTED_FUNCTION, payload: { selectedFunction: selected.key, + yAxisUnit: selected.yAxisUnit, }, }); } diff --git a/frontend/src/store/actions/dashboard/updateQuery.ts b/frontend/src/store/actions/dashboard/updateQuery.ts index c89895ca9a..a129df72e2 100644 --- a/frontend/src/store/actions/dashboard/updateQuery.ts +++ b/frontend/src/store/actions/dashboard/updateQuery.ts @@ -31,6 +31,7 @@ export const UpdateQuery = ( payload: { query: queryArray, widgetId: props.widgetId, + yAxisUnit: props.yAxisUnit, }, }); }; @@ -41,4 +42,5 @@ export interface UpdateQueryProps { query: string; legend: string; currentIndex: number; + yAxisUnit: string | undefined; } diff --git a/frontend/src/store/reducers/dashboard.ts b/frontend/src/store/reducers/dashboard.ts index 41dbf42007..06977ef77e 100644 --- a/frontend/src/store/reducers/dashboard.ts +++ b/frontend/src/store/reducers/dashboard.ts @@ -402,7 +402,7 @@ const dashboard = ( } case UPDATE_QUERY: { - const { query, widgetId } = action.payload; + const { query, widgetId, yAxisUnit } = action.payload; const { dashboards } = state; const [selectedDashboard] = dashboards; const { data } = selectedDashboard; @@ -431,6 +431,7 @@ const dashboard = ( { ...selectedWidget, query, + yAxisUnit, }, ...afterWidget, ], diff --git a/frontend/src/store/reducers/trace.ts b/frontend/src/store/reducers/trace.ts index cbccb6e7af..dc74a0dd66 100644 --- a/frontend/src/store/reducers/trace.ts +++ b/frontend/src/store/reducers/trace.ts @@ -40,6 +40,7 @@ const initialValue: TraceReducer = { }, selectedGroupBy: '', selectedFunction: 'count', + yAxisUnit: '', spansGraph: { error: false, errorMessage: '', @@ -139,6 +140,7 @@ const traceReducer = ( return { ...state, selectedFunction: action.payload.selectedFunction, + yAxisUnit: action.payload.yAxisUnit, }; } diff --git a/frontend/src/types/actions/dashboard.ts b/frontend/src/types/actions/dashboard.ts index 4a5022e587..b0d02d1b67 100644 --- a/frontend/src/types/actions/dashboard.ts +++ b/frontend/src/types/actions/dashboard.ts @@ -138,6 +138,7 @@ interface UpdateQuery { payload: { query: Query[]; widgetId: string; + yAxisUnit: string | undefined; }; } diff --git a/frontend/src/types/actions/trace.ts b/frontend/src/types/actions/trace.ts index a31a676a93..5ea4b85357 100644 --- a/frontend/src/types/actions/trace.ts +++ b/frontend/src/types/actions/trace.ts @@ -116,6 +116,7 @@ export interface UpdateSelectedFunction { type: typeof UPDATE_SELECTED_FUNCTION; payload: { selectedFunction: TraceReducer['selectedFunction']; + yAxisUnit: string | undefined; }; } diff --git a/frontend/src/types/reducer/trace.ts b/frontend/src/types/reducer/trace.ts index a77f4a4b87..a033bf2879 100644 --- a/frontend/src/types/reducer/trace.ts +++ b/frontend/src/types/reducer/trace.ts @@ -27,6 +27,7 @@ export interface TraceReducer { errorMessage: string; payload: PayloadProps; }; + yAxisUnit: string | undefined; } interface SpansAggregateData { diff --git a/frontend/yarn.lock b/frontend/yarn.lock index 50c8c54055..f853d0635b 100644 --- a/frontend/yarn.lock +++ b/frontend/yarn.lock @@ -1268,6 +1268,11 @@ resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== +"@braintree/sanitize-url@5.0.2": + version "5.0.2" + resolved "https://registry.yarnpkg.com/@braintree/sanitize-url/-/sanitize-url-5.0.2.tgz#b23080fa35520e993a8a37a0f5bca26aa4650a48" + integrity sha512-NBEJlHWrhQucLhZGHtSxM2loSaNUMajC7KOYJLyfcdW/6goVoff2HoYI3bz8YCDN0wKGbxtUL0gx2dvHpvnWlw== + "@cnakazawa/watch@^1.0.3": version "1.0.4" resolved "https://registry.yarnpkg.com/@cnakazawa/watch/-/watch-1.0.4.tgz#f864ae85004d0fcab6f50be9141c4da368d1656a" @@ -1367,6 +1372,38 @@ minimatch "^3.0.4" strip-json-comments "^3.1.1" +"@grafana/data@^8.4.3": + version "8.4.3" + resolved "https://registry.yarnpkg.com/@grafana/data/-/data-8.4.3.tgz#897aa572fb628c8763e1acee59ca52fd3955b04e" + integrity sha512-1rUKpYzP8Z4gvYBQg89F4kJx77aBmsmo49VK1BVCCl7F78xWY5umQJkaSdYInAMUs3RjhXl1ib20US+eA8ldnw== + dependencies: + "@braintree/sanitize-url" "5.0.2" + "@grafana/schema" "8.4.3" + "@types/d3-interpolate" "^1.4.0" + d3-interpolate "1.4.0" + date-fns "2.28.0" + eventemitter3 "4.0.7" + lodash "4.17.21" + marked "4.0.10" + moment "2.29.1" + moment-timezone "0.5.34" + ol "6.12.0" + papaparse "5.3.1" + react "17.0.2" + react-dom "17.0.2" + regenerator-runtime "0.13.9" + rxjs "7.5.1" + tslib "2.3.1" + uplot "1.6.19" + xss "1.0.10" + +"@grafana/schema@8.4.3": + version "8.4.3" + resolved "https://registry.yarnpkg.com/@grafana/schema/-/schema-8.4.3.tgz#fe6a7ad32e01db51561e67f9a8b36d9a2bf98829" + integrity sha512-YwZiWPkOdVeRg70v0kQAN0FJTiKs+arckt9CtNd4bHjtHQYnnEBYqVqXvIUODYAkaNicPZkOy96YQYVTkHotDg== + dependencies: + tslib "2.3.1" + "@humanwhocodes/config-array@^0.5.0": version "0.5.0" resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.5.0.tgz#1407967d4c6eecd7388f83acf1eaf4d0c6e58ef9" @@ -1579,6 +1616,35 @@ "@types/yargs" "^16.0.0" chalk "^4.0.0" +"@mapbox/jsonlint-lines-primitives@~2.0.2": + version "2.0.2" + resolved "https://registry.yarnpkg.com/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz#ce56e539f83552b58d10d672ea4d6fc9adc7b234" + integrity sha1-zlblOfg1UrWNENZy6k1vya3HsjQ= + +"@mapbox/mapbox-gl-style-spec@^13.20.1": + version "13.23.1" + resolved "https://registry.yarnpkg.com/@mapbox/mapbox-gl-style-spec/-/mapbox-gl-style-spec-13.23.1.tgz#481f41801517b7b52fea595f07d3633a903a250c" + integrity sha512-C6wh8A/5EdsgzhL6y6yl464VCQNIxK0yjrpnvCvchcFe3sNK2RbBw/J9u3m+p8Y6S6MsGuSMt3AkGAXOKMYweQ== + dependencies: + "@mapbox/jsonlint-lines-primitives" "~2.0.2" + "@mapbox/point-geometry" "^0.1.0" + "@mapbox/unitbezier" "^0.0.0" + csscolorparser "~1.0.2" + json-stringify-pretty-compact "^2.0.0" + minimist "^1.2.5" + rw "^1.3.3" + sort-object "^0.3.2" + +"@mapbox/point-geometry@^0.1.0": + version "0.1.0" + resolved "https://registry.yarnpkg.com/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz#8a83f9335c7860effa2eeeca254332aa0aeed8f2" + integrity sha1-ioP5M1x4YO/6Lu7KJUMyqgru2PI= + +"@mapbox/unitbezier@^0.0.0": + version "0.0.0" + resolved "https://registry.yarnpkg.com/@mapbox/unitbezier/-/unitbezier-0.0.0.tgz#15651bd553a67b8581fb398810c98ad86a34524e" + integrity sha1-FWUb1VOme4WB+zmIEMmK2Go0Uk4= + "@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" @@ -1600,6 +1666,11 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" +"@petamoriken/float16@^3.4.7": + version "3.6.3" + resolved "https://registry.yarnpkg.com/@petamoriken/float16/-/float16-3.6.3.tgz#7ed8f2ae05ea4096f0ccdf2c2655d04aca545d33" + integrity sha512-Yx6Z93kmz3JVPYoPPRFJXnt2/G4kfaxRROcZVVHsE4zOClJXvkOVidv/JfvP6hWn16lykbKYKVzUsId6mqXdGg== + "@polka/url@^1.0.0-next.20": version "1.0.0-next.21" resolved "https://registry.yarnpkg.com/@polka/url/-/url-1.0.0-next.21.tgz#5de5a2385a35309427f6011992b544514d559aa1" @@ -1855,6 +1926,11 @@ resolved "https://registry.yarnpkg.com/@types/d3-chord/-/d3-chord-2.0.3.tgz#3009b792b754da964d893b4269d1fe7757f21370" integrity sha512-koIqSNQLPRQPXt7c55hgRF6Lr9Ps72r1+Biv55jdYR+SHJ463MsB2lp4ktzttFNmrQw/9yWthf/OmSUj5dNXKw== +"@types/d3-color@^1": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@types/d3-color/-/d3-color-1.4.2.tgz#944f281d04a0f06e134ea96adbb68303515b2784" + integrity sha512-fYtiVLBYy7VQX+Kx7wU/uOIkGQn8aAEY8oWMoyja3N4dLd8Yf6XgSIR/4yWvMuveNOH5VShnqCgRqqh/UNanBA== + "@types/d3-color@^2": version "2.0.3" resolved "https://registry.yarnpkg.com/@types/d3-color/-/d3-color-2.0.3.tgz#8bc4589073c80e33d126345542f588056511fe82" @@ -1924,6 +2000,13 @@ resolved "https://registry.yarnpkg.com/@types/d3-hierarchy/-/d3-hierarchy-2.0.2.tgz#afd09d509c36e8cd4907333556f8b591f23589e9" integrity sha512-6PlBRwbjUPPt0ZFq/HTUyOAdOF3p73EUYots74lHMUyAVtdFSOS/hAeNXtEIM9i7qRDntuIblXxHGUMb9MuNRA== +"@types/d3-interpolate@^1.4.0": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@types/d3-interpolate/-/d3-interpolate-1.4.2.tgz#88902a205f682773a517612299a44699285eed7b" + integrity sha512-ylycts6llFf8yAEs1tXzx2loxxzDZHseuhPokrqKprTQSTcD3JbJI1omZP1rphsELZO3Q+of3ff0ZS7+O6yVzg== + dependencies: + "@types/d3-color" "^1" + "@types/d3-interpolate@^2": version "2.0.2" resolved "https://registry.yarnpkg.com/@types/d3-interpolate/-/d3-interpolate-2.0.2.tgz#78eddf7278b19e48e8652603045528d46897aba0" @@ -2864,53 +2947,53 @@ ansi-styles@^5.0.0: resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== -antd@^4.16.13: - version "4.17.2" - resolved "https://registry.yarnpkg.com/antd/-/antd-4.17.2.tgz#c50123e6da990d8a41bc1ed6fbfc6d587b014ae0" - integrity sha512-1/xwj72mzg2ly5byvnxsgucEL5JMrinlsaAr4Y+vjobmTBSI9l9zOVkwwOG8kPIrFkhrzC1I42n6GZKnTwfZmg== +antd@4.19.2: + version "4.19.2" + resolved "https://registry.yarnpkg.com/antd/-/antd-4.19.2.tgz#5438478aedf61bf670784611cba077387ff0f1b3" + integrity sha512-qXM6d6hFsT5rZJB4TRTHl32dixu1IHmPD0QLzG5YuUpzecv6QoTr1ZMp2/I1MMCb1+n99yQ5gFx7U677AbL5hw== dependencies: "@ant-design/colors" "^6.0.0" "@ant-design/icons" "^4.7.0" "@ant-design/react-slick" "~0.28.1" "@babel/runtime" "^7.12.5" "@ctrl/tinycolor" "^3.4.0" - array-tree-filter "^2.1.0" classnames "^2.2.6" copy-to-clipboard "^3.2.0" lodash "^4.17.21" memoize-one "^6.0.0" moment "^2.25.3" - rc-cascader "~2.2.0" + rc-cascader "~3.2.1" rc-checkbox "~2.3.0" rc-collapse "~3.1.0" rc-dialog "~8.6.0" rc-drawer "~4.4.2" - rc-dropdown "~3.2.0" - rc-field-form "~1.21.0" + rc-dropdown "~3.3.2" + rc-field-form "~1.24.0" rc-image "~5.2.5" + rc-input "~0.0.1-alpha.5" rc-input-number "~7.3.0" rc-mentions "~1.6.1" - rc-menu "~9.0.12" + rc-menu "~9.3.2" rc-motion "^2.4.4" rc-notification "~4.5.7" rc-pagination "~3.1.9" - rc-picker "~2.5.17" - rc-progress "~3.1.0" + rc-picker "~2.6.4" + rc-progress "~3.2.1" rc-rate "~2.9.0" - rc-resize-observer "^1.0.0" - rc-select "~13.1.0-alpha.0" - rc-slider "~9.7.4" + rc-resize-observer "^1.2.0" + rc-select "~14.0.2" + rc-slider "~10.0.0-alpha.4" rc-steps "~4.1.0" rc-switch "~3.2.0" - rc-table "~7.19.0" + rc-table "~7.23.0" rc-tabs "~11.10.0" rc-textarea "~0.3.0" rc-tooltip "~5.1.1" - rc-tree "~5.3.0" - rc-tree-select "~4.7.0" + rc-tree "~5.4.3" + rc-tree-select "~5.1.1" rc-trigger "^5.2.10" rc-upload "~4.3.0" - rc-util "^5.14.0" + rc-util "^5.19.3" scroll-into-view-if-needed "^2.2.25" anymatch@^2.0.0: @@ -3716,7 +3799,7 @@ call-bind@^1.0.0, call-bind@^1.0.2: function-bind "^1.1.1" get-intrinsic "^1.0.2" -callsites@^3.0.0: +callsites@^3.0.0, callsites@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== @@ -3892,7 +3975,7 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -classnames@2.3.1, classnames@2.x, classnames@^2.2.1, classnames@^2.2.3, classnames@^2.2.5, classnames@^2.2.6: +classnames@2.3.1, classnames@2.x, classnames@^2.2.1, classnames@^2.2.3, classnames@^2.2.5, classnames@^2.2.6, classnames@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/classnames/-/classnames-2.3.1.tgz#dfcfa3891e306ec1dad105d0e88f4417b8535e8e" integrity sha512-OlQdbZ7gLfGarSqxesMesDa5uz7KFbID8Kpq/SxIoNGDqY8lSYs0D+hhtBXhcdB3rcbXArFr7vlHheLk1voeNA== @@ -4037,7 +4120,7 @@ combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" -commander@2, commander@^2.20.0: +commander@2, commander@^2.20.0, commander@^2.20.3: 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== @@ -4408,11 +4491,21 @@ css@^3.0.0: source-map "^0.6.1" source-map-resolve "^0.6.0" +csscolorparser@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/csscolorparser/-/csscolorparser-1.0.3.tgz#b34f391eea4da8f3e98231e2ccd8df9c041f171b" + integrity sha1-s085HupNqPPpgjHizNjfnAQfFxs= + cssesc@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== +cssfilter@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae" + integrity sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4= + cssnano-preset-default@^5.1.8: version "5.1.8" resolved "https://registry.yarnpkg.com/cssnano-preset-default/-/cssnano-preset-default-5.1.8.tgz#7525feb1b72f7b06e57f55064cbdae341d79dea2" @@ -4773,7 +4866,7 @@ d3-hierarchy@^1.1.4, d3-hierarchy@^1.1.9: resolved "https://registry.yarnpkg.com/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz#2f6bee24caaea43f8dc37545fa01628559647a83" integrity sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ== -d3-interpolate@1, d3-interpolate@^1.1.4: +d3-interpolate@1, d3-interpolate@1.4.0, d3-interpolate@^1.1.4: version "1.4.0" resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-1.4.0.tgz#526e79e2d80daa383f9e0c1c1c7dcc0f0583e987" integrity sha512-V9znK0zc3jOPV4VD2zZn0sDhZU3WAE2bmlxdIwwQPPzPjvyLkd8B3JUVdS1IDUFDkWZ72c9qnv1GK2ZagTZ8EA== @@ -5101,6 +5194,11 @@ data-urls@^2.0.0: whatwg-mimetype "^2.3.0" whatwg-url "^8.0.0" +date-fns@2.28.0: + version "2.28.0" + resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.28.0.tgz#9570d656f5fc13143e50c975a3b6bbeb46cd08b2" + integrity sha512-8d35hViGYx/QH0icHYCeLmsLmMUheMmTyV9Fcm6gvNwdw31yXXH+O85sOBJ+OLnLQMKZowvpKb6FgMIQjcpvQw== + date-fns@2.x: version "2.27.0" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-2.27.0.tgz#e1ff3c3ddbbab8a2eaadbb6106be2929a5a2d92b" @@ -5454,6 +5552,11 @@ electron-to-chromium@^1.3.896: resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.8.tgz#e1b7752ac1a75e39b5dd90cc7e29ea08b351c484" integrity sha512-Cu5+dbg55+1E3ohlsa8HT0s4b8D0gBewXEGG8s5wBl8ynWv60VuvYW25GpsOeTVXpulhyU/U8JYZH+yxASSJBQ== +emitter-component@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/emitter-component/-/emitter-component-1.1.1.tgz#065e2dbed6959bf470679edabeaf7981d1003ab6" + integrity sha1-Bl4tvtaVm/RwZ57avq95gdEAOrY= + emittery@^0.7.1: version "0.7.2" resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82" @@ -5800,6 +5903,11 @@ eslint@^7.30.0: text-table "^0.2.0" v8-compile-cache "^2.0.3" +esm@^3.2.25: + version "3.2.25" + resolved "https://registry.yarnpkg.com/esm/-/esm-3.2.25.tgz#342c18c29d56157688ba5ce31f8431fbb795cc10" + integrity sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA== + espree@^7.3.0, espree@^7.3.1: version "7.3.1" resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" @@ -5853,7 +5961,7 @@ eventemitter2@^6.4.3: resolved "https://registry.yarnpkg.com/eventemitter2/-/eventemitter2-6.4.5.tgz#97380f758ae24ac15df8353e0cc27f8b95644655" integrity sha512-bXE7Dyc1i6oQElDG0jMRZJrRAn9QR2xyyFGmBdZleNmyQX0FqGYmhZIrIrpPfm/w//LTo4tVQGOGQcGCb5q9uw== -eventemitter3@^4.0.0: +eventemitter3@4.0.7, eventemitter3@^4.0.0: version "4.0.7" resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== @@ -6358,6 +6466,19 @@ gensync@^1.0.0-beta.1, gensync@^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== +geotiff@^1.0.8: + version "1.0.9" + resolved "https://registry.yarnpkg.com/geotiff/-/geotiff-1.0.9.tgz#a2037c1f672c0a11bfbac8b46bbc56f901e32198" + integrity sha512-PY+q1OP8RtQZkx1630pVfC3hEkxFnGW9LwIF/glSzcalyShkrH+W8uM/M4RVY12j4QkDQvRXVKOpU65hq6t0iQ== + dependencies: + "@petamoriken/float16" "^3.4.7" + lerc "^3.0.0" + lru-cache "^6.0.0" + pako "^2.0.4" + parse-headers "^2.0.2" + threads "^1.7.0" + xml-utils "^1.0.2" + get-caller-file@^2.0.1: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" @@ -6824,6 +6945,11 @@ icss-utils@^5.1.0: resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== +ieee754@^1.1.12: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + ignore@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" @@ -7154,6 +7280,11 @@ is-obj@^1.0.0, is-obj@^1.0.1: resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= +is-observable@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-observable/-/is-observable-2.1.0.tgz#5c8d733a0b201c80dff7bb7c0df58c6a255c7c69" + integrity sha512-DailKdLb0WU+xX8K5w7VsJhapwHLZ9jjmazqCJq4X12CTgqq73TKnbRcnSLuXYPOoLQgV5IrD7ePiX/h1vnkBw== + is-path-cwd@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-2.2.0.tgz#67d43b82664a7b5191fd9119127eb300048a9fdb" @@ -7844,6 +7975,11 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= +json-stringify-pretty-compact@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/json-stringify-pretty-compact/-/json-stringify-pretty-compact-2.0.0.tgz#e77c419f52ff00c45a31f07f4c820c2433143885" + integrity sha512-WRitRfs6BGq4q8gTgOy4ek7iPFXjbra0H3PmDLKm2xnZ+Gh1HUhiKGgCZkSPNULlP7mvfu6FV/mOLhCarspADQ== + 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" @@ -7957,6 +8093,11 @@ lazy-ass@^1.6.0: resolved "https://registry.yarnpkg.com/lazy-ass/-/lazy-ass-1.6.0.tgz#7999655e8646c17f089fdd187d150d3324d54513" integrity sha1-eZllXoZGwX8In90YfRUNMyTVRRM= +lerc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lerc/-/lerc-3.0.0.tgz#36f36fbd4ba46f0abf4833799fff2e7d6865f5cb" + integrity sha512-Rm4J/WaHhRa93nCN2mwWDZFoRVF18G1f47C+kvQWyHGEZxFpTUi73p7lMVSAndyxGt6lJ2/CFbOcf9ra5p8aww== + less-loader@^10.2.0: version "10.2.0" resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-10.2.0.tgz#97286d8797dc3dc05b1d16b0ecec5f968bdd4e32" @@ -8182,7 +8323,7 @@ lodash.uniq@^4.5.0: resolved "https://registry.yarnpkg.com/lodash.uniq/-/lodash.uniq-4.5.0.tgz#d0225373aeb652adc1bc82e4945339a842754773" integrity sha1-0CJTc662Uq3BvILklFM5qEJ1R3M= -lodash@^4, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.7.0: +lodash@4.17.21, lodash@^4, lodash@^4.17.11, lodash@^4.17.14, lodash@^4.17.15, lodash@^4.17.19, lodash@^4.17.20, lodash@^4.17.21, lodash@^4.17.4, lodash@^4.7.0: version "4.17.21" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== @@ -8210,7 +8351,7 @@ loglevelnext@^3.0.1: resolved "https://registry.yarnpkg.com/loglevelnext/-/loglevelnext-3.0.1.tgz#e3e4659c4061c09264f6812c33586dc55a009a04" integrity sha512-JpjaJhIN1reaSb26SIxDGtE0uc67gPl19OMVHrr+Ggt6b/Vy60jmCtKgQBrygAH0bhRA2nkxgDvM+8QvR8r0YA== -loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, loose-envify@^1.4.0: +loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3.1, 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== @@ -8282,6 +8423,16 @@ map-visit@^1.0.0: dependencies: object-visit "^1.0.0" +mapbox-to-css-font@^2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/mapbox-to-css-font/-/mapbox-to-css-font-2.4.1.tgz#41bf38faed36b7dab069828aa3654e4bd91a1eda" + integrity sha512-QQ/iKiM43DM9+aujTL45Iz5o7gDeSFmy4LPl3HZmNcwCE++NxGazf+yFpY+wCb+YS23sDa1ghpo3zrNFOcHlow== + +marked@4.0.10: + version "4.0.10" + resolved "https://registry.yarnpkg.com/marked/-/marked-4.0.10.tgz#423e295385cc0c3a70fa495e0df68b007b879423" + integrity sha512-+QvuFj0nGgO970fySghXGmuw+Fd0gD2x3+MqCWLIPf5oxdv1Ka6b2q+z9RP01P/IaKPMEramy+7cNy/Lw8c3hw== + mdn-data@2.0.14: version "2.0.14" resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50" @@ -8442,7 +8593,14 @@ mkdirp@~1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== -moment@>=2.13.0, moment@^2.24.0, moment@^2.25.3: +moment-timezone@0.5.34: + version "0.5.34" + resolved "https://registry.yarnpkg.com/moment-timezone/-/moment-timezone-0.5.34.tgz#a75938f7476b88f155d3504a9343f7519d9a405c" + integrity sha512-3zAEHh2hKUs3EXLESx/wsgw6IQdusOT8Bxm3D9UrHPQR7zlMmzwybC8zHEM1tQ4LJwP7fcxrWr8tuBg05fFCbg== + dependencies: + moment ">= 2.9.0" + +moment@2.29.1, "moment@>= 2.9.0", moment@>=2.13.0, moment@^2.24.0, moment@^2.25.3: version "2.29.1" resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== @@ -8810,11 +8968,35 @@ object.values@^1.1.5: define-properties "^1.1.3" es-abstract "^1.19.1" +observable-fns@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/observable-fns/-/observable-fns-0.6.1.tgz#636eae4fdd1132e88c0faf38d33658cc79d87e37" + integrity sha512-9gRK4+sRWzeN6AOewNBTLXir7Zl/i3GB6Yl26gK4flxz8BXVpD3kt8amREmWNb0mxYOGDotvE5a4N+PtGGKdkg== + obuf@^1.0.0, obuf@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== +ol-mapbox-style@^6.8.2: + version "6.9.0" + resolved "https://registry.yarnpkg.com/ol-mapbox-style/-/ol-mapbox-style-6.9.0.tgz#b9587e390d8cc2037481ecdea53f0a6b9ba1d46c" + integrity sha512-Isxk+IPB6pCBD2Pubz9cpQcZjEeuPhxyk/QsLZjb2+KwvyGaIFltdlxnxx/QXJ7rOxUiLvS/XhsOyiK0c7prEw== + dependencies: + "@mapbox/mapbox-gl-style-spec" "^13.20.1" + mapbox-to-css-font "^2.4.1" + webfont-matcher "^1.1.0" + +ol@6.12.0: + version "6.12.0" + resolved "https://registry.yarnpkg.com/ol/-/ol-6.12.0.tgz#0de51abad0aaeb0eca41cba3c6d26ee485a3e92b" + integrity sha512-HR87aV//64aiGWbgzfsyRF5zFG+1nM1keRE4SugY0vmYyG/jjoij8qh3uaFHkFNQThdAy99sgLiQwTFk6AvGgw== + dependencies: + geotiff "^1.0.8" + ol-mapbox-style "^6.8.2" + pbf "3.2.1" + rbush "^3.0.1" + on-finished@~2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" @@ -8980,6 +9162,16 @@ p-try@^2.0.0: resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== +pako@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pako/-/pako-2.0.4.tgz#6cebc4bbb0b6c73b0d5b8d7e8476e2b2fbea576d" + integrity sha512-v8tweI900AUkZN6heMU/4Uy4cXRc2AYNRggVmTR+dEncawDJgCdLMximOVA2p4qO57WMynangsfGRb5WD6L1Bg== + +papaparse@5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/papaparse/-/papaparse-5.3.1.tgz#770b7a9124d821d4b2132132b7bd7dce7194b5b1" + integrity sha512-Dbt2yjLJrCwH2sRqKFFJaN5XgIASO9YOFeFP8rIBRG2Ain8mqk5r1M6DkfvqEVozVcz3r3HaUGw253hA1nLIcA== + param-case@^3.0.3: version "3.0.4" resolved "https://registry.yarnpkg.com/param-case/-/param-case-3.0.4.tgz#7d17fe4aa12bde34d4a77d91acfb6219caad01c5" @@ -9013,7 +9205,7 @@ parse-bmfont-xml@^1.1.4: xml-parse-from-string "^1.0.0" xml2js "^0.4.5" -parse-headers@^2.0.0: +parse-headers@^2.0.0, parse-headers@^2.0.2: version "2.0.4" resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.4.tgz#9eaf2d02bed2d1eff494331ce3df36d7924760bf" integrity sha512-psZ9iZoCNFLrgRjZ1d8mn0h9WRqJwFxM9q3x7iUjN/YT2OksthDJ5TiPCu2F38kS4zutqfW+YdVVkBZZx3/1aw== @@ -9110,6 +9302,14 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +pbf@3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/pbf/-/pbf-3.2.1.tgz#b4c1b9e72af966cd82c6531691115cc0409ffe2a" + integrity sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ== + dependencies: + ieee754 "^1.1.12" + resolve-protobuf-schema "^2.1.0" + pend@~1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" @@ -9664,6 +9864,11 @@ prop-types@15.x, prop-types@^15.0.0, prop-types@^15.5.10, prop-types@^15.5.8, pr object-assign "^4.1.1" react-is "^16.8.1" +protocol-buffers-schema@^3.3.1: + version "3.6.0" + resolved "https://registry.yarnpkg.com/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz#77bc75a48b2ff142c1ad5b5b90c94cd0fa2efd03" + integrity sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw== + proxy-addr@~2.0.5: version "2.0.7" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" @@ -9743,6 +9948,11 @@ queue-microtask@^1.2.2: resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== +quickselect@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/quickselect/-/quickselect-2.0.0.tgz#f19680a486a5eefb581303e023e98faaf25dd018" + integrity sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw== + raf@^3.1.0: version "3.4.1" resolved "https://registry.yarnpkg.com/raf/-/raf-3.4.1.tgz#0742e99a4a6552f445d73e3ee0328af0ff1ede39" @@ -9777,6 +9987,13 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" +rbush@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/rbush/-/rbush-3.0.1.tgz#5fafa8a79b3b9afdfe5008403a720cc1de882ecf" + integrity sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w== + dependencies: + quickselect "^2.0.0" + rc-align@^4.0.0: version "4.0.11" resolved "https://registry.yarnpkg.com/rc-align/-/rc-align-4.0.11.tgz#8198c62db266bc1b8ef05e56c13275bf72628a5e" @@ -9789,17 +10006,17 @@ rc-align@^4.0.0: rc-util "^5.3.0" resize-observer-polyfill "^1.5.1" -rc-cascader@~2.2.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/rc-cascader/-/rc-cascader-2.2.1.tgz#ec6cfa9d631e6e787abedb2db8c6b014ba1e15b6" - integrity sha512-4saWcwpmxxh5fhUdaDgOLF2gWL8KNxLwWqELX702HNXEt2yU7AixjfvgEORNsnQZleT2W2AaGMkRDeWrwt8fMw== +rc-cascader@~3.2.1: + version "3.2.9" + resolved "https://registry.yarnpkg.com/rc-cascader/-/rc-cascader-3.2.9.tgz#b993fa2829d77e9cb98cf4b7711e13a1b1812db6" + integrity sha512-Mvkegzf506PD7qc38kg2tGllIBXs5dio3DPg+NER7SiOfCXBCATWYEs0CbUp8JDQgYHoHF0vPvFMYtxFTJuWaw== dependencies: "@babel/runtime" "^7.12.5" array-tree-filter "^2.1.0" - rc-tree-select "~4.7.0" - rc-trigger "^5.0.4" - rc-util "^5.0.1" - warning "^4.0.1" + classnames "^2.3.1" + rc-select "~14.0.0-alpha.23" + rc-tree "~5.4.3" + rc-util "^5.6.1" rc-checkbox@~2.3.0: version "2.3.2" @@ -9839,7 +10056,7 @@ rc-drawer@~4.4.2: classnames "^2.2.6" rc-util "^5.7.0" -rc-dropdown@^3.2.0, rc-dropdown@~3.2.0: +rc-dropdown@^3.2.0: version "3.2.0" resolved "https://registry.yarnpkg.com/rc-dropdown/-/rc-dropdown-3.2.0.tgz#da6c2ada403842baee3a9e909a0b1a91ba3e1090" integrity sha512-j1HSw+/QqlhxyTEF6BArVZnTmezw2LnSmRk6I9W7BCqNCKaRwleRmMMs1PHbuaG8dKHVqP6e21RQ7vPBLVnnNw== @@ -9848,10 +10065,20 @@ rc-dropdown@^3.2.0, rc-dropdown@~3.2.0: classnames "^2.2.6" rc-trigger "^5.0.4" -rc-field-form@~1.21.0: - version "1.21.2" - resolved "https://registry.yarnpkg.com/rc-field-form/-/rc-field-form-1.21.2.tgz#85bda1ee006ae9f1d146e1000337c69b4bb6d101" - integrity sha512-LR/bURt/Tf5g39mb0wtMtQuWn42d/7kEzpzlC5fNC7yaRVmLTtlPP4sBBlaViETM9uZQKLoaB0Pt9Mubhm9gow== +rc-dropdown@~3.3.2: + version "3.3.3" + resolved "https://registry.yarnpkg.com/rc-dropdown/-/rc-dropdown-3.3.3.tgz#17ba32ebd066ae397b00e9e4d570c7c21daed88f" + integrity sha512-UNe68VpvtrpU0CS4jh5hD4iGqzi4Pdp7uOya6+H3QIEZxe7K+Xs11BNjZm6W4MaL0jTmzUj+bxvnq5bP3rRoVQ== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.6" + rc-trigger "^5.0.4" + rc-util "^5.17.0" + +rc-field-form@~1.24.0: + version "1.24.0" + resolved "https://registry.yarnpkg.com/rc-field-form/-/rc-field-form-1.24.0.tgz#2510a5c34713831ddcb412d4560be9057fc0dc5e" + integrity sha512-5beNBU5gEyi8YRYyqbTWSu5hO0jZQN0AWpY3U7TcllUKrDLcZZdRXuAOpyxJQcttWFs+UAFsbcRAUtnOGBjl7w== dependencies: "@babel/runtime" "^7.8.4" async-validator "^4.0.2" @@ -9876,6 +10103,15 @@ rc-input-number@~7.3.0: classnames "^2.2.5" rc-util "^5.9.8" +rc-input@~0.0.1-alpha.5: + version "0.0.1-alpha.5" + resolved "https://registry.yarnpkg.com/rc-input/-/rc-input-0.0.1-alpha.5.tgz#cc043c44570c651f4d10d9809b3d634ed12537e6" + integrity sha512-RHvNweOVWFbbx2l/y6hgnSAdOg5fXc1D1VGhX2RNkGGyGr6cemnvyiYMxwZJjcXs0al3YK9jMObm20+DgH/mpw== + dependencies: + "@babel/runtime" "^7.11.1" + classnames "^2.2.1" + rc-util "^5.18.1" + rc-mentions@~1.6.1: version "1.6.1" resolved "https://registry.yarnpkg.com/rc-mentions/-/rc-mentions-1.6.1.tgz#46035027d64aa33ef840ba0fbd411871e34617ae" @@ -9888,7 +10124,7 @@ rc-mentions@~1.6.1: rc-trigger "^5.0.4" rc-util "^5.0.1" -rc-menu@^9.0.0, rc-menu@~9.0.12: +rc-menu@^9.0.0: version "9.0.14" resolved "https://registry.yarnpkg.com/rc-menu/-/rc-menu-9.0.14.tgz#289bda4a2f6c5ebb3248e2e305d52cf0c73cb9d5" integrity sha512-CIox5mZeLDAi32SlHrV7UeSjv7tmJJhwRyxQtZCKt351w3q59XlL4WMFOmtT9gwIfP9h0XoxdBZUMe/xzkp78A== @@ -9901,6 +10137,19 @@ rc-menu@^9.0.0, rc-menu@~9.0.12: rc-util "^5.12.0" shallowequal "^1.1.0" +rc-menu@~9.3.2: + version "9.3.2" + resolved "https://registry.yarnpkg.com/rc-menu/-/rc-menu-9.3.2.tgz#bb842d37ebf71da912bea201cf7ef0a27267ad49" + integrity sha512-h3m45oY1INZyqphGELkdT0uiPnFzxkML8m0VMhJnk2fowtqfiT7F5tJLT3znEVaPIY80vMy1bClCkgq8U91CzQ== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "2.x" + rc-motion "^2.4.3" + rc-overflow "^1.2.0" + rc-trigger "^5.1.2" + rc-util "^5.12.0" + shallowequal "^1.1.0" + rc-motion@^2.0.0, rc-motion@^2.0.1, rc-motion@^2.2.0, rc-motion@^2.3.0, rc-motion@^2.3.4, rc-motion@^2.4.3, rc-motion@^2.4.4: version "2.4.4" resolved "https://registry.yarnpkg.com/rc-motion/-/rc-motion-2.4.4.tgz#e995d5fa24fc93065c24f714857cf2677d655bb0" @@ -9938,10 +10187,10 @@ rc-pagination@~3.1.9: "@babel/runtime" "^7.10.1" classnames "^2.2.1" -rc-picker@~2.5.17: - version "2.5.19" - resolved "https://registry.yarnpkg.com/rc-picker/-/rc-picker-2.5.19.tgz#73d07546fac3992f0bfabf2789654acada39e46f" - integrity sha512-u6myoCu/qiQ0vLbNzSzNrzTQhs7mldArCpPHrEI6OUiifs+IPXmbesqSm0zilJjfzrZJLgYeyyOMSznSlh0GKA== +rc-picker@~2.6.4: + version "2.6.4" + resolved "https://registry.yarnpkg.com/rc-picker/-/rc-picker-2.6.4.tgz#916aa5fcd8abd11106f1c2fb64bfd549439abfa0" + integrity sha512-Mnc1udPyGNSG7/ya5SmYltUjCUcsMH7jfJnuuXVAvEaEdx9qZxDGMWtIii//+ARC06CSHQ83s5iwiGFwM+FcDw== dependencies: "@babel/runtime" "^7.10.1" classnames "^2.2.1" @@ -9952,13 +10201,14 @@ rc-picker@~2.5.17: rc-util "^5.4.0" shallowequal "^1.1.0" -rc-progress@~3.1.0: - version "3.1.4" - resolved "https://registry.yarnpkg.com/rc-progress/-/rc-progress-3.1.4.tgz#66040d0fae7d8ced2b38588378eccb2864bad615" - integrity sha512-XBAif08eunHssGeIdxMXOmRQRULdHaDdIFENQ578CMb4dyewahmmfJRyab+hw4KH4XssEzzYOkAInTLS7JJG+Q== +rc-progress@~3.2.1: + version "3.2.4" + resolved "https://registry.yarnpkg.com/rc-progress/-/rc-progress-3.2.4.tgz#4036acdae2566438545bc4df2203248babaf7549" + integrity sha512-M9WWutRaoVkPUPIrTpRIDpX0SPSrVHzxHdCRCbeoBFrd9UFWTYNWRlHsruJM5FH1AZI+BwB4wOJUNNylg/uFSw== dependencies: "@babel/runtime" "^7.10.1" classnames "^2.2.6" + rc-util "^5.16.1" rc-rate@~2.9.0: version "2.9.1" @@ -9979,28 +10229,38 @@ rc-resize-observer@^1.0.0: rc-util "^5.15.0" resize-observer-polyfill "^1.5.1" -rc-select@~13.1.0-alpha.0: - version "13.1.1" - resolved "https://registry.yarnpkg.com/rc-select/-/rc-select-13.1.1.tgz#851315d08a743504db57c7a5358cc907b69b45a5" - integrity sha512-Oy4L27x5QgGR8902pw0bJVjrTWFnKPKvdLHzJl5pjiA+jM1hpzDfLGg/bY2ntk5ElxxQKZUwbFKUeqfCQU7SrQ== +rc-resize-observer@^1.1.0, rc-resize-observer@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/rc-resize-observer/-/rc-resize-observer-1.2.0.tgz#9f46052f81cdf03498be35144cb7c53fd282c4c7" + integrity sha512-6W+UzT3PyDM0wVCEHfoW3qTHPTvbdSgiA43buiy8PzmeMnfgnDeb9NjdimMXMl3/TcrvvWl5RRVdp+NqcR47pQ== + dependencies: + "@babel/runtime" "^7.10.1" + classnames "^2.2.1" + rc-util "^5.15.0" + resize-observer-polyfill "^1.5.1" + +rc-select@~14.0.0-alpha.23, rc-select@~14.0.0-alpha.8, rc-select@~14.0.2: + version "14.0.3" + resolved "https://registry.yarnpkg.com/rc-select/-/rc-select-14.0.3.tgz#4b6ce3232e7d546b3455b38d99c775e32487f200" + integrity sha512-f7FZMySpEvuu6ey2ruTER092vfmCtM3q7vkATO65VMy9jqGgicRxDfJw2IsDOgXWOq3bDQpgkoJuZpNe0WhngA== dependencies: "@babel/runtime" "^7.10.1" classnames "2.x" rc-motion "^2.0.1" rc-overflow "^1.0.0" rc-trigger "^5.0.4" - rc-util "^5.9.8" + rc-util "^5.16.1" rc-virtual-list "^3.2.0" -rc-slider@~9.7.4: - version "9.7.4" - resolved "https://registry.yarnpkg.com/rc-slider/-/rc-slider-9.7.4.tgz#430c860723bf6445ebf53517b550417a2f25eed1" - integrity sha512-pjLKLiDKiaL7/pNywfIBD+lDo5TtVo05KuIBSWEIoqu6FHh6IMWvthCiaODuYaVs3RLeF2nXOP5AjkD2Lt2Rwg== +rc-slider@~10.0.0-alpha.4: + version "10.0.0-alpha.5" + resolved "https://registry.yarnpkg.com/rc-slider/-/rc-slider-10.0.0-alpha.5.tgz#cf13751bda15ce210a1c0d80e1675411e4c4b995" + integrity sha512-EUAl7silkx+vtBbRkjUEzFWzxnMJrxOLcmUhCwP2xdZybRInRnLMU6TfE1fJLxb6ZN77ghSai6k7yExayVC+Gg== dependencies: "@babel/runtime" "^7.10.1" classnames "^2.2.5" rc-tooltip "^5.0.1" - rc-util "^5.0.0" + rc-util "^5.18.1" shallowequal "^1.1.0" rc-steps@~4.1.0: @@ -10021,14 +10281,14 @@ rc-switch@~3.2.0: classnames "^2.2.1" rc-util "^5.0.1" -rc-table@~7.19.0: - version "7.19.2" - resolved "https://registry.yarnpkg.com/rc-table/-/rc-table-7.19.2.tgz#976337a5dace3b8e04bea9554d72bc83aa5ab301" - integrity sha512-NdpnoM50MK02H5/hGOsObfxCvGFUG5cHB9turE5BKJ81T5Ycbq193w5tLhnpILXe//Oanzr47MdMxkUnVGP+qg== +rc-table@~7.23.0: + version "7.23.0" + resolved "https://registry.yarnpkg.com/rc-table/-/rc-table-7.23.0.tgz#e5f76998ecf3246147d45ed311417c08886e6507" + integrity sha512-Q1gneB2+lUa8EzCCfbrq+jO1qNSwQv1RUUXKB84W/Stdp4EvGOt2+QqGyfotMNM4JUw0fgGLwY+WjnhUhnLuQQ== dependencies: "@babel/runtime" "^7.10.1" classnames "^2.2.5" - rc-resize-observer "^1.0.0" + rc-resize-observer "^1.1.0" rc-util "^5.14.0" shallowequal "^1.1.0" @@ -10062,27 +10322,27 @@ rc-tooltip@^5.0.1, rc-tooltip@~5.1.1: "@babel/runtime" "^7.11.2" rc-trigger "^5.0.0" -rc-tree-select@~4.7.0: - version "4.7.0" - resolved "https://registry.yarnpkg.com/rc-tree-select/-/rc-tree-select-4.7.0.tgz#4e612d5ba3f30a51f590e3c0e38e1e4c49f34aef" - integrity sha512-xcc2yPpQieTW6BcRkcKbT1dcAYCQ7ARtkoHlS9EsNdd6xgw9LA6rek6PMed8r/VRMfiKtWV4c4xijW5PI6s4Rw== +rc-tree-select@~5.1.1: + version "5.1.4" + resolved "https://registry.yarnpkg.com/rc-tree-select/-/rc-tree-select-5.1.4.tgz#3577135399d1f4931b0f4d8245e0845861802e2b" + integrity sha512-sA6vTUQghzbjh3u6YAwJIebKkJEHUWDPFHQpfiPObqsEYqi9TKE1LvWqbJ77NbOlOARZq0KIb7LDGF8X0dikDQ== dependencies: "@babel/runtime" "^7.10.1" classnames "2.x" - rc-select "~13.1.0-alpha.0" - rc-tree "~5.3.0" - rc-util "^5.7.0" + rc-select "~14.0.0-alpha.8" + rc-tree "~5.4.3" + rc-util "^5.16.1" -rc-tree@~5.3.0: - version "5.3.0" - resolved "https://registry.yarnpkg.com/rc-tree/-/rc-tree-5.3.0.tgz#766195ffbd65741000d4caf66980bd474d8ac9a2" - integrity sha512-A9GpRalG9sCsC+D3Dw9AB3a2gggf7KUT1FoCGGrbmCH1vsBYfTm3Z4RqEUrWtC7793HRccUTxqnENymkKS99lw== +rc-tree@~5.4.3: + version "5.4.4" + resolved "https://registry.yarnpkg.com/rc-tree/-/rc-tree-5.4.4.tgz#2ea3663ad3c566aef79a46ba6a1e050d24323e01" + integrity sha512-2qoObRgp31DBXmVzMJmo4qmwP20XEa4hR3imWQtRPcgN3pmljW3WKFmZRrYdOFHz7CyTnRsFZR065bBkIoUpiA== dependencies: "@babel/runtime" "^7.10.1" classnames "2.x" rc-motion "^2.0.1" - rc-util "^5.0.0" - rc-virtual-list "^3.4.1" + rc-util "^5.16.1" + rc-virtual-list "^3.4.2" rc-trigger@^5.0.0, rc-trigger@^5.0.4, rc-trigger@^5.1.2, rc-trigger@^5.2.10: version "5.2.10" @@ -10104,7 +10364,7 @@ rc-upload@~4.3.0: classnames "^2.2.5" rc-util "^5.2.0" -rc-util@^5.0.0, rc-util@^5.0.1, rc-util@^5.0.6, rc-util@^5.0.7, rc-util@^5.12.0, rc-util@^5.14.0, rc-util@^5.15.0, rc-util@^5.2.0, rc-util@^5.2.1, rc-util@^5.3.0, rc-util@^5.4.0, rc-util@^5.5.0, rc-util@^5.5.1, rc-util@^5.6.1, rc-util@^5.7.0, rc-util@^5.8.0, rc-util@^5.9.4, rc-util@^5.9.8: +rc-util@^5.0.1, rc-util@^5.0.6, rc-util@^5.0.7, rc-util@^5.12.0, rc-util@^5.14.0, rc-util@^5.15.0, rc-util@^5.2.0, rc-util@^5.2.1, rc-util@^5.3.0, rc-util@^5.4.0, rc-util@^5.5.0, rc-util@^5.5.1, rc-util@^5.6.1, rc-util@^5.7.0, rc-util@^5.8.0, rc-util@^5.9.4, rc-util@^5.9.8: version "5.16.0" resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-5.16.0.tgz#3d169d36c2d0fc0e456fa3fb7fd058725985db05" integrity sha512-Pp3C9WMc7LvLy/V4BtkRZRENizrbQInvy61muxsIA7beC44D1G8w6hcKrcQ4ujeZA4qhvUT0jLgOok2OhxBTRQ== @@ -10113,7 +10373,16 @@ rc-util@^5.0.0, rc-util@^5.0.1, rc-util@^5.0.6, rc-util@^5.0.7, rc-util@^5.12.0, react-is "^16.12.0" shallowequal "^1.1.0" -rc-virtual-list@^3.2.0, rc-virtual-list@^3.4.1: +rc-util@^5.16.1, rc-util@^5.17.0, rc-util@^5.18.1, rc-util@^5.19.3: + version "5.19.3" + resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-5.19.3.tgz#5f6aa854820f6d5824451d80771035b013eaf6d8" + integrity sha512-S28epi9E2s7Nir05q8Ffl3hzDLwkavTGi0PGH1cTqCmkpG1AeBEuZgQDpksYeU6IgHcds5hWIPE5PUcdFiZl8w== + dependencies: + "@babel/runtime" "^7.12.5" + react-is "^16.12.0" + shallowequal "^1.1.0" + +rc-virtual-list@^3.2.0: version "3.4.2" resolved "https://registry.yarnpkg.com/rc-virtual-list/-/rc-virtual-list-3.4.2.tgz#1078327aa7230b5e456d679ed2ce99f3c036ebd1" integrity sha512-OyVrrPvvFcHvV0ssz5EDZ+7Rf5qLat/+mmujjchNw5FfbJWNDwkpQ99EcVE6+FtNRmX9wFa1LGNpZLUTvp/4GQ== @@ -10122,6 +10391,15 @@ rc-virtual-list@^3.2.0, rc-virtual-list@^3.4.1: rc-resize-observer "^1.0.0" rc-util "^5.0.7" +rc-virtual-list@^3.4.2: + version "3.4.4" + resolved "https://registry.yarnpkg.com/rc-virtual-list/-/rc-virtual-list-3.4.4.tgz#be42832edecdcffc56260df131e437a2e0473bca" + integrity sha512-Zb2h0B+ZhA/aysZNEUkQYaqx0hd8hq7WMIUegII+1KfFjh99GtHZ4ZMWB+SlpdVadskKJZzUWWzIq5N1mE6AVg== + dependencies: + classnames "^2.2.6" + rc-resize-observer "^1.0.0" + rc-util "^5.0.7" + react-dom@17.0.0: version "17.0.0" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.0.tgz#f8266e4d9861584553ccbd186d596a1c7dd8dcb4" @@ -10131,6 +10409,15 @@ react-dom@17.0.0: object-assign "^4.1.1" scheduler "^0.20.0" +react-dom@17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-17.0.2.tgz#ecffb6845e3ad8dbfcdc498f0d0a939736502c23" + integrity sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + scheduler "^0.20.2" + react-draggable@^4.0.0, react-draggable@^4.0.3: version "4.4.4" resolved "https://registry.yarnpkg.com/react-draggable/-/react-draggable-4.4.4.tgz#5b26d9996be63d32d285a426f41055de87e59b2f" @@ -10325,6 +10612,14 @@ react@17.0.0: loose-envify "^1.1.0" object-assign "^4.1.1" +react@17.0.2: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react/-/react-17.0.2.tgz#d0b5cc516d29eb3eee383f75b62864cfb6800037" + integrity sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA== + dependencies: + loose-envify "^1.1.0" + object-assign "^4.1.1" + 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" @@ -10412,7 +10707,7 @@ regenerate@^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.4: +regenerator-runtime@0.13.9, regenerator-runtime@^0.13.4: version "0.13.9" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== @@ -10559,6 +10854,13 @@ resolve-pathname@^3.0.0: resolved "https://registry.yarnpkg.com/resolve-pathname/-/resolve-pathname-3.0.0.tgz#99d02224d3cf263689becbb393bc560313025dcd" integrity sha512-C7rARubxI8bXFNB/hqcp/4iUeIXJhJZvFPFPiSPRnhU5UPxzMFIl+2E6yY6c4k9giDJAhtV+enfA+G89N6Csng== +resolve-protobuf-schema@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz#9ca9a9e69cf192bbdaf1006ec1973948aa4a3758" + integrity sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ== + dependencies: + protocol-buffers-schema "^3.3.1" + resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" @@ -10639,11 +10941,18 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -rw@1: +rw@1, rw@^1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/rw/-/rw-1.3.3.tgz#3f862dfa91ab766b14885ef4d01124bfda074fb4" integrity sha1-P4Yt+pGrdmsUiF700BEkv9oHT7Q= +rxjs@7.5.1: + version "7.5.1" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.5.1.tgz#af73df343cbcab37628197f43ea0c8256f54b157" + integrity sha512-KExVEeZWxMZnZhUZtsJcFwz8IvPvgu4G2Z2QyqjZQzUGr32KDYuSxrEYO4w3tFFNbfLozcrKUTvTPi+E9ywJkQ== + dependencies: + tslib "^2.1.0" + rxjs@^7.4.0: version "7.4.0" resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.4.0.tgz#a12a44d7eebf016f5ff2441b87f28c9a51cebc68" @@ -10709,7 +11018,7 @@ saxes@^5.0.1: dependencies: xmlchars "^2.2.0" -scheduler@^0.20.0: +scheduler@^0.20.0, scheduler@^0.20.2: version "0.20.2" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.20.2.tgz#4baee39436e34aa93b4874bddcbf0fe8b8b50e91" integrity sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ== @@ -11039,6 +11348,24 @@ sockjs@^0.3.21: uuid "^3.4.0" websocket-driver "^0.7.4" +sort-asc@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/sort-asc/-/sort-asc-0.1.0.tgz#ab799df61fc73ea0956c79c4b531ed1e9e7727e9" + integrity sha1-q3md9h/HPqCVbHnEtTHtHp53J+k= + +sort-desc@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/sort-desc/-/sort-desc-0.1.1.tgz#198b8c0cdeb095c463341861e3925d4ee359a9ee" + integrity sha1-GYuMDN6wlcRjNBhh45JdTuNZqe4= + +sort-object@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/sort-object/-/sort-object-0.3.2.tgz#98e0d199ede40e07c61a84403c61d6c3b290f9e2" + integrity sha1-mODRme3kDgfGGoRAPGHWw7KQ+eI= + dependencies: + sort-asc "^0.1.0" + sort-desc "^0.1.1" + source-list-map@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" @@ -11241,6 +11568,13 @@ static-extend@^0.1.1: resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= +stream@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/stream/-/stream-0.0.2.tgz#7f5363f057f6592c5595f00bc80a27f5cec1f0ef" + integrity sha1-f1Nj8Ff2WSxVlfALyAon9c7B8O8= + dependencies: + emitter-component "^1.1.1" + strict-uri-encode@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713" @@ -11554,6 +11888,18 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= +threads@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/threads/-/threads-1.7.0.tgz#d9e9627bfc1ef22ada3b733c2e7558bbe78e589c" + integrity sha512-Mx5NBSHX3sQYR6iI9VYbgHKBLisyB+xROCBGjjWm1O9wb9vfLxdaGtmT/KCjUqMsSNW6nERzCW3T6H43LqjDZQ== + dependencies: + callsites "^3.1.0" + debug "^4.2.0" + is-observable "^2.1.0" + observable-fns "^0.6.1" + optionalDependencies: + tiny-worker ">= 2" + three-bmfont-text@dmarcos/three-bmfont-text#1babdf8507c731a18f8af3b807292e2b9740955e: version "2.3.0" resolved "https://codeload.github.com/dmarcos/three-bmfont-text/tar.gz/1babdf8507c731a18f8af3b807292e2b9740955e" @@ -11653,6 +11999,13 @@ tiny-warning@^1.0.0, tiny-warning@^1.0.3: resolved "https://registry.yarnpkg.com/tiny-warning/-/tiny-warning-1.0.3.tgz#94a30db453df4c643d0fd566060d60a875d84754" integrity sha512-lBN9zLN/oAf68o3zNXYrdCt1kP8WsiGW8Oo2ka41b2IM5JL/S1CTyX1rW0mb/zSuJun0ZUrDxx4sqvYS2FWzPA== +"tiny-worker@>= 2": + version "2.3.0" + resolved "https://registry.yarnpkg.com/tiny-worker/-/tiny-worker-2.3.0.tgz#715ae34304c757a9af573ae9a8e3967177e6011e" + integrity sha512-pJ70wq5EAqTAEl9IkGzA+fN0836rycEuz2Cn6yeZ6FRzlVS5IDOkFHpIoEsksPRQV34GDqXm65+OlnZqUSyK2g== + dependencies: + esm "^3.2.25" + tinycolor2@^1.4, tinycolor2@^1.4.2: version "1.4.2" resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.4.2.tgz#3f6a4d1071ad07676d7fa472e1fac40a719d8803" @@ -11788,16 +12141,16 @@ tsconfig-paths@^3.11.0, tsconfig-paths@^3.9.0: minimist "^1.2.0" strip-bom "^3.0.0" +tslib@2.3.1, tslib@^2.0.3, tslib@^2.1.0, tslib@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" + integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== + 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.3, tslib@^2.1.0, tslib@^2.3.0: - version "2.3.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.3.1.tgz#e8a335add5ceae51aa261d32a490158ef042ef01" - integrity sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw== - tslib@~2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.1.0.tgz#da60860f1c2ecaa5703ab7d39bc05b6bf988b97a" @@ -11971,6 +12324,11 @@ untildify@^4.0.0: resolved "https://registry.yarnpkg.com/untildify/-/untildify-4.0.0.tgz#2bc947b953652487e4600949fb091e3ae8cd919b" integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== +uplot@1.6.19: + version "1.6.19" + resolved "https://registry.yarnpkg.com/uplot/-/uplot-1.6.19.tgz#98f461992a3f7f3bda7a62f4a028b8afa8da7942" + integrity sha512-s5Oab13s8zUzuZ/KiSV0GRhEvuKptAg2831fkt2PFsginIP1NSsiNrcozlc+tTPuUEAt+4rAXqX521I1DrZwEg== + uri-js@^4.2.2: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" @@ -12103,13 +12461,6 @@ walker@^1.0.7, walker@~1.0.5: dependencies: makeerror "1.0.12" -warning@^4.0.1: - version "4.0.3" - resolved "https://registry.yarnpkg.com/warning/-/warning-4.0.3.tgz#16e9e077eb8a86d6af7d64aa1e05fd85b4678ca3" - integrity sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w== - dependencies: - loose-envify "^1.0.0" - watchpack@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.3.0.tgz#a41bca3da6afaff31e92a433f4c856a0c25ea0c4" @@ -12130,6 +12481,11 @@ web-vitals@^0.2.4: resolved "https://registry.yarnpkg.com/web-vitals/-/web-vitals-0.2.4.tgz#ec3df43c834a207fd7cdefd732b2987896e08511" integrity sha512-6BjspCO9VriYy12z356nL6JBS0GYeEcA457YyRzD+dD6XYCQ75NKhcOHUMHentOE7OcVCIXXDvOm0jKFfQG2Gg== +webfont-matcher@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/webfont-matcher/-/webfont-matcher-1.1.0.tgz#98ce95097b29e31fbe733053e10e571642d1c6c7" + integrity sha1-mM6VCXsp4x++czBT4Q5XFkLRxsc= + webidl-conversions@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" @@ -12448,6 +12804,11 @@ xml-parse-from-string@^1.0.0: resolved "https://registry.yarnpkg.com/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz#a9029e929d3dbcded169f3c6e28238d95a5d5a28" integrity sha1-qQKekp09vN7RafPG4oI42VpdWig= +xml-utils@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/xml-utils/-/xml-utils-1.0.2.tgz#8081bfefb87b72e03e4adbabdd217ccbbc395eeb" + integrity sha512-rEn0FvKi+YGjv9omf22oAf+0d6Ly/sgJ/CUufU/nOzS7SRLmgwSujrewc03KojXxt+aPaTRpm593TgehtUBMSQ== + xml2js@^0.4.5: version "0.4.23" resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66" @@ -12466,6 +12827,14 @@ xmlchars@^2.2.0: resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== +xss@1.0.10: + version "1.0.10" + resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.10.tgz#5cd63a9b147a755a14cb0455c7db8866120eb4d2" + integrity sha512-qmoqrRksmzqSKvgqzN0055UFWY7OKx1/9JWeRswwEVX9fCG5jcYRxa/A2DHcmZX6VJvjzHRQ2STeeVcQkrmLSw== + dependencies: + commander "^2.20.3" + cssfilter "0.0.10" + xtend@^4.0.0: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54"