From f4f5ed7fb585f62ff62dd14748786b3ec4dc6042 Mon Sep 17 00:00:00 2001 From: Ananda Date: Fri, 6 Sep 2024 21:28:47 +0200 Subject: [PATCH] feat: ajout des charts --- package.json | 1 + src/Chart/BarChart.tsx | 42 ++++++ src/Chart/BarLineChart.tsx | 43 ++++++ src/Chart/GaugeChart.tsx | 37 +++++ src/Chart/LineChart.tsx | 35 +++++ src/Chart/MultiLineChart.tsx | 35 +++++ src/Chart/PieChart.tsx | 37 +++++ src/Chart/RadarChart.tsx | 33 +++++ src/Chart/ScatterChart.tsx | 42 ++++++ src/Chart/chartWrapper.tsx | 116 +++++++++++++++ stories/Chart.stories.tsx | 25 ++++ yarn.lock | 270 ++++++++++++++++++++++++++++++++++- 12 files changed, 714 insertions(+), 2 deletions(-) create mode 100644 src/Chart/BarChart.tsx create mode 100644 src/Chart/BarLineChart.tsx create mode 100644 src/Chart/GaugeChart.tsx create mode 100644 src/Chart/LineChart.tsx create mode 100644 src/Chart/MultiLineChart.tsx create mode 100644 src/Chart/PieChart.tsx create mode 100644 src/Chart/RadarChart.tsx create mode 100644 src/Chart/ScatterChart.tsx create mode 100644 src/Chart/chartWrapper.tsx create mode 100644 stories/Chart.stories.tsx diff --git a/package.json b/package.json index bcf1d98ce..ceb5baa16 100644 --- a/package.json +++ b/package.json @@ -71,6 +71,7 @@ "@emotion/react": "^11.10.4", "@emotion/styled": "^11.10.4", "@gouvfr/dsfr": "1.12.1", + "@gouvfr/dsfr-chart": "^1.0.0", "@mui/icons-material": "^5.14.18", "@mui/material": "^5.14.18", "@storybook/addon-a11y": "^6.5.16", diff --git a/src/Chart/BarChart.tsx b/src/Chart/BarChart.tsx new file mode 100644 index 000000000..0501add61 --- /dev/null +++ b/src/Chart/BarChart.tsx @@ -0,0 +1,42 @@ +import React from "react"; +import { symToStr } from "tsafe/symToStr"; +import "@gouvfr/dsfr-chart/BarChart/bar-chart.common"; +import "@gouvfr/dsfr-chart/BarChart/bar-chart.css"; +import { + chartWrapper, + IntrinsicGraphType, + BaseChartProps, + stringifyObjectValue, + MultiChartProps, + ChartLineProps, + IntrinsicGraphLineType +} from "./chartWrapper"; + +declare global { + namespace JSX { + interface IntrinsicElements { + // https://github.com/GouvernementFR/dsfr-chart/blob/v1.0.0/src/components/BarChart.vue#L79 + "bar-chart": { + horizontal?: string; + stacked?: string; + } & IntrinsicGraphType & + IntrinsicGraphLineType; + } + } +} + +export type BarChartBaseProps = { + horizontal?: boolean; + stacked?: boolean; +} & MultiChartProps & + ChartLineProps; + +export type BarChartProps = BarChartBaseProps & BaseChartProps; + +/** @see */ +export const BarChart = chartWrapper((props: BarChartBaseProps) => { + return ; +}, "bar-chart"); +BarChart.displayName = symToStr({ BarChart }); + +export default BarChart; diff --git a/src/Chart/BarLineChart.tsx b/src/Chart/BarLineChart.tsx new file mode 100644 index 000000000..81eefaf6e --- /dev/null +++ b/src/Chart/BarLineChart.tsx @@ -0,0 +1,43 @@ +import React from "react"; +import { symToStr } from "tsafe/symToStr"; +import "@gouvfr/dsfr-chart/BarLineChart/bar-line-chart.common"; +import "@gouvfr/dsfr-chart/BarLineChart/bar-line-chart.css"; +import { + chartWrapper, + IntrinsicGraphType, + BaseChartProps, + stringifyObjectValue, + ChartProps, + ChartLineProps, + IntrinsicGraphLineType +} from "./chartWrapper"; + +declare global { + namespace JSX { + interface IntrinsicElements { + // https://github.com/GouvernementFR/dsfr-chart/blob/v1.0.0/src/components/BarLineChart.vue#L75 + "bar-line-chart": { + ybar: string; + } & IntrinsicGraphType & + IntrinsicGraphLineType; + } + } +} + +export type BarLineChartBaseProps = { + ybar: number[]; + name: [string, string]; + horizontal?: boolean; + stacked: boolean; +} & Omit & + ChartLineProps; + +export type BarLineChartProps = BarLineChartBaseProps & BaseChartProps; + +/** @see */ +export const BarLineChart = chartWrapper((props: BarLineChartBaseProps) => { + return ; +}, "bar-line-chart"); +BarLineChart.displayName = symToStr({ BarLineChart }); + +export default BarLineChart; diff --git a/src/Chart/GaugeChart.tsx b/src/Chart/GaugeChart.tsx new file mode 100644 index 000000000..57d6424cd --- /dev/null +++ b/src/Chart/GaugeChart.tsx @@ -0,0 +1,37 @@ +import React from "react"; +import { symToStr } from "tsafe/symToStr"; +import "@gouvfr/dsfr-chart/GaugeChart/gauge-chart.common"; +import "@gouvfr/dsfr-chart/GaugeChart/gauge-chart.css"; +import { chartWrapper, BaseChartProps, stringifyObjectValue, ChartColor } from "./chartWrapper"; + +declare global { + namespace JSX { + interface IntrinsicElements { + // https://github.com/GouvernementFR/dsfr-chart/blob/v1.0.0/src/components/GaugeChart.vue#L55 + "gauge-chart": { + value: string; + init: string; + target: string; + color: string; + }; + } + } +} + +export type GaugeChartBaseProps = { + value: number; + init: number; + target: number; + color?: ChartColor; +}; + +export type GaugeChartProps = GaugeChartBaseProps & BaseChartProps; + +/** @see */ +export const GaugeChart = chartWrapper( + (props: GaugeChartBaseProps) => , + "gauge-chart" +); +GaugeChart.displayName = symToStr({ GaugeChart }); + +export default GaugeChart; diff --git a/src/Chart/LineChart.tsx b/src/Chart/LineChart.tsx new file mode 100644 index 000000000..f782ddcf4 --- /dev/null +++ b/src/Chart/LineChart.tsx @@ -0,0 +1,35 @@ +import React from "react"; +import { symToStr } from "tsafe/symToStr"; +import "@gouvfr/dsfr-chart/LineChart/line-chart.common"; +import "@gouvfr/dsfr-chart/LineChart/line-chart.css"; +import { + chartWrapper, + ChartProps, + IntrinsicGraphType, + BaseChartProps, + stringifyObjectValue, + ChartLineProps, + IntrinsicGraphLineType +} from "./chartWrapper"; + +declare global { + namespace JSX { + interface IntrinsicElements { + // https://github.com/GouvernementFR/dsfr-chart/blob/v1.0.0/src/components/LineChart.vue#L70 + "line-chart": IntrinsicGraphType & IntrinsicGraphLineType; + } + } +} + +export type LineChartBaseProps = ChartProps & ChartLineProps; + +export type LineChartProps = LineChartBaseProps & BaseChartProps; + +/** @see */ +export const LineChart = chartWrapper( + (props: LineChartBaseProps) => , + "line-chart" +); +LineChart.displayName = symToStr({ LineChart }); + +export default LineChart; diff --git a/src/Chart/MultiLineChart.tsx b/src/Chart/MultiLineChart.tsx new file mode 100644 index 000000000..3540380fe --- /dev/null +++ b/src/Chart/MultiLineChart.tsx @@ -0,0 +1,35 @@ +import React from "react"; +import { symToStr } from "tsafe/symToStr"; +import "@gouvfr/dsfr-chart/MultiLineChart/multi-line-chart.common"; +import "@gouvfr/dsfr-chart/MultiLineChart/multi-line-chart.css"; +import { + chartWrapper, + IntrinsicGraphType, + BaseChartProps, + stringifyObjectValue, + MultiChartProps, + ChartLineProps, + IntrinsicGraphLineType +} from "./chartWrapper"; + +declare global { + namespace JSX { + interface IntrinsicElements { + // https://github.com/GouvernementFR/dsfr-chart/blob/v1.0.0/src/components/MultiLineChart.vue#L74 + "multi-line-chart": IntrinsicGraphType & IntrinsicGraphLineType; + } + } +} + +export type MultiLineChartBaseProps = MultiChartProps & ChartLineProps; + +export type MultiLineChartProps = MultiLineChartBaseProps & BaseChartProps; + +/** @see */ +export const MultiLineChart = chartWrapper( + (props: MultiLineChartBaseProps) => , + "multi-line-chart" +); +MultiLineChart.displayName = symToStr({ MultiLineChart }); + +export default MultiLineChart; diff --git a/src/Chart/PieChart.tsx b/src/Chart/PieChart.tsx new file mode 100644 index 000000000..283feddfd --- /dev/null +++ b/src/Chart/PieChart.tsx @@ -0,0 +1,37 @@ +import React from "react"; +import { symToStr } from "tsafe/symToStr"; +import "@gouvfr/dsfr-chart/PieChart/pie-chart.common"; +import "@gouvfr/dsfr-chart/PieChart/pie-chart.css"; +import { + chartWrapper, + ChartProps, + IntrinsicGraphType, + BaseChartProps, + stringifyObjectValue +} from "./chartWrapper"; + +declare global { + namespace JSX { + interface IntrinsicElements { + // https://github.com/GouvernementFR/dsfr-chart/blob/v1.0.0/src/components/PieChart.vue#L59 + "pie-chart": { + fill?: string; + } & IntrinsicGraphType; + } + } +} + +export type PieChartBaseProps = { + fill?: boolean; +} & ChartProps; + +export type PieChartProps = PieChartBaseProps & BaseChartProps; + +/** @see */ +export const PieChart = chartWrapper( + (props: PieChartBaseProps) => , + "pie-chart" +); +PieChart.displayName = symToStr({ PieChart }); + +export default PieChart; diff --git a/src/Chart/RadarChart.tsx b/src/Chart/RadarChart.tsx new file mode 100644 index 000000000..1838540be --- /dev/null +++ b/src/Chart/RadarChart.tsx @@ -0,0 +1,33 @@ +import React from "react"; +import { symToStr } from "tsafe/symToStr"; +import "@gouvfr/dsfr-chart/RadarChart/radar-chart.common"; +import "@gouvfr/dsfr-chart/RadarChart/radar-chart.css"; +import { + chartWrapper, + IntrinsicGraphType, + BaseChartProps, + stringifyObjectValue, + MultiChartProps +} from "./chartWrapper"; + +declare global { + namespace JSX { + interface IntrinsicElements { + // https://github.com/GouvernementFR/dsfr-chart/blob/v1.0.0/src/components/RadarChart.vue#L57 + "radar-chart": IntrinsicGraphType; + } + } +} + +export type RadarChartBaseProps = MultiChartProps; + +export type RadarChartProps = RadarChartBaseProps & BaseChartProps; + +/** @see */ +export const RadarChart = chartWrapper( + (props: RadarChartBaseProps) => , + "radar-chart" +); +RadarChart.displayName = symToStr({ RadarChart }); + +export default RadarChart; diff --git a/src/Chart/ScatterChart.tsx b/src/Chart/ScatterChart.tsx new file mode 100644 index 000000000..5d82b4797 --- /dev/null +++ b/src/Chart/ScatterChart.tsx @@ -0,0 +1,42 @@ +import React from "react"; +import { symToStr } from "tsafe/symToStr"; +import "@gouvfr/dsfr-chart/ScatterChart/scatter-chart.common"; +import "@gouvfr/dsfr-chart/ScatterChart/scatter-chart.css"; +import { + chartWrapper, + BaseChartProps, + MultiChartProps, + IntrinsicGraphType, + stringifyObjectValue, + ChartLineProps, + IntrinsicGraphLineType +} from "./chartWrapper"; + +declare global { + namespace JSX { + interface IntrinsicElements { + // https://github.com/GouvernementFR/dsfr-chart/blob/v1.0.0/src/components/ScatterChart.vue#L75 + "scatter-chart": { + showLine?: string; + } & IntrinsicGraphType & + IntrinsicGraphLineType; + } + } +} + +type ScatterChartBaseProps = { + x: number[][]; + showLine?: boolean; +} & Omit & + ChartLineProps; + +export type ScatterChartProps = ScatterChartBaseProps & BaseChartProps; + +/** @see */ +export const ScatterChart = chartWrapper( + (props: ScatterChartBaseProps) => , + "scatter-chart" +); +ScatterChart.displayName = symToStr({ ScatterChart }); + +export default ScatterChart; diff --git a/src/Chart/chartWrapper.tsx b/src/Chart/chartWrapper.tsx new file mode 100644 index 000000000..b789a4d0f --- /dev/null +++ b/src/Chart/chartWrapper.tsx @@ -0,0 +1,116 @@ +import React, { memo, forwardRef, type CSSProperties, useEffect, useState } from "react"; +import { prDsfrLoaded } from "../start"; +import { useAnalyticsId } from "../tools/useAnalyticsId"; +import { cx } from "../tools/cx"; + +export type ChartColor = + | "blue-france" + | "green-bourgeon" + | "blue-ecume" + | "purple-glycine" + | "pink-macaron" + | "yellow-tournesol" + | "orange-terre-battue" + | "brown-cafe-creme" + | "beige-gris-galet" + | "green-emeraude" + | "blue-cumulus" + | "pink-tuile" + | "yellow-moutarde" + | "brown-caramel" + | "green-menthe" + | "brown-opera" + | "green-archipel" + | "green-tilleul-verveine"; + +export type IntrinsicGraphType = { + x: string; + y: string; + name?: string; + color?: string; +}; + +export type IntrinsicGraphLineType = { + hline?: string; + hlinename?: string; + vline?: string; + vlinename?: string; + vlinecolor?: string; + hlinecolor?: string; +}; + +export type BaseChartProps = { + id?: string; + className?: string; + style?: CSSProperties; + classes?: Partial>; +}; + +export type ChartLineProps = { + hline?: any[]; + hlinename?: string[]; + vline?: number[]; + vlinename?: string[]; + vlinecolor?: string[]; + hlinecolor?: string[]; +}; + +export type ChartProps = { + x: any[]; + y: number[]; + name?: string; + color?: ChartColor; +}; + +export type MultiChartProps = { + x: any[][]; + y: number[][]; + name?: string[]; + color?: ChartColor[]; +}; + +const typeSafeObjectFromEntries = >( + entries: T +): { [K in T[number] as K[0]]: K[1] } => { + return Object.fromEntries(entries) as { [K in T[number] as K[0]]: K[1] }; +}; + +const typeSafeObjectEntries = >( + obj: T +): { [K in keyof T]: [K, T[K]] }[keyof T][] => { + return Object.entries(obj) as { [K in keyof T]: [K, T[K]] }[keyof T][]; +}; + +export const stringifyObjectValue = >(obj: T) => + typeSafeObjectFromEntries(typeSafeObjectEntries(obj).map(([k, v]) => [k, JSON.stringify(v)])); + +export const chartWrapper = (ChartComponent: React.FC, idPrefix: string) => { + return memo( + forwardRef & BaseChartProps>( + (props, ref) => { + const [isDsfrLoaded, setIsDsfrLoaded] = useState(false); + const { className, style, classes = {}, id: props_id, ...rest } = props; + const graphProps = rest as T; + + useEffect(() => { + prDsfrLoaded.then(() => setIsDsfrLoaded(true)); + }); + + const id = useAnalyticsId({ + "defaultIdPrefix": `fr-chart-${idPrefix}`, + "explicitlyProvidedId": props_id + }); + + if (!isDsfrLoaded) { + return null; + } + + return ( +
+ +
+ ); + } + ) + ); +}; diff --git a/stories/Chart.stories.tsx b/stories/Chart.stories.tsx new file mode 100644 index 000000000..ebe5046be --- /dev/null +++ b/stories/Chart.stories.tsx @@ -0,0 +1,25 @@ +import { BarChart, type BarChartProps } from "../dist/Chart/BarChart"; +import { sectionName } from "./sectionName"; +import { getStoryFactory, logCallbacks } from "./getStory"; +import { assert } from "tsafe/assert"; +import type { Equals } from "tsafe"; + +const { meta, getStory } = getStoryFactory({ + sectionName, + "wrappedComponent": { BarChart }, + "description": ` +- [See DSFR documentation](https://www.systeme-de-design.gouv.fr/composants-et-modeles/composants-beta/graphiques-charts/) +- [See source code](https://github.com/codegouvfr/react-dsfr/blob/main/src/Chart/BarChart.tsx)`, + "argTypes": {}, + "disabledProps": ["lang"] +}); + +export default meta; + +export const Default = getStory({ + "x": [["Serie 1", "Serie 2"]], + "y": [ + [1, 2, 3], + [2, 3, 4] + ] +}); diff --git a/yarn.lock b/yarn.lock index 0361a8bdc..c14d4f981 100644 --- a/yarn.lock +++ b/yarn.lock @@ -279,11 +279,21 @@ resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz#38d3acb654b4701a9b77fb0615a96f775c3a9e63" integrity sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw== +"@babel/helper-string-parser@^7.24.8": + version "7.24.8" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz#5b3329c9a58803d5df425e5785865881a81ca48d" + integrity sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ== + "@babel/helper-validator-identifier@^7.18.6", "@babel/helper-validator-identifier@^7.19.1": version "7.19.1" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz#7eea834cf32901ffdc1a7ee555e2f9c27e249ca2" integrity sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w== +"@babel/helper-validator-identifier@^7.24.7": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz#75b889cfaf9e35c2aaf42cf0d72c8e91719251db" + integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w== + "@babel/helper-validator-option@^7.18.6": version "7.18.6" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz#bf0d2b5a509b1f336099e4ff36e1a63aa5db4db8" @@ -322,6 +332,13 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.20.5.tgz#7f3c7335fe417665d929f34ae5dceae4c04015e8" integrity sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA== +"@babel/parser@^7.23.5": + version "7.25.6" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.25.6.tgz#85660c5ef388cbbf6e3d2a694ee97a38f18afe2f" + integrity sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q== + dependencies: + "@babel/types" "^7.25.6" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": version "7.18.6" 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.18.6.tgz#da5b8f9a580acdfbe53494dba45ea389fb09a4d2" @@ -1137,6 +1154,15 @@ "@babel/helper-validator-identifier" "^7.19.1" to-fast-properties "^2.0.0" +"@babel/types@^7.25.6": + version "7.25.6" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.25.6.tgz#893942ddb858f32ae7a004ec9d3a76b3463ef8e6" + integrity sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw== + dependencies: + "@babel/helper-string-parser" "^7.24.8" + "@babel/helper-validator-identifier" "^7.24.7" + to-fast-properties "^2.0.0" + "@base2/pretty-print-object@1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@base2/pretty-print-object/-/pretty-print-object-1.0.1.tgz#371ba8be66d556812dc7fb169ebc3c08378f69d4" @@ -1414,6 +1440,25 @@ resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== +"@gouvfr/dsfr-chart@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@gouvfr/dsfr-chart/-/dsfr-chart-1.0.0.tgz#99a73e4ec13fbda6e03d410eb9d4c12878b46f68" + integrity sha512-VzzLHNpGnjEVZHKq0F+KFlIuAEwz5x5PMBT44IFTKkY9iXqnderfMsZYlQBwdy+q1ReQumhEfUFXSnMzyEro+A== + dependencies: + chart.js "^2.9.4" + chartjs-plugin-annotation "^0.5.7" + chroma "^0.0.1" + chroma-js "2.1.2" + core-js "^3.6.5" + d3-scale "^4.0.2" + mobile-device-detect "^0.4.3" + patternomaly "^1.3.2" + sass "^1.32.5" + sass-loader "^10.1.1" + vue "^2.7.11" + vue-custom-element "^3.2.14" + vuex "^3.6.0" + "@gouvfr/dsfr@1.12.1": version "1.12.1" resolved "https://registry.yarnpkg.com/@gouvfr/dsfr/-/dsfr-1.12.1.tgz#c25df1df5d3bacc4b847a1856c1d7f22219304a8" @@ -3411,6 +3456,17 @@ "@typescript-eslint/types" "5.46.1" eslint-visitor-keys "^3.3.0" +"@vue/compiler-sfc@2.7.16": + version "2.7.16" + resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz#ff81711a0fac9c68683d8bb00b63f857de77dc83" + integrity sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg== + dependencies: + "@babel/parser" "^7.23.5" + postcss "^8.4.14" + source-map "^0.6.1" + optionalDependencies: + prettier "^1.18.2 || ^2.0.0" + "@webassemblyjs/ast@1.11.1": version "1.11.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" @@ -4864,11 +4920,56 @@ character-reference-invalid@^1.0.0: resolved "https://registry.yarnpkg.com/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz#083329cda0eae272ab3dbbf37e9a382c13af1560" integrity sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg== +chart.js@^2.4.0, chart.js@^2.9.4: + version "2.9.4" + resolved "https://registry.yarnpkg.com/chart.js/-/chart.js-2.9.4.tgz#0827f9563faffb2dc5c06562f8eb10337d5b9684" + integrity sha512-B07aAzxcrikjAPyV+01j7BmOpxtQETxTSlQ26BEYJ+3iUkbNKaOJ/nDbT6JjyqYxseM0ON12COHYdU2cTIjC7A== + dependencies: + chartjs-color "^2.1.0" + moment "^2.10.2" + +chartjs-color-string@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/chartjs-color-string/-/chartjs-color-string-0.6.0.tgz#1df096621c0e70720a64f4135ea171d051402f71" + integrity sha512-TIB5OKn1hPJvO7JcteW4WY/63v6KwEdt6udfnDE9iCAZgy+V4SrbSxoIbTw/xkUIapjEI4ExGtD0+6D3KyFd7A== + dependencies: + color-name "^1.0.0" + +chartjs-color@^2.1.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/chartjs-color/-/chartjs-color-2.4.1.tgz#6118bba202fe1ea79dd7f7c0f9da93467296c3b0" + integrity sha512-haqOg1+Yebys/Ts/9bLo/BqUcONQOdr/hoEr2LLTRl6C5LXctUdHxsCYfvQVg5JIxITrfCNUDr4ntqmQk9+/0w== + dependencies: + chartjs-color-string "^0.6.0" + color-convert "^1.9.3" + +chartjs-plugin-annotation@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/chartjs-plugin-annotation/-/chartjs-plugin-annotation-0.5.7.tgz#1bf0e30199a6a9ff9889ce0f37a1e755a80d10bf" + integrity sha512-tKN5KLc69unyZGTvSdhVQEyAOhVNnSkFCCgefZhO4UaqFfABZGFU/d9p6WM2KB0eXFs/rR3Jayh7dvyASC7K0A== + dependencies: + chart.js "^2.4.0" + check-error@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/check-error/-/check-error-1.0.2.tgz#574d312edd88bb5dd8912e9286dd6c0aed4aac82" integrity sha512-BrgHpW9NURQgzoNyjfq0Wu6VFO6D7IZEmJNdtgNqpzGG8RuNFHt2jQxWlAs4HMe119chBnv+34syEZtc6IhLtA== +"chokidar@>=3.0.0 <4.0.0": + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + chokidar@^2.1.8: version "2.1.8" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" @@ -4913,6 +5014,18 @@ chownr@^2.0.0: resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== +chroma-js@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/chroma-js/-/chroma-js-2.1.2.tgz#1075cb9ae25bcb2017c109394168b5cf3aa500ec" + integrity sha512-ri/ouYDWuxfus3UcaMxC1Tfp3IE9K5iQzxc2hSxbBRVNQFut1UuGAsZmiAf2mOUubzGJwgMSv9lHg+XqLaz1QQ== + dependencies: + cross-env "^6.0.3" + +chroma@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/chroma/-/chroma-0.0.1.tgz#a59132defa72113b9312fa98d2587c67d309f989" + integrity sha512-spXrvnDrn4IKEN/s0G9vri2+GGZhB15bDU22bbPRnOSEnkGgzGVSFoj/2TeRO5PBysOI4bcHor/8wIamocN09A== + chromatic@^6.17.2: version "6.17.2" resolved "https://registry.yarnpkg.com/chromatic/-/chromatic-6.17.2.tgz#ae303ffe38e2852a854aae3f5898dc42945babee" @@ -5066,7 +5179,7 @@ collection-visit@^1.0.0: map-visit "^1.0.0" object-visit "^1.0.0" -color-convert@^1.9.0: +color-convert@^1.9.0, color-convert@^1.9.3: version "1.9.3" resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== @@ -5085,7 +5198,7 @@ color-name@1.1.3: resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== -color-name@~1.1.4: +color-name@^1.0.0, color-name@~1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== @@ -5356,6 +5469,13 @@ create-require@^1.1.0: resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== +cross-env@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-6.0.3.tgz#4256b71e49b3a40637a0ce70768a6ef5c72ae941" + integrity sha512-+KqxF6LCvfhWvADcDPqo64yVIB31gv/jQulX2NGzKS/g3GEVz6/pt4wjHFtFWsHMddebWD/sDthJemzM4MaAag== + dependencies: + cross-spawn "^7.0.0" + cross-spawn@7.0.3, cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" @@ -5463,6 +5583,11 @@ csstype@^3.0.2: resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.1.tgz#841b532c45c758ee546a11d5bd7b7b473c8c30b9" integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw== +csstype@^3.1.0: + version "3.1.3" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== + csstype@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.2.tgz#1d4bf9d572f11c14031f0436e1c10bc1f571f50b" @@ -5480,6 +5605,55 @@ cyclist@^1.0.1: resolved "https://registry.yarnpkg.com/cyclist/-/cyclist-1.0.1.tgz#596e9698fd0c80e12038c2b82d6eb1b35b6224d9" integrity sha512-NJGVKPS81XejHcLhaLJS7plab0fK3slPh11mESeeDq2W4ZI5kUKK/LRRdVDvjJseojbPB7ZwjnyOybg3Igea/A== +"d3-array@2 - 3", "d3-array@2.10.0 - 3": + version "3.2.4" + resolved "https://registry.yarnpkg.com/d3-array/-/d3-array-3.2.4.tgz#15fec33b237f97ac5d7c986dc77da273a8ed0bb5" + integrity sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg== + dependencies: + internmap "1 - 2" + +"d3-color@1 - 3": + version "3.1.0" + resolved "https://registry.yarnpkg.com/d3-color/-/d3-color-3.1.0.tgz#395b2833dfac71507f12ac2f7af23bf819de24e2" + integrity sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA== + +"d3-format@1 - 3": + version "3.1.0" + resolved "https://registry.yarnpkg.com/d3-format/-/d3-format-3.1.0.tgz#9260e23a28ea5cb109e93b21a06e24e2ebd55641" + integrity sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA== + +"d3-interpolate@1.2.0 - 3": + version "3.0.1" + resolved "https://registry.yarnpkg.com/d3-interpolate/-/d3-interpolate-3.0.1.tgz#3c47aa5b32c5b3dfb56ef3fd4342078a632b400d" + integrity sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g== + dependencies: + d3-color "1 - 3" + +d3-scale@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/d3-scale/-/d3-scale-4.0.2.tgz#82b38e8e8ff7080764f8dcec77bd4be393689396" + integrity sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ== + dependencies: + d3-array "2.10.0 - 3" + d3-format "1 - 3" + d3-interpolate "1.2.0 - 3" + d3-time "2.1.1 - 3" + d3-time-format "2 - 4" + +"d3-time-format@2 - 4": + version "4.1.0" + resolved "https://registry.yarnpkg.com/d3-time-format/-/d3-time-format-4.1.0.tgz#7ab5257a5041d11ecb4fe70a5c7d16a195bb408a" + integrity sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg== + dependencies: + d3-time "1 - 3" + +"d3-time@1 - 3", "d3-time@2.1.1 - 3": + version "3.1.0" + resolved "https://registry.yarnpkg.com/d3-time/-/d3-time-3.1.0.tgz#9310db56e992e3c0175e1ef385e545e48a9bb5c7" + integrity sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q== + dependencies: + d3-array "2 - 3" + d@1, d@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/d/-/d-1.0.1.tgz#8698095372d58dbee346ffd0c7093f99f8f9eb5a" @@ -7574,6 +7748,11 @@ ignore@^5.2.0: resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.1.tgz#c2b1f76cb999ede1502f3a226a9310fdfe88d46c" integrity sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA== +immutable@^4.0.0: + version "4.3.7" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.7.tgz#c70145fc90d89fb02021e65c84eb0226e4e5a381" + integrity sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw== + import-fresh@^3.0.0, import-fresh@^3.1.0, import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" @@ -7641,6 +7820,11 @@ internal-slot@^1.0.3: has "^1.0.3" side-channel "^1.0.4" +"internmap@1 - 2": + version "2.0.3" + resolved "https://registry.yarnpkg.com/internmap/-/internmap-2.0.3.tgz#6685f23755e43c524e251d29cbc97248e3061009" + integrity sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg== + interpret@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9" @@ -9108,6 +9292,16 @@ mkdirp@^1.0.3, mkdirp@^1.0.4: resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== +mobile-device-detect@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/mobile-device-detect/-/mobile-device-detect-0.4.3.tgz#05d73b4bde7ccb5beda1c4bd0ea0986ce30b1f3f" + integrity sha512-SN9EBE9SoJgkb83kuUVoIp3R9OGYE5dYEnLEz2oLooh0DzgtQ72BJmpNGqrgFvmfE4iLR2CaVJ3RjUcStheVZg== + +moment@^2.10.2: + version "2.30.1" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.30.1.tgz#f8c91c07b7a786e30c59926df530b4eac96974ae" + integrity sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how== + move-concurrently@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" @@ -9150,6 +9344,11 @@ nanoid@^3.3.1, nanoid@^3.3.4: resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab" integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw== +nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -9868,6 +10067,11 @@ pathval@^1.1.1: resolved "https://registry.yarnpkg.com/pathval/-/pathval-1.1.1.tgz#8534e77a77ce7ac5a2512ea21e0fdb8fcf6c3d8d" integrity sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ== +patternomaly@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/patternomaly/-/patternomaly-1.3.2.tgz#70b8db17d7318ab1471cc43f94011bb866c54d09" + integrity sha512-70UhA5+ZrnNgdfDBKXIGbMHpP+naTzfx9vPT4KwIdhtWWs0x6FWZRJQMXXhV2jcK0mxl28FA/2LPAKArNG058Q== + pbkdf2@^3.0.3: version "3.1.2" resolved "https://registry.yarnpkg.com/pbkdf2/-/pbkdf2-3.1.2.tgz#dd822aa0887580e52f1a039dc3eda108efae3075" @@ -9889,6 +10093,11 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== +picocolors@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.0.tgz#5358b76a78cde483ba5cef6a9dc9671440b27d59" + integrity sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw== + picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.0, picomatch@^2.3.1: version "2.3.1" resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" @@ -10096,6 +10305,15 @@ postcss@^8.2.15, postcss@^8.4.18: picocolors "^1.0.0" source-map-js "^1.0.2" +postcss@^8.4.14: + version "8.4.45" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.45.tgz#538d13d89a16ef71edbf75d895284ae06b79e603" + integrity sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q== + dependencies: + nanoid "^3.3.7" + picocolors "^1.0.1" + source-map-js "^1.2.0" + powerhooks@^0.22.0: version "0.22.0" resolved "https://registry.yarnpkg.com/powerhooks/-/powerhooks-0.22.0.tgz#501cbdd28fd5427dd54e1796cd1089a02a101543" @@ -10121,6 +10339,11 @@ prelude-ls@~1.1.2: resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.3.0.tgz#b6a5bf1284026ae640f17f7ff5658a7567fc0d18" integrity sha512-kXtO4s0Lz/DW/IJ9QdWhAf7/NmPWQXkFr/r/WkR3vyI+0v8amTDxiaQSLzs8NBlytfLWX/7uQUMIW677yLKl4w== +"prettier@^1.18.2 || ^2.0.0": + version "2.8.8" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== + prettier@^2.3.0: version "2.8.1" resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.1.tgz#4e1fd11c34e2421bc1da9aea9bd8127cd0a35efc" @@ -10962,6 +11185,26 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" +sass-loader@^10.1.1: + version "10.5.2" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-10.5.2.tgz#1ca30534fff296417b853c7597ca3b0bbe8c37d0" + integrity sha512-vMUoSNOUKJILHpcNCCyD23X34gve1TS7Rjd9uXHeKqhvBG39x6XbswFDtpbTElj6XdMFezoWhkh5vtKudf2cgQ== + dependencies: + klona "^2.0.4" + loader-utils "^2.0.0" + neo-async "^2.6.2" + schema-utils "^3.0.0" + semver "^7.3.2" + +sass@^1.32.5: + version "1.78.0" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.78.0.tgz#cef369b2f9dc21ea1d2cf22c979f52365da60841" + integrity sha512-AaIqGSrjo5lA2Yg7RvFZrlXDBCp3nV4XP73GrLGvdRWWwk+8H3l0SDvq/5bA4eF+0RFPLuWUk3E+P1U/YqnpsQ== + dependencies: + chokidar ">=3.0.0 <4.0.0" + immutable "^4.0.0" + source-map-js ">=0.6.2 <2.0.0" + scheduler@^0.23.0: version "0.23.0" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.23.0.tgz#ba8041afc3d30eb206a487b6b384002e4e61fdfe" @@ -11292,6 +11535,11 @@ source-list-map@^2.0.0: resolved "https://registry.yarnpkg.com/source-list-map/-/source-list-map-2.0.1.tgz#3993bd873bfc48479cca9ea3a547835c7c154b34" integrity sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw== +"source-map-js@>=0.6.2 <2.0.0", 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-js@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" @@ -12519,6 +12767,24 @@ vm-browserify@^1.0.1: resolved "https://registry.yarnpkg.com/vm-browserify/-/vm-browserify-1.1.2.tgz#78641c488b8e6ca91a75f511e7a3b32a86e5dda0" integrity sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ== +vue-custom-element@^3.2.14: + version "3.3.0" + resolved "https://registry.yarnpkg.com/vue-custom-element/-/vue-custom-element-3.3.0.tgz#c20bb6108a16d1f7df3c550125551bf53d0e5a75" + integrity sha512-ePuy1EDDJd9/piwXLwsCyMQ964HsdhXPzypM9OX0r4JBa20EVN28U7RXeTWwXkoFKim/b3sP7xT2NEM0Di6tUQ== + +vue@^2.7.11: + version "2.7.16" + resolved "https://registry.yarnpkg.com/vue/-/vue-2.7.16.tgz#98c60de9def99c0e3da8dae59b304ead43b967c9" + integrity sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw== + dependencies: + "@vue/compiler-sfc" "2.7.16" + csstype "^3.1.0" + +vuex@^3.6.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/vuex/-/vuex-3.6.2.tgz#236bc086a870c3ae79946f107f16de59d5895e71" + integrity sha512-ETW44IqCgBpVomy520DT5jf8n0zoCac+sxWnn+hMe/CzaSejb/eVw2YToiXYX+Ex/AuHHia28vWTq4goAexFbw== + walker@^1.0.7, walker@~1.0.5: version "1.0.8" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f"