From 197deb941bf1477ed31c724d0ae0605026960c97 Mon Sep 17 00:00:00 2001 From: Patrick Browne Date: Tue, 7 May 2024 09:55:03 +0200 Subject: [PATCH 01/18] feat: Put DebugPanel inside Accordion --- app/components/debug-panel/DebugPanel.tsx | 60 +++++++++++++++-------- 1 file changed, 39 insertions(+), 21 deletions(-) diff --git a/app/components/debug-panel/DebugPanel.tsx b/app/components/debug-panel/DebugPanel.tsx index f6752826a..0e08ed8b3 100644 --- a/app/components/debug-panel/DebugPanel.tsx +++ b/app/components/debug-panel/DebugPanel.tsx @@ -6,9 +6,12 @@ import { Box, Button, CircularProgress, + paperClasses, Stack, + Theme, Typography, } from "@mui/material"; +import { makeStyles } from "@mui/styles"; import { useState } from "react"; import { Inspector } from "react-inspector"; @@ -20,6 +23,7 @@ import { import { dataSourceToSparqlEditorUrl } from "@/domain/datasource"; import { useDataCubesComponentsQuery } from "@/graphql/hooks"; import { Icon } from "@/icons"; +import SvgIcChevronRight from "@/icons/components/IcChevronRight"; import { useLocale } from "@/src"; import { useInteractiveFiltersRaw } from "@/stores/interactive-filters"; import useEvent from "@/utils/use-event"; @@ -169,32 +173,46 @@ export type DebugPanelProps = { interactiveFilters?: Boolean; }; +const useStyles = makeStyles((theme: Theme) => ({ + debugPanel: { + margin: -theme.spacing(5), + marginTop: theme.spacing(5), + backgroundColor: theme.palette.background.default, + borderTopStyle: "solid", + borderColor: theme.palette.divider, + borderWidth: 1, + + [`&.${paperClasses.root}`]: { + boxShadow: "none", + }, + }, + debugTitle: { + color: theme.palette.warning.main, + }, +})); + const DebugPanel = (props: DebugPanelProps) => { const { configurator = false, interactiveFilters = false } = props; + const classes = useStyles(); return ( - - + + + + } > - 🚧 Debug Panel 🚧 - - {configurator ? : null} - {interactiveFilters ? : null} - + + 🚧 Debug Panel 🚧 + + + + {configurator ? : null} + {interactiveFilters ? : null} + + ); }; From 532bb040db7a1936636a2321fdb62158133e2ebd Mon Sep 17 00:00:00 2001 From: Patrick Browne Date: Tue, 7 May 2024 10:35:14 +0200 Subject: [PATCH 02/18] fix: At least zero for voronoi (prevent errors while drag and dropping charts) --- app/charts/shared/overlay-voronoi.tsx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/app/charts/shared/overlay-voronoi.tsx b/app/charts/shared/overlay-voronoi.tsx index 1fc9414d3..da277da0e 100644 --- a/app/charts/shared/overlay-voronoi.tsx +++ b/app/charts/shared/overlay-voronoi.tsx @@ -8,6 +8,8 @@ import { ScatterplotState } from "@/charts/scatterplot/scatterplot-state"; import { useChartState } from "@/charts/shared/chart-state"; import { useInteraction } from "@/charts/shared/use-interaction"; +const atLeastZero = (n: number) => (n < 0 ? 0 : n); + export const InteractionVoronoi = memo(function InteractionVoronoi({ debug, }: { @@ -26,7 +28,13 @@ export const InteractionVoronoi = memo(function InteractionVoronoi({ (d) => xScale(getX(d) ?? NaN), (d) => yScale(getY(d) ?? NaN) ); - const voronoi = delaunay.voronoi([0, 0, chartWidth, chartHeight]); + + const voronoi = delaunay.voronoi([ + 0, + 0, + atLeastZero(chartWidth), + atLeastZero(chartHeight), + ]); const findLocation = (e: ReactMouseEvent) => { const [x, y] = pointer(e, ref.current!); From 52a6d78e8fa636f3611ae323e64616e968e80dfa Mon Sep 17 00:00:00 2001 From: Patrick Browne Date: Fri, 10 May 2024 09:59:18 +0200 Subject: [PATCH 03/18] refactor: Use styles for slider --- .../interactive-filters/time-slider.tsx | 57 +++++++++++-------- 1 file changed, 32 insertions(+), 25 deletions(-) diff --git a/app/configurator/interactive-filters/time-slider.tsx b/app/configurator/interactive-filters/time-slider.tsx index 981201636..d19f1d316 100644 --- a/app/configurator/interactive-filters/time-slider.tsx +++ b/app/configurator/interactive-filters/time-slider.tsx @@ -1,11 +1,13 @@ -import { Box, Button, Typography } from "@mui/material"; +import { Box, Button, Typography, sliderClasses } from "@mui/material"; +import { makeStyles } from "@mui/styles"; +import clsx from "clsx"; import orderBy from "lodash/orderBy"; -import React, { +import { ChangeEvent, createContext, useContext, - useMemo, useEffect, + useMemo, } from "react"; import { useSyncExternalStore } from "use-sync-external-store/shim"; @@ -202,10 +204,36 @@ const PlayButton = () => { ); }; +const useStyles = makeStyles<{ playing: boolean }>(() => ({ + root: { + width: "100%", + + [`& .${sliderClasses.root}`]: { + height: "6px", + + [`& .${sliderClasses.thumb}`]: { + width: "16px", + height: "16px", + }, + }, + }, + + playing: { + [`& .${sliderClasses.thumb}`]: { + transition: "none", + }, + + [`& .${sliderClasses.track}`]: { + transition: "none", + }, + }, +})); + const Slider = () => { const timeline = useTimeline(); const timeSlider = useInteractiveFilters((d) => d.timeSlider); const setTimeSlider = useInteractiveFilters((d) => d.setTimeSlider); + const classes = useStyles(); const marks = useMemo(() => { return timeline.domain.map((d) => ({ value: d })) ?? []; @@ -269,28 +297,7 @@ const Slider = () => { onClick={onClick} valueLabelDisplay="on" valueLabelFormat={timeline.formattedValue} - sx={{ - width: "100%", - - "& .MuiSlider-root": { - height: "6px", - - "& .MuiSlider-thumb": { - width: "16px", - height: "16px", - // Disable transitions when playing, otherwise it appears to be laggy. - ...(timeline.playing && { - transition: "none", - }), - }, - - ...(timeline.playing && { - "& .MuiSlider-track": { - transition: "none", - }, - }), - }, - }} + className={clsx(classes.root, timeline.playing && classes.playing)} /> ); }; From f74333ef9b9c6e4ce949882d2749d3c4dac462b3 Mon Sep 17 00:00:00 2001 From: Patrick Browne Date: Fri, 10 May 2024 10:12:44 +0200 Subject: [PATCH 04/18] refactor: Decouple state creator from store creation --- app/stores/interactive-filters.tsx | 147 ++++++++++++++--------------- 1 file changed, 73 insertions(+), 74 deletions(-) diff --git a/app/stores/interactive-filters.tsx b/app/stores/interactive-filters.tsx index 201cf29ef..94726cb24 100644 --- a/app/stores/interactive-filters.tsx +++ b/app/stores/interactive-filters.tsx @@ -1,5 +1,5 @@ -import React, { createContext, useState, useContext } from "react"; -import create, { StoreApi, UseBoundStore } from "zustand"; +import React, { createContext, useContext, useState } from "react"; +import create, { StateCreator, StoreApi, UseBoundStore } from "zustand"; import { CalculationType, FilterValueSingle } from "@/configurator"; import { @@ -53,78 +53,77 @@ export type InteractiveFiltersStateActions = { type State = InteractiveFiltersState & InteractiveFiltersStateActions; -const createInteractiveFiltersStore = () => - create((set) => { - return { - categories: {}, - addCategory: (category: string) => { - set((state) => ({ - categories: { ...state.categories, [category]: true }, - })); - }, - removeCategory: (category: string) => { - set((state) => { - delete state.categories[category]; - return { categories: { ...state.categories } }; - }); - }, - resetCategories: () => { - set({ - categories: {}, - }); - }, - timeRange: { - from: undefined, - to: undefined, - }, - setTimeRange: (from: Date, to: Date) => { - set({ - timeRange: { from, to }, - }); - }, - timeSlider: { - type: "interval", - value: undefined, - }, - setTimeSlider: ({ type, value }: TimeSlider) => { - set({ - timeSlider: { type, value } as TimeSlider, - }); - }, - resetTimeSlider: () => { - set((state) => ({ - timeSlider: { ...state.timeSlider, value: undefined }, - })); - }, - dataFilters: {}, - setDataFilters: (dataFilters: DataFilters) => { - set({ dataFilters }); - }, - updateDataFilter: ( - dimensionIri: string, - dimensionValueIri: FilterValueSingle["value"] - ) => { - set((state) => ({ - dataFilters: { - ...state.dataFilters, - [dimensionIri]: { - type: "single", - value: dimensionValueIri, - }, +const interactiveFiltersStoreCreator: StateCreator = (set) => { + return { + categories: {}, + addCategory: (category: string) => { + set((state) => ({ + categories: { ...state.categories, [category]: true }, + })); + }, + removeCategory: (category: string) => { + set((state) => { + delete state.categories[category]; + return { categories: { ...state.categories } }; + }); + }, + resetCategories: () => { + set({ + categories: {}, + }); + }, + timeRange: { + from: undefined, + to: undefined, + }, + setTimeRange: (from: Date, to: Date) => { + set({ + timeRange: { from, to }, + }); + }, + timeSlider: { + type: "interval", + value: undefined, + }, + setTimeSlider: ({ type, value }: TimeSlider) => { + set({ + timeSlider: { type, value } as TimeSlider, + }); + }, + resetTimeSlider: () => { + set((state) => ({ + timeSlider: { ...state.timeSlider, value: undefined }, + })); + }, + dataFilters: {}, + setDataFilters: (dataFilters: DataFilters) => { + set({ dataFilters }); + }, + updateDataFilter: ( + dimensionIri: string, + dimensionValueIri: FilterValueSingle["value"] + ) => { + set((state) => ({ + dataFilters: { + ...state.dataFilters, + [dimensionIri]: { + type: "single", + value: dimensionValueIri, }, - })); - }, - resetDataFilters: () => { - set({ dataFilters: {} }); - }, - calculation: { - type: undefined, - }, - setCalculationType: (calculationType: CalculationType) => { - set({ calculation: { type: calculationType } }); - }, - }; - }); + }, + })); + }, + resetDataFilters: () => { + set({ dataFilters: {} }); + }, + calculation: { + type: undefined, + }, + setCalculationType: (calculationType: CalculationType) => { + set({ calculation: { type: calculationType } }); + }, + }; +}; const InteractiveFiltersContext = createContext< | [UseBoundStore>, UseBoundStoreWithSelector>] @@ -137,7 +136,7 @@ export const InteractiveFiltersProvider = ({ const [state] = useState< [UseBoundStore>, UseBoundStoreWithSelector>] >(() => { - const store = createInteractiveFiltersStore(); + const store = create(interactiveFiltersStoreCreator); return [store, createBoundUseStoreWithSelector(store)]; }); From 24032fd1137002f7030b017c9f745cdff72f9ab0 Mon Sep 17 00:00:00 2001 From: Patrick Browne Date: Fri, 10 May 2024 10:27:50 +0200 Subject: [PATCH 05/18] refactor: Diminish API surface of interactive filters provided value --- app/charts/shared/brush/index.tsx | 6 +++--- app/charts/shared/chart-data-filters.tsx | 10 +++++----- app/components/debug-panel/DebugPanel.tsx | 10 +++++++--- app/stores/interactive-filters.tsx | 20 +++++++++++--------- 4 files changed, 26 insertions(+), 20 deletions(-) diff --git a/app/charts/shared/brush/index.tsx b/app/charts/shared/brush/index.tsx index 1ed2a145f..3c100870c 100644 --- a/app/charts/shared/brush/index.tsx +++ b/app/charts/shared/brush/index.tsx @@ -15,7 +15,7 @@ import { Observation } from "@/domain/data"; import { useFormatFullDateAuto } from "@/formatters"; import { useInteractiveFilters, - useInteractiveFiltersRaw, + useInteractiveFiltersGetState, } from "@/stores/interactive-filters"; import { useTransitionStore } from "@/stores/transition"; import { getTextWidth } from "@/utils/get-text-width"; @@ -29,7 +29,7 @@ export const BrushTime = () => { const ref = useRef(null); const timeRange = useInteractiveFilters((d) => d.timeRange); const setTimeRange = useInteractiveFilters((d) => d.setTimeRange); - const IFStateRaw = useInteractiveFiltersRaw(); + const getInteractiveFiltersState = useInteractiveFiltersGetState(); const setEnableTransition = useTransitionStore((d) => d.setEnable); const formatDateAuto = useFormatFullDateAuto(); const [brushedIsEnded, updateBrushEndedStatus] = useState(true); @@ -109,7 +109,7 @@ export const BrushTime = () => { // and the local state accessed here is not up to date. This leads to // making a dispatch on each brush move, which makes the animations laggy // and generally shouldn't happen. - const { from, to } = IFStateRaw.getState().timeRange; + const { from, to } = getInteractiveFiltersState().timeRange; if ( from?.getTime() !== newFrom.getTime() || diff --git a/app/charts/shared/chart-data-filters.tsx b/app/charts/shared/chart-data-filters.tsx index 07b14b89b..358b3087a 100644 --- a/app/charts/shared/chart-data-filters.tsx +++ b/app/charts/shared/chart-data-filters.tsx @@ -2,7 +2,7 @@ import { t, Trans } from "@lingui/macro"; import { Box, Button, SelectChangeEvent, Typography } from "@mui/material"; import isEmpty from "lodash/isEmpty"; import isEqual from "lodash/isEqual"; -import React, { useMemo, useState, useEffect, useRef } from "react"; +import React, { useEffect, useMemo, useRef, useState } from "react"; import { useClient } from "urql"; import { useQueryFilters } from "@/charts/shared/chart-helpers"; @@ -50,7 +50,7 @@ import { useLocale } from "@/locales/use-locale"; import { DataFilters, useInteractiveFilters, - useInteractiveFiltersRaw, + useInteractiveFiltersGetState, } from "@/stores/interactive-filters"; import { hierarchyToOptions } from "@/utils/hierarchy"; import useEvent from "@/utils/use-event"; @@ -557,7 +557,7 @@ const useEnsurePossibleInteractiveFilters = ( const [error, setError] = useState(); const lastFilters = useRef>({}); const client = useClient(); - const IFRaw = useInteractiveFiltersRaw(); + const getInteractiveFiltersState = useInteractiveFiltersGetState(); const setDataFilters = useInteractiveFilters((d) => d.setDataFilters); const filtersByCubeIri = useMemo(() => { return preparedFilters?.reduce>((acc, d) => { @@ -633,7 +633,7 @@ const useEnsurePossibleInteractiveFilters = ( // We need to get the values dynamically, as they can get updated by // useSyncInteractiveFilters and this callback runs with old value. - const dataFilters = { ...IFRaw.getState().dataFilters }; + const dataFilters = { ...getInteractiveFiltersState().dataFilters }; const filtersToUpdate = Object.fromEntries( Object.entries(filters).filter( ([k, v]) => k in dataFilters && v.type === "single" @@ -664,8 +664,8 @@ const useEnsurePossibleInteractiveFilters = ( dataSource, setDataFilters, loadingState, - IFRaw, filtersByCubeIri, + getInteractiveFiltersState, ]); return { error }; diff --git a/app/components/debug-panel/DebugPanel.tsx b/app/components/debug-panel/DebugPanel.tsx index 0e08ed8b3..bcfcbd292 100644 --- a/app/components/debug-panel/DebugPanel.tsx +++ b/app/components/debug-panel/DebugPanel.tsx @@ -25,11 +25,11 @@ import { useDataCubesComponentsQuery } from "@/graphql/hooks"; import { Icon } from "@/icons"; import SvgIcChevronRight from "@/icons/components/IcChevronRight"; import { useLocale } from "@/src"; -import { useInteractiveFiltersRaw } from "@/stores/interactive-filters"; +import { useInteractiveFiltersGetState } from "@/stores/interactive-filters"; import useEvent from "@/utils/use-event"; const DebugInteractiveFilters = () => { - const IFState = useInteractiveFiltersRaw(); + const getInteractiveFiltersState = useInteractiveFiltersGetState(); return ( <> @@ -37,7 +37,11 @@ const DebugInteractiveFilters = () => { Interactive Filters State - + ); diff --git a/app/stores/interactive-filters.tsx b/app/stores/interactive-filters.tsx index 94726cb24..59917f821 100644 --- a/app/stores/interactive-filters.tsx +++ b/app/stores/interactive-filters.tsx @@ -125,19 +125,21 @@ const interactiveFiltersStoreCreator: StateCreator = (set) => { }; }; +type InteractiveFiltersContextValue = [ + UseBoundStore>["getState"], + UseBoundStoreWithSelector>, +]; + const InteractiveFiltersContext = createContext< - | [UseBoundStore>, UseBoundStoreWithSelector>] - | undefined + InteractiveFiltersContextValue | undefined >(undefined); export const InteractiveFiltersProvider = ({ children, }: React.PropsWithChildren<{}>) => { - const [state] = useState< - [UseBoundStore>, UseBoundStoreWithSelector>] - >(() => { + const [state] = useState(() => { const store = create(interactiveFiltersStoreCreator); - return [store, createBoundUseStoreWithSelector(store)]; + return [store.getState, createBoundUseStoreWithSelector(store)]; }); return ( @@ -163,7 +165,7 @@ export const useInteractiveFilters = ( return useStore(selector); }; -export const useInteractiveFiltersRaw = () => { +export const useInteractiveFiltersGetState = () => { const ctx = useContext(InteractiveFiltersContext); if (!ctx) { @@ -172,7 +174,7 @@ export const useInteractiveFiltersRaw = () => { ); } - const [store] = ctx; + const [getState] = ctx; - return store; + return getState; }; From 13055e1b0d8bfccbe09a709f86463010a3e10825 Mon Sep 17 00:00:00 2001 From: Patrick Browne Date: Fri, 10 May 2024 11:46:43 +0200 Subject: [PATCH 06/18] refactor: Make it clear that useInteractiveFilters is bound to a particular chart context --- app/charts/area/areas-state.tsx | 4 +- app/charts/column/columns-stacked-state.tsx | 4 +- app/charts/shared/axis-height-linear.tsx | 6 +- app/charts/shared/brush/index.tsx | 6 +- app/charts/shared/chart-data-filters.tsx | 10 +- app/charts/shared/chart-helpers.tsx | 6 +- app/charts/shared/chart-state.ts | 8 +- .../interactive-filter-calculation-toggle.tsx | 10 +- app/charts/shared/legend-color.tsx | 8 +- .../use-sync-interactive-filters.spec.tsx | 4 +- .../shared/use-sync-interactive-filters.tsx | 18 ++-- app/components/chart-filters-list.tsx | 6 +- app/components/chart-preview.tsx | 8 +- app/configurator/components/configurator.tsx | 2 +- .../interactive-filters/time-slider.tsx | 6 +- app/stores/interactive-filters.tsx | 100 ++++++++++++++---- 16 files changed, 139 insertions(+), 67 deletions(-) diff --git a/app/charts/area/areas-state.tsx b/app/charts/area/areas-state.tsx index e6d5c884e..9712b2e7e 100644 --- a/app/charts/area/areas-state.tsx +++ b/app/charts/area/areas-state.tsx @@ -51,7 +51,7 @@ import { AreaConfig } from "@/configurator"; import { Observation } from "@/domain/data"; import { useFormatNumber, useTimeFormatUnit } from "@/formatters"; import { getPalette } from "@/palettes"; -import { useInteractiveFilters } from "@/stores/interactive-filters"; +import { useChartInteractiveFilters } from "@/stores/interactive-filters"; import { sortByIndex } from "@/utils/array"; import { getSortingOrders, @@ -107,7 +107,7 @@ const useAreasState = ( const formatNumber = useFormatNumber({ decimals: "auto" }); const formatters = useChartFormatters(chartProps); const timeFormatUnit = useTimeFormatUnit(); - const calculationType = useInteractiveFilters((d) => d.calculation.type); + const calculationType = useChartInteractiveFilters((d) => d.calculation.type); const segmentsByValue = useMemo(() => { const values = segmentDimension?.values ?? []; diff --git a/app/charts/column/columns-stacked-state.tsx b/app/charts/column/columns-stacked-state.tsx index a917934f3..2fdba7c85 100644 --- a/app/charts/column/columns-stacked-state.tsx +++ b/app/charts/column/columns-stacked-state.tsx @@ -53,7 +53,7 @@ import { ColumnConfig } from "@/configurator"; import { Observation } from "@/domain/data"; import { useFormatNumber } from "@/formatters"; import { getPalette } from "@/palettes"; -import { useInteractiveFilters } from "@/stores/interactive-filters"; +import { useChartInteractiveFilters } from "@/stores/interactive-filters"; import { sortByIndex } from "@/utils/array"; import { getSortingOrders, @@ -114,7 +114,7 @@ const useColumnsStackedState = ( const width = useWidth(); const formatNumber = useFormatNumber({ decimals: "auto" }); const formatters = useChartFormatters(chartProps); - const calculationType = useInteractiveFilters((d) => d.calculation.type); + const calculationType = useChartInteractiveFilters((d) => d.calculation.type); const xKey = fields.x.componentIri; diff --git a/app/charts/shared/axis-height-linear.tsx b/app/charts/shared/axis-height-linear.tsx index 478634e44..36f48a386 100644 --- a/app/charts/shared/axis-height-linear.tsx +++ b/app/charts/shared/axis-height-linear.tsx @@ -1,6 +1,6 @@ import { axisLeft, axisRight } from "d3-axis"; import { NumberValue, ScaleLinear } from "d3-scale"; -import React, { useEffect, useRef, useState, useCallback } from "react"; +import { useCallback, useEffect, useRef, useState } from "react"; import type { AreasState } from "@/charts/area/areas-state"; import type { GroupedColumnsState } from "@/charts/column/columns-grouped-state"; @@ -18,7 +18,7 @@ import { getTickNumber } from "@/charts/shared/ticks"; import { useChartTheme } from "@/charts/shared/use-chart-theme"; import { OpenMetadataPanelWrapper } from "@/components/metadata-panel"; import { useFormatNumber } from "@/formatters"; -import { useInteractiveFilters } from "@/stores/interactive-filters"; +import { useChartInteractiveFilters } from "@/stores/interactive-filters"; import { useTransitionStore } from "@/stores/transition"; import { getTextWidth } from "@/utils/get-text-width"; @@ -101,7 +101,7 @@ export const useRenderAxisHeightLinear = ( const transitionDuration = useTransitionStore((state) => state.duration); const { labelFontSize, fontFamily } = useChartTheme(); const formatNumber = useFormatNumber({ decimals: "auto" }); - const calculationType = useInteractiveFilters((d) => d.calculation.type); + const calculationType = useChartInteractiveFilters((d) => d.calculation.type); const normalized = calculationType === "percent"; const ticks = getTickNumber(height); const tickFormat = useCallback( diff --git a/app/charts/shared/brush/index.tsx b/app/charts/shared/brush/index.tsx index 3c100870c..05b1f5253 100644 --- a/app/charts/shared/brush/index.tsx +++ b/app/charts/shared/brush/index.tsx @@ -14,7 +14,7 @@ import { useChartTheme } from "@/charts/shared/use-chart-theme"; import { Observation } from "@/domain/data"; import { useFormatFullDateAuto } from "@/formatters"; import { - useInteractiveFilters, + useChartInteractiveFilters, useInteractiveFiltersGetState, } from "@/stores/interactive-filters"; import { useTransitionStore } from "@/stores/transition"; @@ -27,8 +27,8 @@ export const HEIGHT = HANDLE_HEIGHT + BRUSH_HEIGHT; export const BrushTime = () => { const ref = useRef(null); - const timeRange = useInteractiveFilters((d) => d.timeRange); - const setTimeRange = useInteractiveFilters((d) => d.setTimeRange); + const timeRange = useChartInteractiveFilters((d) => d.timeRange); + const setTimeRange = useChartInteractiveFilters((d) => d.setTimeRange); const getInteractiveFiltersState = useInteractiveFiltersGetState(); const setEnableTransition = useTransitionStore((d) => d.setEnable); const formatDateAuto = useFormatFullDateAuto(); diff --git a/app/charts/shared/chart-data-filters.tsx b/app/charts/shared/chart-data-filters.tsx index 358b3087a..80fe5bc75 100644 --- a/app/charts/shared/chart-data-filters.tsx +++ b/app/charts/shared/chart-data-filters.tsx @@ -49,7 +49,7 @@ import { Icon } from "@/icons"; import { useLocale } from "@/locales/use-locale"; import { DataFilters, - useInteractiveFilters, + useChartInteractiveFilters, useInteractiveFiltersGetState, } from "@/stores/interactive-filters"; import { hierarchyToOptions } from "@/utils/hierarchy"; @@ -70,7 +70,7 @@ type ChartDataFiltersProps = { export const ChartDataFilters = (props: ChartDataFiltersProps) => { const { dataSource, chartConfig } = props; const { loading } = useLoadingState(); - const dataFilters = useInteractiveFilters((d) => d.dataFilters); + const dataFilters = useChartInteractiveFilters((d) => d.dataFilters); const componentIris = chartConfig.interactiveFiltersConfig?.dataFilters .componentIris as string[]; const queryFilters = useQueryFilters({ @@ -228,7 +228,9 @@ const DataFilter = (props: DataFilterProps) => { const locale = useLocale(); const filters = useChartConfigFilters(chartConfig); const chartLoadingState = useLoadingState(); - const updateDataFilter = useInteractiveFilters((d) => d.updateDataFilter); + const updateDataFilter = useChartInteractiveFilters( + (d) => d.updateDataFilter + ); const otherKeys = Object.keys(interactiveFilters).filter( (key) => key !== dimensionIri ); @@ -558,7 +560,7 @@ const useEnsurePossibleInteractiveFilters = ( const lastFilters = useRef>({}); const client = useClient(); const getInteractiveFiltersState = useInteractiveFiltersGetState(); - const setDataFilters = useInteractiveFilters((d) => d.setDataFilters); + const setDataFilters = useChartInteractiveFilters((d) => d.setDataFilters); const filtersByCubeIri = useMemo(() => { return preparedFilters?.reduce>((acc, d) => { acc[d.cubeIri] = d; diff --git a/app/charts/shared/chart-helpers.tsx b/app/charts/shared/chart-helpers.tsx index 88ec007f2..b876ddca7 100644 --- a/app/charts/shared/chart-helpers.tsx +++ b/app/charts/shared/chart-helpers.tsx @@ -43,7 +43,7 @@ import { getOriginalIris, isJoinById } from "@/graphql/join"; import { DataCubeObservationFilter } from "@/graphql/resolver-types"; import { InteractiveFiltersState, - useInteractiveFilters, + useChartInteractiveFilters, } from "@/stores/interactive-filters"; // Prepare filters used in data query: @@ -82,7 +82,9 @@ export const useQueryFilters = ({ allowNoneValues?: boolean; componentIris?: string[]; }): DataCubeObservationFilter[] => { - const allInteractiveDataFilters = useInteractiveFilters((d) => d.dataFilters); + const allInteractiveDataFilters = useChartInteractiveFilters( + (d) => d.dataFilters + ); return useMemo(() => { return chartConfig.cubes.map((cube) => { const cubeFilters = getChartConfigFilters(chartConfig.cubes, { diff --git a/app/charts/shared/chart-state.ts b/app/charts/shared/chart-state.ts index 22e5cda97..b528542e7 100644 --- a/app/charts/shared/chart-state.ts +++ b/app/charts/shared/chart-state.ts @@ -56,7 +56,7 @@ import { } from "@/domain/data"; import { Has } from "@/domain/types"; import { TimeUnit } from "@/graphql/resolver-types"; -import { useInteractiveFilters } from "@/stores/interactive-filters"; +import { useChartInteractiveFilters } from "@/stores/interactive-filters"; export type ChartState = | AreasState @@ -400,9 +400,9 @@ export const useChartData = ( } ): Omit => { const { interactiveFiltersConfig } = chartConfig; - const categories = useInteractiveFilters((d) => d.categories); - const timeRange = useInteractiveFilters((d) => d.timeRange); - const timeSlider = useInteractiveFilters((d) => d.timeSlider); + const categories = useChartInteractiveFilters((d) => d.categories); + const timeRange = useChartInteractiveFilters((d) => d.timeRange); + const timeSlider = useChartInteractiveFilters((d) => d.timeSlider); // time range const timeRangeFilterComponentIri = diff --git a/app/charts/shared/interactive-filter-calculation-toggle.tsx b/app/charts/shared/interactive-filter-calculation-toggle.tsx index 6690426b3..0cfb7c9d8 100644 --- a/app/charts/shared/interactive-filter-calculation-toggle.tsx +++ b/app/charts/shared/interactive-filter-calculation-toggle.tsx @@ -1,12 +1,14 @@ import { t } from "@lingui/macro"; -import React, { useCallback } from "react"; +import { useCallback } from "react"; import { Switch } from "@/components/form"; -import { useInteractiveFilters } from "@/stores/interactive-filters"; +import { useChartInteractiveFilters } from "@/stores/interactive-filters"; export const CalculationToggle = () => { - const calculation = useInteractiveFilters((d) => d.calculation); - const setCalculationType = useInteractiveFilters((d) => d.setCalculationType); + const calculation = useChartInteractiveFilters((d) => d.calculation); + const setCalculationType = useChartInteractiveFilters( + (d) => d.setCalculationType + ); const onChange = useCallback(() => { setCalculationType(calculation.type === "percent" ? "identity" : "percent"); diff --git a/app/charts/shared/legend-color.tsx b/app/charts/shared/legend-color.tsx index 7b6caf84c..dbd5a5a08 100644 --- a/app/charts/shared/legend-color.tsx +++ b/app/charts/shared/legend-color.tsx @@ -28,7 +28,7 @@ import { isOrdinalMeasure, } from "@/domain/data"; import SvgIcChevronRight from "@/icons/components/IcChevronRight"; -import { useInteractiveFilters } from "@/stores/interactive-filters"; +import { useChartInteractiveFilters } from "@/stores/interactive-filters"; import { interlace } from "@/utils/interlace"; import { MaybeTooltip } from "@/utils/maybe-tooltip"; import { makeDimensionValueSorters } from "@/utils/sorting-values"; @@ -286,9 +286,9 @@ const LegendColorContent = (props: LegendColorContentProps) => { numberOfOptions, } = props; const classes = useStyles(); - const categories = useInteractiveFilters((d) => d.categories); - const addCategory = useInteractiveFilters((d) => d.addCategory); - const removeCategory = useInteractiveFilters((d) => d.removeCategory); + const categories = useChartInteractiveFilters((d) => d.categories); + const addCategory = useChartInteractiveFilters((d) => d.addCategory); + const removeCategory = useChartInteractiveFilters((d) => d.removeCategory); const activeInteractiveFilters = useMemo(() => { return new Set(Object.keys(categories)); }, [categories]); diff --git a/app/charts/shared/use-sync-interactive-filters.spec.tsx b/app/charts/shared/use-sync-interactive-filters.spec.tsx index 35af360ca..271e70966 100644 --- a/app/charts/shared/use-sync-interactive-filters.spec.tsx +++ b/app/charts/shared/use-sync-interactive-filters.spec.tsx @@ -5,7 +5,7 @@ import useSyncInteractiveFilters from "@/charts/shared/use-sync-interactive-filt import { ChartConfig, InteractiveFiltersConfig } from "@/config-types"; import { InteractiveFiltersProvider, - useInteractiveFilters, + useChartInteractiveFilters, } from "@/stores/interactive-filters"; import fixture from "@/test/__fixtures/config/dev/4YL1p4QTFQS4.json"; import { migrateChartConfig } from "@/utils/chart-config/versioning"; @@ -55,7 +55,7 @@ const setup = ({ modifiedChartConfig: ChartConfig; }) => { const Component = () => { - const IFState = useInteractiveFilters((d) => ({ + const IFState = useChartInteractiveFilters((d) => ({ categories: d.categories, timeRange: d.timeRange, timeSlider: d.timeSlider, diff --git a/app/charts/shared/use-sync-interactive-filters.tsx b/app/charts/shared/use-sync-interactive-filters.tsx index 1765350d4..d4c5c37c7 100644 --- a/app/charts/shared/use-sync-interactive-filters.tsx +++ b/app/charts/shared/use-sync-interactive-filters.tsx @@ -9,7 +9,7 @@ import { import { parseDate } from "@/configurator/components/ui-helpers"; import { FIELD_VALUE_NONE } from "@/configurator/constants"; import useFilterChanges from "@/configurator/use-filter-changes"; -import { useInteractiveFilters } from "@/stores/interactive-filters"; +import { useChartInteractiveFilters } from "@/stores/interactive-filters"; /** * Makes sure interactive filters are in sync with chart config. @@ -21,12 +21,16 @@ import { useInteractiveFilters } from "@/stores/interactive-filters"; const useSyncInteractiveFilters = (chartConfig: ChartConfig) => { const { interactiveFiltersConfig } = chartConfig; const filters = useChartConfigFilters(chartConfig); - const resetCategories = useInteractiveFilters((d) => d.resetCategories); - const dataFilters = useInteractiveFilters((d) => d.dataFilters); - const setDataFilters = useInteractiveFilters((d) => d.setDataFilters); - const updateDataFilter = useInteractiveFilters((d) => d.updateDataFilter); - const setTimeRange = useInteractiveFilters((d) => d.setTimeRange); - const setCalculationType = useInteractiveFilters((d) => d.setCalculationType); + const resetCategories = useChartInteractiveFilters((d) => d.resetCategories); + const dataFilters = useChartInteractiveFilters((d) => d.dataFilters); + const setDataFilters = useChartInteractiveFilters((d) => d.setDataFilters); + const updateDataFilter = useChartInteractiveFilters( + (d) => d.updateDataFilter + ); + const setTimeRange = useChartInteractiveFilters((d) => d.setTimeRange); + const setCalculationType = useChartInteractiveFilters( + (d) => d.setCalculationType + ); // Time range filter const presetFrom = diff --git a/app/components/chart-filters-list.tsx b/app/components/chart-filters-list.tsx index 8dd781be9..e89a09941 100644 --- a/app/components/chart-filters-list.tsx +++ b/app/components/chart-filters-list.tsx @@ -1,6 +1,6 @@ import { Trans } from "@lingui/macro"; import { Box, Typography } from "@mui/material"; -import React, { Fragment, useMemo } from "react"; +import { Fragment, useMemo } from "react"; import { extractChartConfigComponentIris, @@ -22,7 +22,7 @@ import { isMostRecentValue } from "@/domain/most-recent-value"; import { useTimeFormatUnit } from "@/formatters"; import { useDataCubesComponentsQuery } from "@/graphql/hooks"; import { useLocale } from "@/locales/use-locale"; -import { useInteractiveFilters } from "@/stores/interactive-filters"; +import { useChartInteractiveFilters } from "@/stores/interactive-filters"; type ChartFiltersListProps = { dataSource: DataSource; @@ -34,7 +34,7 @@ export const ChartFiltersList = (props: ChartFiltersListProps) => { const { dataSource, chartConfig, dimensions } = props; const locale = useLocale(); const timeFormatUnit = useTimeFormatUnit(); - const timeSlider = useInteractiveFilters((d) => d.timeSlider); + const timeSlider = useChartInteractiveFilters((d) => d.timeSlider); const animationField = getAnimationField(chartConfig); const queryFilters = useQueryFilters({ chartConfig, diff --git a/app/components/chart-preview.tsx b/app/components/chart-preview.tsx index 3e2b3f34d..2244e7c38 100644 --- a/app/components/chart-preview.tsx +++ b/app/components/chart-preview.tsx @@ -51,7 +51,9 @@ import { } from "@/graphql/hooks"; import { DataCubePublicationStatus } from "@/graphql/resolver-types"; import { useLocale } from "@/locales/use-locale"; -import { InteractiveFiltersProvider } from "@/stores/interactive-filters"; +import { + InteractiveFiltersChartProvider, +} from "@/stores/interactive-filters"; import { useTransitionStore } from "@/stores/transition"; import { useTheme } from "@/themes"; import { createSnapCornerToCursor } from "@/utils/dnd"; @@ -382,7 +384,7 @@ export const ChartPreviewInner = (props: ChartPreviewInnerProps) => { - + { dimensions={dimensions} /> - + )} diff --git a/app/configurator/components/configurator.tsx b/app/configurator/components/configurator.tsx index 23c47ff73..1c81d58bd 100644 --- a/app/configurator/components/configurator.tsx +++ b/app/configurator/components/configurator.tsx @@ -166,7 +166,7 @@ const ConfigureChartStep = () => { } return ( - + (() => ({ const Slider = () => { const timeline = useTimeline(); - const timeSlider = useInteractiveFilters((d) => d.timeSlider); - const setTimeSlider = useInteractiveFilters((d) => d.setTimeSlider); + const timeSlider = useChartInteractiveFilters((d) => d.timeSlider); + const setTimeSlider = useChartInteractiveFilters((d) => d.setTimeSlider); const classes = useStyles(); const marks = useMemo(() => { diff --git a/app/stores/interactive-filters.tsx b/app/stores/interactive-filters.tsx index 59917f821..41638dba4 100644 --- a/app/stores/interactive-filters.tsx +++ b/app/stores/interactive-filters.tsx @@ -1,12 +1,17 @@ -import React, { createContext, useContext, useState } from "react"; +import React, { createContext, useContext, useMemo, useRef } from "react"; import create, { StateCreator, StoreApi, UseBoundStore } from "zustand"; -import { CalculationType, FilterValueSingle } from "@/configurator"; +import { + CalculationType, + ChartConfig, + FilterValueSingle, +} from "@/configurator"; import { ExtractState, UseBoundStoreWithSelector, createBoundUseStoreWithSelector, } from "@/stores/utils"; +import { assert } from "@/utils/assert"; export type InteractiveFiltersState = { categories: { @@ -131,50 +136,105 @@ type InteractiveFiltersContextValue = [ ]; const InteractiveFiltersContext = createContext< - InteractiveFiltersContextValue | undefined + Record | undefined >(undefined); +/** + * Creates and provide all the interactive filters stores for the given chartConfigs. + */ export const InteractiveFiltersProvider = ({ children, -}: React.PropsWithChildren<{}>) => { - const [state] = useState(() => { - const store = create(interactiveFiltersStoreCreator); - return [store.getState, createBoundUseStoreWithSelector(store)]; - }); + chartConfigs, +}: React.PropsWithChildren<{ + chartConfigs: ChartConfig[]; +}>) => { + const storeRefs = useRef>>({}); + + const contextValues = useMemo< + Record + >(() => { + return Object.fromEntries( + chartConfigs.map((chartConfig) => { + const store = + storeRefs.current[chartConfig.key] ?? + create(interactiveFiltersStoreCreator); + const ctxValue: InteractiveFiltersContextValue = [ + store.getState, + createBoundUseStoreWithSelector(store), + ]; + return [chartConfig.key, ctxValue]; + }) + ); + }, [chartConfigs]); return ( - + {children} ); }; -export const useInteractiveFilters = ( +/** + * Provides the chartConfig key to children, so that they know which interactive filters + * store they should use. + */ +const InteractiveFiltersChartContext = React.createContext< + ChartConfig["key"] | null +>(null); + +export const InteractiveFiltersChartProvider = ({ + chartConfigKey, + children, +}: React.PropsWithChildren<{ chartConfigKey: ChartConfig["key"] }>) => { + return ( + + {children} + + ); +}; + +export const useChartInteractiveFilters = ( selector: (state: ExtractState>) => T ) => { const ctx = useContext(InteractiveFiltersContext); + const key = useContext(InteractiveFiltersChartContext); - if (!ctx) { - throw new Error( - "useInteractiveFilters must be called inside a InteractiveFiltersContext.Provider!" - ); + assert( + ctx, + "useInteractiveFilters must be called inside a InteractiveFiltersContext.Provider!" + ); + assert( + key, + "useInteractiveFilters must be called inside a InteractiveFiltersChartContext.Provider!" + ); + + if (!ctx[key]) { + debugger; } - const [, useStore] = ctx; + const [, useStore] = ctx[key]; return useStore(selector); }; export const useInteractiveFiltersGetState = () => { const ctx = useContext(InteractiveFiltersContext); + const key = useContext(InteractiveFiltersChartContext); - if (!ctx) { - throw new Error( - "useInteractiveFiltersRaw must be called inside a InteractiveFiltersContext.Provider!" - ); + assert( + ctx, + "useInteractiveFilters must be called inside a InteractiveFiltersContext.Provider!" + ); + assert( + key, + "useInteractiveFilters must be called inside a InteractiveFiltersChartContext.Provider!" + ); + + if (!ctx[key]) { + debugger; } - const [getState] = ctx; + const [getState] = ctx[key]; return getState; }; From 2c4cc4debf8ca4bb2840a9bda258b5ccbf79fdf3 Mon Sep 17 00:00:00 2001 From: Patrick Browne Date: Tue, 14 May 2024 11:36:23 +0200 Subject: [PATCH 07/18] refactor: Use MUI exported classes --- app/themes/federal.tsx | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/themes/federal.tsx b/app/themes/federal.tsx index 9fdd44a35..72f9d4f8e 100644 --- a/app/themes/federal.tsx +++ b/app/themes/federal.tsx @@ -1,4 +1,4 @@ -import { alertClasses, Fade, Grow } from "@mui/material"; +import { alertClasses, Fade, Grow, sliderClasses } from "@mui/material"; import { Breakpoint, createTheme, Theme } from "@mui/material/styles"; import merge from "lodash/merge"; import omit from "lodash/omit"; @@ -668,10 +668,10 @@ theme.components = { root: { height: 3, - "& .MuiSlider-rail": { + [`& .${sliderClasses.rail}`]: { backgroundColor: theme.palette.grey[300], }, - "& .MuiSlider-thumb": { + [`& .${sliderClasses.thumb}`]: { width: 20, height: 20, @@ -682,19 +682,19 @@ theme.components = { display: "none", }, }, - "& .MuiSlider-valueLabel": { + [`& .${sliderClasses.valueLabel}`]: { background: theme.palette.background.paper, color: theme.palette.primary.main, boxShadow: "0 0 30px 0 rgba(0, 0, 0, 0.34)", }, - "& .MuiSlider-mark": { + [`& .${sliderClasses.mark}`]: { width: 4, height: 4, borderRadius: "50%", background: theme.palette.grey[600], - "&.MuiSlider-markActive": { + [`&.${sliderClasses.markActive}`]: { background: "#66AFE9", }, }, From 1a478546e9da191c9dcde6bcebcc6cf9b27a6d8d Mon Sep 17 00:00:00 2001 From: Patrick Browne Date: Tue, 14 May 2024 13:11:06 +0200 Subject: [PATCH 08/18] fix: Sort termsets by label --- app/browser/dataset-browse.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/browser/dataset-browse.tsx b/app/browser/dataset-browse.tsx index de1703fc3..4454895bf 100644 --- a/app/browser/dataset-browse.tsx +++ b/app/browser/dataset-browse.tsx @@ -651,7 +651,7 @@ const TermsetNavSection = ({ ); return { counts, - termsets, + termsets: sortBy(termsets, (t) => t.label), }; }, [termsetCounts]); From f2d4ed9d0389ec4b48617dd4fc18fd10780d78e1 Mon Sep 17 00:00:00 2001 From: Patrick Browne Date: Fri, 10 May 2024 13:22:28 +0200 Subject: [PATCH 09/18] refactor: Make interactive filters provider more flexible --- app/stores/interactive-filters.tsx | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) diff --git a/app/stores/interactive-filters.tsx b/app/stores/interactive-filters.tsx index 41638dba4..f3214f370 100644 --- a/app/stores/interactive-filters.tsx +++ b/app/stores/interactive-filters.tsx @@ -136,7 +136,10 @@ type InteractiveFiltersContextValue = [ ]; const InteractiveFiltersContext = createContext< - Record | undefined + | { + stores: Record; + } + | undefined >(undefined); /** @@ -150,7 +153,8 @@ export const InteractiveFiltersProvider = ({ }>) => { const storeRefs = useRef>>({}); - const contextValues = useMemo< + + const stores = useMemo< Record >(() => { return Object.fromEntries( @@ -167,8 +171,10 @@ export const InteractiveFiltersProvider = ({ ); }, [chartConfigs]); + const ctxValue = useMemo(() => ({ stores }), [stores]); + return ( - + {children} ); @@ -208,11 +214,7 @@ export const useChartInteractiveFilters = ( "useInteractiveFilters must be called inside a InteractiveFiltersChartContext.Provider!" ); - if (!ctx[key]) { - debugger; - } - - const [, useStore] = ctx[key]; + const [, useStore] = ctx.stores[key]; return useStore(selector); }; @@ -230,11 +232,7 @@ export const useInteractiveFiltersGetState = () => { "useInteractiveFilters must be called inside a InteractiveFiltersChartContext.Provider!" ); - if (!ctx[key]) { - debugger; - } - - const [getState] = ctx[key]; + const [getState] = ctx.stores[key]; return getState; }; From c2f8f27f41c9ecc8d018131919fd93b763bf8b7f Mon Sep 17 00:00:00 2001 From: Patrick Browne Date: Fri, 10 May 2024 14:17:00 +0200 Subject: [PATCH 10/18] feat: InteractiveFiltersProvider wraps the necessary components --- app/components/chart-published.tsx | 149 +++++++++--------- .../components/chart-configurator.tsx | 5 +- app/configurator/components/configurator.tsx | 29 ++-- app/stores/interactive-filters.tsx | 78 ++++++++- 4 files changed, 173 insertions(+), 88 deletions(-) diff --git a/app/components/chart-published.tsx b/app/components/chart-published.tsx index febaf2111..10a2290c3 100644 --- a/app/components/chart-published.tsx +++ b/app/components/chart-published.tsx @@ -2,7 +2,7 @@ import { Trans } from "@lingui/macro"; import { Box, Theme } from "@mui/material"; import { makeStyles } from "@mui/styles"; import clsx from "clsx"; -import React, { useEffect, useMemo, useRef, useCallback } from "react"; +import { useCallback, useEffect, useMemo, useRef } from "react"; import { useStore } from "zustand"; import { DataSetTable } from "@/browse/datatable"; @@ -50,7 +50,10 @@ import { } from "@/graphql/hooks"; import { DataCubePublicationStatus } from "@/graphql/resolver-types"; import { useLocale } from "@/locales/use-locale"; -import { InteractiveFiltersProvider } from "@/stores/interactive-filters"; +import { + InteractiveFiltersChartProvider, + InteractiveFiltersProvider, +} from "@/stores/interactive-filters"; import { useEmbedOptions } from "@/utils/embed"; import useEvent from "@/utils/use-event"; @@ -80,7 +83,7 @@ export const ChartPublished = (props: ChartPublishedProps) => { ); return state.layout.type === "dashboard" ? ( - <> + { renderChart={renderChart} /> )} - + ) : ( - <> + { /> - + ); }; @@ -292,82 +295,84 @@ const ChartPublishedInner = (props: ChartPublishInnerProps) => { )} - - - {meta.title[locale] ? ( - + <InteractiveFiltersProvider chartConfigs={state.chartConfigs}> + <InteractiveFiltersChartProvider chartConfigKey={chartConfig.key}> + <Flex + sx={{ + justifyContent: meta.title[locale] + ? "space-between" + : "flex-end", + gap: 2, + }} + > + {meta.title[locale] ? ( + <Title text={meta.title[locale]} /> + ) : ( + // We need to have a span here to keep the space between the + // title and the chart (subgrid layout) + <span /> + )} + <MetadataPanel + dataSource={dataSource} + chartConfigs={[chartConfig]} + dimensions={allComponents} + container={rootRef.current} + /> + </Flex> + {meta.description[locale] ? ( + <Description text={meta.description[locale]} /> ) : ( // We need to have a span here to keep the space between the // title and the chart (subgrid layout) <span /> )} - <MetadataPanel - dataSource={dataSource} - chartConfigs={[chartConfig]} - dimensions={allComponents} - container={rootRef.current} - /> - </Flex> - {meta.description[locale] ? ( - <Description text={meta.description[locale]} /> - ) : ( - // We need to have a span here to keep the space between the - // title and the chart (subgrid layout) - <span /> - )} - {chartConfig.interactiveFiltersConfig?.dataFilters.active ? ( - <ChartDataFilters - dataSource={dataSource} - chartConfig={chartConfig} - /> - ) : ( - // We need to have a span here to keep the space between the - // description and the chart (subgrid layout) - <span /> - )} - <div - ref={containerRef} - style={{ - minWidth: 0, - height: containerHeight.current, - marginTop: 16, - }} - > - {isTablePreview ? ( - <DataSetTable - sx={{ maxHeight: "100%" }} + {chartConfig.interactiveFiltersConfig?.dataFilters.active ? ( + <ChartDataFilters dataSource={dataSource} chartConfig={chartConfig} /> ) : ( - <ChartWithFilters - dataSource={dataSource} - componentIris={componentIris} - chartConfig={chartConfig} - /> + // We need to have a span here to keep the space between the + // description and the chart (subgrid layout) + <span /> )} - </div> - <ChartFootnotes - dataSource={dataSource} - chartConfig={chartConfig} - dimensions={dimensions} - configKey={configKey} - onToggleTableView={handleToggleTableView} - visualizeLinkText={ - showDownload === false ? ( - <Trans id="metadata.link.created.with.visualize.alternate"> - visualize.admin.ch - </Trans> - ) : undefined - } - /> + <div + ref={containerRef} + style={{ + minWidth: 0, + height: containerHeight.current, + marginTop: 16, + }} + > + {isTablePreview ? ( + <DataSetTable + sx={{ maxHeight: "100%" }} + dataSource={dataSource} + chartConfig={chartConfig} + /> + ) : ( + <ChartWithFilters + dataSource={dataSource} + componentIris={componentIris} + chartConfig={chartConfig} + /> + )} + </div> + <ChartFootnotes + dataSource={dataSource} + chartConfig={chartConfig} + dimensions={dimensions} + configKey={configKey} + onToggleTableView={handleToggleTableView} + visualizeLinkText={ + showDownload === false ? ( + <Trans id="metadata.link.created.with.visualize.alternate"> + visualize.admin.ch + </Trans> + ) : undefined + } + /> + </InteractiveFiltersChartProvider> </InteractiveFiltersProvider> </LoadingStateProvider> </ChartErrorBoundary> diff --git a/app/configurator/components/chart-configurator.tsx b/app/configurator/components/chart-configurator.tsx index 0a69615fa..045e516d8 100644 --- a/app/configurator/components/chart-configurator.tsx +++ b/app/configurator/components/chart-configurator.tsx @@ -88,6 +88,7 @@ import { } from "@/graphql/query-hooks"; import { Icon } from "@/icons"; import { useLocale } from "@/locales/use-locale"; +import { InteractiveFiltersChartProvider } from "@/stores/interactive-filters"; import useEvent from "@/utils/use-event"; import { DatasetsControlSection } from "./dataset-control-section"; @@ -594,7 +595,7 @@ export const ChartConfigurator = ({ } return ( - <> + <InteractiveFiltersChartProvider chartConfigKey={chartConfig.key}> <ControlSection collapse> <SubsectionTitle titleId="controls-design" gutterBottom={false}> <Trans id="controls.select.chart.type">Chart Type</Trans> @@ -744,7 +745,7 @@ export const ChartConfigurator = ({ <InteractiveFiltersConfigurator state={state} /> )} <DatasetsControlSection /> - </> + </InteractiveFiltersChartProvider> ); }; diff --git a/app/configurator/components/configurator.tsx b/app/configurator/components/configurator.tsx index 1c81d58bd..79cfc27af 100644 --- a/app/configurator/components/configurator.tsx +++ b/app/configurator/components/configurator.tsx @@ -42,7 +42,10 @@ import { ChartConfiguratorTable } from "@/configurator/table/table-chart-configu import SvgIcChevronLeft from "@/icons/components/IcChevronLeft"; import { useLocale } from "@/locales/use-locale"; import { useDataSourceStore } from "@/stores/data-source"; -import { InteractiveFiltersProvider } from "@/stores/interactive-filters"; +import { + InteractiveFiltersChartProvider, + InteractiveFiltersProvider, +} from "@/stores/interactive-filters"; import { getRouterChartId } from "@/utils/router/helpers"; import useEvent from "@/utils/use-event"; @@ -166,7 +169,7 @@ const ConfigureChartStep = () => { } return ( - <InteractiveFiltersProvider chartConfigs={state.chartConfigs}> + <InteractiveFiltersChartProvider chartConfigKey={chartConfig.key}> <PanelLayout type="LM"> <PanelBodyWrapper type="L" @@ -207,7 +210,7 @@ const ConfigureChartStep = () => { </div> </ConfiguratorDrawer> </PanelLayout> - </InteractiveFiltersProvider> + </InteractiveFiltersChartProvider> ); }; @@ -438,20 +441,22 @@ export const Configurator = () => { const { pathname } = useRouter(); // Local state, the dataset preview doesn't need to be persistent. // FIXME: for a11y, "updateDataSetPreviewIri" should also move focus to "Weiter" button (?) - const [{ state }] = useConfiguratorState(); + const [configuratorState] = useConfiguratorState(); const isLoadingConfigureChartStep = - state === "INITIAL" && pathname === "/create/[chartId]"; + configuratorState.state === "INITIAL" && pathname === "/create/[chartId]"; return isLoadingConfigureChartStep ? ( <LoadingConfigureChartStep /> - ) : state === "SELECTING_DATASET" ? ( + ) : configuratorState.state === "SELECTING_DATASET" ? ( <SelectDatasetStep /> - ) : ( - <> - {state === "CONFIGURING_CHART" && <ConfigureChartStep />} - {state === "LAYOUTING" && <LayoutingStep />} - {state === "PUBLISHING" && <PublishStep />} - </> + ) : configuratorState.state === "INITIAL" ? null : ( + <InteractiveFiltersProvider chartConfigs={configuratorState.chartConfigs}> + {configuratorState.state === "CONFIGURING_CHART" && ( + <ConfigureChartStep /> + )} + {configuratorState.state === "LAYOUTING" && <LayoutingStep />} + {configuratorState.state === "PUBLISHING" && <PublishStep />} + </InteractiveFiltersProvider> ); }; diff --git a/app/stores/interactive-filters.tsx b/app/stores/interactive-filters.tsx index f3214f370..10c44eafa 100644 --- a/app/stores/interactive-filters.tsx +++ b/app/stores/interactive-filters.tsx @@ -1,3 +1,4 @@ +import groupBy from "lodash/groupBy"; import React, { createContext, useContext, useMemo, useRef } from "react"; import create, { StateCreator, StoreApi, UseBoundStore } from "zustand"; @@ -5,6 +6,7 @@ import { CalculationType, ChartConfig, FilterValueSingle, + InteractiveFiltersConfig, } from "@/configurator"; import { ExtractState, @@ -56,7 +58,7 @@ export type InteractiveFiltersStateActions = { setCalculationType: (calculationType: CalculationType) => void; }; -type State = InteractiveFiltersState & InteractiveFiltersStateActions; +export type State = InteractiveFiltersState & InteractiveFiltersStateActions; const interactiveFiltersStoreCreator: StateCreator<State> = (set) => { return { @@ -133,15 +135,69 @@ const interactiveFiltersStoreCreator: StateCreator<State> = (set) => { type InteractiveFiltersContextValue = [ UseBoundStore<StoreApi<State>>["getState"], UseBoundStoreWithSelector<StoreApi<State>>, + StoreApi<State>, ]; +type SharedFilters = { + type: "timeRange" | "dataFilters"; + value?: NonNullable<InteractiveFiltersConfig>["timeRange"]; + iri: string; +}[]; const InteractiveFiltersContext = createContext< | { stores: Record<ChartConfig["key"], InteractiveFiltersContextValue>; + sharedFilters: SharedFilters; } | undefined >(undefined); +export const getSharedFilters = ( + chartConfigs: ChartConfig[] +): SharedFilters => { + const allActiveFilters = chartConfigs.flatMap((c) => { + const interactiveFiltersConfig = c.interactiveFiltersConfig; + if (!interactiveFiltersConfig) { + return []; + } + const { timeRange, dataFilters, legend } = interactiveFiltersConfig; + return [ + { type: "timeRange" as const, value: timeRange }, + // ...dataFilters.componentIris.map((ci) => ({ + // type: "dataFilters" as const, + // value: { + // ...dataFilters, + // componentIri: ci, + // }, + // })), + // { type: "legend" as const, value: legend }, + ].filter((x) => x.value.active); + }); + + const sharedFilters = Object.entries( + // TODO implement recognizing shared filters across joined by dimensions + groupBy(allActiveFilters, (x) => `${x.type} - ${x.value.componentIri}`) + ).filter(([iri, filters]) => filters.length > 1); + + return sharedFilters.map(([iri, filters]) => ({ + iri: filters[0].value.componentIri, + type: filters[0].type, + value: (() => { + const type = filters[0].type; + switch (type) { + case "timeRange": + return filters[0].value; + // case "legend": + // return filters[0].value; + // case "dataFilters": + // return filters[0].value; + default: + const _exhaustiveCheck: never = type; + throw new Error(`Unhandled type: ${_exhaustiveCheck}`); + } + })(), + })); +}; + /** * Creates and provide all the interactive filters stores for the given chartConfigs. */ @@ -153,6 +209,9 @@ export const InteractiveFiltersProvider = ({ }>) => { const storeRefs = useRef<Record<ChartConfig["key"], StoreApi<State>>>({}); + const sharedFilters = useMemo(() => { + return getSharedFilters(chartConfigs); + }, [chartConfigs]); const stores = useMemo< Record<ChartConfig["key"], InteractiveFiltersContextValue> @@ -165,13 +224,17 @@ export const InteractiveFiltersProvider = ({ const ctxValue: InteractiveFiltersContextValue = [ store.getState, createBoundUseStoreWithSelector(store), + store, ]; return [chartConfig.key, ctxValue]; }) ); }, [chartConfigs]); - const ctxValue = useMemo(() => ({ stores }), [stores]); + const ctxValue = useMemo( + () => ({ stores, sharedFilters }), + [stores, sharedFilters] + ); return ( <InteractiveFiltersContext.Provider value={ctxValue}> @@ -236,3 +299,14 @@ export const useInteractiveFiltersGetState = () => { return getState; }; + +export const useDashboardInteractiveFilters = () => { + const ctx = useContext(InteractiveFiltersContext); + + assert( + ctx, + "useInteractiveFilters must be called inside a InteractiveFiltersContext.Provider!" + ); + + return ctx; +}; From af463c5ea8d719157eb13c0a9666fb3f87a3b578 Mon Sep 17 00:00:00 2001 From: Patrick Browne <pt.browne@gmail.com> Date: Wed, 15 May 2024 10:52:58 +0200 Subject: [PATCH 11/18] feat: Update storybook --- .storybook/main.ts | 6 +- app/package.json | 5 +- yarn.lock | 1589 +++++++++++++++++++++++++++++++++++--------- 3 files changed, 1289 insertions(+), 311 deletions(-) diff --git a/.storybook/main.ts b/.storybook/main.ts index c6c15d5e1..a628906fc 100644 --- a/.storybook/main.ts +++ b/.storybook/main.ts @@ -1,8 +1,6 @@ import type { StorybookConfig } from "@storybook/nextjs"; import { dirname, join, resolve } from "path"; -// @ts-ignore - /** * This function is used to resolve the absolute path of a package. * It is needed in projects that use Yarn PnP or are set up within a monorepo. @@ -22,9 +20,7 @@ const config: StorybookConfig = { name: getAbsolutePath("@storybook/nextjs"), options: {}, }, - docs: { - autodocs: "tag", - }, + docs: {}, webpackFinal: async (config) => { if (!config.resolve) { config.resolve = {}; diff --git a/app/package.json b/app/package.json index 9debf7a5b..2ff03f18f 100644 --- a/app/package.json +++ b/app/package.json @@ -38,7 +38,8 @@ "@rdfjs/namespace": "^2.0.1", "@reach/auto-id": "^0.15.3", "@sentry/nextjs": "^7.112.2", - "@storybook/nextjs": "^8.0.9", + "@storybook/nextjs": "^8.1.0", + "@storybook/react-vite": "^8.1.0", "@testing-library/react-hooks": "^8.0.1", "@tpluscode/rdf-ns-builders": "2.0.1", "@tpluscode/sparql-builder": "^0.3.31", @@ -101,7 +102,7 @@ "react-window": "^1.8.10", "simple-statistics": "^7.6.0", "sparql-http-client": "^2.4.1", - "storybook": "^8.0.9", + "storybook": "^8.1.0", "superjson": "^1.11.0", "topojson-client": "^3.1.0", "topojson-server": "^3.0.1", diff --git a/yarn.lock b/yarn.lock index 10d5ea883..619f23c3b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -193,7 +193,7 @@ "@babel/highlight" "^7.22.13" chalk "^2.4.2" -"@babel/code-frame@^7.24.1", "@babel/code-frame@^7.24.2": +"@babel/code-frame@^7.24.2": version "7.24.2" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae" integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ== @@ -211,7 +211,12 @@ resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.23.5.tgz#ffb878728bb6bdcb6f4510aa51b1be9afb8cfd98" integrity sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw== -"@babel/core@7.12.9", "@babel/core@^7.0.0", "@babel/core@^7.1.0", "@babel/core@^7.10.5", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.12.9", "@babel/core@^7.14.6", "@babel/core@^7.18.9", "@babel/core@^7.21.0", "@babel/core@^7.23.0", "@babel/core@^7.23.2", "@babel/core@^7.23.9", "@babel/core@^7.7.2", "@babel/core@^7.7.5", "@babel/core@^7.7.7": +"@babel/compat-data@^7.24.4": + version "7.24.4" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.24.4.tgz#6f102372e9094f25d908ca0d34fc74c74606059a" + integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ== + +"@babel/core@7.12.9", "@babel/core@^7.0.0", "@babel/core@^7.1.0", "@babel/core@^7.10.5", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.12.9", "@babel/core@^7.14.6", "@babel/core@^7.18.9", "@babel/core@^7.21.0", "@babel/core@^7.23.0", "@babel/core@^7.23.2", "@babel/core@^7.24.4", "@babel/core@^7.7.2", "@babel/core@^7.7.5", "@babel/core@^7.7.7": version "7.24.5" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.5.tgz#15ab5b98e101972d171aeef92ac70d8d6718f06a" integrity sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA== @@ -261,17 +266,7 @@ "@jridgewell/trace-mapping" "^0.3.17" jsesc "^2.5.1" -"@babel/generator@^7.24.1", "@babel/generator@^7.24.4": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.4.tgz#1fc55532b88adf952025d5d2d1e71f946cb1c498" - integrity sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw== - dependencies: - "@babel/types" "^7.24.0" - "@jridgewell/gen-mapping" "^0.3.5" - "@jridgewell/trace-mapping" "^0.3.25" - jsesc "^2.5.1" - -"@babel/generator@^7.24.5": +"@babel/generator@^7.24.4", "@babel/generator@^7.24.5": version "7.24.5" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.5.tgz#e5afc068f932f05616b66713e28d0f04e99daeb3" integrity sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA== @@ -350,6 +345,21 @@ "@babel/helper-split-export-declaration" "^7.22.6" semver "^6.3.1" +"@babel/helper-create-class-features-plugin@^7.24.1", "@babel/helper-create-class-features-plugin@^7.24.4", "@babel/helper-create-class-features-plugin@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.24.5.tgz#7d19da92c7e0cd8d11c09af2ce1b8e7512a6e723" + integrity sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-member-expression-to-functions" "^7.24.5" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-replace-supers" "^7.24.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/helper-split-export-declaration" "^7.24.5" + semver "^6.3.1" + "@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.22.15", "@babel/helper-create-regexp-features-plugin@^7.22.5": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz#5ee90093914ea09639b01c711db0d6775e558be1" @@ -381,6 +391,17 @@ lodash.debounce "^4.0.8" resolve "^1.14.2" +"@babel/helper-define-polyfill-provider@^0.6.1", "@babel/helper-define-polyfill-provider@^0.6.2": + version "0.6.2" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz#18594f789c3594acb24cfdb4a7f7b7d2e8bd912d" + integrity sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ== + dependencies: + "@babel/helper-compilation-targets" "^7.22.6" + "@babel/helper-plugin-utils" "^7.22.5" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + "@babel/helper-environment-visitor@^7.22.20": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz#96159db61d34a29dba454c959f5ae4a649ba9167" @@ -438,6 +459,13 @@ dependencies: "@babel/types" "^7.23.0" +"@babel/helper-member-expression-to-functions@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.5.tgz#5981e131d5c7003c7d1fa1ad49e86c9b097ec475" + integrity sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA== + dependencies: + "@babel/types" "^7.24.5" + "@babel/helper-module-imports@^7.0.0", "@babel/helper-module-imports@^7.10.4", "@babel/helper-module-imports@^7.14.5", "@babel/helper-module-imports@^7.15.4": version "7.15.4" resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.15.4.tgz" @@ -459,7 +487,7 @@ dependencies: "@babel/types" "^7.22.15" -"@babel/helper-module-imports@^7.24.3": +"@babel/helper-module-imports@^7.24.1", "@babel/helper-module-imports@^7.24.3": version "7.24.3" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz#6ac476e6d168c7c23ff3ba3cf4f7841d46ac8128" integrity sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg== @@ -541,6 +569,11 @@ resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.22.5.tgz#dd7ee3735e8a313b9f7b05a773d892e88e6d7295" integrity sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg== +"@babel/helper-plugin-utils@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz#a924607dd254a65695e5bd209b98b902b3b2f11a" + integrity sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ== + "@babel/helper-remap-async-to-generator@^7.22.20": version "7.22.20" resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz#7b68e1cb4fa964d2996fd063723fb48eca8498e0" @@ -569,6 +602,15 @@ "@babel/helper-member-expression-to-functions" "^7.22.15" "@babel/helper-optimise-call-expression" "^7.22.5" +"@babel/helper-replace-supers@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.24.1.tgz#7085bd19d4a0b7ed8f405c1ed73ccb70f323abc1" + integrity sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-member-expression-to-functions" "^7.23.0" + "@babel/helper-optimise-call-expression" "^7.22.5" + "@babel/helper-simple-access@^7.14.5", "@babel/helper-simple-access@^7.15.4": version "7.15.4" resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.15.4.tgz" @@ -694,15 +736,6 @@ "@babel/template" "^7.22.15" "@babel/types" "^7.22.19" -"@babel/helpers@^7.24.4": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.4.tgz#dc00907fd0d95da74563c142ef4cd21f2cb856b6" - integrity sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw== - dependencies: - "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.1" - "@babel/types" "^7.24.0" - "@babel/helpers@^7.24.5": version "7.24.5" resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.5.tgz#fedeb87eeafa62b621160402181ad8585a22a40a" @@ -758,11 +791,19 @@ js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@7.12.16", "@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.12.13", "@babel/parser@^7.14.6", "@babel/parser@^7.14.7", "@babel/parser@^7.15.4", "@babel/parser@^7.20.15", "@babel/parser@^7.20.7", "@babel/parser@^7.21.2", "@babel/parser@^7.21.4", "@babel/parser@^7.22.15", "@babel/parser@^7.23.0", "@babel/parser@^7.24.0", "@babel/parser@^7.24.1", "@babel/parser@^7.24.4", "@babel/parser@^7.24.5", "@babel/parser@^7.7.2": +"@babel/parser@7.12.16", "@babel/parser@^7.0.0", "@babel/parser@^7.1.0", "@babel/parser@^7.12.13", "@babel/parser@^7.14.6", "@babel/parser@^7.14.7", "@babel/parser@^7.15.4", "@babel/parser@^7.20.15", "@babel/parser@^7.20.7", "@babel/parser@^7.21.2", "@babel/parser@^7.21.4", "@babel/parser@^7.22.15", "@babel/parser@^7.23.0", "@babel/parser@^7.24.0", "@babel/parser@^7.24.4", "@babel/parser@^7.24.5", "@babel/parser@^7.7.2": version "7.24.5" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.5.tgz#4a4d5ab4315579e5398a82dcf636ca80c3392790" integrity sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg== +"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.24.5.tgz#4c3685eb9cd790bcad2843900fe0250c91ccf895" + integrity sha512-LdXRi1wEMTrHVR4Zc9F8OewC3vdm5h4QB6L71zy6StmYeqGi1b3ttIO8UC+BfZKcH9jdr4aI249rBkm+3+YvHw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.24.5" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz#5cd1c87ba9380d0afb78469292c954fee5d2411a" @@ -770,6 +811,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.24.1.tgz#b645d9ba8c2bc5b7af50f0fe949f9edbeb07c8cf" + integrity sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz#f6652bb16b94f8f9c20c50941e16e9756898dc5d" @@ -779,6 +827,15 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" "@babel/plugin-transform-optional-chaining" "^7.23.3" +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.24.1.tgz#da8261f2697f0f41b0855b91d3a20a1fbfd271d3" + integrity sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-transform-optional-chaining" "^7.24.1" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.23.7": version "7.23.7" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.7.tgz#516462a95d10a9618f197d39ad291a9b47ae1d7b" @@ -787,6 +844,14 @@ "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.24.1.tgz#1181d9685984c91d657b8ddf14f0487a6bab2988" + integrity sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-proposal-class-properties@^7.0.0": version "7.14.5" resolved "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.14.5.tgz" @@ -883,6 +948,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-syntax-import-assertions@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.24.1.tgz#db3aad724153a00eaac115a3fb898de544e34971" + integrity sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-import-attributes@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz#992aee922cf04512461d7dae3ff6951b90a2dc06" @@ -890,6 +962,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-syntax-import-attributes@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.24.1.tgz#c66b966c63b714c4eec508fcf5763b1f2d381093" + integrity sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-import-meta@^7.10.4", "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz" @@ -939,6 +1018,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-syntax-jsx@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.1.tgz#3f6ca04b8c841811dbc3c5c5f837934e0d626c10" + integrity sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-logical-assignment-operators@^7.10.4", "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz" @@ -1009,6 +1095,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-syntax-typescript@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.1.tgz#b3bcc51f396d15f3591683f90239de143c076844" + integrity sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-typescript@^7.7.2": version "7.14.5" resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.14.5.tgz" @@ -1038,6 +1131,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-arrow-functions@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.1.tgz#2bf263617060c9cc45bcdbf492b8cc805082bf27" + integrity sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-transform-async-generator-functions@^7.23.9": version "7.23.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.9.tgz#9adaeb66fc9634a586c5df139c6240d41ed801ce" @@ -1048,6 +1148,16 @@ "@babel/helper-remap-async-to-generator" "^7.22.20" "@babel/plugin-syntax-async-generators" "^7.8.4" +"@babel/plugin-transform-async-generator-functions@^7.24.3": + version "7.24.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.24.3.tgz#8fa7ae481b100768cc9842c8617808c5352b8b89" + integrity sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg== + dependencies: + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-remap-async-to-generator" "^7.22.20" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-transform-async-to-generator@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz#d1f513c7a8a506d43f47df2bf25f9254b0b051fa" @@ -1057,6 +1167,15 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-remap-async-to-generator" "^7.22.20" +"@babel/plugin-transform-async-to-generator@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.24.1.tgz#0e220703b89f2216800ce7b1c53cb0cf521c37f4" + integrity sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw== + dependencies: + "@babel/helper-module-imports" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-remap-async-to-generator" "^7.22.20" + "@babel/plugin-transform-block-scoped-functions@^7.0.0": version "7.14.5" resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.14.5.tgz" @@ -1071,6 +1190,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-block-scoped-functions@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.24.1.tgz#1c94799e20fcd5c4d4589523bbc57b7692979380" + integrity sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-transform-block-scoping@^7.0.0": version "7.14.5" resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.5.tgz" @@ -1085,6 +1211,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-block-scoping@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.24.5.tgz#89574191397f85661d6f748d4b89ee4d9ee69a2a" + integrity sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.5" + "@babel/plugin-transform-class-properties@^7.22.5", "@babel/plugin-transform-class-properties@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz#35c377db11ca92a785a718b6aa4e3ed1eb65dc48" @@ -1093,6 +1226,14 @@ "@babel/helper-create-class-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-class-properties@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.24.1.tgz#bcbf1aef6ba6085cfddec9fc8d58871cf011fc29" + integrity sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-transform-class-static-block@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz#2a202c8787a8964dd11dfcedf994d36bfc844ab5" @@ -1102,6 +1243,15 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-class-static-block" "^7.14.5" +"@babel/plugin-transform-class-static-block@^7.24.4": + version "7.24.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.24.4.tgz#1a4653c0cf8ac46441ec406dece6e9bc590356a4" + integrity sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.24.4" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-transform-classes@^7.0.0": version "7.14.5" resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.14.5.tgz" @@ -1129,6 +1279,20 @@ "@babel/helper-split-export-declaration" "^7.22.6" globals "^11.1.0" +"@babel/plugin-transform-classes@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.24.5.tgz#05e04a09df49a46348299a0e24bfd7e901129339" + integrity sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-environment-visitor" "^7.22.20" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-plugin-utils" "^7.24.5" + "@babel/helper-replace-supers" "^7.24.1" + "@babel/helper-split-export-declaration" "^7.24.5" + globals "^11.1.0" + "@babel/plugin-transform-computed-properties@^7.0.0": version "7.14.5" resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.14.5.tgz" @@ -1144,6 +1308,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/template" "^7.22.15" +"@babel/plugin-transform-computed-properties@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.1.tgz#bc7e787f8e021eccfb677af5f13c29a9934ed8a7" + integrity sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/template" "^7.24.0" + "@babel/plugin-transform-destructuring@^7.0.0": version "7.14.5" resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.14.5.tgz" @@ -1158,6 +1330,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-destructuring@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.5.tgz#80843ee6a520f7362686d1a97a7b53544ede453c" + integrity sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.5" + "@babel/plugin-transform-dotall-regex@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz#3f7af6054882ede89c378d0cf889b854a993da50" @@ -1166,6 +1345,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-dotall-regex@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.24.1.tgz#d56913d2f12795cc9930801b84c6f8c47513ac13" + integrity sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-transform-duplicate-keys@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz#664706ca0a5dfe8d066537f99032fc1dc8b720ce" @@ -1173,6 +1360,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-duplicate-keys@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.24.1.tgz#5347a797fe82b8d09749d10e9f5b83665adbca88" + integrity sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-transform-dynamic-import@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz#c7629e7254011ac3630d47d7f34ddd40ca535143" @@ -1181,6 +1375,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-dynamic-import" "^7.8.3" +"@babel/plugin-transform-dynamic-import@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.24.1.tgz#2a5a49959201970dd09a5fca856cb651e44439dd" + integrity sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-transform-exponentiation-operator@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz#ea0d978f6b9232ba4722f3dbecdd18f450babd18" @@ -1189,6 +1391,14 @@ "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-exponentiation-operator@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.1.tgz#6650ebeb5bd5c012d5f5f90a26613a08162e8ba4" + integrity sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw== + dependencies: + "@babel/helper-builder-binary-assignment-operator-visitor" "^7.22.15" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-transform-export-namespace-from@^7.22.11", "@babel/plugin-transform-export-namespace-from@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz#084c7b25e9a5c8271e987a08cf85807b80283191" @@ -1197,6 +1407,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" +"@babel/plugin-transform-export-namespace-from@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.24.1.tgz#f033541fc036e3efb2dcb58eedafd4f6b8078acd" + integrity sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-transform-flow-strip-types@^7.0.0": version "7.14.5" resolved "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.14.5.tgz" @@ -1228,6 +1446,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" +"@babel/plugin-transform-for-of@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.1.tgz#67448446b67ab6c091360ce3717e7d3a59e202fd" + integrity sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-transform-function-name@^7.0.0": version "7.14.5" resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.14.5.tgz" @@ -1245,6 +1471,15 @@ "@babel/helper-function-name" "^7.23.0" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-function-name@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.24.1.tgz#8cba6f7730626cc4dfe4ca2fa516215a0592b361" + integrity sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA== + dependencies: + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-function-name" "^7.23.0" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-transform-json-strings@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz#a871d9b6bd171976efad2e43e694c961ffa3714d" @@ -1253,6 +1488,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-json-strings" "^7.8.3" +"@babel/plugin-transform-json-strings@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.24.1.tgz#08e6369b62ab3e8a7b61089151b161180c8299f7" + integrity sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-transform-literals@^7.0.0": version "7.14.5" resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.14.5.tgz" @@ -1267,6 +1510,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-literals@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.24.1.tgz#0a1982297af83e6b3c94972686067df588c5c096" + integrity sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-transform-logical-assignment-operators@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz#e599f82c51d55fac725f62ce55d3a0886279ecb5" @@ -1275,6 +1525,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" +"@babel/plugin-transform-logical-assignment-operators@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.24.1.tgz#719d8aded1aa94b8fb34e3a785ae8518e24cfa40" + integrity sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-transform-member-expression-literals@^7.0.0": version "7.14.5" resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.14.5.tgz" @@ -1289,6 +1547,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-member-expression-literals@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.24.1.tgz#896d23601c92f437af8b01371ad34beb75df4489" + integrity sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-transform-modules-amd@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz#e19b55436a1416829df0a1afc495deedfae17f7d" @@ -1297,6 +1562,14 @@ "@babel/helper-module-transforms" "^7.23.3" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-modules-amd@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.24.1.tgz#b6d829ed15258536977e9c7cc6437814871ffa39" + integrity sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ== + dependencies: + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-transform-modules-commonjs@^7.0.0", "@babel/plugin-transform-modules-commonjs@^7.7.5": version "7.14.5" resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.5.tgz" @@ -1316,6 +1589,15 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-simple-access" "^7.22.5" +"@babel/plugin-transform-modules-commonjs@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.1.tgz#e71ba1d0d69e049a22bf90b3867e263823d3f1b9" + integrity sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw== + dependencies: + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-simple-access" "^7.22.5" + "@babel/plugin-transform-modules-systemjs@^7.23.9": version "7.23.9" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.9.tgz#105d3ed46e4a21d257f83a2f9e2ee4203ceda6be" @@ -1326,6 +1608,16 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-validator-identifier" "^7.22.20" +"@babel/plugin-transform-modules-systemjs@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.24.1.tgz#2b9625a3d4e445babac9788daec39094e6b11e3e" + integrity sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA== + dependencies: + "@babel/helper-hoist-variables" "^7.22.5" + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-validator-identifier" "^7.22.20" + "@babel/plugin-transform-modules-umd@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz#5d4395fccd071dfefe6585a4411aa7d6b7d769e9" @@ -1334,6 +1626,14 @@ "@babel/helper-module-transforms" "^7.23.3" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-modules-umd@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.24.1.tgz#69220c66653a19cf2c0872b9c762b9a48b8bebef" + integrity sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg== + dependencies: + "@babel/helper-module-transforms" "^7.23.3" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-transform-named-capturing-groups-regex@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.22.5.tgz#67fe18ee8ce02d57c855185e27e3dc959b2e991f" @@ -1349,6 +1649,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-new-target@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.24.1.tgz#29c59988fa3d0157de1c871a28cd83096363cc34" + integrity sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-transform-nullish-coalescing-operator@^7.22.11", "@babel/plugin-transform-nullish-coalescing-operator@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz#45556aad123fc6e52189ea749e33ce090637346e" @@ -1357,6 +1664,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" +"@babel/plugin-transform-nullish-coalescing-operator@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.24.1.tgz#0cd494bb97cb07d428bd651632cb9d4140513988" + integrity sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-transform-numeric-separator@^7.22.11", "@babel/plugin-transform-numeric-separator@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz#03d08e3691e405804ecdd19dd278a40cca531f29" @@ -1365,6 +1680,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-numeric-separator" "^7.10.4" +"@babel/plugin-transform-numeric-separator@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.24.1.tgz#5bc019ce5b3435c1cadf37215e55e433d674d4e8" + integrity sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-transform-object-rest-spread@^7.22.15", "@babel/plugin-transform-object-rest-spread@^7.24.0": version "7.24.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.0.tgz#7b836ad0088fdded2420ce96d4e1d3ed78b71df1" @@ -1376,6 +1699,16 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-transform-parameters" "^7.23.3" +"@babel/plugin-transform-object-rest-spread@^7.24.1", "@babel/plugin-transform-object-rest-spread@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.24.5.tgz#f91bbcb092ff957c54b4091c86bda8372f0b10ef" + integrity sha512-7EauQHszLGM3ay7a161tTQH7fj+3vVM/gThlz5HpFtnygTxjrlvoeq7MPVA1Vy9Q555OB8SnAOsMkLShNkkrHA== + dependencies: + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-plugin-utils" "^7.24.5" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.24.5" + "@babel/plugin-transform-object-super@^7.0.0": version "7.14.5" resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.14.5.tgz" @@ -1392,6 +1725,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-replace-supers" "^7.22.20" +"@babel/plugin-transform-object-super@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.24.1.tgz#e71d6ab13483cca89ed95a474f542bbfc20a0520" + integrity sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-replace-supers" "^7.24.1" + "@babel/plugin-transform-optional-catch-binding@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz#318066de6dacce7d92fa244ae475aa8d91778017" @@ -1400,6 +1741,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" +"@babel/plugin-transform-optional-catch-binding@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.24.1.tgz#92a3d0efe847ba722f1a4508669b23134669e2da" + integrity sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-transform-optional-chaining@^7.23.0", "@babel/plugin-transform-optional-chaining@^7.23.3", "@babel/plugin-transform-optional-chaining@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz#6acf61203bdfc4de9d4e52e64490aeb3e52bd017" @@ -1409,6 +1758,15 @@ "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" "@babel/plugin-syntax-optional-chaining" "^7.8.3" +"@babel/plugin-transform-optional-chaining@^7.24.1", "@babel/plugin-transform-optional-chaining@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.24.5.tgz#a6334bebd7f9dd3df37447880d0bd64b778e600f" + integrity sha512-xWCkmwKT+ihmA6l7SSTpk8e4qQl/274iNbSKRRS8mpqFR32ksy36+a+LWY8OXCCEefF8WFlnOHVsaDI2231wBg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.5" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.12.1", "@babel/plugin-transform-parameters@^7.14.5": version "7.14.5" resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.14.5.tgz" @@ -1423,6 +1781,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-parameters@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.5.tgz#5c3b23f3a6b8fed090f9b98f2926896d3153cc62" + integrity sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.5" + "@babel/plugin-transform-private-methods@^7.22.5", "@babel/plugin-transform-private-methods@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz#b2d7a3c97e278bfe59137a978d53b2c2e038c0e4" @@ -1431,6 +1796,14 @@ "@babel/helper-create-class-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-private-methods@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.24.1.tgz#a0faa1ae87eff077e1e47a5ec81c3aef383dc15a" + integrity sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.24.1" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-transform-private-property-in-object@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz#3ec711d05d6608fd173d9b8de39872d8dbf68bf5" @@ -1441,6 +1814,16 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-private-property-in-object" "^7.14.5" +"@babel/plugin-transform-private-property-in-object@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.24.5.tgz#f5d1fcad36e30c960134cb479f1ca98a5b06eda5" + integrity sha512-JM4MHZqnWR04jPMujQDTBVRnqxpLLpx2tkn7iPn+Hmsc0Gnb79yvRWOkvqFOx3Z7P7VxiRIR22c4eGSNj87OBQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.24.5" + "@babel/helper-plugin-utils" "^7.24.5" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-transform-property-literals@^7.0.0": version "7.14.5" resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.14.5.tgz" @@ -1455,6 +1838,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-property-literals@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.24.1.tgz#d6a9aeab96f03749f4eebeb0b6ea8e90ec958825" + integrity sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-transform-react-display-name@^7.0.0": version "7.14.5" resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.14.5.tgz" @@ -1469,6 +1859,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-react-display-name@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.1.tgz#554e3e1a25d181f040cf698b93fd289a03bfdcdb" + integrity sha512-mvoQg2f9p2qlpDQRBC7M3c3XTr0k7cp/0+kFKKO/7Gtu0LSw16eKB+Fabe2bDT/UpsyasTBBkAnbdsLrkD5XMw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-transform-react-jsx-development@^7.22.5": version "7.22.5" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.22.5.tgz#e716b6edbef972a92165cd69d92f1255f7e73e87" @@ -1487,7 +1884,7 @@ "@babel/plugin-syntax-jsx" "^7.14.5" "@babel/types" "^7.14.5" -"@babel/plugin-transform-react-jsx@^7.22.15", "@babel/plugin-transform-react-jsx@^7.22.5": +"@babel/plugin-transform-react-jsx@^7.22.15", "@babel/plugin-transform-react-jsx@^7.22.5", "@babel/plugin-transform-react-jsx@^7.23.4": version "7.23.4" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz#393f99185110cea87184ea47bcb4a7b0c2e39312" integrity sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA== @@ -1506,6 +1903,14 @@ "@babel/helper-annotate-as-pure" "^7.22.5" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-react-pure-annotations@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.24.1.tgz#c86bce22a53956331210d268e49a0ff06e392470" + integrity sha512-+pWEAaDJvSm9aFvJNpLiM2+ktl2Sn2U5DdyiWdZBxmLc6+xGt88dvFqsHiAiDS+8WqUwbDfkKz9jRxK3M0k+kA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-transform-regenerator@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz#141afd4a2057298602069fce7f2dc5173e6c561c" @@ -1514,6 +1919,14 @@ "@babel/helper-plugin-utils" "^7.22.5" regenerator-transform "^0.15.2" +"@babel/plugin-transform-regenerator@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.1.tgz#625b7545bae52363bdc1fbbdc7252b5046409c8c" + integrity sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + regenerator-transform "^0.15.2" + "@babel/plugin-transform-reserved-words@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz#4130dcee12bd3dd5705c587947eb715da12efac8" @@ -1521,6 +1934,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-reserved-words@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.24.1.tgz#8de729f5ecbaaf5cf83b67de13bad38a21be57c1" + integrity sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-transform-runtime@^7.23.2": version "7.24.0" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.0.tgz#e308fe27d08b74027d42547081eefaf4f2ffbcc9" @@ -1533,6 +1953,18 @@ babel-plugin-polyfill-regenerator "^0.5.5" semver "^6.3.1" +"@babel/plugin-transform-runtime@^7.24.3": + version "7.24.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.3.tgz#dc58ad4a31810a890550365cc922e1ff5acb5d7f" + integrity sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ== + dependencies: + "@babel/helper-module-imports" "^7.24.3" + "@babel/helper-plugin-utils" "^7.24.0" + babel-plugin-polyfill-corejs2 "^0.4.10" + babel-plugin-polyfill-corejs3 "^0.10.1" + babel-plugin-polyfill-regenerator "^0.6.1" + semver "^6.3.1" + "@babel/plugin-transform-shorthand-properties@^7.0.0": version "7.14.5" resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.14.5.tgz" @@ -1547,6 +1979,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-shorthand-properties@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.1.tgz#ba9a09144cf55d35ec6b93a32253becad8ee5b55" + integrity sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-transform-spread@^7.0.0": version "7.14.6" resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.14.6.tgz" @@ -1563,6 +2002,14 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" +"@babel/plugin-transform-spread@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.1.tgz#a1acf9152cbf690e4da0ba10790b3ac7d2b2b391" + integrity sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-skip-transparent-expression-wrappers" "^7.22.5" + "@babel/plugin-transform-sticky-regex@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz#dec45588ab4a723cb579c609b294a3d1bd22ff04" @@ -1570,6 +2017,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-sticky-regex@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.1.tgz#f03e672912c6e203ed8d6e0271d9c2113dc031b9" + integrity sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-transform-template-literals@^7.0.0": version "7.14.5" resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.14.5.tgz" @@ -1584,6 +2038,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-template-literals@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.1.tgz#15e2166873a30d8617e3e2ccadb86643d327aab7" + integrity sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-transform-typeof-symbol@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz#9dfab97acc87495c0c449014eb9c547d8966bca4" @@ -1591,6 +2052,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-typeof-symbol@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.24.5.tgz#703cace5ef74155fb5eecab63cbfc39bdd25fe12" + integrity sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg== + dependencies: + "@babel/helper-plugin-utils" "^7.24.5" + "@babel/plugin-transform-typescript@^7.23.3": version "7.23.6" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.6.tgz#aa36a94e5da8d94339ae3a4e22d40ed287feb34c" @@ -1601,6 +2069,16 @@ "@babel/helper-plugin-utils" "^7.22.5" "@babel/plugin-syntax-typescript" "^7.23.3" +"@babel/plugin-transform-typescript@^7.24.1": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.24.5.tgz#bcba979e462120dc06a75bd34c473a04781931b8" + integrity sha512-E0VWu/hk83BIFUWnsKZ4D81KXjN5L3MobvevOHErASk9IPwKHOkTgvqzvNo1yP/ePJWqqK2SpUR5z+KQbl6NVw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.22.5" + "@babel/helper-create-class-features-plugin" "^7.24.5" + "@babel/helper-plugin-utils" "^7.24.5" + "@babel/plugin-syntax-typescript" "^7.24.1" + "@babel/plugin-transform-unicode-escapes@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz#1f66d16cab01fab98d784867d24f70c1ca65b925" @@ -1608,6 +2086,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-unicode-escapes@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.24.1.tgz#fb3fa16676549ac7c7449db9b342614985c2a3a4" + integrity sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-transform-unicode-property-regex@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz#19e234129e5ffa7205010feec0d94c251083d7ad" @@ -1616,6 +2101,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-unicode-property-regex@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.24.1.tgz#56704fd4d99da81e5e9f0c0c93cabd91dbc4889e" + integrity sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-transform-unicode-regex@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz#26897708d8f42654ca4ce1b73e96140fbad879dc" @@ -1624,6 +2117,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-unicode-regex@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.1.tgz#57c3c191d68f998ac46b708380c1ce4d13536385" + integrity sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/plugin-transform-unicode-sets-regex@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz#4fb6f0a719c2c5859d11f6b55a050cc987f3799e" @@ -1632,6 +2133,14 @@ "@babel/helper-create-regexp-features-plugin" "^7.22.15" "@babel/helper-plugin-utils" "^7.22.5" +"@babel/plugin-transform-unicode-sets-regex@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.24.1.tgz#c1ea175b02afcffc9cf57a9c4658326625165b7f" + integrity sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.22.15" + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/preset-env@^7.23.2": version "7.24.0" resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.24.0.tgz#11536a7f4b977294f0bdfad780f01a8ac8e183fc" @@ -1718,6 +2227,93 @@ core-js-compat "^3.31.0" semver "^6.3.1" +"@babel/preset-env@^7.24.4": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.24.5.tgz#6a9ac90bd5a5a9dae502af60dfc58c190551bbcd" + integrity sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ== + dependencies: + "@babel/compat-data" "^7.24.4" + "@babel/helper-compilation-targets" "^7.23.6" + "@babel/helper-plugin-utils" "^7.24.5" + "@babel/helper-validator-option" "^7.23.5" + "@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.24.5" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.24.1" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.24.1" + "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.24.1" + "@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2" + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + "@babel/plugin-syntax-import-assertions" "^7.24.1" + "@babel/plugin-syntax-import-attributes" "^7.24.1" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@babel/plugin-syntax-json-strings" "^7.8.3" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + "@babel/plugin-syntax-top-level-await" "^7.14.5" + "@babel/plugin-syntax-unicode-sets-regex" "^7.18.6" + "@babel/plugin-transform-arrow-functions" "^7.24.1" + "@babel/plugin-transform-async-generator-functions" "^7.24.3" + "@babel/plugin-transform-async-to-generator" "^7.24.1" + "@babel/plugin-transform-block-scoped-functions" "^7.24.1" + "@babel/plugin-transform-block-scoping" "^7.24.5" + "@babel/plugin-transform-class-properties" "^7.24.1" + "@babel/plugin-transform-class-static-block" "^7.24.4" + "@babel/plugin-transform-classes" "^7.24.5" + "@babel/plugin-transform-computed-properties" "^7.24.1" + "@babel/plugin-transform-destructuring" "^7.24.5" + "@babel/plugin-transform-dotall-regex" "^7.24.1" + "@babel/plugin-transform-duplicate-keys" "^7.24.1" + "@babel/plugin-transform-dynamic-import" "^7.24.1" + "@babel/plugin-transform-exponentiation-operator" "^7.24.1" + "@babel/plugin-transform-export-namespace-from" "^7.24.1" + "@babel/plugin-transform-for-of" "^7.24.1" + "@babel/plugin-transform-function-name" "^7.24.1" + "@babel/plugin-transform-json-strings" "^7.24.1" + "@babel/plugin-transform-literals" "^7.24.1" + "@babel/plugin-transform-logical-assignment-operators" "^7.24.1" + "@babel/plugin-transform-member-expression-literals" "^7.24.1" + "@babel/plugin-transform-modules-amd" "^7.24.1" + "@babel/plugin-transform-modules-commonjs" "^7.24.1" + "@babel/plugin-transform-modules-systemjs" "^7.24.1" + "@babel/plugin-transform-modules-umd" "^7.24.1" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.22.5" + "@babel/plugin-transform-new-target" "^7.24.1" + "@babel/plugin-transform-nullish-coalescing-operator" "^7.24.1" + "@babel/plugin-transform-numeric-separator" "^7.24.1" + "@babel/plugin-transform-object-rest-spread" "^7.24.5" + "@babel/plugin-transform-object-super" "^7.24.1" + "@babel/plugin-transform-optional-catch-binding" "^7.24.1" + "@babel/plugin-transform-optional-chaining" "^7.24.5" + "@babel/plugin-transform-parameters" "^7.24.5" + "@babel/plugin-transform-private-methods" "^7.24.1" + "@babel/plugin-transform-private-property-in-object" "^7.24.5" + "@babel/plugin-transform-property-literals" "^7.24.1" + "@babel/plugin-transform-regenerator" "^7.24.1" + "@babel/plugin-transform-reserved-words" "^7.24.1" + "@babel/plugin-transform-shorthand-properties" "^7.24.1" + "@babel/plugin-transform-spread" "^7.24.1" + "@babel/plugin-transform-sticky-regex" "^7.24.1" + "@babel/plugin-transform-template-literals" "^7.24.1" + "@babel/plugin-transform-typeof-symbol" "^7.24.5" + "@babel/plugin-transform-unicode-escapes" "^7.24.1" + "@babel/plugin-transform-unicode-property-regex" "^7.24.1" + "@babel/plugin-transform-unicode-regex" "^7.24.1" + "@babel/plugin-transform-unicode-sets-regex" "^7.24.1" + "@babel/preset-modules" "0.1.6-no-external-plugins" + babel-plugin-polyfill-corejs2 "^0.4.10" + babel-plugin-polyfill-corejs3 "^0.10.4" + babel-plugin-polyfill-regenerator "^0.6.1" + core-js-compat "^3.31.0" + semver "^6.3.1" + "@babel/preset-flow@^7.22.15": version "7.24.0" resolved "https://registry.yarnpkg.com/@babel/preset-flow/-/preset-flow-7.24.0.tgz#0de60271b0a439b415501c5b28f685fbcb080e1c" @@ -1748,6 +2344,18 @@ "@babel/plugin-transform-react-jsx-development" "^7.22.5" "@babel/plugin-transform-react-pure-annotations" "^7.23.3" +"@babel/preset-react@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/preset-react/-/preset-react-7.24.1.tgz#2450c2ac5cc498ef6101a6ca5474de251e33aa95" + integrity sha512-eFa8up2/8cZXLIpkafhaADTXSnl7IsUFCYenRWrARBz0/qZwcT0RBXpys0LJU4+WfPoF2ZG6ew6s2V6izMCwRA== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-validator-option" "^7.23.5" + "@babel/plugin-transform-react-display-name" "^7.24.1" + "@babel/plugin-transform-react-jsx" "^7.23.4" + "@babel/plugin-transform-react-jsx-development" "^7.22.5" + "@babel/plugin-transform-react-pure-annotations" "^7.24.1" + "@babel/preset-typescript@^7.23.0", "@babel/preset-typescript@^7.23.2": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz#14534b34ed5b6d435aa05f1ae1c5e7adcc01d913" @@ -1759,6 +2367,17 @@ "@babel/plugin-transform-modules-commonjs" "^7.23.3" "@babel/plugin-transform-typescript" "^7.23.3" +"@babel/preset-typescript@^7.24.1": + version "7.24.1" + resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.24.1.tgz#89bdf13a3149a17b3b2a2c9c62547f06db8845ec" + integrity sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ== + dependencies: + "@babel/helper-plugin-utils" "^7.24.0" + "@babel/helper-validator-option" "^7.23.5" + "@babel/plugin-syntax-jsx" "^7.24.1" + "@babel/plugin-transform-modules-commonjs" "^7.24.1" + "@babel/plugin-transform-typescript" "^7.24.1" + "@babel/register@^7.22.15": version "7.23.7" resolved "https://registry.yarnpkg.com/@babel/register/-/register-7.23.7.tgz#485a5e7951939d21304cae4af1719fdb887bc038" @@ -1818,6 +2437,13 @@ dependencies: regenerator-runtime "^0.13.11" +"@babel/runtime@^7.24.4": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.5.tgz#230946857c053a36ccc66e1dd03b17dd0c4ed02c" + integrity sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g== + dependencies: + regenerator-runtime "^0.14.0" + "@babel/standalone@^7.11.6": version "7.14.6" resolved "https://registry.npmjs.org/@babel/standalone/-/standalone-7.14.6.tgz" @@ -1886,33 +2512,17 @@ integrity sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw== dependencies: "@babel/code-frame" "^7.23.5" - "@babel/generator" "^7.23.6" - "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-function-name" "^7.23.0" - "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.24.0" - "@babel/types" "^7.24.0" - debug "^4.3.1" - globals "^11.1.0" - -"@babel/traverse@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.1.tgz#d65c36ac9dd17282175d1e4a3c49d5b7988f530c" - integrity sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ== - dependencies: - "@babel/code-frame" "^7.24.1" - "@babel/generator" "^7.24.1" + "@babel/generator" "^7.23.6" "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-function-name" "^7.23.0" "@babel/helper-hoist-variables" "^7.22.5" "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.24.1" + "@babel/parser" "^7.24.0" "@babel/types" "^7.24.0" debug "^4.3.1" globals "^11.1.0" -"@babel/traverse@^7.24.5": +"@babel/traverse@^7.24.1", "@babel/traverse@^7.24.5": version "7.24.5" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.5.tgz#972aa0bc45f16983bf64aa1f877b2dd0eea7e6f8" integrity sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA== @@ -3820,6 +4430,16 @@ resolved "https://registry.npmjs.org/@josephg/resolvable/-/resolvable-1.0.1.tgz" integrity sha512-CtzORUwWTTOTqfVtHaKRJ0I1kNQd1bpn3sUh8I3nJDVY+5/M/Oe1DnEWzPQvqq/xPIIkzzzIP7mfCoAjFRvDhg== +"@joshwooding/vite-plugin-react-docgen-typescript@0.3.1": + version "0.3.1" + resolved "https://registry.yarnpkg.com/@joshwooding/vite-plugin-react-docgen-typescript/-/vite-plugin-react-docgen-typescript-0.3.1.tgz#a733e7fc90c00ce694058d3af034b9f63d88cddd" + integrity sha512-pdoMZ9QaPnVlSM+SdU/wgg0nyD/8wQ7y90ttO2CMCyrrm7RxveYIJ5eNfjPaoMFqW41LZra7QO9j+xV4Y18Glw== + dependencies: + glob "^7.2.0" + glob-promise "^4.2.0" + magic-string "^0.27.0" + react-docgen-typescript "^2.2.2" + "@jridgewell/gen-mapping@^0.1.0": version "0.1.1" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" @@ -5709,6 +6329,15 @@ estree-walker "^2.0.2" picomatch "^2.3.1" +"@rollup/pluginutils@^5.0.2": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.1.0.tgz#7e53eddc8c7f483a4ad0b94afb1f7f5fd3c771e0" + integrity sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g== + dependencies: + "@types/estree" "^1.0.0" + estree-walker "^2.0.2" + picomatch "^2.3.1" + "@rollup/rollup-android-arm-eabi@4.12.1": version "4.12.1" resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.12.1.tgz#11aaa02a933864b87f0b31cf2b755734e1f22787" @@ -5974,6 +6603,11 @@ resolved "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz" integrity sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ== +"@sindresorhus/merge-streams@^2.1.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz#719df7fb41766bc143369eaa0dd56d8dc87c9958" + integrity sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg== + "@sinonjs/commons@^1.7.0": version "1.8.3" resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz" @@ -6000,18 +6634,6 @@ polished "^4.2.2" uuid "^9.0.0" -"@storybook/addon-actions@8.0.9": - version "8.0.9" - resolved "https://registry.yarnpkg.com/@storybook/addon-actions/-/addon-actions-8.0.9.tgz#b7a19abb0ee8fd73df1498def7f1ff307d16cb25" - integrity sha512-+I3VTvlKdj8puHeS2tyaOVv9syDiNLneVZbTfqN+UDOK2i42NwvZr8PVwjTzMlEj9eePJdCZgiipz55xwts5bw== - dependencies: - "@storybook/core-events" "8.0.9" - "@storybook/global" "^5.0.0" - "@types/uuid" "^9.0.1" - dequal "^2.0.2" - polished "^4.2.2" - uuid "^9.0.0" - "@storybook/addon-backgrounds@7.6.17": version "7.6.17" resolved "https://registry.yarnpkg.com/@storybook/addon-backgrounds/-/addon-backgrounds-7.6.17.tgz#a3c96cb73e6053dc2cf9968cb02b437c4d752812" @@ -6189,19 +6811,19 @@ process "^0.11.10" util "^0.12.4" -"@storybook/builder-manager@8.0.9": - version "8.0.9" - resolved "https://registry.yarnpkg.com/@storybook/builder-manager/-/builder-manager-8.0.9.tgz#8c03b04b3550dd637247fea2d2ddd089268408d9" - integrity sha512-/PxDwZIfMc/PSRZcasb6SIdGr3azIlenzx7dBF7Imt8i4jLHiAf1t00GvghlfJsvsrn4DNp95rbRbXTDyTj7tQ== +"@storybook/builder-manager@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@storybook/builder-manager/-/builder-manager-8.1.0.tgz#e4b8b94484f596ebaa7d1921e723b1b90b9bc17c" + integrity sha512-QG6XRxk8Nm4BRAbwkLILts7YPF78cM/3mXH1y/zbMnxYE0suNtxb0Q9B9qE5cFK2dhgiWIprF6RWaP5kv8bpig== dependencies: "@fal-works/esbuild-plugin-global-externals" "^2.1.2" - "@storybook/core-common" "8.0.9" - "@storybook/manager" "8.0.9" - "@storybook/node-logger" "8.0.9" + "@storybook/core-common" "8.1.0" + "@storybook/manager" "8.1.0" + "@storybook/node-logger" "8.1.0" "@types/ejs" "^3.1.1" "@yarnpkg/esbuild-plugin-pnp" "^3.0.0-rc.10" browser-assert "^1.2.1" - ejs "^3.1.8" + ejs "^3.1.10" esbuild "^0.18.0 || ^0.19.0 || ^0.20.0" esbuild-plugin-alias "^0.2.1" express "^4.17.3" @@ -6209,6 +6831,29 @@ process "^0.11.10" util "^0.12.4" +"@storybook/builder-vite@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@storybook/builder-vite/-/builder-vite-8.1.0.tgz#30aa11c33040ea8d234b1fb0a5981d2050adb685" + integrity sha512-KCTWA4gFMHm0u5YXYIaGiPasCeAzMo1yE9Z/vyWRL+2sifwDPTDu3QOhlBblGPdLzA18LVJuKcfcuWPqiQrIdA== + dependencies: + "@storybook/channels" "8.1.0" + "@storybook/client-logger" "8.1.0" + "@storybook/core-common" "8.1.0" + "@storybook/core-events" "8.1.0" + "@storybook/csf-plugin" "8.1.0" + "@storybook/node-logger" "8.1.0" + "@storybook/preview" "8.1.0" + "@storybook/preview-api" "8.1.0" + "@storybook/types" "8.1.0" + "@types/find-cache-dir" "^3.2.1" + browser-assert "^1.2.1" + es-module-lexer "^1.5.0" + express "^4.17.3" + find-cache-dir "^3.0.0" + fs-extra "^11.1.0" + magic-string "^0.30.0" + ts-dedent "^2.0.0" + "@storybook/builder-webpack5@7.6.17": version "7.6.17" resolved "https://registry.yarnpkg.com/@storybook/builder-webpack5/-/builder-webpack5-7.6.17.tgz#1bf52b4cf62c66cbfe95e189fa4303a542bb645a" @@ -6253,19 +6898,19 @@ webpack-hot-middleware "^2.25.1" webpack-virtual-modules "^0.5.0" -"@storybook/builder-webpack5@8.0.9": - version "8.0.9" - resolved "https://registry.yarnpkg.com/@storybook/builder-webpack5/-/builder-webpack5-8.0.9.tgz#811af801f264c7377c5e33d68b713eacf6c2f295" - integrity sha512-bFxlxOO2x8n3TmmA9ACxzhmHxtRd0e68dA0w4AYkvEwBf2wScRQdWJIeS5k4JgRwtcUyFYAt+VcKyE1WMgyaVg== - dependencies: - "@storybook/channels" "8.0.9" - "@storybook/client-logger" "8.0.9" - "@storybook/core-common" "8.0.9" - "@storybook/core-events" "8.0.9" - "@storybook/core-webpack" "8.0.9" - "@storybook/node-logger" "8.0.9" - "@storybook/preview" "8.0.9" - "@storybook/preview-api" "8.0.9" +"@storybook/builder-webpack5@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@storybook/builder-webpack5/-/builder-webpack5-8.1.0.tgz#5b0f73f9d8fc0dad7b04887ff275af17d3620257" + integrity sha512-G0xJGEh4LLFKiC1yyW8vkWF++7hQKSYA0qkhlkmPUz8b8VgOXHQbpv1NAsTghhMJCZI/Pcjh6fU29YjuoL1Ctw== + dependencies: + "@storybook/channels" "8.1.0" + "@storybook/client-logger" "8.1.0" + "@storybook/core-common" "8.1.0" + "@storybook/core-events" "8.1.0" + "@storybook/core-webpack" "8.1.0" + "@storybook/node-logger" "8.1.0" + "@storybook/preview" "8.1.0" + "@storybook/preview-api" "8.1.0" "@types/node" "^18.0.0" "@types/semver" "^7.3.4" browser-assert "^1.2.1" @@ -6273,7 +6918,7 @@ cjs-module-lexer "^1.2.3" constants-browserify "^1.0.0" css-loader "^6.7.1" - es-module-lexer "^1.4.1" + es-module-lexer "^1.5.0" express "^4.17.3" fork-ts-checker-webpack-plugin "^8.0.0" fs-extra "^11.1.0" @@ -6305,13 +6950,13 @@ telejson "^7.2.0" tiny-invariant "^1.3.1" -"@storybook/channels@8.0.9": - version "8.0.9" - resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-8.0.9.tgz#886aff858a13c11f49ca3d92d8a2ade67f19d407" - integrity sha512-7Lcfyy5CsLWWGhMPO9WG4jZ/Alzp0AjepFhEreYHRPtQrfttp6qMAjE/g1aHgun0qHCYWxwqIG4NLR/hqDNrXQ== +"@storybook/channels@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@storybook/channels/-/channels-8.1.0.tgz#433902f8e3f5f6fa2c57152f3bff5a1e67c9c053" + integrity sha512-zZ6f1IC6AlQfPcVJeRH9MyzaGBXdniVREbjdM4qDHJkHKtWs92K2IXQ3W/aAIFKbpKKYadTWu+UQfULw0oAG3Q== dependencies: - "@storybook/client-logger" "8.0.9" - "@storybook/core-events" "8.0.9" + "@storybook/client-logger" "8.1.0" + "@storybook/core-events" "8.1.0" "@storybook/global" "^5.0.0" telejson "^7.2.0" tiny-invariant "^1.3.1" @@ -6362,22 +7007,22 @@ ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/cli@8.0.9": - version "8.0.9" - resolved "https://registry.yarnpkg.com/@storybook/cli/-/cli-8.0.9.tgz#20d90c5c357d063c054f8594a6b327ce447364fd" - integrity sha512-lilYTKn8F5YOePijqfRYFa5v2mHVIJxPCIgTn+OXAmAFbcizZ6P8P6niU4J/NXulgx68Ln1M7hYhFtTP25hVTw== +"@storybook/cli@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@storybook/cli/-/cli-8.1.0.tgz#f2e60ecfdd621a1e61f8c5b2a343b478bc53e81e" + integrity sha512-+/wQ9JfoE+GVNpozwltUqINqlQaAU1kEAdA52q/KRVrlvQ6GhU3NkR64ZNg4IOWs4I3LKy9YXgQ++UnBqVwO5A== dependencies: - "@babel/core" "^7.23.0" - "@babel/types" "^7.23.0" + "@babel/core" "^7.24.4" + "@babel/types" "^7.24.0" "@ndelangen/get-tarball" "^3.0.7" - "@storybook/codemod" "8.0.9" - "@storybook/core-common" "8.0.9" - "@storybook/core-events" "8.0.9" - "@storybook/core-server" "8.0.9" - "@storybook/csf-tools" "8.0.9" - "@storybook/node-logger" "8.0.9" - "@storybook/telemetry" "8.0.9" - "@storybook/types" "8.0.9" + "@storybook/codemod" "8.1.0" + "@storybook/core-common" "8.1.0" + "@storybook/core-events" "8.1.0" + "@storybook/core-server" "8.1.0" + "@storybook/csf-tools" "8.1.0" + "@storybook/node-logger" "8.1.0" + "@storybook/telemetry" "8.1.0" + "@storybook/types" "8.1.0" "@types/semver" "^7.3.4" "@yarnpkg/fslib" "2.10.3" "@yarnpkg/libzip" "2.3.0" @@ -6391,7 +7036,7 @@ fs-extra "^11.1.0" get-npm-tarball-url "^2.0.3" giget "^1.0.0" - globby "^11.0.2" + globby "^14.0.1" jscodeshift "^0.15.1" leven "^3.1.0" ora "^5.4.1" @@ -6411,10 +7056,10 @@ dependencies: "@storybook/global" "^5.0.0" -"@storybook/client-logger@8.0.9": - version "8.0.9" - resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-8.0.9.tgz#90a099ad79d6959cd3d0ee4f753edb0cc54a54f5" - integrity sha512-LzV/RHkbf07sRc1Jc0ff36RlapKf9Ul7/+9VMvVbI3hshH1CpmrZK4t/tsIdpX/EVOdJ1Gg5cES06PnleOAIPA== +"@storybook/client-logger@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@storybook/client-logger/-/client-logger-8.1.0.tgz#525df1cce30e50752e15b5dd917c54315c865714" + integrity sha512-MPNggo4g/J/40muUsyo+LUN3BBcOb4FK5AD+yjDgbBPo2IwXCNqOdCHkz0TEALIVMMZ0KSdFW7uB/cFnfq/Xdw== dependencies: "@storybook/global" "^5.0.0" @@ -6438,21 +7083,21 @@ prettier "^2.8.0" recast "^0.23.1" -"@storybook/codemod@8.0.9": - version "8.0.9" - resolved "https://registry.yarnpkg.com/@storybook/codemod/-/codemod-8.0.9.tgz#196dae4b4a921244ed384217f79651979eff1b45" - integrity sha512-VBeGpSZSQpL6iyLLqceJSNGhdCqcNwv+xC/aWdDFOkmuE1YfbmNNwpa9QYv4ZFJ2QjUsm4iTWG60qK+9NXeSKA== +"@storybook/codemod@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@storybook/codemod/-/codemod-8.1.0.tgz#eba8b1956056a8feab196311228236d938195b19" + integrity sha512-RQr8/bbn4l3Du0L53AIcOc13qrDjaod8olD2SK4b4l0WoiG5OHbx4UAicC6diVhILj3hKkd4oF78STSwnDdV4A== dependencies: - "@babel/core" "^7.23.2" - "@babel/preset-env" "^7.23.2" - "@babel/types" "^7.23.0" - "@storybook/csf" "^0.1.4" - "@storybook/csf-tools" "8.0.9" - "@storybook/node-logger" "8.0.9" - "@storybook/types" "8.0.9" + "@babel/core" "^7.24.4" + "@babel/preset-env" "^7.24.4" + "@babel/types" "^7.24.0" + "@storybook/csf" "^0.1.7" + "@storybook/csf-tools" "8.1.0" + "@storybook/node-logger" "8.1.0" + "@storybook/types" "8.1.0" "@types/cross-spawn" "^6.0.2" cross-spawn "^7.0.3" - globby "^11.0.2" + globby "^14.0.1" jscodeshift "^0.15.1" lodash "^4.17.21" prettier "^3.1.1" @@ -6512,15 +7157,15 @@ resolve-from "^5.0.0" ts-dedent "^2.0.0" -"@storybook/core-common@8.0.9": - version "8.0.9" - resolved "https://registry.yarnpkg.com/@storybook/core-common/-/core-common-8.0.9.tgz#ccf97c549943f670dcecaefebeb4a8637bac6b42" - integrity sha512-Jmue+sfHFb4GTYBzyWYw1MygoJiQSfISIrKmNIzAmZ+oR9EOr+jpu/i/bH+uetZ2Hqg1AGhj1VB7OtJp9HQyWw== +"@storybook/core-common@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@storybook/core-common/-/core-common-8.1.0.tgz#895f167b8b285572ee864cdc1de7a8463a4c1568" + integrity sha512-VDiJl+AyQLA0ys7an2O8fmgdFgaftJacVrO3P+5RtQob9BC057Mp3pq1lr1Si8orKPwFZhNJOfiF9jQeV5K+bw== dependencies: - "@storybook/core-events" "8.0.9" - "@storybook/csf-tools" "8.0.9" - "@storybook/node-logger" "8.0.9" - "@storybook/types" "8.0.9" + "@storybook/core-events" "8.1.0" + "@storybook/csf-tools" "8.1.0" + "@storybook/node-logger" "8.1.0" + "@storybook/types" "8.1.0" "@yarnpkg/fslib" "2.10.3" "@yarnpkg/libzip" "2.3.0" chalk "^4.1.0" @@ -6538,6 +7183,7 @@ node-fetch "^2.0.0" picomatch "^2.3.0" pkg-dir "^5.0.0" + prettier-fallback "npm:prettier@^3" pretty-hrtime "^1.0.3" resolve-from "^5.0.0" semver "^7.3.7" @@ -6553,11 +7199,12 @@ dependencies: ts-dedent "^2.0.0" -"@storybook/core-events@8.0.9": - version "8.0.9" - resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-8.0.9.tgz#d14db371f1f959e8c3baaa6098d2c506bcb3f3ad" - integrity sha512-DxSUx7wG9Qe3OFUBnv3OrYq48J8UWNo2DUR5/JecJCtp3n++L4fAEW3J0IF5FfxpQDMQSp1yTNjZ2PaWCMd2ag== +"@storybook/core-events@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@storybook/core-events/-/core-events-8.1.0.tgz#1eec094bd0b7e2d7900a72da27bdd94254d65947" + integrity sha512-9oCACeyYqH7rZVHglzH//cJXdP0mM5d2nBM4kgFgTTLJpbb0+SrF0rD0EVpHfA1l4Kz7pgzTY6Xj2p4mEiZ0Qg== dependencies: + "@storybook/csf" "^0.1.7" ts-dedent "^2.0.0" "@storybook/core-server@7.6.17": @@ -6607,29 +7254,31 @@ watchpack "^2.2.0" ws "^8.2.3" -"@storybook/core-server@8.0.9": - version "8.0.9" - resolved "https://registry.yarnpkg.com/@storybook/core-server/-/core-server-8.0.9.tgz#c3f4790e35b6a116df64c6e6d1161c2077c70c4e" - integrity sha512-BIe1T5YUBl0GYxEjRoTQsvXD2pyuzL8rPTUD41zlzSQM0R8U6Iant9SzRms4u0+rKUm2mGxxKuODlUo5ewqaGA== +"@storybook/core-server@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@storybook/core-server/-/core-server-8.1.0.tgz#116270cd7f0a00e03651dec099b439d5340719e8" + integrity sha512-12BjLHOND9mezi8/8VgyB8U80DOFcMqmgPTy6y6TkEmpI3TszbMIIderuWWXU0Yq9rFGya34+e2Srd6ffYh6hA== dependencies: "@aw-web-design/x-default-browser" "1.4.126" - "@babel/core" "^7.23.9" + "@babel/core" "^7.24.4" + "@babel/parser" "^7.24.4" "@discoveryjs/json-ext" "^0.5.3" - "@storybook/builder-manager" "8.0.9" - "@storybook/channels" "8.0.9" - "@storybook/core-common" "8.0.9" - "@storybook/core-events" "8.0.9" - "@storybook/csf" "^0.1.4" - "@storybook/csf-tools" "8.0.9" - "@storybook/docs-mdx" "3.0.0" + "@storybook/builder-manager" "8.1.0" + "@storybook/channels" "8.1.0" + "@storybook/core-common" "8.1.0" + "@storybook/core-events" "8.1.0" + "@storybook/csf" "^0.1.7" + "@storybook/csf-tools" "8.1.0" + "@storybook/docs-mdx" "3.1.0-next.0" "@storybook/global" "^5.0.0" - "@storybook/manager" "8.0.9" - "@storybook/manager-api" "8.0.9" - "@storybook/node-logger" "8.0.9" - "@storybook/preview-api" "8.0.9" - "@storybook/telemetry" "8.0.9" - "@storybook/types" "8.0.9" + "@storybook/manager" "8.1.0" + "@storybook/manager-api" "8.1.0" + "@storybook/node-logger" "8.1.0" + "@storybook/preview-api" "8.1.0" + "@storybook/telemetry" "8.1.0" + "@storybook/types" "8.1.0" "@types/detect-port" "^1.3.0" + "@types/diff" "^5.0.9" "@types/node" "^18.0.0" "@types/pretty-hrtime" "^1.0.0" "@types/semver" "^7.3.4" @@ -6638,9 +7287,10 @@ cli-table3 "^0.6.1" compression "^1.7.4" detect-port "^1.3.0" + diff "^5.2.0" express "^4.17.3" fs-extra "^11.1.0" - globby "^11.0.2" + globby "^14.0.1" ip "^2.0.1" lodash "^4.17.21" open "^8.4.0" @@ -6667,14 +7317,14 @@ "@types/node" "^18.0.0" ts-dedent "^2.0.0" -"@storybook/core-webpack@8.0.9": - version "8.0.9" - resolved "https://registry.yarnpkg.com/@storybook/core-webpack/-/core-webpack-8.0.9.tgz#ac8211977bcfc26e24900a3b5dd9cdbc6eb31a7e" - integrity sha512-lehuuAmHt/p5z8lZkMW16Y/+uDEh+Z/tExItVadtjEY8jXDe2Ilr1Cts2lvzVNuuESEKd5bqsGJ1L4t9Bf25pg== +"@storybook/core-webpack@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@storybook/core-webpack/-/core-webpack-8.1.0.tgz#8ee6eb9dd95b7a743883208812ce96e017f28351" + integrity sha512-LMp+jzW6JbPGNGTd9c0SDKDYtRAme3CM7qCdjvli9bMpxLDU0Up0ydV4MMsxyIqEDqNkKkoJUi+T1lizgHuLtw== dependencies: - "@storybook/core-common" "8.0.9" - "@storybook/node-logger" "8.0.9" - "@storybook/types" "8.0.9" + "@storybook/core-common" "8.1.0" + "@storybook/node-logger" "8.1.0" + "@storybook/types" "8.1.0" "@types/node" "^18.0.0" ts-dedent "^2.0.0" @@ -6686,6 +7336,14 @@ "@storybook/csf-tools" "7.6.17" unplugin "^1.3.1" +"@storybook/csf-plugin@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@storybook/csf-plugin/-/csf-plugin-8.1.0.tgz#bc581eea3a6efcb547bb65526635817dd7169425" + integrity sha512-xWisKhyAqpXXsLASsYD+auWeIHlWdAB+wryP6S1vFDUdwzJ7HOS+FT4c7wF8AQjkF5jHPfzChYjbgII/ae6P3w== + dependencies: + "@storybook/csf-tools" "8.1.0" + unplugin "^1.3.1" + "@storybook/csf-tools@7.6.17": version "7.6.17" resolved "https://registry.yarnpkg.com/@storybook/csf-tools/-/csf-tools-7.6.17.tgz#366bb2348fc1a62f90cdbd6cce4aa5e7293984eb" @@ -6701,17 +7359,17 @@ recast "^0.23.1" ts-dedent "^2.0.0" -"@storybook/csf-tools@8.0.9": - version "8.0.9" - resolved "https://registry.yarnpkg.com/@storybook/csf-tools/-/csf-tools-8.0.9.tgz#8c24422fc12519be7756b4dcccad900962e6a88a" - integrity sha512-PiNMhL97giLytTdQwuhsZ92buVk4gy9H/8DtrDhUc45/1OmF95gogm6T2Yap729SIFwgpOcuq/U3aVo6d6swVQ== +"@storybook/csf-tools@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@storybook/csf-tools/-/csf-tools-8.1.0.tgz#09248934254eda66f7b0b02ffd68048db395acd1" + integrity sha512-nMdBFmEh0Ep/931Z/2OflTFmD+SMiwIQf0UAZ7pVGXSjVHY+PNSPyTo8967BPu89I0gjXQXYJxL6SgSM60i3kg== dependencies: - "@babel/generator" "^7.23.0" - "@babel/parser" "^7.23.0" - "@babel/traverse" "^7.23.2" - "@babel/types" "^7.23.0" - "@storybook/csf" "^0.1.4" - "@storybook/types" "8.0.9" + "@babel/generator" "^7.24.4" + "@babel/parser" "^7.24.4" + "@babel/traverse" "^7.24.1" + "@babel/types" "^7.24.0" + "@storybook/csf" "^0.1.7" + "@storybook/types" "8.1.0" fs-extra "^11.1.0" recast "^0.23.5" ts-dedent "^2.0.0" @@ -6730,17 +7388,17 @@ dependencies: type-fest "^2.19.0" -"@storybook/csf@^0.1.4": - version "0.1.4" - resolved "https://registry.yarnpkg.com/@storybook/csf/-/csf-0.1.4.tgz#18224bcd571fa834ccc4bebda8a0ca4cedbc4d91" - integrity sha512-B9UI/lsQMjF+oEfZCI6YXNoeuBcGZoOP5x8yKbe2tIEmsMjSztFKkpPzi5nLCnBk/MBtl6QJeI3ksJnbsWPkOw== +"@storybook/csf@^0.1.7": + version "0.1.7" + resolved "https://registry.yarnpkg.com/@storybook/csf/-/csf-0.1.7.tgz#dcc6c16a353bc09c8c619ba1a23ba93b2aab0b9d" + integrity sha512-53JeLZBibjQxi0Ep+/AJTfxlofJlxy1jXcSKENlnKxHjWEYyHQCumMP5yTFjf7vhNnMjEpV3zx6t23ssFiGRyw== dependencies: type-fest "^2.19.0" -"@storybook/docs-mdx@3.0.0": - version "3.0.0" - resolved "https://registry.yarnpkg.com/@storybook/docs-mdx/-/docs-mdx-3.0.0.tgz#5c9b5ce35dcb00ad8aa5dddbabf52ad09fab3974" - integrity sha512-NmiGXl2HU33zpwTv1XORe9XG9H+dRUC1Jl11u92L4xr062pZtrShLmD4VKIsOQujxhhOrbxpwhNOt+6TdhyIdQ== +"@storybook/docs-mdx@3.1.0-next.0": + version "3.1.0-next.0" + resolved "https://registry.yarnpkg.com/@storybook/docs-mdx/-/docs-mdx-3.1.0-next.0.tgz#9567c6eb621110dcf6554923a975238953d06305" + integrity sha512-t4syFIeSyufieNovZbLruPt2DmRKpbwL4fERCZ1MifWDRIORCKLc4NCEHy+IqvIqd71/SJV2k4B51nF7vlJfmQ== "@storybook/docs-mdx@^0.1.0": version "0.1.0" @@ -6760,15 +7418,15 @@ doctrine "^3.0.0" lodash "^4.17.21" -"@storybook/docs-tools@8.0.9": - version "8.0.9" - resolved "https://registry.yarnpkg.com/@storybook/docs-tools/-/docs-tools-8.0.9.tgz#4257adede62028a6e1176151a09fa4f4fa146b12" - integrity sha512-OzogAeOmeHea/MxSPKRBWtOQVNSpoq+OOpimO9YRA5h5GBRJ2TUOGT44Gny6QT4ll5AvQA8fIiq9KezKcLekAg== +"@storybook/docs-tools@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@storybook/docs-tools/-/docs-tools-8.1.0.tgz#2f7d9d6d55e7f0a450c4c1629c34cf39c092446e" + integrity sha512-Da0sQxStqTSeIUptBfU/OIhca4dkPld7GgBPV29FfdxreTAcg5gfJyUQH4v3yR/3x8QYHAbxmvUw5Rjnq03OKw== dependencies: - "@storybook/core-common" "8.0.9" - "@storybook/core-events" "8.0.9" - "@storybook/preview-api" "8.0.9" - "@storybook/types" "8.0.9" + "@storybook/core-common" "8.1.0" + "@storybook/core-events" "8.1.0" + "@storybook/preview-api" "8.1.0" + "@storybook/types" "8.1.0" "@types/doctrine" "^0.0.3" assert "^2.1.0" doctrine "^3.0.0" @@ -6797,6 +7455,19 @@ "@vitest/utils" "^0.34.6" util "^0.12.4" +"@storybook/instrumenter@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@storybook/instrumenter/-/instrumenter-8.1.0.tgz#d6fcdd46a819927feb559b5a2174a762d4ef430a" + integrity sha512-YBLp5Mz1NwEXOIN3ibacEW8OK3usCyb7ce6lL7XB3JWCyyQ1gzCqIjc9CpC1oztiftH4Ps/jmrFhG04sKXVufg== + dependencies: + "@storybook/channels" "8.1.0" + "@storybook/client-logger" "8.1.0" + "@storybook/core-events" "8.1.0" + "@storybook/global" "^5.0.0" + "@storybook/preview-api" "8.1.0" + "@vitest/utils" "^1.3.1" + util "^0.12.4" + "@storybook/manager-api@7.6.17": version "7.6.17" resolved "https://registry.yarnpkg.com/@storybook/manager-api/-/manager-api-7.6.17.tgz#cdf0bb8e5bdc3da2559150125b3d6a3ff72f0def" @@ -6817,20 +7488,20 @@ telejson "^7.2.0" ts-dedent "^2.0.0" -"@storybook/manager-api@8.0.9": - version "8.0.9" - resolved "https://registry.yarnpkg.com/@storybook/manager-api/-/manager-api-8.0.9.tgz#5361d253c6704643f44afb95271b3d206d831740" - integrity sha512-99b3yKArDSvfabXL7QE3nA95e4DdW/5H/ZCcr6/E2qCQJayZ6G1v/WWamKXbiaTpkndulFmcb/+ZmnDXcweIIQ== +"@storybook/manager-api@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@storybook/manager-api/-/manager-api-8.1.0.tgz#d5580c0283ca6911895d28b4eec02661af5476cb" + integrity sha512-QLKpN4epgFiC7PkY7wyVphZi0fdoHWSq7f4VoLZkwDgCizdI0FjCsKYoHSKpzN8jQlLjv62DkpXM8z/JiWSSzg== dependencies: - "@storybook/channels" "8.0.9" - "@storybook/client-logger" "8.0.9" - "@storybook/core-events" "8.0.9" - "@storybook/csf" "^0.1.4" + "@storybook/channels" "8.1.0" + "@storybook/client-logger" "8.1.0" + "@storybook/core-events" "8.1.0" + "@storybook/csf" "^0.1.7" "@storybook/global" "^5.0.0" "@storybook/icons" "^1.2.5" - "@storybook/router" "8.0.9" - "@storybook/theming" "8.0.9" - "@storybook/types" "8.0.9" + "@storybook/router" "8.1.0" + "@storybook/theming" "8.1.0" + "@storybook/types" "8.1.0" dequal "^2.0.2" lodash "^4.17.21" memoizerific "^1.11.3" @@ -6843,10 +7514,10 @@ resolved "https://registry.yarnpkg.com/@storybook/manager/-/manager-7.6.17.tgz#56e820ede16f6b824ec6b016082d1d10dbb02759" integrity sha512-A1LDDIqMpwRzq/dqkbbiza0QI04o4ZHCl2a3UMDZUV/+QLc2nsr2DAaLk4CVL4/cIc5zGqmIcaOTvprx2YKVBw== -"@storybook/manager@8.0.9": - version "8.0.9" - resolved "https://registry.yarnpkg.com/@storybook/manager/-/manager-8.0.9.tgz#e24971577714bbed02b55596d1363fbda78cfa21" - integrity sha512-+NnRo+5JQFGNqveKrLtC0b+Z08Tae4m44iq292bPeZMpr9OkFsIkU0PBPsHTHPkrqC/zZXRNsCsTEgvu3p2OIA== +"@storybook/manager@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@storybook/manager/-/manager-8.1.0.tgz#6d7022926ba802d8689515b449a3b9acc8e6030c" + integrity sha512-SXDEm8s2bdmopoj42eSGwENXTQIo22hOIKRG3roMD1R3ddlQkFyMbcfXr2g+wNzGcKKyiTEOg/arG22HHaj6ig== "@storybook/mdx2-csf@^1.0.0": version "1.1.0" @@ -6900,34 +7571,34 @@ tsconfig-paths "^4.0.0" tsconfig-paths-webpack-plugin "^4.0.1" -"@storybook/nextjs@^8.0.9": - version "8.0.9" - resolved "https://registry.yarnpkg.com/@storybook/nextjs/-/nextjs-8.0.9.tgz#fc745e000114fbb10d42273a1efc0612be7fb0ee" - integrity sha512-hBYJUqVVkfPJVVOEz67QI3XPTti4Mv0Gs31KICZ0huh1sfBSM8KMs6GRIWQxRWt5Re7uJEzclNxnTUkF3aKY6Q== +"@storybook/nextjs@^8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@storybook/nextjs/-/nextjs-8.1.0.tgz#64c688253a1d4ac85651bac60004bf8ed20afde7" + integrity sha512-dyRZxtlv1RtcNqX4k8jxuKsuQOYI5V6g1k+AKXFL0iVU65N6m/bS/MNOVb/D8VHrLKSIDF8GTd7V0vhwjmQKKg== dependencies: - "@babel/core" "^7.23.2" + "@babel/core" "^7.24.4" "@babel/plugin-syntax-bigint" "^7.8.3" "@babel/plugin-syntax-dynamic-import" "^7.8.3" - "@babel/plugin-syntax-import-assertions" "^7.22.5" - "@babel/plugin-transform-class-properties" "^7.22.5" - "@babel/plugin-transform-export-namespace-from" "^7.22.11" - "@babel/plugin-transform-numeric-separator" "^7.22.11" - "@babel/plugin-transform-object-rest-spread" "^7.22.15" - "@babel/plugin-transform-runtime" "^7.23.2" - "@babel/preset-env" "^7.23.2" - "@babel/preset-react" "^7.22.15" - "@babel/preset-typescript" "^7.23.2" - "@babel/runtime" "^7.23.2" + "@babel/plugin-syntax-import-assertions" "^7.24.1" + "@babel/plugin-transform-class-properties" "^7.24.1" + "@babel/plugin-transform-export-namespace-from" "^7.24.1" + "@babel/plugin-transform-numeric-separator" "^7.24.1" + "@babel/plugin-transform-object-rest-spread" "^7.24.1" + "@babel/plugin-transform-runtime" "^7.24.3" + "@babel/preset-env" "^7.24.4" + "@babel/preset-react" "^7.24.1" + "@babel/preset-typescript" "^7.24.1" + "@babel/runtime" "^7.24.4" "@pmmmwh/react-refresh-webpack-plugin" "^0.5.11" - "@storybook/addon-actions" "8.0.9" - "@storybook/builder-webpack5" "8.0.9" - "@storybook/core-common" "8.0.9" - "@storybook/core-events" "8.0.9" - "@storybook/node-logger" "8.0.9" - "@storybook/preset-react-webpack" "8.0.9" - "@storybook/preview-api" "8.0.9" - "@storybook/react" "8.0.9" - "@storybook/types" "8.0.9" + "@storybook/builder-webpack5" "8.1.0" + "@storybook/core-common" "8.1.0" + "@storybook/core-events" "8.1.0" + "@storybook/node-logger" "8.1.0" + "@storybook/preset-react-webpack" "8.1.0" + "@storybook/preview-api" "8.1.0" + "@storybook/react" "8.1.0" + "@storybook/test" "8.1.0" + "@storybook/types" "8.1.0" "@types/node" "^18.0.0" "@types/semver" "^7.3.4" babel-loader "^9.1.3" @@ -6938,8 +7609,8 @@ loader-utils "^3.2.1" node-polyfill-webpack-plugin "^2.0.1" pnp-webpack-plugin "^1.7.0" - postcss "^8.4.21" - postcss-loader "^7.0.2" + postcss "^8.4.38" + postcss-loader "^8.1.1" react-refresh "^0.14.0" resolve-url-loader "^5.0.0" sass-loader "^12.4.0" @@ -6957,10 +7628,10 @@ resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-7.6.17.tgz#2747cee5395c3644408df2423d98502663c4bcf6" integrity sha512-w59MQuXhhUNrUVmVkXhMwIg2nvFWjdDczLTwYLorhfsE36CWeUOY5QCZWQy0Qf/h+jz8Uo7Evy64qn18v9C4wA== -"@storybook/node-logger@8.0.9": - version "8.0.9" - resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-8.0.9.tgz#0825e53bce014a8faa51029ab89e91b5eac1af8b" - integrity sha512-5ajMdZFrYrjGLJOVDq7dlEQNFsgeLHymt4dCK9MulL/ciXykmXUZXE3Bye0wFy+I2qqDVvrvR8uzCvSFvm5MAQ== +"@storybook/node-logger@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@storybook/node-logger/-/node-logger-8.1.0.tgz#66c4fc81f15e5b7ba65c0b79e7c7388d5001b00f" + integrity sha512-oCUp2V+selKVCNE3RrbFoP6lW0HYtX0N8NLsMbuxnVRIg6BC4Tn6OJ0azIWjJWpIf60A80wOUKmlE36Q32ANYg== "@storybook/postinstall@7.6.17": version "7.6.17" @@ -6990,15 +7661,15 @@ semver "^7.3.7" webpack "5" -"@storybook/preset-react-webpack@8.0.9": - version "8.0.9" - resolved "https://registry.yarnpkg.com/@storybook/preset-react-webpack/-/preset-react-webpack-8.0.9.tgz#4070b62a34b23916d720893eb2b3043765eb13b6" - integrity sha512-kkJG03ZOJXM8fhYJuvAX9+3QVwoOMnz1tj75M/45c9i6XafPrBi2imGZWjXzuKXMxg/KO9fS/Y0JZmDh7vPM9g== +"@storybook/preset-react-webpack@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@storybook/preset-react-webpack/-/preset-react-webpack-8.1.0.tgz#807893c8562e6a954964ba64b30bc0ec185e3aca" + integrity sha512-lkJ0taCrNaHx40VN0au6YiT+C7YCAMNGNci1TFDDjekcmtFCfGpY6MFe9KKWRGl+I9qkiXKrcI7QGZu3dxi/VA== dependencies: - "@storybook/core-webpack" "8.0.9" - "@storybook/docs-tools" "8.0.9" - "@storybook/node-logger" "8.0.9" - "@storybook/react" "8.0.9" + "@storybook/core-webpack" "8.1.0" + "@storybook/docs-tools" "8.1.0" + "@storybook/node-logger" "8.1.0" + "@storybook/react" "8.1.0" "@storybook/react-docgen-typescript-plugin" "1.0.6--canary.9.0c3f3b7.0" "@types/node" "^18.0.0" "@types/semver" "^7.3.4" @@ -7031,17 +7702,17 @@ ts-dedent "^2.0.0" util-deprecate "^1.0.2" -"@storybook/preview-api@8.0.9": - version "8.0.9" - resolved "https://registry.yarnpkg.com/@storybook/preview-api/-/preview-api-8.0.9.tgz#273ac693a8d7333a33e1a8202e663dd9a9f02cc4" - integrity sha512-zHfX34bkAMzzmE7vbDzaqFwSW6ExiBD0HiO1L/IsHF55f0f7xV7IH8uJyFRrDTvAoW3ReSxZDMvvPpeydFPKGA== +"@storybook/preview-api@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@storybook/preview-api/-/preview-api-8.1.0.tgz#23a95fa8ae79d9be28a8ba45e5231a5758f585d6" + integrity sha512-JYp58I/+u4YBUvdDbQ7G1B7CPjB/C/UU7Wgb7bdX3Kp9jQto1hYO9Arq/ncMB7w6ZZJOwTeaI0PLAFsnpFwf4w== dependencies: - "@storybook/channels" "8.0.9" - "@storybook/client-logger" "8.0.9" - "@storybook/core-events" "8.0.9" - "@storybook/csf" "^0.1.4" + "@storybook/channels" "8.1.0" + "@storybook/client-logger" "8.1.0" + "@storybook/core-events" "8.1.0" + "@storybook/csf" "^0.1.7" "@storybook/global" "^5.0.0" - "@storybook/types" "8.0.9" + "@storybook/types" "8.1.0" "@types/qs" "^6.9.5" dequal "^2.0.2" lodash "^4.17.21" @@ -7056,10 +7727,10 @@ resolved "https://registry.yarnpkg.com/@storybook/preview/-/preview-7.6.17.tgz#e0c9727c7cfbd8f1d504848a57acaab8e54abe90" integrity sha512-LvkMYK/y6alGjwRVNDIKL1lFlbyZ0H0c8iAbcQkiMoaFiujMQyVswMDKlWcj42Upfr/B1igydiruomc+eUt0mw== -"@storybook/preview@8.0.9": - version "8.0.9" - resolved "https://registry.yarnpkg.com/@storybook/preview/-/preview-8.0.9.tgz#46ebdf09bc7eb9601c4ddce9a09e0c63ae31c662" - integrity sha512-tFsR8xc8AYBZZrZw8enklFbSQt7ZAV+rv20BoxwDhd3q7fjXyK7O4moGPqUwBZ7rukTG13nPoISxr+VXAk/HYA== +"@storybook/preview@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@storybook/preview/-/preview-8.1.0.tgz#3ca11b0424a95576b9a626e558fb8d063a55d5dd" + integrity sha512-YithzpOWhoWT2mfl4hyE7WQCwqTD5snBdEzGzpby0Cb+2Dnx/8hejGLsrphqoZkciaWchQS8nTjs9Rgj43ufcA== "@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0": version "1.0.6--canary.9.0c3f3b7.0" @@ -7079,10 +7750,26 @@ resolved "https://registry.yarnpkg.com/@storybook/react-dom-shim/-/react-dom-shim-7.6.17.tgz#5875915316f687bf658cc6686ea49f2928eae4b2" integrity sha512-32Sa/G+WnvaPiQ1Wvjjw5UM9rr2c4GDohwCcWVv3/LJuiFPqNS6zglAtmnsrlIBnUwRBMLMh/ekCTdqMiUmfDw== -"@storybook/react-dom-shim@8.0.9": - version "8.0.9" - resolved "https://registry.yarnpkg.com/@storybook/react-dom-shim/-/react-dom-shim-8.0.9.tgz#9fcfcc93a41c84f5a046b0b97647684061e2ac7d" - integrity sha512-8011KlRuG3obr5pZZ7bcEyYYNWF3tR596YadoMd267NPoHKvwAbKL1L/DNgb6kiYjZDUf9QfaKSCWW31k0kcRQ== +"@storybook/react-dom-shim@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@storybook/react-dom-shim/-/react-dom-shim-8.1.0.tgz#3c0599da472f599b64f2f180b92b50cdd6d5d11c" + integrity sha512-mKj86pcwL9BXwtYF63SGnYmGvacYNRW/BDkotHMS1DaN7ZBqvXlEU7vopPVL6ay2Yono7AnqQR2eQl7cUevsag== + +"@storybook/react-vite@^8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@storybook/react-vite/-/react-vite-8.1.0.tgz#673d7ecd015e69c67a5fcc7f1085eb299f20e85d" + integrity sha512-dzXh43/DqQhxg97sDF2nD0oRww6F1cuaOq81QjNnUEjznHacgYiGAnag1Y3GGO3MhnjfwZzOFj92O0ynY/M2iQ== + dependencies: + "@joshwooding/vite-plugin-react-docgen-typescript" "0.3.1" + "@rollup/pluginutils" "^5.0.2" + "@storybook/builder-vite" "8.1.0" + "@storybook/node-logger" "8.1.0" + "@storybook/react" "8.1.0" + find-up "^5.0.0" + magic-string "^0.30.0" + react-docgen "^7.0.0" + resolve "^1.22.8" + tsconfig-paths "^4.2.0" "@storybook/react@7.6.17", "@storybook/react@^7.6.17": version "7.6.17" @@ -7111,17 +7798,17 @@ type-fest "~2.19" util-deprecate "^1.0.2" -"@storybook/react@8.0.9": - version "8.0.9" - resolved "https://registry.yarnpkg.com/@storybook/react/-/react-8.0.9.tgz#b9e286245a4ae79ae0211d672b1143d1c73c90d3" - integrity sha512-NeQ6suZG3HKikwe3Tx9cAIaRx7uP8FKCmlVvIiBg4LTTI5orCt94PPakvuZukZcbkqvcCnEBkebAzwUpn8PiJw== +"@storybook/react@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@storybook/react/-/react-8.1.0.tgz#e89aa332c351fc0ac8bb772181961dd60336d523" + integrity sha512-IEyRsNRRDqkxwZOFqWwTRgMzOj2p3YXsmNyGiV3vOrssZhPOCEp1CMCup7OIHk5JTnejY5CNkZYgJFvKNL5ccA== dependencies: - "@storybook/client-logger" "8.0.9" - "@storybook/docs-tools" "8.0.9" + "@storybook/client-logger" "8.1.0" + "@storybook/docs-tools" "8.1.0" "@storybook/global" "^5.0.0" - "@storybook/preview-api" "8.0.9" - "@storybook/react-dom-shim" "8.0.9" - "@storybook/types" "8.0.9" + "@storybook/preview-api" "8.1.0" + "@storybook/react-dom-shim" "8.1.0" + "@storybook/types" "8.1.0" "@types/escodegen" "^0.0.6" "@types/estree" "^0.0.51" "@types/node" "^18.0.0" @@ -7147,12 +7834,12 @@ memoizerific "^1.11.3" qs "^6.10.0" -"@storybook/router@8.0.9": - version "8.0.9" - resolved "https://registry.yarnpkg.com/@storybook/router/-/router-8.0.9.tgz#69cfff588d8c8a4160404f1f2897ce1feb9cecb1" - integrity sha512-aAOWxbM9J4mt+cp4o88T2PB29mgBBTOzU37/pUsTHYnKnR9XI4npXEXdN8Gv+ryqM0kj0AbBpz/llFlnR2MNNA== +"@storybook/router@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@storybook/router/-/router-8.1.0.tgz#9c9e18d8fb17658f0f74e765262befaeb6c46881" + integrity sha512-5B7Vxh17/+V83Ejc8Bqt5dzIGlXp4MpbSFkbbU5mXMcPoknr8fVRix82dQLktYaTVXkeGDbTrLLJDIi8BxS8aQ== dependencies: - "@storybook/client-logger" "8.0.9" + "@storybook/client-logger" "8.1.0" memoizerific "^1.11.3" qs "^6.10.0" @@ -7170,20 +7857,36 @@ fs-extra "^11.1.0" read-pkg-up "^7.0.1" -"@storybook/telemetry@8.0.9": - version "8.0.9" - resolved "https://registry.yarnpkg.com/@storybook/telemetry/-/telemetry-8.0.9.tgz#148bd044c4bac7197188aaf54e313fb184fd69aa" - integrity sha512-AGGfcup06t+wxhBIkHd0iybieOh9PDVZQJ9oPct5JGB39+ni9wvs0WOD+MYlHbsjp8id7+aGkh6mYuYOvfck+Q== +"@storybook/telemetry@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@storybook/telemetry/-/telemetry-8.1.0.tgz#c562f684898c0b287d0d357a658846ebe23d1c05" + integrity sha512-/VPzIAbjYGjMZWGWLRGavKEvz8j3kybCt+W47QgOiSKvYA5yrrTFnSEvW7coTITNTK1dJKTROeJ/oCySbHgTDA== dependencies: - "@storybook/client-logger" "8.0.9" - "@storybook/core-common" "8.0.9" - "@storybook/csf-tools" "8.0.9" + "@storybook/client-logger" "8.1.0" + "@storybook/core-common" "8.1.0" + "@storybook/csf-tools" "8.1.0" chalk "^4.1.0" detect-package-manager "^2.0.1" fetch-retry "^5.0.2" fs-extra "^11.1.0" read-pkg-up "^7.0.1" +"@storybook/test@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@storybook/test/-/test-8.1.0.tgz#929c517336546d1e921539bd33ca5450faf841c7" + integrity sha512-JZpIhGuU47pqRYUrzSnD2nC6O330qpcxArnAgmPXspYI4lgXW1l/7s7lUs+Pbn/li4Kf8LSubv+VegdEBKWnbA== + dependencies: + "@storybook/client-logger" "8.1.0" + "@storybook/core-events" "8.1.0" + "@storybook/instrumenter" "8.1.0" + "@storybook/preview-api" "8.1.0" + "@testing-library/dom" "^9.3.4" + "@testing-library/jest-dom" "^6.4.2" + "@testing-library/user-event" "^14.5.2" + "@vitest/expect" "1.3.1" + "@vitest/spy" "^1.3.1" + util "^0.12.4" + "@storybook/test@^7.6.17": version "7.6.17" resolved "https://registry.yarnpkg.com/@storybook/test/-/test-7.6.17.tgz#26cff891ce7b4170b2d7541a70c744b402defdf5" @@ -7212,13 +7915,13 @@ "@storybook/global" "^5.0.0" memoizerific "^1.11.3" -"@storybook/theming@8.0.9": - version "8.0.9" - resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-8.0.9.tgz#cb5a4f6ddc4a15faa64905cfad60422c3db252f2" - integrity sha512-jgfDuYoiNMMirQiASN3Eg0hGDXsEtpdAcMxyShqYGwu9elxgD9yUnYC2nSckYsM74a3ZQ3JaViZ9ZFSe2FHmeQ== +"@storybook/theming@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@storybook/theming/-/theming-8.1.0.tgz#7e2d04e789c7177205370f29c92318f6aa83fe74" + integrity sha512-DlRhtGpibeOZOmhaTrc0gcKzANZMzISAx2q3OZuNnfrt2b6bPNLINuIkGVa8Mm0/t6XQxPEN5iqi8LtJCiQY8A== dependencies: "@emotion/use-insertion-effect-with-fallbacks" "^1.0.1" - "@storybook/client-logger" "8.0.9" + "@storybook/client-logger" "8.1.0" "@storybook/global" "^5.0.0" memoizerific "^1.11.3" @@ -7232,12 +7935,12 @@ "@types/express" "^4.7.0" file-system-cache "2.3.0" -"@storybook/types@8.0.9": - version "8.0.9" - resolved "https://registry.yarnpkg.com/@storybook/types/-/types-8.0.9.tgz#6597c35c0b147e43a6b23b2159514fea312f2214" - integrity sha512-ew0EXzk9k4B557P1qIWYrnvUcgaE0WWA5qQS0AU8l+fRTp5nvl9O3SP/zNIB0SN1qDFO7dXr3idTNTyIikTcEQ== +"@storybook/types@8.1.0": + version "8.1.0" + resolved "https://registry.yarnpkg.com/@storybook/types/-/types-8.1.0.tgz#49f8e6f33e5bada7988e572d2eb9cb589dfbaaa1" + integrity sha512-VNF++bY5KvLS4GnrH6vFVC3vaG38NHHAmDRBsjUG17LKXCL5PD6+fe8XEfWX40ylQ9ntzNdtCXDSSdow15IZ+Q== dependencies: - "@storybook/channels" "8.0.9" + "@storybook/channels" "8.1.0" "@types/express" "^4.7.0" file-system-cache "2.3.0" @@ -7474,7 +8177,7 @@ lz-string "^1.5.0" pretty-format "^27.0.2" -"@testing-library/dom@^9.3.1": +"@testing-library/dom@^9.3.1", "@testing-library/dom@^9.3.4": version "9.3.4" resolved "https://registry.yarnpkg.com/@testing-library/dom/-/dom-9.3.4.tgz#50696ec28376926fec0a1bf87d9dbac5e27f60ce" integrity sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ== @@ -7502,6 +8205,20 @@ lodash "^4.17.15" redent "^3.0.0" +"@testing-library/jest-dom@^6.4.2": + version "6.4.5" + resolved "https://registry.yarnpkg.com/@testing-library/jest-dom/-/jest-dom-6.4.5.tgz#badb40296477149136dabef32b572ddd3b56adf1" + integrity sha512-AguB9yvTXmCnySBP1lWjfNNUwpbElsaQ567lt2VdGqAdHtpieLgjmcVyv1q7PMIvLbgpDdkWV5Ydv3FEejyp2A== + dependencies: + "@adobe/css-tools" "^4.3.2" + "@babel/runtime" "^7.9.2" + aria-query "^5.0.0" + chalk "^3.0.0" + css.escape "^1.5.1" + dom-accessibility-api "^0.6.3" + lodash "^4.17.21" + redent "^3.0.0" + "@testing-library/react-hooks@^8.0.1": version "8.0.1" resolved "https://registry.yarnpkg.com/@testing-library/react-hooks/-/react-hooks-8.0.1.tgz#0924bbd5b55e0c0c0502d1754657ada66947ca12" @@ -7524,6 +8241,11 @@ resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-14.3.0.tgz#0a6750b94b40e4739706d41e8efc2ccf64d2aad9" integrity sha512-P02xtBBa8yMaLhK8CzJCIns8rqwnF6FxhR9zs810flHOBXUYCFjLd8Io1rQrAkQRWEmW2PGdZIEdMxf/KLsqFA== +"@testing-library/user-event@^14.5.2": + version "14.5.2" + resolved "https://registry.yarnpkg.com/@testing-library/user-event/-/user-event-14.5.2.tgz#db7257d727c891905947bd1c1a99da20e03c2ebd" + integrity sha512-YAh82Wh4TIrxYLmfGcixwD18oIjyC1pFQC2Y01F2lzV2HTMiYrI0nze0FD0ocB//CKS/7jIUgae+adPqxK5yCQ== + "@tootallnate/once@1": version "1.0.0" resolved "https://registry.npmjs.org/@tpluscode/rdf-ns-builders/-/rdf-ns-builders-1.0.0.tgz" @@ -7967,6 +8689,11 @@ resolved "https://registry.yarnpkg.com/@types/detect-port/-/detect-port-1.3.5.tgz#deecde143245989dee0e82115f3caba5ee0ea747" integrity sha512-Rf3/lB9WkDfIL9eEKaSYKc+1L/rNVYBjThk22JTqQw0YozXarX8YljFAz+HCoC6h4B4KwCMsBPZHaFezwT4BNA== +"@types/diff@^5.0.9": + version "5.2.1" + resolved "https://registry.yarnpkg.com/@types/diff/-/diff-5.2.1.tgz#cceae9c4b2dae5c6b8ab1ce1263601c255d87fb3" + integrity sha512-uxpcuwWJGhe2AR1g8hD9F5OYGCqjqWnBUQFD8gMZsDbv8oPHzxJF6iMO6n8Tk0AdzlxoaaoQhOYlIg/PukVU8g== + "@types/doctrine@^0.0.3": version "0.0.3" resolved "https://registry.yarnpkg.com/@types/doctrine/-/doctrine-0.0.3.tgz#e892d293c92c9c1d3f9af72c15a554fbc7e0895a" @@ -8112,6 +8839,14 @@ resolved "https://registry.yarnpkg.com/@types/github-slugger/-/github-slugger-1.3.0.tgz#16ab393b30d8ae2a111ac748a015ac05a1fc5524" integrity sha512-J/rMZa7RqiH/rT29TEVZO4nBoDP9XJOjnbbIofg7GQKs4JIduEO3WLpte+6WeUz/TcrXKlY+bM7FYrp8yFB+3g== +"@types/glob@^7.1.3": + version "7.2.0" + resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" + integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== + dependencies: + "@types/minimatch" "*" + "@types/node" "*" + "@types/graceful-fs@^4.1.2": version "4.1.5" resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz" @@ -8316,6 +9051,11 @@ resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== +"@types/minimatch@*": + version "5.1.2" + resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" + integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== + "@types/minimist@^1.2.0": version "1.2.1" resolved "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.1.tgz" @@ -8507,6 +9247,13 @@ dependencies: "@types/react" "*" +"@types/react-grid-layout@^1.3.5": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/react-grid-layout/-/react-grid-layout-1.3.5.tgz#f4b52bf27775290ee0523214be0987be14e66823" + integrity sha512-WH/po1gcEcoR6y857yAnPGug+ZhkF4PaTUxgAbwfeSH/QOgVSakKHBXoPGad/sEznmkiaK3pqHk+etdWisoeBQ== + dependencies: + "@types/react" "*" + "@types/react-is@^16.7.1 || ^17.0.0": version "17.0.3" resolved "https://registry.yarnpkg.com/@types/react-is/-/react-is-17.0.3.tgz#2d855ba575f2fc8d17ef9861f084acc4b90a137a" @@ -8980,6 +9727,15 @@ prop-types "^15.7.2" reduce-css-calc "^1.3.0" +"@vitest/expect@1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-1.3.1.tgz#d4c14b89c43a25fd400a6b941f51ba27fe0cb918" + integrity sha512-xofQFwIzfdmLLlHa6ag0dPV8YsnKOCP1KdAeVVh34vSjN2dcUiXYCD9htu/9eM7t8Xln4v03U9HLxLpPlsXdZw== + dependencies: + "@vitest/spy" "1.3.1" + "@vitest/utils" "1.3.1" + chai "^4.3.10" + "@vitest/expect@^0.34.2": version "0.34.7" resolved "https://registry.yarnpkg.com/@vitest/expect/-/expect-0.34.7.tgz#b07fb9ebfb8fb347f06a9cb33843ee2e5ba7d8a9" @@ -8996,6 +9752,20 @@ dependencies: tinyspy "^2.1.1" +"@vitest/spy@1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-1.3.1.tgz#814245d46d011b99edd1c7528f5725c64e85a88b" + integrity sha512-xAcW+S099ylC9VLU7eZfdT9myV67Nor9w9zhf0mGCYJSO+zM2839tOeROTdikOi/8Qeusffvxb/MyBSOja1Uig== + dependencies: + tinyspy "^2.2.0" + +"@vitest/spy@^1.3.1": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@vitest/spy/-/spy-1.6.0.tgz#362cbd42ccdb03f1613798fde99799649516906d" + integrity sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw== + dependencies: + tinyspy "^2.2.0" + "@vitest/utils@0.34.7", "@vitest/utils@^0.34.6": version "0.34.7" resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-0.34.7.tgz#46d0d27cd0f6ca1894257d4e141c5c48d7f50295" @@ -9005,6 +9775,26 @@ loupe "^2.3.6" pretty-format "^29.5.0" +"@vitest/utils@1.3.1": + version "1.3.1" + resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-1.3.1.tgz#7b05838654557544f694a372de767fcc9594d61a" + integrity sha512-d3Waie/299qqRyHTm2DjADeTaNdNSVsnwHPWrs20JMpjh6eiVq7ggggweO8rc4arhf6rRkWuHKwvxGvejUXZZQ== + dependencies: + diff-sequences "^29.6.3" + estree-walker "^3.0.3" + loupe "^2.3.7" + pretty-format "^29.7.0" + +"@vitest/utils@^1.3.1": + version "1.6.0" + resolved "https://registry.yarnpkg.com/@vitest/utils/-/utils-1.6.0.tgz#5c5675ca7d6f546a7b4337de9ae882e6c57896a1" + integrity sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw== + dependencies: + diff-sequences "^29.6.3" + estree-walker "^3.0.3" + loupe "^2.3.7" + pretty-format "^29.7.0" + "@vocabulary/dash-sparql@^1.0.1": version "1.0.2" resolved "https://registry.yarnpkg.com/@vocabulary/dash-sparql/-/dash-sparql-1.0.2.tgz#b26e3584007393f0ba4054b771a1ac3dddfb426b" @@ -10064,6 +10854,15 @@ babel-plugin-module-resolver@^4.1.0: reselect "^4.0.0" resolve "^1.13.1" +babel-plugin-polyfill-corejs2@^0.4.10: + version "0.4.11" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz#30320dfe3ffe1a336c15afdcdafd6fd615b25e33" + integrity sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q== + dependencies: + "@babel/compat-data" "^7.22.6" + "@babel/helper-define-polyfill-provider" "^0.6.2" + semver "^6.3.1" + babel-plugin-polyfill-corejs2@^0.4.8: version "0.4.9" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.9.tgz#15a285f681e1c5495093d85f1cf72bd1cbed41ce" @@ -10073,6 +10872,14 @@ babel-plugin-polyfill-corejs2@^0.4.8: "@babel/helper-define-polyfill-provider" "^0.6.0" semver "^6.3.1" +babel-plugin-polyfill-corejs3@^0.10.1, babel-plugin-polyfill-corejs3@^0.10.4: + version "0.10.4" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.4.tgz#789ac82405ad664c20476d0233b485281deb9c77" + integrity sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.1" + core-js-compat "^3.36.1" + babel-plugin-polyfill-corejs3@^0.9.0: version "0.9.0" resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.9.0.tgz#9eea32349d94556c2ad3ab9b82ebb27d4bf04a81" @@ -10088,6 +10895,13 @@ babel-plugin-polyfill-regenerator@^0.5.5: dependencies: "@babel/helper-define-polyfill-provider" "^0.5.0" +babel-plugin-polyfill-regenerator@^0.6.1: + version "0.6.2" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz#addc47e240edd1da1058ebda03021f382bba785e" + integrity sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.6.2" + babel-plugin-syntax-trailing-function-commas@^7.0.0-beta.0: version "7.0.0-beta.0" resolved "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz" @@ -10444,7 +11258,7 @@ browserslist@^4.16.6: node-releases "^2.0.1" picocolors "^1.0.0" -browserslist@^4.21.10, browserslist@^4.22.3: +browserslist@^4.21.10, browserslist@^4.22.3, browserslist@^4.23.0: version "4.23.0" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.23.0.tgz#8f3acc2bbe73af7213399430890f86c63a5674ab" integrity sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ== @@ -11114,6 +11928,11 @@ clsx@^1.1.1: resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188" integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA== +clsx@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.1.tgz#eed397c9fd8bd882bfb18deab7102049a2f32999" + integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== + co@^4.6.0: version "4.6.0" resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz" @@ -11391,6 +12210,13 @@ core-js-compat@^3.31.0, core-js-compat@^3.34.0: dependencies: browserslist "^4.22.3" +core-js-compat@^3.36.1: + version "3.37.1" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.37.1.tgz#c844310c7852f4bdf49b8d339730b97e17ff09ee" + integrity sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg== + dependencies: + browserslist "^4.23.0" + core-js-pure@^3.14.0: version "3.14.0" resolved "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.14.0.tgz" @@ -11484,6 +12310,16 @@ cosmiconfig@^8.3.5: parse-json "^5.2.0" path-type "^4.0.0" +cosmiconfig@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-9.0.0.tgz#34c3fc58287b915f3ae905ab6dc3de258b55ad9d" + integrity sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg== + dependencies: + env-paths "^2.2.1" + import-fresh "^3.3.0" + js-yaml "^4.1.0" + parse-json "^5.2.0" + crc-32@^1.2.0: version "1.2.1" resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.1.tgz#436d2bcaad27bcb6bd073a2587139d3024a16460" @@ -12514,7 +13350,7 @@ diff-sequences@^27.0.6: resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz" integrity sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ== -diff-sequences@^29.4.3: +diff-sequences@^29.4.3, diff-sequences@^29.6.3: version "29.6.3" resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921" integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q== @@ -12524,6 +13360,11 @@ diff@^4.0.1: resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz" integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== +diff@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" + integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== + diffie-hellman@^5.0.0: version "5.0.3" resolved "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz" @@ -12751,6 +13592,13 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== +ejs@^3.1.10: + version "3.1.10" + resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b" + integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA== + dependencies: + jake "^10.8.5" + ejs@^3.1.8: version "3.1.9" resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.9.tgz#03c9e8777fe12686a9effcef22303ca3d8eeb361" @@ -12865,6 +13713,11 @@ entities@^2.0.0: resolved "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz" integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== +env-paths@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + envinfo@^7.7.3: version "7.11.1" resolved "https://registry.yarnpkg.com/envinfo/-/envinfo-7.11.1.tgz#2ffef77591057081b0129a8fd8cf6118da1b94e1" @@ -12985,6 +13838,11 @@ es-module-lexer@^1.2.1, es-module-lexer@^1.4.1: resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.4.1.tgz#41ea21b43908fe6a287ffcbe4300f790555331f5" integrity sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w== +es-module-lexer@^1.5.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-1.5.2.tgz#00b423304f2500ac59359cc9b6844951f372d497" + integrity sha512-l60ETUTmLqbVbVHv1J4/qj+M8nq7AwMzEcg3kmJDt9dCNrTk+yHcYFf/Kw75pMDwd9mPcIGCG5LcS20SxYRzFA== + es-set-tostringtag@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz#338d502f6f674301d710b80c8592de8a15f09cd8" @@ -13472,6 +14330,13 @@ estree-walker@^2.0.1, estree-walker@^2.0.2: resolved "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz" integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== +estree-walker@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-3.0.3.tgz#67c3e549ec402a487b4fc193d1953a524752340d" + integrity sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g== + dependencies: + "@types/estree" "^1.0.0" + esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -13700,6 +14565,11 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== +fast-equals@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/fast-equals/-/fast-equals-4.0.3.tgz#72884cc805ec3c6679b99875f6b7654f39f0e8c7" + integrity sha512-G3BSX9cfKttjr+2o1O22tYMLq0DPluZnYtq1rXumE1SpL/F/SLIfHx08WYQoWSIpeMYf8sRbJ8++71+v6Pnxfg== + fast-fifo@^1.1.0, fast-fifo@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c" @@ -13739,6 +14609,17 @@ fast-glob@^3.2.9: merge2 "^1.3.0" micromatch "^4.0.4" +fast-glob@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + fast-json-parse@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/fast-json-parse/-/fast-json-parse-1.0.3.tgz#43e5c61ee4efa9265633046b770fb682a7577c4d" @@ -14423,6 +15304,13 @@ glob-parent@^5.1.0, glob-parent@^5.1.2, glob-parent@~5.1.0, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" +glob-promise@^4.2.0: + version "4.2.2" + resolved "https://registry.yarnpkg.com/glob-promise/-/glob-promise-4.2.2.tgz#15f44bcba0e14219cd93af36da6bb905ff007877" + integrity sha512-xcUzJ8NWN5bktoTIX7eOclO1Npxd/dyVqUJxlLIDasT4C7KZyqlPIwkdJ0Ypiy3p2ZKahTjK4M9uC3sNSfNMzw== + dependencies: + "@types/glob" "^7.1.3" + glob-to-regexp@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" @@ -14570,6 +15458,18 @@ globby@^11.0.3: merge2 "^1.3.0" slash "^3.0.0" +globby@^14.0.1: + version "14.0.1" + resolved "https://registry.yarnpkg.com/globby/-/globby-14.0.1.tgz#a1b44841aa7f4c6d8af2bc39951109d77301959b" + integrity sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ== + dependencies: + "@sindresorhus/merge-streams" "^2.1.0" + fast-glob "^3.3.2" + ignore "^5.2.4" + path-type "^5.0.0" + slash "^5.1.0" + unicorn-magic "^0.1.0" + gonzales-pe@^4.2.3, gonzales-pe@^4.3.0: version "4.3.0" resolved "https://registry.yarnpkg.com/gonzales-pe/-/gonzales-pe-4.3.0.tgz#fe9dec5f3c557eead09ff868c65826be54d067b3" @@ -15155,6 +16055,11 @@ ignore@^5.2.0: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== +ignore@^5.2.4: + version "5.3.1" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" + integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== + image-size@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/image-size/-/image-size-1.0.2.tgz#d778b6d0ab75b2737c1556dd631652eb963bc486" @@ -17425,7 +18330,7 @@ loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.2.0, loose-envify@^1.3 dependencies: js-tokens "^3.0.0 || ^4.0.0" -loupe@^2.3.6: +loupe@^2.3.6, loupe@^2.3.7: version "2.3.7" resolved "https://registry.yarnpkg.com/loupe/-/loupe-2.3.7.tgz#6e69b7d4db7d3ab436328013d37d1c8c3540c697" integrity sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA== @@ -18999,6 +19904,11 @@ path-type@^4.0.0: resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +path-type@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-5.0.0.tgz#14b01ed7aea7ddf9c7c3f46181d4d04f9c785bb8" + integrity sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg== + pathe@^1.1.0, pathe@^1.1.1, pathe@^1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/pathe/-/pathe-1.1.2.tgz#6c4cb47a945692e48a1ddd6e4094d170516437ec" @@ -19233,6 +20143,15 @@ postcss-loader@^7.0.2: jiti "^1.20.0" semver "^7.5.4" +postcss-loader@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-8.1.1.tgz#2822589e7522927344954acb55bbf26e8b195dfe" + integrity sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ== + dependencies: + cosmiconfig "^9.0.0" + jiti "^1.20.0" + semver "^7.5.4" + postcss-modules-extract-imports@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz#cda1f047c0ae80c97dbe28c3e76a43b88025741d" @@ -19319,6 +20238,15 @@ postcss@^8.2.14, postcss@^8.4.21, postcss@^8.4.33, postcss@^8.4.35: picocolors "^1.0.0" source-map-js "^1.0.2" +postcss@^8.4.38: + version "8.4.38" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.38.tgz#b387d533baf2054288e337066d81c6bee9db9e0e" + integrity sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A== + dependencies: + nanoid "^3.3.7" + picocolors "^1.0.0" + source-map-js "^1.2.0" + postgres-array@~2.0.0: version "2.0.0" resolved "https://registry.npmjs.org/postgres-array/-/postgres-array-2.0.0.tgz" @@ -19436,6 +20364,11 @@ prepend-http@^2.0.0: resolved "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz" integrity sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc= +"prettier-fallback@npm:prettier@^3", prettier@^3.1.1, prettier@^3.2.5: + version "3.2.5" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.5.tgz#e52bc3090586e824964a8813b09aba6233b28368" + integrity sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A== + prettier@^2.1.2: version "2.3.1" resolved "https://registry.npmjs.org/prettier/-/prettier-2.3.1.tgz" @@ -19446,11 +20379,6 @@ prettier@^2.8.0: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== -prettier@^3.1.1, prettier@^3.2.5: - version "3.2.5" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.5.tgz#e52bc3090586e824964a8813b09aba6233b28368" - integrity sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A== - pretty-error@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/pretty-error/-/pretty-error-4.0.0.tgz#90a703f46dd7234adb46d0f84823e9d1cb8f10d6" @@ -19567,6 +20495,15 @@ prompts@^2.0.1, prompts@^2.4.0: kleur "^3.0.3" sisteransi "^1.0.5" +prop-types@15.x, prop-types@^15.6.2, prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + prop-types@^15.5.6, prop-types@^15.6.0, prop-types@^15.7.2: version "15.7.2" resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz" @@ -19576,15 +20513,6 @@ prop-types@^15.5.6, prop-types@^15.6.0, prop-types@^15.7.2: object-assign "^4.1.1" react-is "^16.8.1" -prop-types@^15.6.2, prop-types@^15.8.1: - version "15.8.1" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" - integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.13.1" - property-information@^5.0.0, property-information@^5.3.0: version "5.6.0" resolved "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz" @@ -20031,6 +20959,14 @@ react-dom@^18.2.0: loose-envify "^1.1.0" scheduler "^0.23.0" +react-draggable@^4.0.3, react-draggable@^4.4.5: + version "4.4.6" + resolved "https://registry.yarnpkg.com/react-draggable/-/react-draggable-4.4.6.tgz#63343ee945770881ca1256a5b6fa5c9f5983fe1e" + integrity sha512-LtY5Xw1zTPqHkVmtM3X8MUOxNDOUhv/khTgBgrUvwaS064bwVvxT+q5El0uUFNx5IEPKXuRejr7UqLwBIg5pdw== + dependencies: + clsx "^1.1.1" + prop-types "^15.8.1" + react-element-to-jsx-string@^15.0.0: version "15.0.0" resolved "https://registry.yarnpkg.com/react-element-to-jsx-string/-/react-element-to-jsx-string-15.0.0.tgz#1cafd5b6ad41946ffc8755e254da3fc752a01ac6" @@ -20054,6 +20990,18 @@ react-error-boundary@^3.1.3: dependencies: "@babel/runtime" "^7.12.5" +react-grid-layout@^1.4.4: + version "1.4.4" + resolved "https://registry.yarnpkg.com/react-grid-layout/-/react-grid-layout-1.4.4.tgz#0bdb19d6db061556868fef1f430cc8c14d21f131" + integrity sha512-7+Lg8E8O8HfOH5FrY80GCIR1SHTn2QnAYKh27/5spoz+OHhMmEhU/14gIkRzJOtympDPaXcVRX/nT1FjmeOUmQ== + dependencies: + clsx "^2.0.0" + fast-equals "^4.0.3" + prop-types "^15.8.1" + react-draggable "^4.4.5" + react-resizable "^3.0.5" + resize-observer-polyfill "^1.5.1" + react-inspector@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/react-inspector/-/react-inspector-6.0.2.tgz#aa3028803550cb6dbd7344816d5c80bf39d07e9d" @@ -20122,6 +21070,14 @@ react-remove-scroll@2.5.5: use-callback-ref "^1.3.0" use-sidecar "^1.1.2" +react-resizable@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/react-resizable/-/react-resizable-3.0.5.tgz#362721f2efbd094976f1780ae13f1ad7739786c1" + integrity sha512-vKpeHhI5OZvYn82kXOs1bC8aOXktGU5AmKAgaZS4F5JPburCtbmDPqE7Pzp+1kN4+Wb81LlF33VpGwWwtXem+w== + dependencies: + prop-types "15.x" + react-draggable "^4.0.3" + react-router-scroll@^0.4.2: version "0.4.4" resolved "https://registry.npmjs.org/react-router-scroll/-/react-router-scroll-0.4.4.tgz" @@ -20660,6 +21616,11 @@ reselect@^4.0.0: resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.5.tgz#852c361247198da6756d07d9296c2b51eddb79f6" integrity sha512-uVdlz8J7OO+ASpBYoz1Zypgx0KasCY20H+N8JD13oUMtPvSHQuscrHop4KbXrbsBcdB9Ds7lVK7eRkBIfO43vQ== +resize-observer-polyfill@^1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" + integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== + resolve-cwd@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" @@ -21380,6 +22341,11 @@ slash@^3.0.0: resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== +slash@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-5.1.0.tgz#be3adddcdf09ac38eebe8dcdc7b1a57a75b095ce" + integrity sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg== + slice-ansi@0.0.4: version "0.0.4" resolved "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz" @@ -21429,6 +22395,11 @@ source-map-js@^1.0.2: resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== +source-map-js@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.0.tgz#16b809c162517b5b8c3e7dcd315a2a5c2612b2af" + integrity sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg== + source-map-support@^0.5.16, source-map-support@^0.5.17, source-map-support@~0.5.19: version "0.5.19" resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz" @@ -21664,12 +22635,12 @@ storybook@^7.6.17: dependencies: "@storybook/cli" "7.6.17" -storybook@^8.0.9: - version "8.0.9" - resolved "https://registry.yarnpkg.com/storybook/-/storybook-8.0.9.tgz#169f0625511f4881046a467b56b196b093176a1c" - integrity sha512-/Mvij0Br5bUwJpCvqAUZMEDIWmdRxEyllvVj8Ukw5lIWJePxfpSsz4px5jg9+R6B9tO8sQSqjg4HJvQ/pZk8Tg== +storybook@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/storybook/-/storybook-8.1.0.tgz#f806c0d762ac003f5ff0e6594f646f4231f4bd8a" + integrity sha512-PiOKNQHFwW4ypAdUM7CSPyt5nHamcyB1yKe/+umoLo25KhYzjJa71PR1XKyBzjM3kqz8oetauexwfRwJDbfyzg== dependencies: - "@storybook/cli" "8.0.9" + "@storybook/cli" "8.1.0" stream-browserify@^3.0.0: version "3.0.0" @@ -22359,7 +23330,7 @@ tinyqueue@^2.0.3: resolved "https://registry.npmjs.org/tinyqueue/-/tinyqueue-2.0.3.tgz" integrity sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA== -tinyspy@^2.1.1: +tinyspy@^2.1.1, tinyspy@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/tinyspy/-/tinyspy-2.2.1.tgz#117b2342f1f38a0dbdcc73a50a454883adf861d1" integrity sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A== @@ -22547,6 +23518,11 @@ ts-node@^9: source-map-support "^0.5.17" yn "3.1.1" +ts-pattern@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/ts-pattern/-/ts-pattern-5.1.1.tgz#600e0a3d23ab1b0eb30b7c897d0898e940504544" + integrity sha512-i+owkHr5RYdQxj8olUgRrqpiWH9x27PuWVfXwDmJ/n/CoF/SAa7WW1i2oUpPDMQpJ4U+bGRUcZkVq7i1m3zFCg== + ts-pnp@^1.1.6: version "1.2.0" resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" @@ -22857,6 +23833,11 @@ unicode-property-aliases-ecmascript@^2.0.0: resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== +unicorn-magic@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/unicorn-magic/-/unicorn-magic-0.1.0.tgz#1bb9a51c823aaf9d73a8bfcd3d1a23dde94b0ce4" + integrity sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ== + unified@9.2.0: version "9.2.0" resolved "https://registry.npmjs.org/unified/-/unified-9.2.0.tgz" From 41697f0216549c116e74ff8cdbfd067d2e006085 Mon Sep 17 00:00:00 2001 From: Patrick Browne <pt.browne@gmail.com> Date: Tue, 14 May 2024 11:36:44 +0200 Subject: [PATCH 12/18] refactor: Better error --- app/stores/interactive-filters.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/stores/interactive-filters.tsx b/app/stores/interactive-filters.tsx index 10c44eafa..f321e2c42 100644 --- a/app/stores/interactive-filters.tsx +++ b/app/stores/interactive-filters.tsx @@ -270,11 +270,11 @@ export const useChartInteractiveFilters = <T extends unknown>( assert( ctx, - "useInteractiveFilters must be called inside a InteractiveFiltersContext.Provider!" + `ctx=${ctx}. useChartInteractiveFilters must be called inside a InteractiveFiltersChartProvider.` ); assert( key, - "useInteractiveFilters must be called inside a InteractiveFiltersChartContext.Provider!" + `key=${key}. useChartInteractiveFilters must be called inside a InteractiveFiltersChartProvider.` ); const [, useStore] = ctx.stores[key]; From 05559d8778c92e2777f6f0e2bf9da059f3e27196 Mon Sep 17 00:00:00 2001 From: Patrick Browne <pt.browne@gmail.com> Date: Wed, 15 May 2024 15:13:24 +0200 Subject: [PATCH 13/18] fix: Tweak termset nav theme --- app/browser/dataset-browse.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/browser/dataset-browse.tsx b/app/browser/dataset-browse.tsx index 4454895bf..6768ecff6 100644 --- a/app/browser/dataset-browse.tsx +++ b/app/browser/dataset-browse.tsx @@ -250,8 +250,8 @@ const termsetNavItemTheme: NavItemTheme = { activeBg: "grey.300", activeTextColor: "grey.900", textColor: "grey.700", - countColor: "grey.200", - countBg: "grey.600", + countColor: "grey.800", + countBg: "grey.300", closeColor: "grey.700", showAllColor: "grey.600", iconColor: "grey.700", From edd42f0c8136b298ff723e0c1c232650e0e81c1b Mon Sep 17 00:00:00 2001 From: Patrick Browne <pt.browne@gmail.com> Date: Thu, 16 May 2024 10:15:27 +0200 Subject: [PATCH 14/18] refactor: Adapt test to use interactive filters dashboard context --- app/charts/shared/chart-helpers.spec.tsx | 2 +- .../use-sync-interactive-filters.spec.tsx | 7 +- app/docs/charts.stories.tsx | 109 ++++++++++-------- app/docs/datatable.stories.tsx | 33 +++--- app/docs/lines.stories.tsx | 49 ++++---- app/docs/tooltip.stories.tsx | 24 ++-- app/stores/interactive-filters.tsx | 28 ++--- 7 files changed, 133 insertions(+), 119 deletions(-) diff --git a/app/charts/shared/chart-helpers.spec.tsx b/app/charts/shared/chart-helpers.spec.tsx index aa0f4e806..c4b8813f8 100644 --- a/app/charts/shared/chart-helpers.spec.tsx +++ b/app/charts/shared/chart-helpers.spec.tsx @@ -25,7 +25,7 @@ jest.mock("../../rdf/extended-cube", () => ({ })); jest.mock("@/stores/interactive-filters", () => ({ - useInteractiveFilters: jest.fn(() => ({ + useChartInteractiveFilters: jest.fn(() => ({ A_1: { type: "single", value: "A_1_1" }, A_2: { type: "single", value: "A_2_1" }, B_1: { type: "single", value: "B_1_1" }, diff --git a/app/charts/shared/use-sync-interactive-filters.spec.tsx b/app/charts/shared/use-sync-interactive-filters.spec.tsx index 271e70966..d33583f4b 100644 --- a/app/charts/shared/use-sync-interactive-filters.spec.tsx +++ b/app/charts/shared/use-sync-interactive-filters.spec.tsx @@ -4,6 +4,7 @@ import { useState } from "react"; import useSyncInteractiveFilters from "@/charts/shared/use-sync-interactive-filters"; import { ChartConfig, InteractiveFiltersConfig } from "@/config-types"; import { + InteractiveFiltersChartProvider, InteractiveFiltersProvider, useChartInteractiveFilters, } from "@/stores/interactive-filters"; @@ -78,8 +79,10 @@ const setup = ({ ); }; const root = render( - <InteractiveFiltersProvider> - <Component /> + <InteractiveFiltersProvider chartConfigs={[chartConfig]}> + <InteractiveFiltersChartProvider chartConfigKey={chartConfig.key}> + <Component /> + </InteractiveFiltersChartProvider> </InteractiveFiltersProvider> ); const getIFState = () => diff --git a/app/docs/charts.stories.tsx b/app/docs/charts.stories.tsx index da039ec7a..81c672e01 100644 --- a/app/docs/charts.stories.tsx +++ b/app/docs/charts.stories.tsx @@ -23,7 +23,10 @@ import { LegendColor } from "@/charts/shared/legend-color"; import { InteractionVoronoi } from "@/charts/shared/overlay-voronoi"; import { ConfiguratorStateProvider } from "@/configurator/configurator-state"; import { Dimension, Measure } from "@/domain/data"; -import { InteractiveFiltersProvider } from "@/stores/interactive-filters"; +import { + InteractiveFiltersChartProvider, + InteractiveFiltersProvider, +} from "@/stores/interactive-filters"; import { CONFIGURATOR_STATE_VERSION } from "@/utils/chart-config/versioning"; import { @@ -67,27 +70,29 @@ const ColumnsStory = { activeChartKey: "scatterplot", }} > - <InteractiveFiltersProvider> - <ColumnChart - observations={columnObservations} - measures={columnMeasures} - measuresByIri={keyBy(columnMeasures, (d: Measure) => d.iri)} - dimensions={columnDimensions} - dimensionsByIri={keyBy(columnDimensions, (d: Dimension) => d.iri)} - chartConfig={chartConfig} - aspectRatio={0.4} - > - <ChartContainer> - <ChartSvg> - <AxisHeightLinear /> - <AxisWidthBand /> - <AxisWidthBandDomain /> - <Columns /> - <ErrorWhiskers /> - </ChartSvg> - <Tooltip type="single" /> - </ChartContainer> - </ColumnChart> + <InteractiveFiltersProvider chartConfigs={[chartConfig]}> + <InteractiveFiltersChartProvider chartConfigKey={chartConfig.key}> + <ColumnChart + observations={columnObservations} + measures={columnMeasures} + measuresByIri={keyBy(columnMeasures, (d: Measure) => d.iri)} + dimensions={columnDimensions} + dimensionsByIri={keyBy(columnDimensions, (d: Dimension) => d.iri)} + chartConfig={chartConfig} + aspectRatio={0.4} + > + <ChartContainer> + <ChartSvg> + <AxisHeightLinear /> + <AxisWidthBand /> + <AxisWidthBandDomain /> + <Columns /> + <ErrorWhiskers /> + </ChartSvg> + <Tooltip type="single" /> + </ChartContainer> + </ColumnChart> + </InteractiveFiltersChartProvider> </InteractiveFiltersProvider> </ConfiguratorStateProvider> ), @@ -115,35 +120,37 @@ const ScatterplotStory = { activeChartKey: "scatterplot", }} > - <InteractiveFiltersProvider> - <ScatterplotChart - observations={scatterplotObservations} - dimensions={scatterplotDimensions} - dimensionsByIri={keyBy(scatterplotDimensions, (d) => d.iri)} - measures={scatterplotMeasures} - measuresByIri={keyBy(scatterplotMeasures, (d) => d.iri)} - chartConfig={scatterplotChartConfig} - aspectRatio={1} - > - <ChartContainer> - <ChartSvg> - <AxisWidthLinear /> - <AxisHeightLinear /> - <AxisWidthLinearDomain /> - <AxisHeightLinearDomain /> - <Scatterplot /> - <InteractionVoronoi /> - </ChartSvg> - <Tooltip type="single" /> - </ChartContainer> - {scatterplotFields.segment && ( - <LegendColor - chartConfig={chartConfig} - symbol="square" - interactive - /> - )} - </ScatterplotChart> + <InteractiveFiltersProvider chartConfigs={[chartConfig]}> + <InteractiveFiltersChartProvider chartConfigKey={chartConfig.key}> + <ScatterplotChart + observations={scatterplotObservations} + dimensions={scatterplotDimensions} + dimensionsByIri={keyBy(scatterplotDimensions, (d) => d.iri)} + measures={scatterplotMeasures} + measuresByIri={keyBy(scatterplotMeasures, (d) => d.iri)} + chartConfig={scatterplotChartConfig} + aspectRatio={1} + > + <ChartContainer> + <ChartSvg> + <AxisWidthLinear /> + <AxisHeightLinear /> + <AxisWidthLinearDomain /> + <AxisHeightLinearDomain /> + <Scatterplot /> + <InteractionVoronoi /> + </ChartSvg> + <Tooltip type="single" /> + </ChartContainer> + {scatterplotFields.segment && ( + <LegendColor + chartConfig={chartConfig} + symbol="square" + interactive + /> + )} + </ScatterplotChart> + </InteractiveFiltersChartProvider> </InteractiveFiltersProvider> </ConfiguratorStateProvider> ), diff --git a/app/docs/datatable.stories.tsx b/app/docs/datatable.stories.tsx index 0c4df7fe1..8a4220412 100644 --- a/app/docs/datatable.stories.tsx +++ b/app/docs/datatable.stories.tsx @@ -10,7 +10,10 @@ import { tableMeasures, tableObservations, } from "@/docs/fixtures"; -import { InteractiveFiltersProvider } from "@/stores/interactive-filters"; +import { + InteractiveFiltersChartProvider, + InteractiveFiltersProvider, +} from "@/stores/interactive-filters"; const meta: Meta = { title: "Charts / Charts / Data Table", @@ -20,19 +23,21 @@ export default meta; const DataTableStory: StoryObj = { render: () => { return ( - <InteractiveFiltersProvider> - <TableChart - observations={tableObservations} - dimensions={tableDimensions} - dimensionsByIri={keyBy(tableDimensions, (d) => d.iri)} - measures={tableMeasures} - measuresByIri={keyBy(tableMeasures, (d) => d.iri)} - chartConfig={tableConfig} - > - <ChartContainer> - <Table /> - </ChartContainer> - </TableChart> + <InteractiveFiltersProvider chartConfigs={[tableConfig]}> + <InteractiveFiltersChartProvider chartConfigKey={tableConfig.key}> + <TableChart + observations={tableObservations} + dimensions={tableDimensions} + dimensionsByIri={keyBy(tableDimensions, (d) => d.iri)} + measures={tableMeasures} + measuresByIri={keyBy(tableMeasures, (d) => d.iri)} + chartConfig={tableConfig} + > + <ChartContainer> + <Table /> + </ChartContainer> + </TableChart> + </InteractiveFiltersChartProvider> </InteractiveFiltersProvider> ); }, diff --git a/app/docs/lines.stories.tsx b/app/docs/lines.stories.tsx index 3a1b49709..46bf19802 100644 --- a/app/docs/lines.stories.tsx +++ b/app/docs/lines.stories.tsx @@ -9,7 +9,10 @@ import { BrushTime } from "@/charts/shared/brush"; import { ChartContainer, ChartSvg } from "@/charts/shared/containers"; import { LegendColor } from "@/charts/shared/legend-color"; import { ConfiguratorStateProvider } from "@/configurator/configurator-state"; -import { InteractiveFiltersProvider } from "@/stores/interactive-filters"; +import { + InteractiveFiltersChartProvider, + InteractiveFiltersProvider, +} from "@/stores/interactive-filters"; import { CONFIGURATOR_STATE_VERSION } from "@/utils/chart-config/versioning"; import { @@ -45,28 +48,30 @@ const LineChartStory = () => ( activeChartKey: "line", }} > - <InteractiveFiltersProvider> - <LineChart - observations={observations} - dimensions={dimensions} - dimensionsByIri={keyBy(dimensions, (d) => d.iri)} - measures={measures} - measuresByIri={keyBy(measures, (d) => d.iri)} - chartConfig={chartConfig} - aspectRatio={0.4} - > - <ChartContainer> - <ChartSvg> - <BrushTime /> - <AxisHeightLinear /> <AxisTime /> <AxisTimeDomain /> - <Lines /> - </ChartSvg> - </ChartContainer> + <InteractiveFiltersProvider chartConfigs={[chartConfig]}> + <InteractiveFiltersChartProvider chartConfigKey={chartConfig.key}> + <LineChart + observations={observations} + dimensions={dimensions} + dimensionsByIri={keyBy(dimensions, (d) => d.iri)} + measures={measures} + measuresByIri={keyBy(measures, (d) => d.iri)} + chartConfig={chartConfig} + aspectRatio={0.4} + > + <ChartContainer> + <ChartSvg> + <BrushTime /> + <AxisHeightLinear /> <AxisTime /> <AxisTimeDomain /> + <Lines /> + </ChartSvg> + </ChartContainer> - {fields.segment && ( - <LegendColor chartConfig={chartConfig} symbol="line" interactive /> - )} - </LineChart> + {fields.segment && ( + <LegendColor chartConfig={chartConfig} symbol="line" interactive /> + )} + </LineChart> + </InteractiveFiltersChartProvider> </InteractiveFiltersProvider> </ConfiguratorStateProvider> ); diff --git a/app/docs/tooltip.stories.tsx b/app/docs/tooltip.stories.tsx index 1610069f7..b70406738 100644 --- a/app/docs/tooltip.stories.tsx +++ b/app/docs/tooltip.stories.tsx @@ -20,7 +20,7 @@ import { measures, observations, } from "@/docs/fixtures"; -import { InteractiveFiltersProvider } from "@/stores/interactive-filters"; +import { InteractiveFiltersChartProvider } from "@/stores/interactive-filters"; import { CHART_CONFIG_VERSION } from "@/utils/chart-config/versioning"; import { ReactSpecimen } from "./catalog"; @@ -60,7 +60,7 @@ const TooltipContent = ({ children }: { children: ReactNode }) => ( const TooltipBoxStory = () => ( <ReactSpecimen> - <InteractiveFiltersProvider> + <InteractiveFiltersChartProvider chartConfigKey="column-chart"> <ColumnChart observations={observations} measures={measures} @@ -213,18 +213,20 @@ const TooltipBoxStory = () => ( </div> </Flex> </ColumnChart> - </InteractiveFiltersProvider> + </InteractiveFiltersChartProvider> </ReactSpecimen> ); -export { TooltipBoxStory as TooltipBox }; -export { TooltipContentStory as TooltipContent }; -export { TooltipContentStory2 as TooltipContent2 }; -export { RulerStory as Ruler }; +export { + RulerStory as Ruler, + TooltipBoxStory as TooltipBox, + TooltipContentStory as TooltipContent, + TooltipContentStory2 as TooltipContent2, +}; const TooltipContentStory = { render: () => ( - <InteractiveFiltersProvider> + <InteractiveFiltersChartProvider chartConfigKey="column-chart"> <ColumnChart observations={observations} measures={measures} @@ -287,13 +289,13 @@ const TooltipContentStory = { </TooltipBox> </div> </ColumnChart> - </InteractiveFiltersProvider> + </InteractiveFiltersChartProvider> ), }; export const TooltipContentStory2 = { render: () => ( - <InteractiveFiltersProvider> + <InteractiveFiltersChartProvider chartConfigKey="column-chart"> <ColumnChart observations={observations} measures={measures} @@ -359,7 +361,7 @@ export const TooltipContentStory2 = { </TooltipBox> </div> </ColumnChart> - </InteractiveFiltersProvider> + </InteractiveFiltersChartProvider> ), }; diff --git a/app/stores/interactive-filters.tsx b/app/stores/interactive-filters.tsx index f321e2c42..9b9a04b13 100644 --- a/app/stores/interactive-filters.tsx +++ b/app/stores/interactive-filters.tsx @@ -151,6 +151,9 @@ const InteractiveFiltersContext = createContext< | undefined >(undefined); +/** + * Returns filters that are shared across multiple charts. + */ export const getSharedFilters = ( chartConfigs: ChartConfig[] ): SharedFilters => { @@ -159,26 +162,19 @@ export const getSharedFilters = ( if (!interactiveFiltersConfig) { return []; } - const { timeRange, dataFilters, legend } = interactiveFiltersConfig; - return [ - { type: "timeRange" as const, value: timeRange }, - // ...dataFilters.componentIris.map((ci) => ({ - // type: "dataFilters" as const, - // value: { - // ...dataFilters, - // componentIri: ci, - // }, - // })), - // { type: "legend" as const, value: legend }, - ].filter((x) => x.value.active); + + const { timeRange } = interactiveFiltersConfig; + return [{ type: "timeRange" as const, value: timeRange }].filter( + (x) => x.value.active + ); }); const sharedFilters = Object.entries( // TODO implement recognizing shared filters across joined by dimensions groupBy(allActiveFilters, (x) => `${x.type} - ${x.value.componentIri}`) - ).filter(([iri, filters]) => filters.length > 1); + ).filter(([_iri, filters]) => filters.length > 1); - return sharedFilters.map(([iri, filters]) => ({ + return sharedFilters.map(([_iri, filters]) => ({ iri: filters[0].value.componentIri, type: filters[0].type, value: (() => { @@ -186,10 +182,6 @@ export const getSharedFilters = ( switch (type) { case "timeRange": return filters[0].value; - // case "legend": - // return filters[0].value; - // case "dataFilters": - // return filters[0].value; default: const _exhaustiveCheck: never = type; throw new Error(`Unhandled type: ${_exhaustiveCheck}`); From 2dab12a3372570328ba2b9f5d6210ef147fb04f9 Mon Sep 17 00:00:00 2001 From: Patrick Browne <patrick@interactivethings.com> Date: Thu, 16 May 2024 14:05:51 +0200 Subject: [PATCH 15/18] docs: Typo Co-authored-by: Bartosz Prusinowski <bartoszprusinowski1@gmail.com> --- app/stores/interactive-filters.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/stores/interactive-filters.tsx b/app/stores/interactive-filters.tsx index 9b9a04b13..d49b57ca3 100644 --- a/app/stores/interactive-filters.tsx +++ b/app/stores/interactive-filters.tsx @@ -191,7 +191,7 @@ export const getSharedFilters = ( }; /** - * Creates and provide all the interactive filters stores for the given chartConfigs. + * Creates and provides all the interactive filters stores for the given chartConfigs. */ export const InteractiveFiltersProvider = ({ children, From 393d9fe8036fa4b3c820c2c55647ca16f1c743e4 Mon Sep 17 00:00:00 2001 From: Patrick Browne <pt.browne@gmail.com> Date: Thu, 16 May 2024 14:09:35 +0200 Subject: [PATCH 16/18] fix: Remove unused @storybook/react-vite --- app/package.json | 1 - yarn.lock | 159 +++-------------------------------------------- 2 files changed, 9 insertions(+), 151 deletions(-) diff --git a/app/package.json b/app/package.json index 2ff03f18f..f43059676 100644 --- a/app/package.json +++ b/app/package.json @@ -39,7 +39,6 @@ "@reach/auto-id": "^0.15.3", "@sentry/nextjs": "^7.112.2", "@storybook/nextjs": "^8.1.0", - "@storybook/react-vite": "^8.1.0", "@testing-library/react-hooks": "^8.0.1", "@tpluscode/rdf-ns-builders": "2.0.1", "@tpluscode/sparql-builder": "^0.3.31", diff --git a/yarn.lock b/yarn.lock index 619f23c3b..50d68a3f5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4430,16 +4430,6 @@ resolved "https://registry.npmjs.org/@josephg/resolvable/-/resolvable-1.0.1.tgz" integrity sha512-CtzORUwWTTOTqfVtHaKRJ0I1kNQd1bpn3sUh8I3nJDVY+5/M/Oe1DnEWzPQvqq/xPIIkzzzIP7mfCoAjFRvDhg== -"@joshwooding/vite-plugin-react-docgen-typescript@0.3.1": - version "0.3.1" - resolved "https://registry.yarnpkg.com/@joshwooding/vite-plugin-react-docgen-typescript/-/vite-plugin-react-docgen-typescript-0.3.1.tgz#a733e7fc90c00ce694058d3af034b9f63d88cddd" - integrity sha512-pdoMZ9QaPnVlSM+SdU/wgg0nyD/8wQ7y90ttO2CMCyrrm7RxveYIJ5eNfjPaoMFqW41LZra7QO9j+xV4Y18Glw== - dependencies: - glob "^7.2.0" - glob-promise "^4.2.0" - magic-string "^0.27.0" - react-docgen-typescript "^2.2.2" - "@jridgewell/gen-mapping@^0.1.0": version "0.1.1" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" @@ -6329,15 +6319,6 @@ estree-walker "^2.0.2" picomatch "^2.3.1" -"@rollup/pluginutils@^5.0.2": - version "5.1.0" - resolved "https://registry.yarnpkg.com/@rollup/pluginutils/-/pluginutils-5.1.0.tgz#7e53eddc8c7f483a4ad0b94afb1f7f5fd3c771e0" - integrity sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g== - dependencies: - "@types/estree" "^1.0.0" - estree-walker "^2.0.2" - picomatch "^2.3.1" - "@rollup/rollup-android-arm-eabi@4.12.1": version "4.12.1" resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.12.1.tgz#11aaa02a933864b87f0b31cf2b755734e1f22787" @@ -6831,29 +6812,6 @@ process "^0.11.10" util "^0.12.4" -"@storybook/builder-vite@8.1.0": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@storybook/builder-vite/-/builder-vite-8.1.0.tgz#30aa11c33040ea8d234b1fb0a5981d2050adb685" - integrity sha512-KCTWA4gFMHm0u5YXYIaGiPasCeAzMo1yE9Z/vyWRL+2sifwDPTDu3QOhlBblGPdLzA18LVJuKcfcuWPqiQrIdA== - dependencies: - "@storybook/channels" "8.1.0" - "@storybook/client-logger" "8.1.0" - "@storybook/core-common" "8.1.0" - "@storybook/core-events" "8.1.0" - "@storybook/csf-plugin" "8.1.0" - "@storybook/node-logger" "8.1.0" - "@storybook/preview" "8.1.0" - "@storybook/preview-api" "8.1.0" - "@storybook/types" "8.1.0" - "@types/find-cache-dir" "^3.2.1" - browser-assert "^1.2.1" - es-module-lexer "^1.5.0" - express "^4.17.3" - find-cache-dir "^3.0.0" - fs-extra "^11.1.0" - magic-string "^0.30.0" - ts-dedent "^2.0.0" - "@storybook/builder-webpack5@7.6.17": version "7.6.17" resolved "https://registry.yarnpkg.com/@storybook/builder-webpack5/-/builder-webpack5-7.6.17.tgz#1bf52b4cf62c66cbfe95e189fa4303a542bb645a" @@ -7336,14 +7294,6 @@ "@storybook/csf-tools" "7.6.17" unplugin "^1.3.1" -"@storybook/csf-plugin@8.1.0": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@storybook/csf-plugin/-/csf-plugin-8.1.0.tgz#bc581eea3a6efcb547bb65526635817dd7169425" - integrity sha512-xWisKhyAqpXXsLASsYD+auWeIHlWdAB+wryP6S1vFDUdwzJ7HOS+FT4c7wF8AQjkF5jHPfzChYjbgII/ae6P3w== - dependencies: - "@storybook/csf-tools" "8.1.0" - unplugin "^1.3.1" - "@storybook/csf-tools@7.6.17": version "7.6.17" resolved "https://registry.yarnpkg.com/@storybook/csf-tools/-/csf-tools-7.6.17.tgz#366bb2348fc1a62f90cdbd6cce4aa5e7293984eb" @@ -7755,22 +7705,6 @@ resolved "https://registry.yarnpkg.com/@storybook/react-dom-shim/-/react-dom-shim-8.1.0.tgz#3c0599da472f599b64f2f180b92b50cdd6d5d11c" integrity sha512-mKj86pcwL9BXwtYF63SGnYmGvacYNRW/BDkotHMS1DaN7ZBqvXlEU7vopPVL6ay2Yono7AnqQR2eQl7cUevsag== -"@storybook/react-vite@^8.1.0": - version "8.1.0" - resolved "https://registry.yarnpkg.com/@storybook/react-vite/-/react-vite-8.1.0.tgz#673d7ecd015e69c67a5fcc7f1085eb299f20e85d" - integrity sha512-dzXh43/DqQhxg97sDF2nD0oRww6F1cuaOq81QjNnUEjznHacgYiGAnag1Y3GGO3MhnjfwZzOFj92O0ynY/M2iQ== - dependencies: - "@joshwooding/vite-plugin-react-docgen-typescript" "0.3.1" - "@rollup/pluginutils" "^5.0.2" - "@storybook/builder-vite" "8.1.0" - "@storybook/node-logger" "8.1.0" - "@storybook/react" "8.1.0" - find-up "^5.0.0" - magic-string "^0.30.0" - react-docgen "^7.0.0" - resolve "^1.22.8" - tsconfig-paths "^4.2.0" - "@storybook/react@7.6.17", "@storybook/react@^7.6.17": version "7.6.17" resolved "https://registry.yarnpkg.com/@storybook/react/-/react-7.6.17.tgz#3e585b37f4a45d01b60543e1952a46ae3da70e81" @@ -8839,14 +8773,6 @@ resolved "https://registry.yarnpkg.com/@types/github-slugger/-/github-slugger-1.3.0.tgz#16ab393b30d8ae2a111ac748a015ac05a1fc5524" integrity sha512-J/rMZa7RqiH/rT29TEVZO4nBoDP9XJOjnbbIofg7GQKs4JIduEO3WLpte+6WeUz/TcrXKlY+bM7FYrp8yFB+3g== -"@types/glob@^7.1.3": - version "7.2.0" - resolved "https://registry.yarnpkg.com/@types/glob/-/glob-7.2.0.tgz#bc1b5bf3aa92f25bd5dd39f35c57361bdce5b2eb" - integrity sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA== - dependencies: - "@types/minimatch" "*" - "@types/node" "*" - "@types/graceful-fs@^4.1.2": version "4.1.5" resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz" @@ -9051,11 +8977,6 @@ resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== -"@types/minimatch@*": - version "5.1.2" - resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-5.1.2.tgz#07508b45797cb81ec3f273011b054cd0755eddca" - integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA== - "@types/minimist@^1.2.0": version "1.2.1" resolved "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.1.tgz" @@ -9247,13 +9168,6 @@ dependencies: "@types/react" "*" -"@types/react-grid-layout@^1.3.5": - version "1.3.5" - resolved "https://registry.yarnpkg.com/@types/react-grid-layout/-/react-grid-layout-1.3.5.tgz#f4b52bf27775290ee0523214be0987be14e66823" - integrity sha512-WH/po1gcEcoR6y857yAnPGug+ZhkF4PaTUxgAbwfeSH/QOgVSakKHBXoPGad/sEznmkiaK3pqHk+etdWisoeBQ== - dependencies: - "@types/react" "*" - "@types/react-is@^16.7.1 || ^17.0.0": version "17.0.3" resolved "https://registry.yarnpkg.com/@types/react-is/-/react-is-17.0.3.tgz#2d855ba575f2fc8d17ef9861f084acc4b90a137a" @@ -11928,11 +11842,6 @@ clsx@^1.1.1: resolved "https://registry.yarnpkg.com/clsx/-/clsx-1.1.1.tgz#98b3134f9abbdf23b2663491ace13c5c03a73188" integrity sha512-6/bPho624p3S2pMyvP5kKBPXnI3ufHLObBFCfgx+LkeR5lg2XYy2hqZqUf45ypD8COn2bhgGJSUE+l5dhNBieA== -clsx@^2.0.0: - version "2.1.1" - resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.1.tgz#eed397c9fd8bd882bfb18deab7102049a2f32999" - integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA== - co@^4.6.0: version "4.6.0" resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz" @@ -14565,11 +14474,6 @@ fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== -fast-equals@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/fast-equals/-/fast-equals-4.0.3.tgz#72884cc805ec3c6679b99875f6b7654f39f0e8c7" - integrity sha512-G3BSX9cfKttjr+2o1O22tYMLq0DPluZnYtq1rXumE1SpL/F/SLIfHx08WYQoWSIpeMYf8sRbJ8++71+v6Pnxfg== - fast-fifo@^1.1.0, fast-fifo@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/fast-fifo/-/fast-fifo-1.3.2.tgz#286e31de96eb96d38a97899815740ba2a4f3640c" @@ -15304,13 +15208,6 @@ glob-parent@^5.1.0, glob-parent@^5.1.2, glob-parent@~5.1.0, glob-parent@~5.1.2: dependencies: is-glob "^4.0.1" -glob-promise@^4.2.0: - version "4.2.2" - resolved "https://registry.yarnpkg.com/glob-promise/-/glob-promise-4.2.2.tgz#15f44bcba0e14219cd93af36da6bb905ff007877" - integrity sha512-xcUzJ8NWN5bktoTIX7eOclO1Npxd/dyVqUJxlLIDasT4C7KZyqlPIwkdJ0Ypiy3p2ZKahTjK4M9uC3sNSfNMzw== - dependencies: - "@types/glob" "^7.1.3" - glob-to-regexp@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" @@ -20495,15 +20392,6 @@ prompts@^2.0.1, prompts@^2.4.0: kleur "^3.0.3" sisteransi "^1.0.5" -prop-types@15.x, prop-types@^15.6.2, prop-types@^15.8.1: - version "15.8.1" - resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" - integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== - dependencies: - loose-envify "^1.4.0" - object-assign "^4.1.1" - react-is "^16.13.1" - prop-types@^15.5.6, prop-types@^15.6.0, prop-types@^15.7.2: version "15.7.2" resolved "https://registry.npmjs.org/prop-types/-/prop-types-15.7.2.tgz" @@ -20513,6 +20401,15 @@ prop-types@^15.5.6, prop-types@^15.6.0, prop-types@^15.7.2: object-assign "^4.1.1" react-is "^16.8.1" +prop-types@^15.6.2, prop-types@^15.8.1: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + property-information@^5.0.0, property-information@^5.3.0: version "5.6.0" resolved "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz" @@ -20959,14 +20856,6 @@ react-dom@^18.2.0: loose-envify "^1.1.0" scheduler "^0.23.0" -react-draggable@^4.0.3, react-draggable@^4.4.5: - version "4.4.6" - resolved "https://registry.yarnpkg.com/react-draggable/-/react-draggable-4.4.6.tgz#63343ee945770881ca1256a5b6fa5c9f5983fe1e" - integrity sha512-LtY5Xw1zTPqHkVmtM3X8MUOxNDOUhv/khTgBgrUvwaS064bwVvxT+q5El0uUFNx5IEPKXuRejr7UqLwBIg5pdw== - dependencies: - clsx "^1.1.1" - prop-types "^15.8.1" - react-element-to-jsx-string@^15.0.0: version "15.0.0" resolved "https://registry.yarnpkg.com/react-element-to-jsx-string/-/react-element-to-jsx-string-15.0.0.tgz#1cafd5b6ad41946ffc8755e254da3fc752a01ac6" @@ -20990,18 +20879,6 @@ react-error-boundary@^3.1.3: dependencies: "@babel/runtime" "^7.12.5" -react-grid-layout@^1.4.4: - version "1.4.4" - resolved "https://registry.yarnpkg.com/react-grid-layout/-/react-grid-layout-1.4.4.tgz#0bdb19d6db061556868fef1f430cc8c14d21f131" - integrity sha512-7+Lg8E8O8HfOH5FrY80GCIR1SHTn2QnAYKh27/5spoz+OHhMmEhU/14gIkRzJOtympDPaXcVRX/nT1FjmeOUmQ== - dependencies: - clsx "^2.0.0" - fast-equals "^4.0.3" - prop-types "^15.8.1" - react-draggable "^4.4.5" - react-resizable "^3.0.5" - resize-observer-polyfill "^1.5.1" - react-inspector@^6.0.2: version "6.0.2" resolved "https://registry.yarnpkg.com/react-inspector/-/react-inspector-6.0.2.tgz#aa3028803550cb6dbd7344816d5c80bf39d07e9d" @@ -21070,14 +20947,6 @@ react-remove-scroll@2.5.5: use-callback-ref "^1.3.0" use-sidecar "^1.1.2" -react-resizable@^3.0.5: - version "3.0.5" - resolved "https://registry.yarnpkg.com/react-resizable/-/react-resizable-3.0.5.tgz#362721f2efbd094976f1780ae13f1ad7739786c1" - integrity sha512-vKpeHhI5OZvYn82kXOs1bC8aOXktGU5AmKAgaZS4F5JPburCtbmDPqE7Pzp+1kN4+Wb81LlF33VpGwWwtXem+w== - dependencies: - prop-types "15.x" - react-draggable "^4.0.3" - react-router-scroll@^0.4.2: version "0.4.4" resolved "https://registry.npmjs.org/react-router-scroll/-/react-router-scroll-0.4.4.tgz" @@ -21616,11 +21485,6 @@ reselect@^4.0.0: resolved "https://registry.yarnpkg.com/reselect/-/reselect-4.1.5.tgz#852c361247198da6756d07d9296c2b51eddb79f6" integrity sha512-uVdlz8J7OO+ASpBYoz1Zypgx0KasCY20H+N8JD13oUMtPvSHQuscrHop4KbXrbsBcdB9Ds7lVK7eRkBIfO43vQ== -resize-observer-polyfill@^1.5.1: - version "1.5.1" - resolved "https://registry.yarnpkg.com/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz#0e9020dd3d21024458d4ebd27e23e40269810464" - integrity sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg== - resolve-cwd@^3.0.0: version "3.0.0" resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz" @@ -23518,11 +23382,6 @@ ts-node@^9: source-map-support "^0.5.17" yn "3.1.1" -ts-pattern@^5.1.1: - version "5.1.1" - resolved "https://registry.yarnpkg.com/ts-pattern/-/ts-pattern-5.1.1.tgz#600e0a3d23ab1b0eb30b7c897d0898e940504544" - integrity sha512-i+owkHr5RYdQxj8olUgRrqpiWH9x27PuWVfXwDmJ/n/CoF/SAa7WW1i2oUpPDMQpJ4U+bGRUcZkVq7i1m3zFCg== - ts-pnp@^1.1.6: version "1.2.0" resolved "https://registry.yarnpkg.com/ts-pnp/-/ts-pnp-1.2.0.tgz#a500ad084b0798f1c3071af391e65912c86bca92" From de498616f76efa0fa9e26ce5852841b157dc58e9 Mon Sep 17 00:00:00 2001 From: Patrick Browne <pt.browne@gmail.com> Date: Thu, 16 May 2024 14:16:31 +0200 Subject: [PATCH 17/18] refactor: Remove unnecessary provider --- app/components/chart-published.tsx | 136 ++++++++++++++--------------- 1 file changed, 67 insertions(+), 69 deletions(-) diff --git a/app/components/chart-published.tsx b/app/components/chart-published.tsx index 10a2290c3..1b2afeb07 100644 --- a/app/components/chart-published.tsx +++ b/app/components/chart-published.tsx @@ -295,85 +295,83 @@ const ChartPublishedInner = (props: ChartPublishInnerProps) => { </Box> )} <LoadingStateProvider> - <InteractiveFiltersProvider chartConfigs={state.chartConfigs}> - <InteractiveFiltersChartProvider chartConfigKey={chartConfig.key}> - <Flex - sx={{ - justifyContent: meta.title[locale] - ? "space-between" - : "flex-end", - gap: 2, - }} - > - {meta.title[locale] ? ( - <Title text={meta.title[locale]} /> - ) : ( - // We need to have a span here to keep the space between the - // title and the chart (subgrid layout) - <span /> - )} - <MetadataPanel - dataSource={dataSource} - chartConfigs={[chartConfig]} - dimensions={allComponents} - container={rootRef.current} - /> - </Flex> - {meta.description[locale] ? ( - <Description text={meta.description[locale]} /> + <InteractiveFiltersChartProvider chartConfigKey={chartConfig.key}> + <Flex + sx={{ + justifyContent: meta.title[locale] + ? "space-between" + : "flex-end", + gap: 2, + }} + > + {meta.title[locale] ? ( + <Title text={meta.title[locale]} /> ) : ( // We need to have a span here to keep the space between the // title and the chart (subgrid layout) <span /> )} - {chartConfig.interactiveFiltersConfig?.dataFilters.active ? ( - <ChartDataFilters + <MetadataPanel + dataSource={dataSource} + chartConfigs={[chartConfig]} + dimensions={allComponents} + container={rootRef.current} + /> + </Flex> + {meta.description[locale] ? ( + <Description text={meta.description[locale]} /> + ) : ( + // We need to have a span here to keep the space between the + // title and the chart (subgrid layout) + <span /> + )} + {chartConfig.interactiveFiltersConfig?.dataFilters.active ? ( + <ChartDataFilters + dataSource={dataSource} + chartConfig={chartConfig} + /> + ) : ( + // We need to have a span here to keep the space between the + // description and the chart (subgrid layout) + <span /> + )} + <div + ref={containerRef} + style={{ + minWidth: 0, + height: containerHeight.current, + marginTop: 16, + }} + > + {isTablePreview ? ( + <DataSetTable + sx={{ maxHeight: "100%" }} dataSource={dataSource} chartConfig={chartConfig} /> ) : ( - // We need to have a span here to keep the space between the - // description and the chart (subgrid layout) - <span /> + <ChartWithFilters + dataSource={dataSource} + componentIris={componentIris} + chartConfig={chartConfig} + /> )} - <div - ref={containerRef} - style={{ - minWidth: 0, - height: containerHeight.current, - marginTop: 16, - }} - > - {isTablePreview ? ( - <DataSetTable - sx={{ maxHeight: "100%" }} - dataSource={dataSource} - chartConfig={chartConfig} - /> - ) : ( - <ChartWithFilters - dataSource={dataSource} - componentIris={componentIris} - chartConfig={chartConfig} - /> - )} - </div> - <ChartFootnotes - dataSource={dataSource} - chartConfig={chartConfig} - dimensions={dimensions} - configKey={configKey} - onToggleTableView={handleToggleTableView} - visualizeLinkText={ - showDownload === false ? ( - <Trans id="metadata.link.created.with.visualize.alternate"> - visualize.admin.ch - </Trans> - ) : undefined - } - /> - </InteractiveFiltersChartProvider> - </InteractiveFiltersProvider> + </div> + <ChartFootnotes + dataSource={dataSource} + chartConfig={chartConfig} + dimensions={dimensions} + configKey={configKey} + onToggleTableView={handleToggleTableView} + visualizeLinkText={ + showDownload === false ? ( + <Trans id="metadata.link.created.with.visualize.alternate"> + visualize.admin.ch + </Trans> + ) : undefined + } + /> + </InteractiveFiltersChartProvider> </LoadingStateProvider> </ChartErrorBoundary> </Box> From 90367c1c3c7d8d0f68a7565fc9a6bb3d1b8f238f Mon Sep 17 00:00:00 2001 From: Patrick Browne <pt.browne@gmail.com> Date: Thu, 16 May 2024 14:18:30 +0200 Subject: [PATCH 18/18] refactor: Use only one provider --- app/components/chart-published.tsx | 116 +++++++++++++++-------------- 1 file changed, 60 insertions(+), 56 deletions(-) diff --git a/app/components/chart-published.tsx b/app/components/chart-published.tsx index 1b2afeb07..489b7d374 100644 --- a/app/components/chart-published.tsx +++ b/app/components/chart-published.tsx @@ -82,66 +82,70 @@ export const ChartPublished = (props: ChartPublishedProps) => { [configKey, dataSource, state] ); - return state.layout.type === "dashboard" ? ( + return ( <InteractiveFiltersProvider chartConfigs={state.chartConfigs}> - <Box - sx={{ - mb: - state.layout.meta.title[locale] || - state.layout.meta.description[locale] - ? 4 - : 0, - }} - > - {state.layout.meta.title[locale] && ( - <Title text={state.layout.meta.title[locale]} /> - )} - {state.layout.meta.description[locale] && ( - <Description text={state.layout.meta.description[locale]} /> - )} - </Box> - {state.layout.layout === "tall" ? ( - <ChartPanelLayoutTall - chartConfigs={state.chartConfigs} - renderChart={renderChart} - /> + {state.layout.type === "dashboard" ? ( + <> + <Box + sx={{ + mb: + state.layout.meta.title[locale] || + state.layout.meta.description[locale] + ? 4 + : 0, + }} + > + {state.layout.meta.title[locale] && ( + <Title text={state.layout.meta.title[locale]} /> + )} + {state.layout.meta.description[locale] && ( + <Description text={state.layout.meta.description[locale]} /> + )} + </Box> + {state.layout.layout === "tall" ? ( + <ChartPanelLayoutTall + chartConfigs={state.chartConfigs} + renderChart={renderChart} + /> + ) : ( + <ChartPanelLayoutVertical + chartConfigs={state.chartConfigs} + renderChart={renderChart} + /> + )} + </> ) : ( - <ChartPanelLayoutVertical - chartConfigs={state.chartConfigs} - renderChart={renderChart} - /> + <> + <Flex + sx={{ + flexDirection: "column", + mb: + state.layout.meta.title[locale] || + state.layout.meta.description[locale] + ? 4 + : 0, + }} + > + {state.layout.meta.title[locale] && ( + <Title text={state.layout.meta.title[locale]} /> + )} + {state.layout.meta.description[locale] && ( + <Description text={state.layout.meta.description[locale]} /> + )} + </Flex> + <ChartTablePreviewProvider> + <ChartWrapper layoutType={state.layout.type}> + <ChartPublishedInner + dataSource={dataSource} + state={state} + chartConfig={getChartConfig(state)} + configKey={configKey} + /> + </ChartWrapper> + </ChartTablePreviewProvider> + </> )} </InteractiveFiltersProvider> - ) : ( - <InteractiveFiltersProvider chartConfigs={state.chartConfigs}> - <Flex - sx={{ - flexDirection: "column", - mb: - state.layout.meta.title[locale] || - state.layout.meta.description[locale] - ? 4 - : 0, - }} - > - {state.layout.meta.title[locale] && ( - <Title text={state.layout.meta.title[locale]} /> - )} - {state.layout.meta.description[locale] && ( - <Description text={state.layout.meta.description[locale]} /> - )} - </Flex> - <ChartTablePreviewProvider> - <ChartWrapper layoutType={state.layout.type}> - <ChartPublishedInner - dataSource={dataSource} - state={state} - chartConfig={getChartConfig(state)} - configKey={configKey} - /> - </ChartWrapper> - </ChartTablePreviewProvider> - </InteractiveFiltersProvider> ); };