From 76e910c47a0603b0c20a8e448dac72ff86a94928 Mon Sep 17 00:00:00 2001
From: liliana <liliana.sanfilippo@uni-bielefeld.de>
Date: Mon, 8 Jul 2024 16:01:07 +0200
Subject: [PATCH] troublwshooting filter

---
 package.json              |   2 +
 src/App/App.css           |  15 ++-
 src/components/Filter.tsx | 173 +++++++++++++++++++++++++++++++++
 src/contents/wiki.tsx     | 158 +++++++++++++++++-------------
 yarn.lock                 | 199 +++++++++++++++++++++++++++++++++++++-
 5 files changed, 476 insertions(+), 71 deletions(-)
 create mode 100644 src/components/Filter.tsx

diff --git a/package.json b/package.json
index bdbc3a3f..13626b12 100644
--- a/package.json
+++ b/package.json
@@ -16,11 +16,13 @@
     "@mui/lab": "^5.0.0-alpha.171",
     "@mui/material": "^5.16.0",
     "@popperjs/core": "^2.11.8",
+    "@refinedev/core": "^4.53.0",
     "aos": "^2.3.4",
     "bootstrap": "^5.3.3",
     "d3": "^7.9.0",
     "dangerously-set-html-content": "^1.1.0",
     "dompurify": "^3.1.5",
+    "framer-motion": "^11.2.13",
     "gsap": "^3.12.5",
     "react": "^18.2.0",
     "react-bootstrap": "^2.10.2",
diff --git a/src/App/App.css b/src/App/App.css
index b0231ab4..a6a581b8 100644
--- a/src/App/App.css
+++ b/src/App/App.css
@@ -1780,4 +1780,17 @@ html[dir=rtl] .hint-container.danger .hint-container-title:before {
       }
       .datawrapper-llngz-mbp9a6 path.region-outline.has-data:hover, .datawrapper-llngz-mbp9a6 path.region-outline.hover-outline, .datawrapper-llngz-mbp9a6 path.region-outline.sticky {
         stroke: rgb(0, 0, 0);
-      }
\ No newline at end of file
+      }
+
+      /* FILTER */
+      .filterable {
+        margin-bottom: 4px;
+        display: none;
+      }
+      .show {
+        display: block;
+      }
+      .noshow{
+        display: none;
+      }
+      
\ No newline at end of file
diff --git a/src/components/Filter.tsx b/src/components/Filter.tsx
new file mode 100644
index 00000000..1ffe3b1a
--- /dev/null
+++ b/src/components/Filter.tsx
@@ -0,0 +1,173 @@
+
+import Select, { InputActionMeta } from 'react-select';
+import React from 'react';
+
+const options2 =[
+  { id: 1, 
+    title: "Module Z has already exported a member named A. Consider explicitly re-exporting to resolve the ambiguity.",
+    solution: "Simply rename the function in one of the modules or consider making it a component if you plan on using it frequently.",
+    exampleDoc: "index.tsx:",
+    exampleError: [
+      " Module './Bfh.tsx' has already exported a member named 'LabTabs'. ",
+      "Consider explicitly re-exporting to resolve the ambiguity."
+    ],
+    exampleExplanation: "",
+    labels: "label1|label2"
+  }
+]
+
+interface Props {
+  value: string,
+  label: string
+}
+const options =[
+  {value: "all", label: "Everything"},
+  {value: "react", label: "React"},
+  {value: "type", label: "Types"},
+  {value: "property", label: "Properties"},
+  {value: "pipeline", label: "GitLab Pipeline"},
+  {value: "html", label: "HTML"},
+  {value: "css", label: "CSS"},
+  
+]
+
+/* function filterMultiSelection(arr: Array<Props>){
+  var x: string | any[] | HTMLCollectionOf<Element>, i;
+  x = document.getElementsByClassName("filterable");
+  let label = ""; 
+  arr.forEach((entry) => {
+    label = label  + entry.label + " "
+  })
+  if (label == "all" || label =="all ") label = "";
+    for (i = 0; i < x.length; i++) {
+      let el = x[i]; 
+      w3RemoveClass(el, "show");
+      if (x[i].className.indexOf(label) > -1) w3AddClass(x[i], "show");
+    }
+} */
+  /*   function filterMultiSelection(arr: Array<Props>){
+      var x: string | any[] | HTMLCollectionOf<Element>, i;
+      x = document.getElementsByClassName("filterable");
+      for (i = 0; i < x.length; i++) {
+        let el = x[i]; 
+        w3RemoveClass(el, "show");
+      }
+      
+      arr.forEach((entry) => {
+        for (i = 0; i < x.length; i++) {
+          console.log("Label: " + entry.value)
+          if (x[i].className.indexOf(entry.value) > -1) w3AddClass(x[i], "show");
+        }
+      })
+    } */
+
+      /*  */
+
+      function filterMultiSelection(arr: Array<Props>){
+        let nono = document.getElementById("nono");
+        nono!.className = "noshow"; 
+        var x: string | any[] | HTMLCollectionOf<Element>, i: number;
+        x = document.getElementsByClassName("filterable");
+        for (i = 0; i < x.length; i++) {
+          let el = x[i]; 
+          w3RemoveClass(el, "show");
+        }
+        let shownum = 0; 
+        let boo = true;
+        for (i = 0; i < x.length; i++) {
+          
+          arr.forEach((entry) => {
+             if (x[i].className.indexOf(entry.value) <= -1){
+              boo = false; 
+             }
+             else{
+                if (!x[i].classList.contains(entry.value)){
+                  boo = false; 
+                }
+             }
+          }) 
+          if (boo){
+            w3AddClass(x[i], "show");
+            shownum++; 
+          }
+        }
+        let y = document.getElementsByClassName("show").length;
+        if (y < 1){
+            console.log(y)
+            nono!.className = "show"; 
+        }
+      }
+
+function filterSelection(label: string) {
+  var x, i;
+  x = document.getElementsByClassName("filterable");
+  if (label == "all") label = "";
+  for (i = 0; i < x.length; i++) {
+    let el = x[i]; 
+    w3RemoveClass(el, "show");
+    if (x[i].className.indexOf(label) > -1) w3AddClass(x[i], "show");
+  }
+}
+  
+function w3AddClass(element: Element, name: string) {
+  var i, arr1, arr2;
+  arr1 = element.className.split(" ");
+  arr2 = name.split(" ");
+  for (i = 0; i < arr2.length; i++) {
+    if (arr1.indexOf(arr2[i]) == -1) {element.className += " " + arr2[i];}
+  }
+}
+
+function w3RemoveClass(element: Element, name: string) {
+  var i, arr1, arr2;
+  arr1 = element.className.split(" ");
+  arr2 = name.split(" ");
+  for (i = 0; i < arr2.length; i++) {
+    while (arr1.indexOf(arr2[i]) > -1) {
+      arr1.splice(arr1.indexOf(arr2[i]), 1);     
+    }
+  }
+  element.className = arr1.join(" ");
+}
+
+
+export function Selector(){
+  return(
+    <div>
+      <Action></Action>
+    </div>
+  )
+}
+
+class Action extends React.Component {
+  state = {
+    selectedOption: null,
+  };
+  handleChange = (selectedOption: any) => {
+  	
+  	this.setState({ selectedOption }, () =>
+  	console.log(`Option selected:`, this.state.selectedOption)
+   	
+    );
+    	filterMultiSelection(selectedOption)
+  };
+  render() {
+    const { selectedOption } = this.state;
+
+    return (
+      <Select
+        value={selectedOption}
+        onChange={this.handleChange}
+        isMulti
+        options={options}
+        defaultValue={[options[0]]}
+        className="basic-multi-select"
+        classNamePrefix="select"
+      />
+    );
+  }
+}
+
+/* Type '(selectedOption: Props | null) => void' is not assignable to type '(newValue: MultiValue<{ value: string; label: string; } | null>, actionMeta: ActionMeta<{ value: string; label: string; } | null>) => void'.
+  Types of parameters 'selectedOption' and 'newValue' are incompatible.
+    Type 'readonly ({ value: string; label: string; } | null)[]' is missing the following properties from type 'Props': value, label */
\ No newline at end of file
diff --git a/src/contents/wiki.tsx b/src/contents/wiki.tsx
index 09a9b3d9..27c7bd31 100644
--- a/src/contents/wiki.tsx
+++ b/src/contents/wiki.tsx
@@ -164,78 +164,100 @@ function Started(){
   )
 } 
 
+
+
+import { Selector } from "../components/Filter";
 function Troubleshooting(){
+  
   return(
     <div>
-      <h3>React</h3>
-      <h4>Types and properties</h4>
-      <Collapsible title="Argument of type X is not assignable to parameter of type Y.">
-      <h6>Example</h6>
-      <h6>Solutions</h6>
-      </Collapsible>
-      <Collapsible title="Type X is not assignable to type Y.">
-      <h6>Example</h6>
-      <h6>Solutions</h6>
-      </Collapsible>
-      <Collapsible title="Property x is missing in type y but required in type z.">
-      <h6>Example</h6>
-      <h6>Solutions</h6>
-      </Collapsible>
-      <Collapsible title="Property x does not exist on type Y.">
-      <h6>Example</h6>
-      <h6>Solutions</h6>
-      </Collapsible>
-      <Collapsible title="Type X is missing the following properties from type Y: a, b, c">
-      <h6>Example</h6>
-      <h6>Solutions</h6>
-      </Collapsible>
-      <Collapsible title="Type 'x | undefined' is not assignable to type 'x'.">
-      <h6>Example</h6>
-      <h6>Solutions</h6>
-      </Collapsible>
-      <Collapsible title="Type 'undefined' cannot be used as an index type">
-      <h6>Example</h6>
-      <h6>Solutions</h6>
-      </Collapsible>
-
-      <h4>Overloads</h4>
-      <Collapsible title="No overload matches this call.">
-      <h6>Example</h6>
-      <h6>Solutions</h6>
-      </Collapsible>
-
-      <h4>Other</h4>
-      <Collapsible title="Module Z has already exported a member named A. Consider explicitly re-exporting to resolve the ambiguity.">
-      <h6>Example</h6>
-      index.tsx: 
-      <p className="error"> Module "./Bfh.tsx" has already exported a member named 'LabTabs'. Consider explicitly re-exporting to resolve the ambiguity.</p>
-      <h6>Solutions</h6>
-      Simply rename the function in one of the modules or consider making it a component if you plan on using it frequently.  
-      </Collapsible>
-
-      <h4>Failed Pipelines</h4>
-      <Collapsible title="error TS6133: 'event' is declared but its value is never read.">
+      Please select what you want to troubleshoot for. 
+      <Selector></Selector>
+      <div id="nono" className="noshow">
+        This combination returns no instances. 
+      </div>
+      <div className="filterable all react type property">
+        <Collapsible title="Argument of type X is not assignable to parameter of type Y.">
         <h6>Example</h6>
-        HorizontalTimeline.tsx: 
-        <div className="error">
-          $ yarn build
-          <p>yarn run v1.22.19</p>
-          <p>$ tsc && vite build</p>
-          <p>src/components/HorizontalTimeline.tsx(67,23): error TS6133: 'event' is declared but its value is never read.
-          error Command failed with exit code 2.</p>
-          <p>info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.</p>
-          </div>
-        <p>in</p>
-        <code>
-        const openPop =  (event : React.MouseEvent&lt;HTMLButtonElement, MouseEvent&gt;) =&gt; {}
-        </code>
         <h6>Solutions</h6>
-        <p>Change to: </p>
-        <code>
-        const openPop =  (_event : React.MouseEvent&lt;HTMLButtonElement, MouseEvent&gt;) =&gt; {}
-        </code>
-      </Collapsible>
-      
+        </Collapsible>
+      </div>
+      <div className="filterable all react type"> 
+        <Collapsible title="Type X is not assignable to type Y.">
+        <h6>Example</h6>
+        <h6>Solutions</h6>
+        </Collapsible>
+      </div>
+      <div className="filterable all  react type property">
+        <Collapsible title="Property x is missing in type y but required in type z.">
+        <h6>Example</h6>
+        <h6>Solutions</h6>
+        </Collapsible>
+      </div>
+      <div className="filterable all react type property">
+        <Collapsible title="Property x does not exist on type Y.">
+        <h6>Example</h6>
+        <h6>Solutions</h6>
+        </Collapsible>
+      </div>
+      <div className="filterable all react type property">
+        <Collapsible title="Type X is missing the following properties from type Y: a, b, c">
+        <h6>Example</h6>
+        <h6>Solutions</h6>
+        </Collapsible>
+      </div>
+      <div className="filterable all react type">
+        <Collapsible title="Type 'x | undefined' is not assignable to type 'x'.">
+        <h6>Example</h6>
+        <h6>Solutions</h6>
+        </Collapsible>
+      </div>
+      <div className="filterable all react type">
+        <Collapsible title="Type 'undefined' cannot be used as an index type">
+        <h6>Example</h6>
+        <h6>Solutions</h6>
+        </Collapsible>
+      </div>
+      <div className="filterable all react overload">
+        <Collapsible title="No overload matches this call.">
+        <h6>Example</h6>
+        <h6>Solutions</h6>
+        </Collapsible>
+      </div>
+      <div className="filterable all react module">
+        <Collapsible title="Module Z has already exported a member named A. Consider explicitly re-exporting to resolve the ambiguity.">
+        <h6>Example</h6>
+        index.tsx: 
+        <p className="error"> Module "./Bfh.tsx" has already exported a member named 'LabTabs'. Consider explicitly re-exporting to resolve the ambiguity.</p>
+        <h6>Solutions</h6>
+        Simply rename the function in one of the modules or consider making it a component if you plan on using it frequently.  
+        </Collapsible>
+      </div>
+      <div className="filterable all pipeline">
+        <Collapsible title="error TS6133: 'event' is declared but its value is never read.">
+          <h6>Example</h6>
+          HorizontalTimeline.tsx: 
+          <div className="error">
+            $ yarn build
+            <p>yarn run v1.22.19</p>
+            <p>$ tsc && vite build</p>
+            <p>src/components/HorizontalTimeline.tsx(67,23): error TS6133: 'event' is declared but its value is never read.
+            error Command failed with exit code 2.</p>
+            <p>info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.</p>
+            </div>
+          <p>in</p>
+          <code>
+          const openPop =  (event : React.MouseEvent&lt;HTMLButtonElement, MouseEvent&gt;) =&gt; {}
+          </code>
+          <h6>Solutions</h6>
+          <p>Change to: </p>
+          <code>
+          const openPop =  (_event : React.MouseEvent&lt;HTMLButtonElement, MouseEvent&gt;) =&gt; {}
+          </code>
+        </Collapsible>
+      </div>
     </div>
   )
-} 
\ No newline at end of file
+} 
+
+
diff --git a/yarn.lock b/yarn.lock
index 9f0dca6c..7da7612c 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -720,6 +720,38 @@
   dependencies:
     "@swc/helpers" "^0.5.0"
 
+"@refinedev/core@^4.53.0":
+  version "4.53.0"
+  resolved "https://registry.yarnpkg.com/@refinedev/core/-/core-4.53.0.tgz#c9a3923a2caeffede15cd7d4e267bff9879bef66"
+  integrity sha512-Q6qtXWIxNmDCtmbBmyKGEI5S4srR7zlCsR0grYikwnjzUOa/1u9d7kJdmxqCuukmKkDeYkOmVEsanMoGVNPoZA==
+  dependencies:
+    "@refinedev/devtools-internal" "1.1.13"
+    "@tanstack/react-query" "^4.10.1"
+    lodash "^4.17.21"
+    lodash-es "^4.17.21"
+    papaparse "^5.3.0"
+    pluralize "^8.0.0"
+    qs "^6.10.1"
+    tslib "^2.6.2"
+    warn-once "^0.1.0"
+
+"@refinedev/devtools-internal@1.1.13":
+  version "1.1.13"
+  resolved "https://registry.yarnpkg.com/@refinedev/devtools-internal/-/devtools-internal-1.1.13.tgz#071af97f744bc48299c7235864de9651927c9779"
+  integrity sha512-abTS5Qfndvy57DGmf25Igog1yeLhkNlQiDTRiMw70H2iMZaZqTk+x7BaBNO1659Q+cpHrKRbsjRP/yc9mSA6RQ==
+  dependencies:
+    "@refinedev/devtools-shared" "1.1.11"
+    "@tanstack/react-query" "^4.10.1"
+    error-stack-parser "^2.1.4"
+
+"@refinedev/devtools-shared@1.1.11":
+  version "1.1.11"
+  resolved "https://registry.yarnpkg.com/@refinedev/devtools-shared/-/devtools-shared-1.1.11.tgz#b560aa4facdac92e0dd4a8c58cc0a03a4fd7964a"
+  integrity sha512-C3v3hnJT5J0d4Uex8DapdpWaVYdUuOovEL/oeQLd4kW2N6ImQCFBYGMfwvi4mDCdorQzGyWSJHmFcfV8EEF+Hg==
+  dependencies:
+    "@tanstack/react-query" "^4.10.1"
+    error-stack-parser "^2.1.4"
+
 "@remix-run/router@1.16.0":
   version "1.16.0"
   resolved "https://registry.npmjs.org/@remix-run/router/-/router-1.16.0.tgz"
@@ -834,6 +866,19 @@
   dependencies:
     tslib "^2.4.0"
 
+"@tanstack/query-core@4.36.1":
+  version "4.36.1"
+  resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-4.36.1.tgz#79f8c1a539d47c83104210be2388813a7af2e524"
+  integrity sha512-DJSilV5+ytBP1FbFcEJovv4rnnm/CokuVvrBEtW/Va9DvuJ3HksbXUJEpI0aV1KtuL4ZoO9AVE6PyNLzF7tLeA==
+
+"@tanstack/react-query@^4.10.1":
+  version "4.36.1"
+  resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-4.36.1.tgz#acb589fab4085060e2e78013164868c9c785e5d2"
+  integrity sha512-y7ySVHFyyQblPl3J3eQBWpXZkliroki3ARnBKsdJchlgt7yJLRDUcf4B8soufgiYt3pEQIkBWBx1N9/ZPIeUWw==
+  dependencies:
+    "@tanstack/query-core" "4.36.1"
+    use-sync-external-store "^1.2.0"
+
 "@types/aos@^3.0.7":
   version "3.0.7"
   resolved "https://registry.npmjs.org/@types/aos/-/aos-3.0.7.tgz"
@@ -1414,6 +1459,17 @@ browserslist@^4.22.2:
     node-releases "^2.0.14"
     update-browserslist-db "^1.0.13"
 
+call-bind@^1.0.7:
+  version "1.0.7"
+  resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9"
+  integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==
+  dependencies:
+    es-define-property "^1.0.0"
+    es-errors "^1.3.0"
+    function-bind "^1.1.2"
+    get-intrinsic "^1.2.4"
+    set-function-length "^1.2.1"
+
 callsites@^3.0.0:
   version "3.1.0"
   resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz"
@@ -1855,6 +1911,15 @@ deep-is@^0.1.3:
   resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz"
   integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
 
+define-data-property@^1.1.4:
+  version "1.1.4"
+  resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e"
+  integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==
+  dependencies:
+    es-define-property "^1.0.0"
+    es-errors "^1.3.0"
+    gopd "^1.0.1"
+
 delaunator@5:
   version "5.0.1"
   resolved "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz"
@@ -1921,6 +1986,25 @@ error-ex@^1.3.1:
   dependencies:
     is-arrayish "^0.2.1"
 
+error-stack-parser@^2.1.4:
+  version "2.1.4"
+  resolved "https://registry.yarnpkg.com/error-stack-parser/-/error-stack-parser-2.1.4.tgz#229cb01cdbfa84440bfa91876285b94680188286"
+  integrity sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==
+  dependencies:
+    stackframe "^1.3.4"
+
+es-define-property@^1.0.0:
+  version "1.0.0"
+  resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845"
+  integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==
+  dependencies:
+    get-intrinsic "^1.2.4"
+
+es-errors@^1.3.0:
+  version "1.3.0"
+  resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f"
+  integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
+
 esbuild@^0.20.1:
   version "0.20.2"
   resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.20.2.tgz"
@@ -2139,6 +2223,13 @@ flatted@^3.2.9:
   resolved "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz"
   integrity sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==
 
+framer-motion@^11.2.13:
+  version "11.2.13"
+  resolved "https://registry.yarnpkg.com/framer-motion/-/framer-motion-11.2.13.tgz#ab23fbc386233b1a1548757d840190054e5e1f1d"
+  integrity sha512-AyIeegfkXlkX1lWEudRYsJlC+0A59cE8oFK9IsN9bUQzxLwcvN3AEaYaznkELiWlHC7a0eD7pxsYQo7BC05S5A==
+  dependencies:
+    tslib "^2.4.0"
+
 fs-minipass@^2.0.0:
   version "2.1.0"
   resolved "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz"
@@ -2181,6 +2272,17 @@ gensync@^1.0.0-beta.2:
   resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz"
   integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
 
+get-intrinsic@^1.1.3, get-intrinsic@^1.2.4:
+  version "1.2.4"
+  resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd"
+  integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==
+  dependencies:
+    es-errors "^1.3.0"
+    function-bind "^1.1.2"
+    has-proto "^1.0.1"
+    has-symbols "^1.0.3"
+    hasown "^2.0.0"
+
 glob-parent@^5.1.2, glob-parent@~5.1.2:
   version "5.1.2"
   resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz"
@@ -2231,6 +2333,13 @@ globby@^11.1.0:
     merge2 "^1.4.1"
     slash "^3.0.0"
 
+gopd@^1.0.1:
+  version "1.0.1"
+  resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.0.1.tgz#29ff76de69dac7489b7c0918a5788e56477c332c"
+  integrity sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==
+  dependencies:
+    get-intrinsic "^1.1.3"
+
 graphemer@^1.4.0:
   version "1.4.0"
   resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz"
@@ -2251,12 +2360,29 @@ has-flag@^4.0.0:
   resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz"
   integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
 
+has-property-descriptors@^1.0.2:
+  version "1.0.2"
+  resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854"
+  integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==
+  dependencies:
+    es-define-property "^1.0.0"
+
+has-proto@^1.0.1:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.3.tgz#b31ddfe9b0e6e9914536a6ab286426d0214f77fd"
+  integrity sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==
+
+has-symbols@^1.0.3:
+  version "1.0.3"
+  resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
+  integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
+
 has-unicode@^2.0.1:
   version "2.0.1"
   resolved "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz"
   integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==
 
-hasown@^2.0.2:
+hasown@^2.0.0, hasown@^2.0.2:
   version "2.0.2"
   resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz"
   integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
@@ -2453,6 +2579,11 @@ locate-path@^6.0.0:
   dependencies:
     p-locate "^5.0.0"
 
+lodash-es@^4.17.21:
+  version "4.17.21"
+  resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee"
+  integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==
+
 lodash.debounce@^4.0.6:
   version "4.0.8"
   resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz"
@@ -2468,6 +2599,11 @@ lodash.throttle@^4.0.1:
   resolved "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz"
   integrity sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==
 
+lodash@^4.17.21:
+  version "4.17.21"
+  resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
+  integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
+
 loose-envify@^1.0.0, loose-envify@^1.1.0, loose-envify@^1.4.0:
   version "1.4.0"
   resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz"
@@ -2632,6 +2768,11 @@ object-assign@^4.1.1:
   resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz"
   integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
 
+object-inspect@^1.13.1:
+  version "1.13.2"
+  resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.2.tgz#dea0088467fb991e67af4058147a24824a3043ff"
+  integrity sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==
+
 once@^1.3.0, once@^1.3.1:
   version "1.4.0"
   resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz"
@@ -2665,6 +2806,11 @@ p-locate@^5.0.0:
   dependencies:
     p-limit "^3.0.2"
 
+papaparse@^5.3.0:
+  version "5.4.1"
+  resolved "https://registry.yarnpkg.com/papaparse/-/papaparse-5.4.1.tgz#f45c0f871853578bd3a30f92d96fdcfb6ebea127"
+  integrity sha512-HipMsgJkZu8br23pW15uvo6sib6wne/4woLZPlFf3rpDyMe9ywEXUsuD7+6K9PRkJlVT51j/sCOYDKGGS3ZJrw==
+
 parent-module@^1.0.0:
   version "1.0.1"
   resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz"
@@ -2730,6 +2876,11 @@ picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1:
   resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz"
   integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
 
+pluralize@^8.0.0:
+  version "8.0.0"
+  resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1"
+  integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==
+
 postcss@^8.4.38:
   version "8.4.38"
   resolved "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz"
@@ -2771,6 +2922,13 @@ punycode@^2.1.0:
   resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz"
   integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==
 
+qs@^6.10.1:
+  version "6.12.2"
+  resolved "https://registry.yarnpkg.com/qs/-/qs-6.12.2.tgz#5443b587f3bf73ac68968de491e5b25bafe04478"
+  integrity sha512-x+NLUpx9SYrcwXtX7ob1gnkSems4i/mGZX5SlYxwIau6RrUSODO89TR/XDGGpn5RPWSYIB+aSfuSlV5+CmbTBg==
+  dependencies:
+    side-channel "^1.0.6"
+
 queue-microtask@^1.2.2:
   version "1.2.3"
   resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz"
@@ -3027,6 +3185,18 @@ set-blocking@^2.0.0:
   resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz"
   integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==
 
+set-function-length@^1.2.1:
+  version "1.2.2"
+  resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449"
+  integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==
+  dependencies:
+    define-data-property "^1.1.4"
+    es-errors "^1.3.0"
+    function-bind "^1.1.2"
+    get-intrinsic "^1.2.4"
+    gopd "^1.0.1"
+    has-property-descriptors "^1.0.2"
+
 shebang-command@^2.0.0:
   version "2.0.0"
   resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz"
@@ -3039,6 +3209,16 @@ shebang-regex@^3.0.0:
   resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz"
   integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
 
+side-channel@^1.0.6:
+  version "1.0.6"
+  resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2"
+  integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==
+  dependencies:
+    call-bind "^1.0.7"
+    es-errors "^1.3.0"
+    get-intrinsic "^1.2.4"
+    object-inspect "^1.13.1"
+
 signal-exit@^3.0.0:
   version "3.0.7"
   resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz"
@@ -3073,6 +3253,11 @@ source-map@^0.5.7:
   resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz"
   integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==
 
+stackframe@^1.3.4:
+  version "1.3.4"
+  resolved "https://registry.yarnpkg.com/stackframe/-/stackframe-1.3.4.tgz#b881a004c8c149a5e8efef37d51b16e412943310"
+  integrity sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==
+
 "string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.2.3:
   version "4.2.3"
   resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
@@ -3174,7 +3359,7 @@ ts-api-utils@^1.3.0:
   resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz"
   integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==
 
-tslib@^2.4.0:
+tslib@^2.4.0, tslib@^2.6.2:
   version "2.6.3"
   resolved "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz"
   integrity sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==
@@ -3236,6 +3421,11 @@ use-isomorphic-layout-effect@^1.1.2:
   resolved "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz"
   integrity sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==
 
+use-sync-external-store@^1.2.0:
+  version "1.2.2"
+  resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz#c3b6390f3a30eba13200d2302dcdf1e7b57b2ef9"
+  integrity sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==
+
 util-deprecate@^1.0.1:
   version "1.0.2"
   resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
@@ -3252,6 +3442,11 @@ vite@^5.2.0:
   optionalDependencies:
     fsevents "~2.3.3"
 
+warn-once@^0.1.0:
+  version "0.1.1"
+  resolved "https://registry.yarnpkg.com/warn-once/-/warn-once-0.1.1.tgz#952088f4fb56896e73fd4e6a3767272a3fccce43"
+  integrity sha512-VkQZJbO8zVImzYFteBXvBOZEl1qL175WH8VmZcxF2fZAoudNhNDvHi+doCaAEdU2l2vtcIwa2zn0QK5+I1HQ3Q==
+
 warning@^4.0.0, warning@^4.0.3:
   version "4.0.3"
   resolved "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz"
-- 
GitLab