diff --git a/client/Database/database.ts b/client/Database/database.ts
index 11f2e200360a82d5a4bf324fbb2236d55ccb9a53..36ca92f398994b64089aca7dfb360d66625f12ef 100644
--- a/client/Database/database.ts
+++ b/client/Database/database.ts
@@ -27,8 +27,6 @@ const firebaseConfig = {
   appId: "1:902143402555:web:29213e81de0a0cba38b21e",
 };
 
-
-
 //Backup databas - ska användas av R&D
 /*  const firebaseConfig = {
    apiKey: "AIzaSyAMfD8V0belL6GxbuoehL__6YTFZH4pyoc",
@@ -50,7 +48,6 @@ const firebaseConfig = {
   measurementId: "G-PFLDQY00DB"
 }; */
 
-
 const app = initializeApp(firebaseConfig);
 export const auth = getAuth();
 export const db = getFirestore(app);
diff --git a/client/KnowledgeBank/Nolans3.ts b/client/KnowledgeBank/Nolans3.ts
index e97bce9a3e114e8ccfc3a7aebdc5f92008caa515..a29e10e536755fdd385d8bc85da7c1496105e655 100644
--- a/client/KnowledgeBank/Nolans3.ts
+++ b/client/KnowledgeBank/Nolans3.ts
@@ -1,28 +1,26 @@
-export function loadPage () {
-    const container = document.querySelector('#container-fluid');
+export function loadPage() {
+  const container = document.querySelector("#container-fluid");
 
+  if (!container) return; // Stop if the container isn't found
 
-    if (!container) return; // Stop if the container isn't found
-    
-    fetch('KnowledgeBank/Nolans3.html')
-            .then(response => response.text())
-            .then(data => {
-                // Create a temporary container element to hold the loaded content
-                const tempContainer = document.createElement('div');
-                tempContainer.innerHTML = data;
+  fetch("KnowledgeBank/Nolans3.html")
+    .then((response) => response.text())
+    .then((data) => {
+      // Create a temporary container element to hold the loaded content
+      const tempContainer = document.createElement("div");
+      tempContainer.innerHTML = data;
 
-                // Select the specific element with the class you want
-                const specificElement = tempContainer.querySelector('.nolans-main-container');
+      // Select the specific element with the class you want
+      const specificElement = tempContainer.querySelector(
+        ".nolans-main-container"
+      );
 
-                if (specificElement) {
-                    // Insert the specific element into the target element
-                    container.insertBefore(specificElement, container.firstChild);
-                }
-                
-            })
-            .catch(error => {
-                console.error('Failed to load the external HTML file:', error);
-            });
-
-
-}
\ No newline at end of file
+      if (specificElement) {
+        // Insert the specific element into the target element
+        container.insertBefore(specificElement, container.firstChild);
+      }
+    })
+    .catch((error) => {
+      console.error("Failed to load the external HTML file:", error);
+    });
+}
diff --git a/client/currentProjects/currentProjects.ts b/client/currentProjects/currentProjects.ts
index 78a8ca2ba647574f2050e09a0a5db5aa0b4252af..aa8e86616bb736df0c083ff59c629b5bd94a8d8a 100644
--- a/client/currentProjects/currentProjects.ts
+++ b/client/currentProjects/currentProjects.ts
@@ -17,9 +17,9 @@ import {
   loadUnits,
   clearContent,
   removeCardsFromDiv,
-} from "../ideaBank/ideaBank.js"
+} from "../ideaBank/ideaBank.js";
 
-import * as projectPage from "../projectPage/projectPage.js";
+import { formatDate } from "../projectPage/projectPage.js";
 
 let projectCards: projectCard[] = [];
 let filteredImprovementWorks: any[] = [];
@@ -32,6 +32,7 @@ class projectCard {
   public id: number;
   public projectId: string;
   public stage: any;
+  public dateStarted: any;
 
   constructor(
     id: number,
@@ -40,7 +41,8 @@ class projectCard {
     title: string,
     description: string,
     projectId: string,
-    currentStage: string
+    currentStage: string,
+    dateStarted: any
   ) {
     this.name = name;
     this.department = department;
@@ -49,6 +51,7 @@ class projectCard {
     this.id = id;
     this.projectId = projectId;
     this.stage = currentStage;
+    this.dateStarted = dateStarted;
   }
 
   showMoreInfo(blockId: string, thisTextId: string): void {
@@ -91,8 +94,8 @@ class projectCard {
 
     // Check if the stage is directly a key in stageImages
     if (!stageImages[stageKey as keyof typeof stageImages]) {
-        // If not, try to map the Swedish stage to English using nolanStageMapping
-        stageKey = nolanStageMapping[stageKey];
+      // If not, try to map the Swedish stage to English using nolanStageMapping
+      stageKey = nolanStageMapping[stageKey];
     }
 
     // Now get the imageUrl using the stageKey
@@ -100,26 +103,40 @@ class projectCard {
 
     return `
     <div class="totalExpandedOngoingWorkCard">
-      <div style="cursor: default;" class="flex-container ongoingCard" id="${this.projectId}">
+      <div style="cursor: default;" class="flex-container ongoingCard" id="${
+        this.projectId
+      }">
         <div class="ongoingCardImageContainer toSinglePage">
           <div class = "flex-box ongoingCardImage toSinglePage" id="pinkFaded"></div>
         </div>
         <div class="div ongoingCardInfo toSinglePage">
           <p class="toSinglePage" id="ongoingCardManager">${this.name}</p>
-          <p class="toSinglePage" id="ongoingCardDepartment">${this.department}</p>
+          <p class="toSinglePage" id="ongoingCardDepartment">${
+            this.department
+          }</p>
           <p class="toSinglePage" id="ongoingCardIdeaTitle">${this.title}</p>
+
+          <p class="toSinglePage" id=ongoingCardStartDate" style="font-size: 12px;">${formatDate(
+            this.dateStarted
+          )}</p>
         </div>
-        <button id="project-button-${this.projectId}" data-project-id="${this.id}" class="projectButton" role="button">Gå till projektsidan</button>
+        <button id="project-button-${this.projectId}" data-project-id="${
+      this.id
+    }" class="projectButton" role="button">Gå till projektsidan</button>
         <div>
           <img class="statusImage" src="${imageUrl}" alt="Stage Image">
         </div>
         <div class="container ongoingSeeCardDetails toSinglePage">
           <div class="ongoingSeeCardDetailsInner">
-            <p id="ongoingSeeDetailsButton${this.projectId}" class = "moreInfoClass">> Mer information</p>
+            <p id="ongoingSeeDetailsButton${
+              this.projectId
+            }" class = "moreInfoClass">> Mer information</p>
           </div>
         </div>
       </div> 
-      <div class = "expandedOngoingWorkCard" id="expandedOngoingWorkCard${this.projectId}" style="display: none;">
+      <div class = "expandedOngoingWorkCard" id="expandedOngoingWorkCard${
+        this.projectId
+      }" style="display: none;">
         <div class ="expandedTextOngoingWorkCard">
           ${this.description}
         </div>
@@ -151,142 +168,179 @@ export async function loadPage(listenersLoaded: boolean) {
       // Select the specific element with the class you want
       const specificElement = tempContainer.querySelector(".filterBar");
 
-      const createHospitalCheckBoxContainer = tempContainer.querySelector('#hospitalSelection') as HTMLSelectElement;
-      const createUnitCheckBoxContainer = tempContainer.querySelector('#unitSelection') as HTMLSelectElement;
-      const createNolanStageCheckBoxContainer = tempContainer.querySelector('#nolanStageSelection') as HTMLSelectElement;
-      const createPatientRiskLevelCheckBoxContainer = tempContainer.querySelector('#patientRiskLevelSelection') as HTMLSelectElement;
-      const createOrderSelectionContainer = tempContainer.querySelector('#orderSelection') as HTMLSelectElement;
-      
-      if (createHospitalCheckBoxContainer) {
-        createHospitalCheckBoxContainer.addEventListener('change', async function(event) {
-
-          const checkboxes = createHospitalCheckBoxContainer.querySelectorAll('input[type="checkbox"]');
-          console.log("createHospitalCheckBoxContainer")
-          
-          // Empty list of checked hospitals
-          checkedHospitalIds = [];
+      const createHospitalCheckBoxContainer = tempContainer.querySelector(
+        "#hospitalSelection"
+      ) as HTMLSelectElement;
+      const createUnitCheckBoxContainer = tempContainer.querySelector(
+        "#unitSelection"
+      ) as HTMLSelectElement;
+      const createNolanStageCheckBoxContainer = tempContainer.querySelector(
+        "#nolanStageSelection"
+      ) as HTMLSelectElement;
+      const createPatientRiskLevelCheckBoxContainer =
+        tempContainer.querySelector(
+          "#patientRiskLevelSelection"
+        ) as HTMLSelectElement;
+      const createOrderSelectionContainer = tempContainer.querySelector(
+        "#orderSelection"
+      ) as HTMLSelectElement;
 
-          // Array to store IDs of checked checkboxes
-          checkboxes.forEach((checkbox) => {
+      if (createHospitalCheckBoxContainer) {
+        createHospitalCheckBoxContainer.addEventListener(
+          "change",
+          async function (event) {
+            const checkboxes = createHospitalCheckBoxContainer.querySelectorAll(
+              'input[type="checkbox"]'
+            );
+            console.log("createHospitalCheckBoxContainer");
+
+            // Empty list of checked hospitals
+            checkedHospitalIds = [];
+
+            // Array to store IDs of checked checkboxes
+            checkboxes.forEach((checkbox) => {
               // Ensure the checkbox is an HTMLInputElement
               const inputCheckbox = checkbox as HTMLInputElement;
-              
+
               // Check if the checkbox is checked and add its ID to the array
               if (inputCheckbox.checked) {
                 checkedHospitalIds.push(inputCheckbox.id);
               }
-          });
+            });
 
-          // Log all checked hospital IDs
-          console.log('Checked hospitals:', checkedHospitalIds);
+            // Log all checked hospital IDs
+            console.log("Checked hospitals:", checkedHospitalIds);
 
-          // Future change: Only clear the unitIds for unchecked hospitals!
-          clearContent("unitSelection");
-          loadUnits(checkedHospitalIds);
-        });
+            // Future change: Only clear the unitIds for unchecked hospitals!
+            clearContent("unitSelection");
+            loadUnits(checkedHospitalIds);
+          }
+        );
       }
 
       if (createUnitCheckBoxContainer) {
-        createUnitCheckBoxContainer.addEventListener('change', async function(event) {
-
-          const checkboxes = createUnitCheckBoxContainer.querySelectorAll('input[type="checkbox"]');
-
-          console.log("createUnitCheckBoxContainer")
-          // Empty list of checked units
-          checkedUnitIds = [];
-
-          checkboxes.forEach((checkbox) => {
+        createUnitCheckBoxContainer.addEventListener(
+          "change",
+          async function (event) {
+            const checkboxes = createUnitCheckBoxContainer.querySelectorAll(
+              'input[type="checkbox"]'
+            );
+
+            console.log("createUnitCheckBoxContainer");
+            // Empty list of checked units
+            checkedUnitIds = [];
+
+            checkboxes.forEach((checkbox) => {
               // Ensure the checkbox is an HTMLInputElement
               const inputCheckbox = checkbox as HTMLInputElement;
-              
+
               // Check if the checkbox is checked and add its ID to the array
               if (inputCheckbox.checked) {
                 checkedUnitIds.push(inputCheckbox.id);
               }
-          });
-
-          filteredImprovementWorks = await getFilteredImprovementWorks({
-            patientRiskLevels: checkedPatientRiskLevels, 
-            nolanStages: checkedNolanStages, 
-            units: checkedUnitIds, 
-          });
-          removeCardsFromDiv("div.projectCardCardDiv");
-          getProjects(container, listenersLoaded, filteredImprovementWorks);
-});
+            });
+
+            filteredImprovementWorks = await getFilteredImprovementWorks({
+              patientRiskLevels: checkedPatientRiskLevels,
+              nolanStages: checkedNolanStages,
+              units: checkedUnitIds,
+            });
+            removeCardsFromDiv("div.projectCardCardDiv");
+            getProjects(container, listenersLoaded, filteredImprovementWorks);
+          }
+        );
       }
 
       if (createNolanStageCheckBoxContainer) {
-        createNolanStageCheckBoxContainer.addEventListener('change', async function(event) {
-
-          const checkboxes = createNolanStageCheckBoxContainer.querySelectorAll('input[type="checkbox"]');
-          
-          // Empty list of checked hospitals
-          checkedNolanStages = [];
-
-          // Array to store IDs of checked checkboxes
-          checkboxes.forEach((checkbox) => {
+        createNolanStageCheckBoxContainer.addEventListener(
+          "change",
+          async function (event) {
+            const checkboxes =
+              createNolanStageCheckBoxContainer.querySelectorAll(
+                'input[type="checkbox"]'
+              );
+
+            // Empty list of checked hospitals
+            checkedNolanStages = [];
+
+            // Array to store IDs of checked checkboxes
+            checkboxes.forEach((checkbox) => {
               // Ensure the checkbox is an HTMLInputElement
               const inputCheckbox = checkbox as HTMLInputElement;
-              
+
               // Check if the checkbox is checked and add its ID to the array
               if (inputCheckbox.checked) {
                 checkedNolanStages.push(inputCheckbox.id);
                 checkedNolanStages.push(nolanStageMapping[inputCheckbox.id]);
                 console.log("checkedNolanStages: ", checkedNolanStages);
               }
-          });
-
-          filteredImprovementWorks = await getFilteredImprovementWorks({
-            patientRiskLevels: checkedPatientRiskLevels, 
-            nolanStages: checkedNolanStages, 
-            units: checkedUnitIds, 
-          });
-          removeCardsFromDiv("div.projectCardCardDiv");
-          getProjects(container, listenersLoaded, filteredImprovementWorks);
-        });
+            });
+
+            filteredImprovementWorks = await getFilteredImprovementWorks({
+              patientRiskLevels: checkedPatientRiskLevels,
+              nolanStages: checkedNolanStages,
+              units: checkedUnitIds,
+            });
+            removeCardsFromDiv("div.projectCardCardDiv");
+            getProjects(container, listenersLoaded, filteredImprovementWorks);
+          }
+        );
       }
 
       if (createPatientRiskLevelCheckBoxContainer) {
-        createPatientRiskLevelCheckBoxContainer.addEventListener('change', async function(event) {
-
-          const checkboxes = createPatientRiskLevelCheckBoxContainer.querySelectorAll('input[type="checkbox"]');
-          console.log("createPatientRiskLevelCheckBoxContainer")
-          
-          // Empty list of checked hospitals
-          checkedPatientRiskLevels = [];
-
-          // Array to store IDs of checked checkboxes
-          checkboxes.forEach((checkbox) => {
+        createPatientRiskLevelCheckBoxContainer.addEventListener(
+          "change",
+          async function (event) {
+            const checkboxes =
+              createPatientRiskLevelCheckBoxContainer.querySelectorAll(
+                'input[type="checkbox"]'
+              );
+            console.log("createPatientRiskLevelCheckBoxContainer");
+
+            // Empty list of checked hospitals
+            checkedPatientRiskLevels = [];
+
+            // Array to store IDs of checked checkboxes
+            checkboxes.forEach((checkbox) => {
               // Ensure the checkbox is an HTMLInputElement
               const inputCheckbox = checkbox as HTMLInputElement;
-              
+
               // Check if the checkbox is checked and add its ID to the array
               if (inputCheckbox.checked) {
                 checkedPatientRiskLevels.push(inputCheckbox.id);
-                checkedPatientRiskLevels.push(patientRiskLevelMapping[inputCheckbox.id]);
-                console.log("checkedPatientRiskLevels: ", checkedPatientRiskLevels);
+                checkedPatientRiskLevels.push(
+                  patientRiskLevelMapping[inputCheckbox.id]
+                );
+                console.log(
+                  "checkedPatientRiskLevels: ",
+                  checkedPatientRiskLevels
+                );
               }
-          });
-
-          filteredImprovementWorks = await getFilteredImprovementWorks({
-            patientRiskLevels: checkedPatientRiskLevels, 
-            nolanStages: checkedNolanStages, 
-            units: checkedUnitIds, 
-          });
-          removeCardsFromDiv("div.projectCardCardDiv");
-          getProjects(container, listenersLoaded, filteredImprovementWorks);
-        });
+            });
+
+            filteredImprovementWorks = await getFilteredImprovementWorks({
+              patientRiskLevels: checkedPatientRiskLevels,
+              nolanStages: checkedNolanStages,
+              units: checkedUnitIds,
+            });
+            removeCardsFromDiv("div.projectCardCardDiv");
+            getProjects(container, listenersLoaded, filteredImprovementWorks);
+          }
+        );
       }
 
       if (createOrderSelectionContainer) {
-        createOrderSelectionContainer.addEventListener('change', async function(event) {
+        createOrderSelectionContainer.addEventListener(
+          "change",
+          async function (event) {
             const inputCheckbox = event.target as HTMLInputElement;
-    
+
             ascendingDates = inputCheckbox.checked;
-    
+
             removeCardsFromDiv("div.projectCardCardDiv");
             sortProjects(container, listenersLoaded, ascendingDates);
-        });
+          }
+        );
       }
 
       if (specificElement) {
@@ -297,12 +351,14 @@ export async function loadPage(listenersLoaded: boolean) {
     .catch((error) => {
       console.error("Failed to load the external HTML file:", error);
     });
-  filteredImprovementWorks = await getImprovementWorks({completed: false});
+  filteredImprovementWorks = await getImprovementWorks({ completed: false });
   console.log("Filtered improvementWorks: ", filteredImprovementWorks);
   removeCardsFromDiv("div.projectCardCardDiv");
   getProjects(container, listenersLoaded, filteredImprovementWorks);
 
-  const searchBar = document.getElementById("searchBarImprovement") as HTMLInputElement;
+  const searchBar = document.getElementById(
+    "searchBarImprovement"
+  ) as HTMLInputElement;
   searchBar?.addEventListener("keydown", function (event) {
     if (event.key === "Enter") {
       performSearch(searchBar, container);
@@ -316,28 +372,40 @@ export async function loadPage(listenersLoaded: boolean) {
 }
 
 async function loadNolanStages() {
-  const selectStageHTML = $('#nolanStageSelection'); // loads the select type from html
-  const allStages = ["Planera", "Göra", "Studera", "Agera"]
-  allStages.forEach(stage => {
-    const generatedElement = document.createRange().createContextualFragment(`
+  const selectStageHTML = $("#nolanStageSelection"); // loads the select type from html
+  const allStages = ["Planera", "Göra", "Studera", "Agera"];
+  allStages.forEach((stage) => {
+    const generatedElement = document.createRange().createContextualFragment(
+      `
     <div class="form-check">
-      <input class="form-check-input" type="checkbox" value="" id="`+stage+`">
-      <label class="form-check-label" for="flexCheckDefault">` + stage + `</label>
-    </div>`)
+      <input class="form-check-input" type="checkbox" value="" id="` +
+        stage +
+        `">
+      <label class="form-check-label" for="flexCheckDefault">` +
+        stage +
+        `</label>
+    </div>`
+    );
     selectStageHTML.append(generatedElement);
     console.log("Adding HTML for for stage ", stage);
   });
 }
 
 async function loadPatientRiskLevels() {
-  const selectPatientRiskLevelHTML = $('#patientRiskLevelSelection'); // loads the select type from html
-  const allRiskLevels = ["Grön", "Blå", "Gul", "Röd"]
-  allRiskLevels.forEach(riskLevel => {
-    const generatedElement = document.createRange().createContextualFragment(`
+  const selectPatientRiskLevelHTML = $("#patientRiskLevelSelection"); // loads the select type from html
+  const allRiskLevels = ["Grön", "Blå", "Gul", "Röd"];
+  allRiskLevels.forEach((riskLevel) => {
+    const generatedElement = document.createRange().createContextualFragment(
+      `
     <div class="form-check">
-      <input class="form-check-input" type="checkbox" value="" id="`+riskLevel+`">
-      <label class="form-check-label" for="flexCheckDefault">Risknivå ` + riskLevel + `</label>
-    </div>`)
+      <input class="form-check-input" type="checkbox" value="" id="` +
+        riskLevel +
+        `">
+      <label class="form-check-label" for="flexCheckDefault">Risknivå ` +
+        riskLevel +
+        `</label>
+    </div>`
+    );
     selectPatientRiskLevelHTML.append(generatedElement);
     console.log("Adding HTML for for risk level ", riskLevel);
   });
@@ -346,27 +414,29 @@ async function loadPatientRiskLevels() {
 function sortProjects(
   selectElement: Element,
   listenersLoaded: boolean,
-  ascendingDates: boolean,
-  ) {
-    // Sort in reversed order if ascendingDates is true
-    const cardsToIterate = ascendingDates ? [...projectCards].reverse() : projectCards;
-
-    // Loop through the saved array of cards and generate HTML for each card
-    for (const card of cardsToIterate) {
-      let cardHTML = card.generateHTML();
-      let div = document.createElement("div");
-      div.className = "projectCardCardDiv"; // Set the class name(s) here
-      div.innerHTML = cardHTML;
-      if (!selectElement) return;
-      selectElement.appendChild(div); // Stop if the container isn't found
-      addEventListener(card.projectId, card);
-    }
+  ascendingDates: boolean
+) {
+  // Sort in reversed order if ascendingDates is true
+  const cardsToIterate = ascendingDates
+    ? [...projectCards].reverse()
+    : projectCards;
+
+  // Loop through the saved array of cards and generate HTML for each card
+  for (const card of cardsToIterate) {
+    let cardHTML = card.generateHTML();
+    let div = document.createElement("div");
+    div.className = "projectCardCardDiv"; // Set the class name(s) here
+    div.innerHTML = cardHTML;
+    if (!selectElement) return;
+    selectElement.appendChild(div); // Stop if the container isn't found
+    addEventListener(card.projectId, card);
+  }
 }
 
 async function getProjects(
   selectElement: Element,
   listenersLoaded: boolean,
-  improvementWorks: any[],
+  improvementWorks: any[]
 ) {
   let id = 0;
   projectCards = [];
@@ -374,6 +444,7 @@ async function getProjects(
     let title = improvementWork.name;
     let department = await getObjectById("unit", improvementWork.unitId);
     let projectLeader = await getImprovementWorkResponsible(improvementWork.id);
+    let dateStarted = improvementWork.dateStarted;
     if (department) {
       let card = new projectCard(
         id,
@@ -382,7 +453,8 @@ async function getProjects(
         title,
         improvementWork.content,
         improvementWork.id,
-        improvementWork.currentStage
+        improvementWork.currentStage,
+        dateStarted
       );
       projectCards.push(card);
       let cardHTML = card.generateHTML();
@@ -399,13 +471,13 @@ async function getProjects(
   });
 }
 
-export async function addEventListener(
-  projectId: string,
-  card: projectCard
-) {
-
-  $("#ongoingSeeDetailsButton"+projectId).off("click").on("click",async function () {
-      const expandedDiv = document.getElementById("expandedOngoingWorkCard" + projectId);
+export async function addEventListener(projectId: string, card: projectCard) {
+  $("#ongoingSeeDetailsButton" + projectId)
+    .off("click")
+    .on("click", async function () {
+      const expandedDiv = document.getElementById(
+        "expandedOngoingWorkCard" + projectId
+      );
       if (expandedDiv && expandedDiv.style.display === "none") {
         card.showMoreInfo(
           `expandedOngoingWorkCard` + projectId,
@@ -419,7 +491,9 @@ export async function addEventListener(
       }
     });
 
-    $("#project-button-"+projectId).off("click").on("click", async function () {
+  $("#project-button-" + projectId)
+    .off("click")
+    .on("click", async function () {
       let tmp = await getObjectById("improvementWork", projectId);
       const currentStage = tmp.currentStage;
       if (currentStage === "Act") {
@@ -434,8 +508,8 @@ export async function addEventListener(
         loadProjectPageP(projectId);
       }
     });
-    
-    /*$(document).on("click", "#" + projectId, async function (event) {
+
+  /*$(document).on("click", "#" + projectId, async function (event) {
       let tmp = await getObjectById("improvementWork", projectId);
       const currentStage = tmp.currentStage;
       const element = event.target as HTMLElement;
@@ -472,11 +546,11 @@ export async function addEventListener(
 }
 
 const patientRiskLevelMapping: { [key: string]: string } = {
-    Grön: "Green",
-    Blå: "Blue",
-    Gul: "Yellow",
-    Röd: "Red"
-}
+  Grön: "Green",
+  Blå: "Blue",
+  Gul: "Yellow",
+  Röd: "Red",
+};
 
 const nolanStageMapping: { [key: string]: string } = {
   Planera: "Plan",
@@ -493,11 +567,11 @@ async function performSearch(searchBar: HTMLInputElement, container: Element) {
   // Remove each element
   projectCards = [];
 
-  let query: { [key: string]: string | boolean} = {};
-  query.completed = false
+  let query: { [key: string]: string | boolean } = {};
+  query.completed = false;
 
   removeCardsFromDiv("div.projectCardCardDiv");
-    
+
   if (inputValue !== "") {
     const matchedStage = Object.keys(nolanStageMapping).find((stage) =>
       stage.toLowerCase().includes(inputValue.toLowerCase())
diff --git a/client/dist/login.bundle.js b/client/dist/login.bundle.js
index bcd9dade13e76230e31ecf58865c793cd267d56d..7a65d34116e86e936f07616ad5ea2bcc7cfb2fc9 100644
--- a/client/dist/login.bundle.js
+++ b/client/dist/login.bundle.js
@@ -96,7 +96,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
   \*******************************************/
 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   login: () => (/* binding */ login),\n/* harmony export */   logout: () => (/* binding */ logout),\n/* harmony export */   register: () => (/* binding */ register)\n/* harmony export */ });\n/* harmony import */ var _database_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./database.js */ \"./client/Database/database.js\");\n/* harmony import */ var firebase_auth__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! firebase/auth */ \"./node_modules/firebase/auth/dist/esm/index.esm.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n///////////////////////////////////login functions/////////////////////////////////////////////////////////////////////\n//Log ins the user\nfunction login(email, password) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var _this = this;\n    var returnValue;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          returnValue = false;\n          _context2.next = 3;\n          return (0,firebase_auth__WEBPACK_IMPORTED_MODULE_1__.signInWithEmailAndPassword)(_database_js__WEBPACK_IMPORTED_MODULE_0__.auth, email, password).then(function (userCredential) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n              var user;\n              return _regeneratorRuntime().wrap(function _callee$(_context) {\n                while (1) switch (_context.prev = _context.next) {\n                  case 0:\n                    _context.next = 2;\n                    return (0,_database_js__WEBPACK_IMPORTED_MODULE_0__.getUsers)({\n                      uid: userCredential.user.uid\n                    });\n                  case 2:\n                    user = _context.sent;\n                    localStorage.setItem(\"user\", JSON.stringify(user));\n                    returnValue = true;\n                  case 5:\n                  case \"end\":\n                    return _context.stop();\n                }\n              }, _callee);\n            }));\n          })[\"catch\"](function (error) {\n            console.log(error);\n            returnValue = false;\n          });\n        case 3:\n          return _context2.abrupt(\"return\", returnValue);\n        case 4:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2);\n  }));\n}\n//Redirects to the login in screen and log outs the user\nfunction logout() {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          (0,firebase_auth__WEBPACK_IMPORTED_MODULE_1__.signOut)(_database_js__WEBPACK_IMPORTED_MODULE_0__.auth);\n          localStorage.removeItem(\"user\");\n        case 2:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3);\n  }));\n}\n//Registers and log ins a new user\nfunction register(hsaId, hospitalName, unitName, role, firstName, lastName, email, password, isManager) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n    var _this2 = this;\n    var hospital, unit, uid;\n    return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n      while (1) switch (_context5.prev = _context5.next) {\n        case 0:\n          _context5.next = 2;\n          return (0,_database_js__WEBPACK_IMPORTED_MODULE_0__.getHospitals)({\n            hospitalName: hospitalName\n          });\n        case 2:\n          hospital = _context5.sent;\n          if (!(hospital.length != 1)) {\n            _context5.next = 6;\n            break;\n          }\n          console.log(\"hospital does not exist\");\n          return _context5.abrupt(\"return\", false);\n        case 6:\n          _context5.next = 8;\n          return (0,_database_js__WEBPACK_IMPORTED_MODULE_0__.getUnits)({\n            name: unitName,\n            hospitalId: hospital[0].id,\n            ascendingUnitNames: false\n          });\n        case 8:\n          unit = _context5.sent;\n          if (!(unit.length != 1)) {\n            _context5.next = 12;\n            break;\n          }\n          console.log(\"that unit does not exist for this hospital\");\n          return _context5.abrupt(\"return\", false);\n        case 12:\n          uid = \"\";\n          _context5.next = 15;\n          return (0,firebase_auth__WEBPACK_IMPORTED_MODULE_1__.createUserWithEmailAndPassword)(_database_js__WEBPACK_IMPORTED_MODULE_0__.auth, email, password).then(function (userCredential) {\n            return __awaiter(_this2, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n              return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n                while (1) switch (_context4.prev = _context4.next) {\n                  case 0:\n                    uid = userCredential.user.uid;\n                  case 1:\n                  case \"end\":\n                    return _context4.stop();\n                }\n              }, _callee4);\n            }));\n          })[\"catch\"](function (error) {\n            var errorMessage = error.message;\n            console.log(errorMessage);\n            return false;\n          });\n        case 15:\n          (0,_database_js__WEBPACK_IMPORTED_MODULE_0__.createUser)(hsaId, unit[0].id, firstName, lastName, email, isManager, \"Sjuksöterska\", uid);\n          return _context5.abrupt(\"return\", login(email, password));\n        case 17:\n        case \"end\":\n          return _context5.stop();\n      }\n    }, _callee5);\n  }));\n}\n\n\n//# sourceURL=webpack://c3/./client/Database/authentication.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   login: () => (/* binding */ login),\n/* harmony export */   logout: () => (/* binding */ logout),\n/* harmony export */   register: () => (/* binding */ register)\n/* harmony export */ });\n/* harmony import */ var _database_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./database.js */ \"./client/Database/database.js\");\n/* harmony import */ var firebase_auth__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! firebase/auth */ \"./node_modules/firebase/auth/dist/esm/index.esm.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n///////////////////////////////////login functions/////////////////////////////////////////////////////////////////////\n//Log ins the user\nfunction login(email, password) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var _this = this;\n    var returnValue;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          returnValue = false;\n          _context2.next = 3;\n          return (0,firebase_auth__WEBPACK_IMPORTED_MODULE_1__.signInWithEmailAndPassword)(_database_js__WEBPACK_IMPORTED_MODULE_0__.auth, email, password).then(function (userCredential) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n              var user;\n              return _regeneratorRuntime().wrap(function _callee$(_context) {\n                while (1) switch (_context.prev = _context.next) {\n                  case 0:\n                    _context.next = 2;\n                    return (0,_database_js__WEBPACK_IMPORTED_MODULE_0__.getUsers)({\n                      uid: userCredential.user.uid\n                    });\n                  case 2:\n                    user = _context.sent;\n                    localStorage.setItem(\"user\", JSON.stringify(user));\n                    returnValue = true;\n                  case 5:\n                  case \"end\":\n                    return _context.stop();\n                }\n              }, _callee);\n            }));\n          })[\"catch\"](function (error) {\n            console.log(error);\n            alert(\"Felaktiga inloggnings-uppgifter\");\n            returnValue = false;\n          });\n        case 3:\n          return _context2.abrupt(\"return\", returnValue);\n        case 4:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2);\n  }));\n}\n//Redirects to the login in screen and log outs the user\nfunction logout() {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          (0,firebase_auth__WEBPACK_IMPORTED_MODULE_1__.signOut)(_database_js__WEBPACK_IMPORTED_MODULE_0__.auth);\n          localStorage.removeItem(\"user\");\n        case 2:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3);\n  }));\n}\n//Registers and log ins a new user\nfunction register(hsaId, hospitalName, unitName, role, firstName, lastName, email, password, isManager) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n    var _this2 = this;\n    var hospital, unit, uid;\n    return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n      while (1) switch (_context5.prev = _context5.next) {\n        case 0:\n          _context5.next = 2;\n          return (0,_database_js__WEBPACK_IMPORTED_MODULE_0__.getHospitals)({\n            hospitalName: hospitalName\n          });\n        case 2:\n          hospital = _context5.sent;\n          if (!(hospital.length != 1)) {\n            _context5.next = 6;\n            break;\n          }\n          console.log(\"hospital does not exist\");\n          return _context5.abrupt(\"return\", false);\n        case 6:\n          _context5.next = 8;\n          return (0,_database_js__WEBPACK_IMPORTED_MODULE_0__.getUnits)({\n            name: unitName,\n            hospitalId: hospital[0].id,\n            ascendingUnitNames: false\n          });\n        case 8:\n          unit = _context5.sent;\n          if (!(unit.length != 1)) {\n            _context5.next = 12;\n            break;\n          }\n          console.log(\"that unit does not exist for this hospital\");\n          return _context5.abrupt(\"return\", false);\n        case 12:\n          uid = \"\";\n          _context5.next = 15;\n          return (0,firebase_auth__WEBPACK_IMPORTED_MODULE_1__.createUserWithEmailAndPassword)(_database_js__WEBPACK_IMPORTED_MODULE_0__.auth, email, password).then(function (userCredential) {\n            return __awaiter(_this2, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n              return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n                while (1) switch (_context4.prev = _context4.next) {\n                  case 0:\n                    uid = userCredential.user.uid;\n                  case 1:\n                  case \"end\":\n                    return _context4.stop();\n                }\n              }, _callee4);\n            }));\n          })[\"catch\"](function (error) {\n            var errorMessage = error.message;\n            console.log(errorMessage);\n            return false;\n          });\n        case 15:\n          (0,_database_js__WEBPACK_IMPORTED_MODULE_0__.createUser)(hsaId, unit[0].id, firstName, lastName, email, isManager, \"Sjuksöterska\", uid);\n          return _context5.abrupt(\"return\", login(email, password));\n        case 17:\n        case \"end\":\n          return _context5.stop();\n      }\n    }, _callee5);\n  }));\n}\n\n\n//# sourceURL=webpack://c3/./client/Database/authentication.js?");
 
 /***/ }),
 
@@ -106,7 +106,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
   \*************************************/
 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   addDocumentToImprovementWork: () => (/* binding */ addDocumentToImprovementWork),\n/* harmony export */   addMemberToImprovementWork: () => (/* binding */ addMemberToImprovementWork),\n/* harmony export */   addMemberToTask: () => (/* binding */ addMemberToTask),\n/* harmony export */   addNoteToUser: () => (/* binding */ addNoteToUser),\n/* harmony export */   auth: () => (/* binding */ auth),\n/* harmony export */   changePatientRiskLevel: () => (/* binding */ changePatientRiskLevel),\n/* harmony export */   createComment: () => (/* binding */ createComment),\n/* harmony export */   createHospital: () => (/* binding */ createHospital),\n/* harmony export */   createImprovementWork: () => (/* binding */ createImprovementWork),\n/* harmony export */   createSuggestion: () => (/* binding */ createSuggestion),\n/* harmony export */   createTaskOnImprovementWork: () => (/* binding */ createTaskOnImprovementWork),\n/* harmony export */   createUnit: () => (/* binding */ createUnit),\n/* harmony export */   createUser: () => (/* binding */ createUser),\n/* harmony export */   createdDocumentInKnowledgeBank: () => (/* binding */ createdDocumentInKnowledgeBank),\n/* harmony export */   db: () => (/* binding */ db),\n/* harmony export */   deleteAllDocumentsInCollection: () => (/* binding */ deleteAllDocumentsInCollection),\n/* harmony export */   deleteInstance: () => (/* binding */ deleteInstance),\n/* harmony export */   deleteSuggestion: () => (/* binding */ deleteSuggestion),\n/* harmony export */   finalizeImprovementWork: () => (/* binding */ finalizeImprovementWork),\n/* harmony export */   getComments: () => (/* binding */ getComments),\n/* harmony export */   getDocumentsByImprovementWork: () => (/* binding */ getDocumentsByImprovementWork),\n/* harmony export */   getFilteredImprovementWorks: () => (/* binding */ getFilteredImprovementWorks),\n/* harmony export */   getHospitals: () => (/* binding */ getHospitals),\n/* harmony export */   getImprovementWorkOwner: () => (/* binding */ getImprovementWorkOwner),\n/* harmony export */   getImprovementWorkResponsible: () => (/* binding */ getImprovementWorkResponsible),\n/* harmony export */   getImprovementWorks: () => (/* binding */ getImprovementWorks),\n/* harmony export */   getImprovementWorksForUser: () => (/* binding */ getImprovementWorksForUser),\n/* harmony export */   getObject: () => (/* binding */ getObject),\n/* harmony export */   getObjectById: () => (/* binding */ getObjectById),\n/* harmony export */   getSuggestions: () => (/* binding */ getSuggestions),\n/* harmony export */   getTasks: () => (/* binding */ getTasks),\n/* harmony export */   getUnits: () => (/* binding */ getUnits),\n/* harmony export */   getUsers: () => (/* binding */ getUsers),\n/* harmony export */   getUsersForImprovementWork: () => (/* binding */ getUsersForImprovementWork),\n/* harmony export */   startOrPauseImprovementWork: () => (/* binding */ startOrPauseImprovementWork),\n/* harmony export */   updateInstance: () => (/* binding */ updateInstance),\n/* harmony export */   upvoteComment: () => (/* binding */ upvoteComment),\n/* harmony export */   upvoteSuggestion: () => (/* binding */ upvoteSuggestion)\n/* harmony export */ });\n/* harmony import */ var firebase_app__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! firebase/app */ \"./node_modules/firebase/app/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_firestore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! firebase/firestore */ \"./node_modules/firebase/firestore/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_auth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! firebase/auth */ \"./node_modules/firebase/auth/dist/esm/index.esm.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n// C3 solutions databasen - ska användas för P&S\nvar firebaseConfig = {\n  apiKey: \"AIzaSyB7n9YIDCmeyzeZzteFnXqOUBijzEO59ls\",\n  authDomain: \"backup-277c3.firebaseapp.com\",\n  projectId: \"backup-277c3\",\n  storageBucket: \"backup-277c3.appspot.com\",\n  messagingSenderId: \"296015398098\",\n  appId: \"1:296015398098:web:71e1d1ec2b0c370e5a590b\",\n  measurementId: \"G-E933CXWWCG\"\n};\n//Backup databas - ska användas av R&D\n/*  const firebaseConfig = {\n   apiKey: \"AIzaSyAMfD8V0belL6GxbuoehL__6YTFZH4pyoc\",\n   authDomain: \"company3-backup.firebaseapp.com\",\n   projectId: \"company3-backup\",\n   storageBucket: \"company3-backup.appspot.com\",\n   messagingSenderId: \"820650717800\",\n   appId: \"1:820650717800:web:7557c7734ed59d3f7281dd\"\n };\n */\n//Bens egna reserv #nödfall\n/* const firebaseConfig = {\n  apiKey: \"AIzaSyBIsZq_yOsJljp1woIxndJO1GkW6soh-g4\",\n  authDomain: \"company3-456bb.firebaseapp.com\",\n  projectId: \"company3-456bb\",\n  storageBucket: \"company3-456bb.appspot.com\",\n  messagingSenderId: \"310033686522\",\n  appId: \"1:310033686522:web:63198bb0db679c98ee4e43\",\n  measurementId: \"G-PFLDQY00DB\"\n}; */\nvar app = (0,firebase_app__WEBPACK_IMPORTED_MODULE_0__.initializeApp)(firebaseConfig);\nvar auth = (0,firebase_auth__WEBPACK_IMPORTED_MODULE_2__.getAuth)();\nvar db = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getFirestore)(app);\nvar userCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\nvar unitCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\nvar improvementWorkCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\nvar taskCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\nvar hospitalCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\nvar suggestionCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\nvar knowledgeDocumentCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"knowledgeDocument\");\nvar userImprovementWorkCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"userImprovementWork\");\nvar userTaskCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"userTask\");\n////////////////////////////////////////Setters///////////////////////////////////////////////////////////////////\n// Function to create user a new user in database\n// takes in userId, unitId, firstname, lastname, email and password as string\n// throws error if transaction failed\nfunction createUser(hsaId, unitId, firstName, lastName, email, manager, role, uid) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n    var userRef;\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          _context.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, hsaId);\n          _context.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(userRef, {\n            id: userRef.id,\n            uid: uid,\n            unitId: unitId,\n            firstName: firstName,\n            lastName: lastName,\n            email: email,\n            role: role,\n            // TODO Replace with userImprovementWork collection\n            improvementWorks: [],\n            tasks: [],\n            manager: manager\n          });\n        case 4:\n          _context.next = 9;\n          break;\n        case 6:\n          _context.prev = 6;\n          _context.t0 = _context[\"catch\"](0);\n          console.log(_context.t0);\n        case 9:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee, null, [[0, 6]]);\n  }));\n}\nfunction createImprovementWork(id, name, currentStage, content,\n// Är detta description bör detta förtydligas. JA\nunitId, purpose,\n//Bör tas bort motsvaras av p2- mål med projektet\npatientRiskLevel, area, projectLeader,\n//Adding projectleader & members to the project\nmembers) {\n  var resources = arguments.length > 10 && arguments[10] !== undefined ? arguments[10] : \"Inte definerat ännu\";\n  var p1 = arguments.length > 11 && arguments[11] !== undefined ? arguments[11] : \"\";\n  var p2 = arguments.length > 12 && arguments[12] !== undefined ? arguments[12] : \"\";\n  var p3 = arguments.length > 13 && arguments[13] !== undefined ? arguments[13] : \"\";\n  var p4 = arguments.length > 14 && arguments[14] !== undefined ? arguments[14] : \"\";\n  var p5 = arguments.length > 15 && arguments[15] !== undefined ? arguments[15] : \"\";\n  var p6 = arguments.length > 16 && arguments[16] !== undefined ? arguments[16] : \"\";\n  var p7 = arguments.length > 17 && arguments[17] !== undefined ? arguments[17] : \"\";\n  var g1 = arguments.length > 18 && arguments[18] !== undefined ? arguments[18] : \"\";\n  var g2 = arguments.length > 19 && arguments[19] !== undefined ? arguments[19] : \"\";\n  var g3 = arguments.length > 20 && arguments[20] !== undefined ? arguments[20] : \"\";\n  var g4 = arguments.length > 21 && arguments[21] !== undefined ? arguments[21] : \"\";\n  var g5 = arguments.length > 22 && arguments[22] !== undefined ? arguments[22] : \"\";\n  var s1 = arguments.length > 23 && arguments[23] !== undefined ? arguments[23] : \"\";\n  var s2 = arguments.length > 24 && arguments[24] !== undefined ? arguments[24] : \"\";\n  var s3 = arguments.length > 25 && arguments[25] !== undefined ? arguments[25] : \"\";\n  var a1 = arguments.length > 26 && arguments[26] !== undefined ? arguments[26] : \"\";\n  var a2 = arguments.length > 27 && arguments[27] !== undefined ? arguments[27] : \"\";\n  var a3 = arguments.length > 28 && arguments[28] !== undefined ? arguments[28] : \"\";\n  var a4 = arguments.length > 29 && arguments[29] !== undefined ? arguments[29] : \"\";\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var improvementWorkData, improvementWorkRef, _improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          _context2.prev = 0;\n          improvementWorkData = {\n            name: name,\n            lowerCaseName: name.toLowerCase(),\n            currentStage: currentStage,\n            content: content,\n            purpose: purpose,\n            dateStarted: new Date(),\n            unitId: unitId,\n            completed: false,\n            ongoing: false,\n            tasks: [],\n            patientRiskLevel: patientRiskLevel,\n            area: area,\n            p1: p1,\n            p2: p2,\n            p3: p3,\n            p4: p4,\n            p5: p5,\n            p6: p6,\n            p7: p7,\n            g1: g1,\n            g2: g2,\n            g3: g3,\n            g4: g4,\n            g5: g5,\n            s1: s1,\n            s2: s2,\n            s3: s3,\n            a1: a1,\n            a2: a2,\n            a3: a3,\n            a4: a4,\n            resources: resources\n          };\n          if (!id) {\n            _context2.next = 8;\n            break;\n          }\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, id);\n          _context2.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(improvementWorkRef, Object.assign({\n            id: improvementWorkRef.id\n          }, improvementWorkData));\n        case 6:\n          _context2.next = 12;\n          break;\n        case 8:\n          _improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection);\n          _context2.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(_improvementWorkRef, improvementWorkData);\n        case 11:\n          id = _improvementWorkRef.id;\n        case 12:\n          //adding the projectleader and users to the project\n          addMemberToImprovementWork(projectLeader, id, false, true);\n          members.forEach(function (member) {\n            addMemberToImprovementWork(member, id, false, false);\n          });\n          _context2.next = 20;\n          break;\n        case 16:\n          _context2.prev = 16;\n          _context2.t0 = _context2[\"catch\"](0);\n          console.log(\"Error creating improvementWork: \", _context2.t0);\n          throw _context2.t0;\n        case 20:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2, null, [[0, 16]]);\n  }));\n}\nfunction addMemberToTask(userHsaId, taskId, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var relationRef;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          _context3.prev = 0;\n          relationRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userTaskCollection);\n          _context3.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(relationRef, {\n            id: relationRef.id,\n            userHsaId: userHsaId,\n            taskId: taskId,\n            isResponsibleFor: isResponsibleFor\n          });\n        case 4:\n          _context3.next = 10;\n          break;\n        case 6:\n          _context3.prev = 6;\n          _context3.t0 = _context3[\"catch\"](0);\n          console.log(\"Error adding member to task: \", _context3.t0);\n          throw _context3.t0;\n        case 10:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3, null, [[0, 6]]);\n  }));\n}\nfunction addMemberToImprovementWork(userHsaId, improvementWorkId, isOwner, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n    var relationRef;\n    return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n      while (1) switch (_context4.prev = _context4.next) {\n        case 0:\n          _context4.prev = 0;\n          relationRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userImprovementWorkCollection);\n          _context4.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(relationRef, {\n            id: relationRef.id,\n            userHsaId: userHsaId,\n            improvementWorkId: improvementWorkId,\n            isOwner: isOwner,\n            isResponsibleFor: isResponsibleFor\n          });\n        case 4:\n          _context4.next = 10;\n          break;\n        case 6:\n          _context4.prev = 6;\n          _context4.t0 = _context4[\"catch\"](0);\n          console.log(\"Error adding member to improvementWork: \", _context4.t0);\n          throw _context4.t0;\n        case 10:\n        case \"end\":\n          return _context4.stop();\n      }\n    }, _callee4, null, [[0, 6]]);\n  }));\n}\nfunction createTaskOnImprovementWork(taskId, improvementWorkId, name, deadlineDate, startDate, stage, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n    var taskData, taskRef, _taskRef;\n    return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n      while (1) switch (_context5.prev = _context5.next) {\n        case 0:\n          _context5.prev = 0;\n          taskData = {\n            improvementWorkId: improvementWorkId,\n            name: name,\n            deadlineDate: deadlineDate,\n            startDate: startDate,\n            stage: stage,\n            content: content,\n            completed: false\n          };\n          if (!taskId) {\n            _context5.next = 8;\n            break;\n          }\n          taskRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context5.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(taskRef, Object.assign({\n            id: taskRef.id\n          }, taskData));\n        case 6:\n          _context5.next = 11;\n          break;\n        case 8:\n          _taskRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection);\n          _context5.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(_taskRef, taskData);\n        case 11:\n          _context5.next = 17;\n          break;\n        case 13:\n          _context5.prev = 13;\n          _context5.t0 = _context5[\"catch\"](0);\n          console.log(\"Error creating task: \", _context5.t0);\n          throw _context5.t0;\n        case 17:\n        case \"end\":\n          return _context5.stop();\n      }\n    }, _callee5, null, [[0, 13]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction createdDocumentInKnowledgeBank(documentUrl, name, projectId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n      while (1) switch (_context6.prev = _context6.next) {\n        case 0:\n          _context6.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(knowledgeDocumentCollection);\n          _context6.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            name: name,\n            projectId: projectId\n          });\n        case 4:\n          _context6.next = 10;\n          break;\n        case 6:\n          _context6.prev = 6;\n          _context6.t0 = _context6[\"catch\"](0);\n          console.log(\"Error adding document: \", _context6.t0);\n          throw _context6.t0;\n        case 10:\n        case \"end\":\n          return _context6.stop();\n      }\n    }, _callee6, null, [[0, 6]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction addDocumentToImprovementWork(documentUrl, name, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var improvementWorkRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          _context7.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkRef, \"documents\");\n          _context7.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            timestamp: new Date(),\n            name: name\n          });\n        case 5:\n          _context7.next = 11;\n          break;\n        case 7:\n          _context7.prev = 7;\n          _context7.t0 = _context7[\"catch\"](0);\n          console.log(\"Error adding document: \", _context7.t0);\n          throw _context7.t0;\n        case 11:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7, null, [[0, 7]]);\n  }));\n}\nfunction getDocumentsByImprovementWork(improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var q, querySnapshot, documents, _iterator, _step, _doc, documentId, documentDoc;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          _context8.prev = 0;\n          console.log(\"Getting documents for improvementwork: \", improvementWorkId);\n          // Query the userImprovementWork collection for relations involving this user\n          q = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)(knowledgeDocumentCollection, (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"projectId\", \"==\", improvementWorkId));\n          _context8.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 5:\n          querySnapshot = _context8.sent;\n          // Fetch each related improvementWork document\n          documents = [];\n          _iterator = _createForOfIteratorHelper(querySnapshot.docs);\n          _context8.prev = 8;\n          _iterator.s();\n        case 10:\n          if ((_step = _iterator.n()).done) {\n            _context8.next = 19;\n            break;\n          }\n          _doc = _step.value;\n          documentId = _doc.data().id;\n          _context8.next = 15;\n          return getObjectById(\"knowledgeDocument\", documentId);\n        case 15:\n          documentDoc = _context8.sent;\n          documents.push(documentDoc);\n        case 17:\n          _context8.next = 10;\n          break;\n        case 19:\n          _context8.next = 24;\n          break;\n        case 21:\n          _context8.prev = 21;\n          _context8.t0 = _context8[\"catch\"](8);\n          _iterator.e(_context8.t0);\n        case 24:\n          _context8.prev = 24;\n          _iterator.f();\n          return _context8.finish(24);\n        case 27:\n          return _context8.abrupt(\"return\", documents);\n        case 30:\n          _context8.prev = 30;\n          _context8.t1 = _context8[\"catch\"](0);\n          console.error(\"Error getting documents for improvmentwork: \", _context8.t1);\n          throw _context8.t1;\n        case 34:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8, null, [[0, 30], [8, 21, 24, 27]]);\n  }));\n}\nfunction createHospital(hospitalId,\n// should be auto?\nname) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n    var hospitalData, hospitalRef, _hospitalRef;\n    return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n      while (1) switch (_context9.prev = _context9.next) {\n        case 0:\n          _context9.prev = 0;\n          hospitalData = {\n            name: name,\n            units: []\n          };\n          if (!hospitalId) {\n            _context9.next = 8;\n            break;\n          }\n          hospitalRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context9.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(hospitalRef, Object.assign({\n            id: hospitalRef.id\n          }, hospitalData));\n        case 6:\n          _context9.next = 11;\n          break;\n        case 8:\n          _hospitalRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection);\n          _context9.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(_hospitalRef, hospitalData);\n        case 11:\n          _context9.next = 17;\n          break;\n        case 13:\n          _context9.prev = 13;\n          _context9.t0 = _context9[\"catch\"](0);\n          console.log(\"Error creating hospital: \", _context9.t0);\n          throw _context9.t0;\n        case 17:\n        case \"end\":\n          return _context9.stop();\n      }\n    }, _callee9, null, [[0, 13]]);\n  }));\n}\nfunction createUnit(unitId,\n//should be auto?\nhospitalId, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var unitData, unitRef, _unitRef;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          _context10.prev = 0;\n          unitData = {\n            hospitalId: hospitalId,\n            name: name\n          };\n          if (!unitId) {\n            _context10.next = 8;\n            break;\n          }\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context10.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(unitRef, Object.assign({\n            id: unitRef.id\n          }, unitData));\n        case 6:\n          _context10.next = 11;\n          break;\n        case 8:\n          _unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection);\n          _context10.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(_unitRef, unitData);\n        case 11:\n          _context10.next = 17;\n          break;\n        case 13:\n          _context10.prev = 13;\n          _context10.t0 = _context10[\"catch\"](0);\n          console.log(\"Error creating unit: \", _context10.t0);\n          throw _context10.t0;\n        case 17:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10, null, [[0, 13]]);\n  }));\n}\nfunction createSuggestion(id, creatorHsaId, name, area, content, purpose, measure, ideas,\n//need: boolean,\nunitId, departmentId, isPublic) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {\n    var suggestionData, suggestionRef, _suggestionRef;\n    return _regeneratorRuntime().wrap(function _callee11$(_context11) {\n      while (1) switch (_context11.prev = _context11.next) {\n        case 0:\n          _context11.prev = 0;\n          suggestionData = {\n            creatorHsaId: creatorHsaId,\n            name: name,\n            area: area,\n            content: content,\n            purpose: purpose,\n            measure: measure,\n            ideas: ideas,\n            //need,\n            unitId: unitId,\n            departmentId: departmentId,\n            \"public\": isPublic,\n            upvotes: [],\n            comments: [],\n            dateCreated: new Date()\n          };\n          if (!id) {\n            _context11.next = 8;\n            break;\n          }\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, id);\n          _context11.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(suggestionRef, Object.assign({\n            id: suggestionRef.id\n          }, suggestionData));\n        case 6:\n          _context11.next = 11;\n          break;\n        case 8:\n          _suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection);\n          _context11.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(_suggestionRef, suggestionData);\n        case 11:\n          _context11.next = 17;\n          break;\n        case 13:\n          _context11.prev = 13;\n          _context11.t0 = _context11[\"catch\"](0);\n          console.log(\"Error creating suggestion: \", _context11.t0);\n          throw _context11.t0;\n        case 17:\n        case \"end\":\n          return _context11.stop();\n      }\n    }, _callee11, null, [[0, 13]]);\n  }));\n}\nfunction deleteSuggestion(suggestionId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {\n    var suggestionRef;\n    return _regeneratorRuntime().wrap(function _callee12$(_context12) {\n      while (1) switch (_context12.prev = _context12.next) {\n        case 0:\n          _context12.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          _context12.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(suggestionRef);\n        case 4:\n          _context12.next = 10;\n          break;\n        case 6:\n          _context12.prev = 6;\n          _context12.t0 = _context12[\"catch\"](0);\n          console.log(\"Error deleting suggestion: \", _context12.t0);\n          throw _context12.t0;\n        case 10:\n        case \"end\":\n          return _context12.stop();\n      }\n    }, _callee12, null, [[0, 6]]);\n  }));\n}\n// Upvote a suggestion for a user\n// takes in suggestion id, user HSAid\n// returns error if transaction failed\nfunction upvoteSuggestion(suggestionId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {\n    var suggestionRef;\n    return _regeneratorRuntime().wrap(function _callee13$(_context13) {\n      while (1) switch (_context13.prev = _context13.next) {\n        case 0:\n          _context13.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId); // Atomically add a update to the upvote array field.\n          _context13.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(suggestionRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 4:\n          _context13.next = 10;\n          break;\n        case 6:\n          _context13.prev = 6;\n          _context13.t0 = _context13[\"catch\"](0);\n          console.log(\"Error upvoting suggestion: \", _context13.t0);\n          throw _context13.t0;\n        case 10:\n        case \"end\":\n          return _context13.stop();\n      }\n    }, _callee13, null, [[0, 6]]);\n  }));\n}\n//creates a comment\n// takes in commenters id, suggestion id and content as string\n// throws error if transaction failed\nfunction createComment(\n// change to subcollection\ncommenterHsaId, suggestionId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee14() {\n    var suggestionRef, commentCollection, commentRef;\n    return _regeneratorRuntime().wrap(function _callee14$(_context14) {\n      while (1) switch (_context14.prev = _context14.next) {\n        case 0:\n          _context14.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          _context14.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 4:\n          commentCollection = _context14.sent;\n          _context14.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 7:\n          commentRef = _context14.sent;\n          _context14.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(commentRef, {\n            id: commentRef.id,\n            commenterHsaId: commenterHsaId,\n            content: content,\n            dateCreated: new Date(),\n            upvotes: []\n          });\n        case 10:\n          _context14.next = 16;\n          break;\n        case 12:\n          _context14.prev = 12;\n          _context14.t0 = _context14[\"catch\"](0);\n          console.log(\"Error creating comment: \", _context14.t0);\n          throw _context14.t0;\n        case 16:\n        case \"end\":\n          return _context14.stop();\n      }\n    }, _callee14, null, [[0, 12]]);\n  }));\n}\n// Upvote a comment for a user\n// takes in suggestionId, commentId and userId as strings\n// return error if transaction failed\nfunction upvoteComment(suggestionId, commentId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee15() {\n    var suggestionRef, commentRef;\n    return _regeneratorRuntime().wrap(function _callee15$(_context15) {\n      while (1) switch (_context15.prev = _context15.next) {\n        case 0:\n          _context15.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          commentRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionRef, \"comment\", commentId); // Atomically add a update to the upvote array field.\n          _context15.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(commentRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 5:\n          _context15.next = 11;\n          break;\n        case 7:\n          _context15.prev = 7;\n          _context15.t0 = _context15[\"catch\"](0);\n          console.log(\"Error upvoting comment: \", _context15.t0);\n          throw _context15.t0;\n        case 11:\n        case \"end\":\n          return _context15.stop();\n      }\n    }, _callee15, null, [[0, 7]]);\n  }));\n}\n//add a note to a user\n// takes in userHsaId and content as string\n// throws error if transaction failed\nfunction addNoteToUser(userHsaId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee16() {\n    var userRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee16$(_context16) {\n      while (1) switch (_context16.prev = _context16.next) {\n        case 0:\n          _context16.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userRef, \"notes\");\n          _context16.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            content: content,\n            dateCreated: new Date()\n          });\n        case 5:\n          _context16.next = 11;\n          break;\n        case 7:\n          _context16.prev = 7;\n          _context16.t0 = _context16[\"catch\"](0);\n          console.log(\"Error adding document: \", _context16.t0);\n          throw _context16.t0;\n        case 11:\n        case \"end\":\n          return _context16.stop();\n      }\n    }, _callee16, null, [[0, 7]]);\n  }));\n}\n// export to setters to be able to use in other files\n\n//////////////////////////////////////////////GETTERS/////////////////////////////////////////////////////////////////////\n// Get any object\n// input is the database type as a string.\n// output is the whole collection of that type.\nfunction getObject(collectionPath) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee17() {\n    var collectionRef, querySnapshot, result;\n    return _regeneratorRuntime().wrap(function _callee17$(_context17) {\n      while (1) switch (_context17.prev = _context17.next) {\n        case 0:\n          _context17.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionPath);\n          _context17.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          querySnapshot = _context17.sent;\n          result = [];\n          querySnapshot.forEach(function (doc) {\n            result.push(doc.data());\n          });\n          return _context17.abrupt(\"return\", result);\n        case 10:\n          _context17.prev = 10;\n          _context17.t0 = _context17[\"catch\"](0);\n          console.error(\"Error getting collection data\", _context17.t0);\n          throw _context17.t0;\n        case 14:\n        case \"end\":\n          return _context17.stop();\n      }\n    }, _callee17, null, [[0, 10]]);\n  }));\n}\n/**\n * Asynchronously retrieves a single document object from the specified collection path and document ID.\n * If the document does not exist, logs a warning and returns null.\n *\n * @param {string} collectionPath - The path to the collection in the database (\"improvementWork\", \"hospital\", \"suggestion\", \"task\", \"unit\", \"users\")\n * @param {string} documentId - The ID of the document to retrieve.\n * @returns {Promise<any|null>} A promise that resolves to the document object if found, or null if not.\n *\n * @throws Will throw an error if there is an issue during retrieval from the database.\n */\nfunction getObjectById(collectionPath, documentId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee18() {\n    var docRef, docSnapshot;\n    return _regeneratorRuntime().wrap(function _callee18$(_context18) {\n      while (1) switch (_context18.prev = _context18.next) {\n        case 0:\n          _context18.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, collectionPath, documentId);\n          _context18.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDoc)(docRef);\n        case 4:\n          docSnapshot = _context18.sent;\n          if (!docSnapshot.exists()) {\n            _context18.next = 9;\n            break;\n          }\n          return _context18.abrupt(\"return\", Object.assign({\n            id: docSnapshot.id\n          }, docSnapshot.data()));\n        case 9:\n          console.warn(\"No such document! \".concat(collectionPath, \"/\").concat(documentId));\n          return _context18.abrupt(\"return\", null);\n        case 11:\n          _context18.next = 17;\n          break;\n        case 13:\n          _context18.prev = 13;\n          _context18.t0 = _context18[\"catch\"](0);\n          console.error(\"Error getting object\", _context18.t0);\n          throw _context18.t0;\n        case 17:\n        case \"end\":\n          return _context18.stop();\n      }\n    }, _callee18, null, [[0, 13]]);\n  }));\n}\n/**\n * Asynchronously retrieves comments for a given suggestion.\n *\n * @param {Object} params - The parameters for fetching comments.\n * @param {string} params.suggestionId - The ID of the suggestion to fetch comments for.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - The criterion to sort the comments by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Determines if the sorting should be in ascending order. Defaults to false (descending).\n * @returns {Promise<any[]>} A promise that resolves to an array of comment objects.\n *\n * @throws Will throw an error if the comments cannot be retrieved.\n */\nfunction getComments(_ref) {\n  var suggestionId = _ref.suggestionId,\n    _ref$sortBy = _ref.sortBy,\n    sortBy = _ref$sortBy === void 0 ? \"dateCreated\" : _ref$sortBy,\n    _ref$ascending = _ref.ascending,\n    ascending = _ref$ascending === void 0 ? false : _ref$ascending;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee19() {\n    var suggestionRef, commentsQuery, commentsSnapshot, comments;\n    return _regeneratorRuntime().wrap(function _callee19$(_context19) {\n      while (1) switch (_context19.prev = _context19.next) {\n        case 0:\n          _context19.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, \"suggestionCollection\", suggestionId);\n          commentsQuery = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\"), (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          _context19.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(commentsQuery);\n        case 5:\n          commentsSnapshot = _context19.sent;\n          comments = [];\n          commentsSnapshot.forEach(function (doc) {\n            comments.push(doc.data());\n          });\n          return _context19.abrupt(\"return\", comments);\n        case 11:\n          _context19.prev = 11;\n          _context19.t0 = _context19[\"catch\"](0);\n          console.error(\"Error getting comments for suggestion: \", _context19.t0);\n          throw _context19.t0;\n        case 15:\n        case \"end\":\n          return _context19.stop();\n      }\n    }, _callee19, null, [[0, 11]]);\n  }));\n}\n//Filtering suggestions on unitId AND creatorHsaId\n//Sort suggestions on dateCreated OR upvotes\n/**\n * Asynchronously retrieves an array of suggestions from the database, with various filters and sorting options.\n *\n * @param {Object} params - The parameters for filtering and sorting suggestions.\n * @param {string} [params.id] - Optional ID to filter suggestions by a specific identifier.\n * @param {string} [params.creatorHsaId] - Optional HSA ID to filter suggestions by the creator's HSA ID.\n * @param {string} [params.unitId] - Optional unit ID to filter suggestions by a specific unit.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - Criterion to sort the suggestions by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Flag indicating if sorting should be ascending. Defaults to false (descending order).\n * @param {boolean} [params.isPublic=true] - Flag indicating whether to filter for public suggestions. Defaults to true.\n * @returns {Promise<any[]>} A promise that resolves to an array of suggestion objects.\n *\n * @throws Will throw an error if there is an issue retrieving suggestions.\n */\nfunction getSuggestions(_ref2) {\n  var id = _ref2.id,\n    creatorHsaId = _ref2.creatorHsaId,\n    name = _ref2.name,\n    unitId = _ref2.unitId,\n    _ref2$sortBy = _ref2.sortBy,\n    sortBy = _ref2$sortBy === void 0 ? \"dateCreated\" : _ref2$sortBy,\n    _ref2$ascending = _ref2.ascending,\n    ascending = _ref2$ascending === void 0 ? false : _ref2$ascending,\n    _ref2$isPublic = _ref2.isPublic,\n    isPublic = _ref2$isPublic === void 0 ? true : _ref2$isPublic;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee20() {\n    var collectionRef, constraints, q, querySnapshot, suggestions;\n    return _regeneratorRuntime().wrap(function _callee20$(_context20) {\n      while (1) switch (_context20.prev = _context20.next) {\n        case 0:\n          _context20.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (creatorHsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"creatorHsaId\", \"==\", creatorHsaId));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", name));\n            sortBy = \"name\";\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"public\", \"==\", isPublic));\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context20.next = 12;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 12:\n          querySnapshot = _context20.sent;\n          suggestions = [];\n          querySnapshot.forEach(function (doc) {\n            suggestions.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context20.abrupt(\"return\", suggestions);\n        case 18:\n          _context20.prev = 18;\n          _context20.t0 = _context20[\"catch\"](0);\n          console.log(\"Error retrieving suggestions by department: \", _context20.t0);\n          throw _context20.t0;\n        case 22:\n        case \"end\":\n          return _context20.stop();\n      }\n    }, _callee20, null, [[0, 18]]);\n  }));\n}\n/**\n * Asynchronously searches for hospital documents in the database.\n * It can filter the results by the hospital's name, ID, or both.\n * If no parameters are provided, it retrieves all hospitals.\n *\n * @param {Object} params - An object containing the search parameters.\n * @param {string} [params.hospitalName] - Optional name of the hospital to filter the search.\n * @param {string} [params.hospitalId] - Optional unique identifier of the hospital to filter the search.\n * @returns {Promise<any[]>} A promise that resolves to an array of hospital objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getHospitals(_ref3) {\n  var hospitalName = _ref3.hospitalName,\n    hospitalId = _ref3.hospitalId;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee21() {\n    var collectionRef, constraints, q, querySnapshot, hospitals;\n    return _regeneratorRuntime().wrap(function _callee21$(_context21) {\n      while (1) switch (_context21.prev = _context21.next) {\n        case 0:\n          _context21.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\n          constraints = [];\n          if (hospitalName) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", hospitalName));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hospitalId));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context21.next = 8;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 8:\n          querySnapshot = _context21.sent;\n          hospitals = [];\n          querySnapshot.forEach(function (doc) {\n            hospitals.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context21.abrupt(\"return\", hospitals);\n        case 14:\n          _context21.prev = 14;\n          _context21.t0 = _context21[\"catch\"](0);\n          console.log(\"Error retrieving Hospitals\", _context21.t0);\n          throw _context21.t0;\n        case 18:\n        case \"end\":\n          return _context21.stop();\n      }\n    }, _callee21, null, [[0, 14]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of improvement work documents based on various filter criteria.\n * It supports filtering by ID, Nolan stage, unit ID, completion status, ongoing status, and patient risk level.\n * It also supports sorting by the start date of the improvement work in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.id] - Optional identifier to filter the improvement works.\n * @param {string} [params.nolanStage] - Optional Nolan stage to filter the improvement works.\n * @param {string} [params.unitId] - Optional unit ID to filter the improvement works.\n * @param {boolean} [params.completed] - Optional flag to filter the improvement works by their completion status.\n * @param {boolean} [params.ongoing] - Optional flag to filter the improvement works by their ongoing status.\n * @param {string} [params.patientRiskLevel] - Optional patient risk level to filter the improvement works.\n * @param {boolean} [params.ascendingDates=false] - Optional flag for sorting by date in ascending order. Defaults to false.\n * @returns {Promise<any[]>} A promise that resolves to an array of improvement work objects that match the criteria.\n *\n * @throws Will throw an error if there is a problem retrieving the improvement works.\n */\nfunction getImprovementWorks(_ref4) {\n  var id = _ref4.id,\n    name = _ref4.name,\n    nolanStage = _ref4.nolanStage,\n    unitId = _ref4.unitId,\n    completed = _ref4.completed,\n    ongoing = _ref4.ongoing,\n    patientRiskLevel = _ref4.patientRiskLevel,\n    _ref4$ascendingDates = _ref4.ascendingDates,\n    ascendingDates = _ref4$ascendingDates === void 0 ? false : _ref4$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee22() {\n    var collectionRef, constraints, q, querySnapshot, improvementWorks;\n    return _regeneratorRuntime().wrap(function _callee22$(_context22) {\n      while (1) switch (_context22.prev = _context22.next) {\n        case 0:\n          _context22.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            console.log(\"inne i ifsatsen i databasen\");\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (nolanStage) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"currentStage\", \"==\", nolanStage));\n          }\n          if (completed != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"completed\", \"==\", completed));\n          }\n          if (ongoing !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"ongoing\", \"==\", ongoing));\n          }\n          if (patientRiskLevel) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"patientRiskLevel\", \"==\", patientRiskLevel));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"lowerCaseName\", \">=\", name.toLowerCase()));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"lowerCaseName\", \"<=\", name.toLowerCase() + \"~\"));\n          } else {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"dateStarted\", ascendingDates ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context22.next = 13;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 13:\n          querySnapshot = _context22.sent;\n          improvementWorks = [];\n          querySnapshot.forEach(function (doc) {\n            improvementWorks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context22.abrupt(\"return\", improvementWorks);\n        case 19:\n          _context22.prev = 19;\n          _context22.t0 = _context22[\"catch\"](0);\n          console.log(\"Error retrieving improvementWorks: \", _context22.t0);\n          throw _context22.t0;\n        case 23:\n        case \"end\":\n          return _context22.stop();\n      }\n    }, _callee22, null, [[0, 19]]);\n  }));\n}\n// Gets improvementWorks where each field matches the union of elements in the input array for each fo the fields\nfunction getFilteredImprovementWorks(_ref5) {\n  var patientRiskLevels = _ref5.patientRiskLevels,\n    nolanStages = _ref5.nolanStages,\n    units = _ref5.units,\n    _ref5$ascendingDates = _ref5.ascendingDates,\n    ascendingDates = _ref5$ascendingDates === void 0 ? false : _ref5$ascendingDates,\n    completed = _ref5.completed;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee23() {\n    var collectionRef, constraints, q, querySnapshot, improvementWorks;\n    return _regeneratorRuntime().wrap(function _callee23$(_context23) {\n      while (1) switch (_context23.prev = _context23.next) {\n        case 0:\n          _context23.prev = 0;\n          console.log(\"Getting improvement works with the following constraints\", patientRiskLevels, nolanStages, units, ascendingDates);\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\n          constraints = [];\n          if (patientRiskLevels && patientRiskLevels.length) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"patientRiskLevel\", \"in\", patientRiskLevels));\n          }\n          if (nolanStages && nolanStages.length) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"currentStage\", \"in\", nolanStages));\n          }\n          if (units && units.length) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"in\", units));\n          }\n          // If none of the array filters are provided, default to ordering by date.\n          if (!patientRiskLevels.length && !nolanStages.length && !units.length) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"dateStarted\", ascendingDates ? \"asc\" : \"desc\"));\n          }\n          if (completed) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"completed\", \"==\", completed));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context23.next = 12;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 12:\n          querySnapshot = _context23.sent;\n          improvementWorks = [];\n          querySnapshot.forEach(function (doc) {\n            improvementWorks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context23.abrupt(\"return\", improvementWorks);\n        case 18:\n          _context23.prev = 18;\n          _context23.t0 = _context23[\"catch\"](0);\n          console.error(\"Error retrieving filtered improvementWorks: \", _context23.t0);\n          throw _context23.t0;\n        case 22:\n        case \"end\":\n          return _context23.stop();\n      }\n    }, _callee23, null, [[0, 18]]);\n  }));\n}\nfunction getImprovementWorkOwner(improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee24() {\n    var constraints, q, querySnapshot, owner;\n    return _regeneratorRuntime().wrap(function _callee24$(_context24) {\n      while (1) switch (_context24.prev = _context24.next) {\n        case 0:\n          _context24.prev = 0;\n          constraints = [];\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"isOwner\", \"==\", true));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [userImprovementWorkCollection].concat(constraints));\n          _context24.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 7:\n          querySnapshot = _context24.sent;\n          if (!querySnapshot.empty) {\n            _context24.next = 13;\n            break;\n          }\n          console.log(\"Improvement work \", improvementWorkId, \" has no owner\");\n          return _context24.abrupt(\"return\", null);\n        case 13:\n          owner = querySnapshot.docs[0].data().userHsaId;\n          return _context24.abrupt(\"return\", owner);\n        case 15:\n          _context24.next = 20;\n          break;\n        case 17:\n          _context24.prev = 17;\n          _context24.t0 = _context24[\"catch\"](0);\n          console.log(_context24.t0);\n        case 20:\n        case \"end\":\n          return _context24.stop();\n      }\n    }, _callee24, null, [[0, 17]]);\n  }));\n}\nfunction getImprovementWorkResponsible(improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee25() {\n    var constraints, q, querySnapshot, responsibleId, responsible;\n    return _regeneratorRuntime().wrap(function _callee25$(_context25) {\n      while (1) switch (_context25.prev = _context25.next) {\n        case 0:\n          _context25.prev = 0;\n          constraints = [];\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"isResponsibleFor\", \"==\", true));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [userImprovementWorkCollection].concat(constraints));\n          _context25.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 7:\n          querySnapshot = _context25.sent;\n          if (!querySnapshot.empty) {\n            _context25.next = 13;\n            break;\n          }\n          console.log(\"Improvement work \", improvementWorkId, \" has no responsible\");\n          return _context25.abrupt(\"return\", null);\n        case 13:\n          responsibleId = querySnapshot.docs[0].data().userHsaId;\n          _context25.next = 16;\n          return getObjectById(\"users\", responsibleId);\n        case 16:\n          responsible = _context25.sent;\n          return _context25.abrupt(\"return\", responsible);\n        case 18:\n          _context25.next = 23;\n          break;\n        case 20:\n          _context25.prev = 20;\n          _context25.t0 = _context25[\"catch\"](0);\n          console.log(_context25.t0);\n        case 23:\n        case \"end\":\n          return _context25.stop();\n      }\n    }, _callee25, null, [[0, 20]]);\n  }));\n}\n// TODO getUsersForTask!\n/**\n * Asynchronously retrieves user documents from the database based on various filter criteria.\n * It can filter by the Health Savings Account ID (hsaId), unit ID, and unique identifier (uid).\n * Additionally, it can sort the results by first name in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.hsaId] - Optional HSA ID to filter the users.\n * @param {string} [params.unitId] - Optional unit ID to filter the users.\n * @param {boolean} [params.ascendingFirstNames=false] - Optional flag to sort by first names in ascending order. Defaults to false (descending order).\n * @param {string} [params.uid] - Optional unique identifier to filter the users.\n * @returns {Promise<any[]>} A promise that resolves to an array of user objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUsers(_ref6) {\n  var hsaId = _ref6.hsaId,\n    name = _ref6.name,\n    unitId = _ref6.unitId,\n    _ref6$ascendingFirstN = _ref6.ascendingFirstNames,\n    ascendingFirstNames = _ref6$ascendingFirstN === void 0 ? false : _ref6$ascendingFirstN,\n    uid = _ref6.uid;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee26() {\n    var collectionRef, constraints, q, querySnapshot, users;\n    return _regeneratorRuntime().wrap(function _callee26$(_context26) {\n      while (1) switch (_context26.prev = _context26.next) {\n        case 0:\n          _context26.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\n          constraints = [];\n          if (hsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hsaId));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (uid) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"uid\", \"==\", uid));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", name));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"firstName\", ascendingFirstNames ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context26.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 11:\n          querySnapshot = _context26.sent;\n          users = [];\n          querySnapshot.forEach(function (doc) {\n            users.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context26.abrupt(\"return\", users);\n        case 17:\n          _context26.prev = 17;\n          _context26.t0 = _context26[\"catch\"](0);\n          console.log(\"Error retrieving users by department: \", _context26.t0);\n          throw _context26.t0;\n        case 21:\n        case \"end\":\n          return _context26.stop();\n      }\n    }, _callee26, null, [[0, 17]]);\n  }));\n}\n// TODO getTasksForUser!\n/**\n * Asynchronously retrieves an array of task documents from the database based on several filter and sorting criteria.\n * Filters include task ID, user ID and their responsibility status, and related improvement work ID.\n * Results can be sorted by date either in ascending or descending order.\n *\n * @param {Object} params - Parameters to filter and sort the task results.\n * @param {string} [params.taskId] - Optional task ID to filter the tasks.\n * @param {string} [params.userId] - Optional user ID to identify tasks related to a user.\n * @param {boolean} [params.isResponsibleFor] - Optional flag to filter tasks where the user is marked as responsible.\n * @param {string} [params.improvementWorkId] - Optional improvement work ID to filter tasks related to a specific improvement work.\n * @param {boolean} [params.ascendingDates=false] - Optional flag to sort tasks by date in ascending order; defaults to descending order.\n * @returns {Promise<any[]>} A promise that resolves to an array of task objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getTasks(_ref7) {\n  var improvementWorkId = _ref7.improvementWorkId,\n    stage = _ref7.stage,\n    _ref7$ascendingDates = _ref7.ascendingDates,\n    ascendingDates = _ref7$ascendingDates === void 0 ? false : _ref7$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee27() {\n    var collectionRef, constraints, q, querySnapshot, tasks;\n    return _regeneratorRuntime().wrap(function _callee27$(_context27) {\n      while (1) switch (_context27.prev = _context27.next) {\n        case 0:\n          _context27.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\n          constraints = [];\n          if (stage) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"stage\", \"==\", stage));\n          }\n          if (improvementWorkId != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"startDate\", ascendingDates ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context27.next = 8;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 8:\n          querySnapshot = _context27.sent;\n          tasks = [];\n          querySnapshot.forEach(function (doc) {\n            tasks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context27.abrupt(\"return\", tasks);\n        case 14:\n          _context27.prev = 14;\n          _context27.t0 = _context27[\"catch\"](0);\n          console.log(\"Error retrieving task by department: \", _context27.t0);\n          throw _context27.t0;\n        case 18:\n        case \"end\":\n          return _context27.stop();\n      }\n    }, _callee27, null, [[0, 14]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of unit documents from the database based on various filter criteria.\n * Filters can be applied based on unit ID, hospital ID, and unit name.\n * Additionally, results can be sorted by unit names in ascending or descending order.\n *\n * @param {Object} params - The parameters object containing filter and sorting options.\n * @param {string} [params.unitId] - Optional unit ID to filter the units.\n * @param {string} [params.hospitalId] - Optional hospital ID to filter units within a specific hospital.\n * @param {string} [params.name] - Optional name to filter units by a specific name.\n * @param {boolean} [params.ascendingUnitNames=false] - Optional flag to sort units by name in ascending order, defaults to descending.\n * @returns {Promise<any[]>} A promise that resolves to an array of unit objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUnits(_ref8) {\n  var unitId = _ref8.unitId,\n    hospitalId = _ref8.hospitalId,\n    name = _ref8.name,\n    _ref8$ascendingUnitNa = _ref8.ascendingUnitNames,\n    ascendingUnitNames = _ref8$ascendingUnitNa === void 0 ? false : _ref8$ascendingUnitNa;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee28() {\n    var collectionRef, constraints, q, querySnapshot, units;\n    return _regeneratorRuntime().wrap(function _callee28$(_context28) {\n      while (1) switch (_context28.prev = _context28.next) {\n        case 0:\n          _context28.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\n          constraints = [];\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", unitId));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", name));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"hospitalId\", \"==\", hospitalId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"name\", ascendingUnitNames ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context28.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context28.sent;\n          units = [];\n          querySnapshot.forEach(function (doc) {\n            units.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context28.abrupt(\"return\", units);\n        case 15:\n          _context28.prev = 15;\n          _context28.t0 = _context28[\"catch\"](0);\n          console.log(\"Error retrieving units by hospitalId: \", _context28.t0);\n          throw _context28.t0;\n        case 19:\n        case \"end\":\n          return _context28.stop();\n      }\n    }, _callee28, null, [[0, 15]]);\n  }));\n}\nfunction getImprovementWorksForUser(userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee29() {\n    var q, querySnapshot, improvementWorks, _iterator2, _step2, _doc2, improvementWorkId, improvementWorkDoc;\n    return _regeneratorRuntime().wrap(function _callee29$(_context29) {\n      while (1) switch (_context29.prev = _context29.next) {\n        case 0:\n          _context29.prev = 0;\n          console.log(\"Getting improvementworks for user: \", userHsaId);\n          // Query the userImprovementWork collection for relations involving this user\n          q = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)(userImprovementWorkCollection, (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"userHsaId\", \"==\", userHsaId));\n          _context29.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 5:\n          querySnapshot = _context29.sent;\n          // Fetch each related improvementWork document\n          improvementWorks = [];\n          _iterator2 = _createForOfIteratorHelper(querySnapshot.docs);\n          _context29.prev = 8;\n          _iterator2.s();\n        case 10:\n          if ((_step2 = _iterator2.n()).done) {\n            _context29.next = 19;\n            break;\n          }\n          _doc2 = _step2.value;\n          improvementWorkId = _doc2.data().improvementWorkId;\n          _context29.next = 15;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 15:\n          improvementWorkDoc = _context29.sent;\n          improvementWorks.push(improvementWorkDoc);\n        case 17:\n          _context29.next = 10;\n          break;\n        case 19:\n          _context29.next = 24;\n          break;\n        case 21:\n          _context29.prev = 21;\n          _context29.t0 = _context29[\"catch\"](8);\n          _iterator2.e(_context29.t0);\n        case 24:\n          _context29.prev = 24;\n          _iterator2.f();\n          return _context29.finish(24);\n        case 27:\n          return _context29.abrupt(\"return\", improvementWorks);\n        case 30:\n          _context29.prev = 30;\n          _context29.t1 = _context29[\"catch\"](0);\n          console.error(\"Error getting improvement works for user: \", _context29.t1);\n          throw _context29.t1;\n        case 34:\n        case \"end\":\n          return _context29.stop();\n      }\n    }, _callee29, null, [[0, 30], [8, 21, 24, 27]]);\n  }));\n}\nfunction getUsersForImprovementWork(improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee30() {\n    var q, querySnapshot, users, _iterator3, _step3, _doc3, userHsaId, userDoc;\n    return _regeneratorRuntime().wrap(function _callee30$(_context30) {\n      while (1) switch (_context30.prev = _context30.next) {\n        case 0:\n          _context30.prev = 0;\n          // Query the userImprovementWork collection for relations involving this improvementWork\n          q = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)(userImprovementWorkCollection, (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n          _context30.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 4:\n          querySnapshot = _context30.sent;\n          // Fetch each related user document\n          users = [];\n          _iterator3 = _createForOfIteratorHelper(querySnapshot.docs);\n          _context30.prev = 7;\n          _iterator3.s();\n        case 9:\n          if ((_step3 = _iterator3.n()).done) {\n            _context30.next = 18;\n            break;\n          }\n          _doc3 = _step3.value;\n          userHsaId = _doc3.data().userHsaId;\n          _context30.next = 14;\n          return getObjectById(\"users\", userHsaId);\n        case 14:\n          userDoc = _context30.sent;\n          users.push(userDoc);\n        case 16:\n          _context30.next = 9;\n          break;\n        case 18:\n          _context30.next = 23;\n          break;\n        case 20:\n          _context30.prev = 20;\n          _context30.t0 = _context30[\"catch\"](7);\n          _iterator3.e(_context30.t0);\n        case 23:\n          _context30.prev = 23;\n          _iterator3.f();\n          return _context30.finish(23);\n        case 26:\n          return _context30.abrupt(\"return\", users);\n        case 29:\n          _context30.prev = 29;\n          _context30.t1 = _context30[\"catch\"](0);\n          console.error(\"Error getting users for improvementWork: \", _context30.t1);\n          throw _context30.t1;\n        case 33:\n        case \"end\":\n          return _context30.stop();\n      }\n    }, _callee30, null, [[0, 29], [7, 20, 23, 26]]);\n  }));\n}\n// export getters to be able to use in other files\n\n////////////////////////////////////DELETING/////////////////////////////////////////////\n// delete an instance of a type\nfunction deleteInstance(docType, docId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee31() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee31$(_context31) {\n      while (1) switch (_context31.prev = _context31.next) {\n        case 0:\n          _context31.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context31.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(docRef);\n        case 4:\n          console.log(\"\".concat(docType, \" deleted successfully.\"));\n          _context31.next = 11;\n          break;\n        case 7:\n          _context31.prev = 7;\n          _context31.t0 = _context31[\"catch\"](0);\n          console.error(\"Error deleting \".concat(docType, \":\"), _context31.t0);\n          throw _context31.t0;\n        case 11:\n        case \"end\":\n          return _context31.stop();\n      }\n    }, _callee31, null, [[0, 7]]);\n  }));\n}\n// delete all instances of a type\nfunction deleteAllDocumentsInCollection(collectionName) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee33() {\n    var _this = this;\n    var collectionRef, snapshot, deletePromises;\n    return _regeneratorRuntime().wrap(function _callee33$(_context33) {\n      while (1) switch (_context33.prev = _context33.next) {\n        case 0:\n          _context33.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionName);\n          _context33.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          snapshot = _context33.sent;\n          // Delete all documents in the collection\n          deletePromises = snapshot.docs.map(function (doc) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee32() {\n              return _regeneratorRuntime().wrap(function _callee32$(_context32) {\n                while (1) switch (_context32.prev = _context32.next) {\n                  case 0:\n                    _context32.next = 2;\n                    return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(doc.ref);\n                  case 2:\n                  case \"end\":\n                    return _context32.stop();\n                }\n              }, _callee32);\n            }));\n          });\n          _context33.next = 8;\n          return Promise.all(deletePromises);\n        case 8:\n          console.log(\"All documents in the \".concat(collectionName, \" collection deleted successfully.\"));\n          _context33.next = 15;\n          break;\n        case 11:\n          _context33.prev = 11;\n          _context33.t0 = _context33[\"catch\"](0);\n          console.error(\"Error deleting all documents in \".concat(collectionName, \":\"), _context33.t0);\n          throw _context33.t0;\n        case 15:\n        case \"end\":\n          return _context33.stop();\n      }\n    }, _callee33, null, [[0, 11]]);\n  }));\n}\n////////////////////////////////////UPDATING/////////////////////////////////////////////\n// update a field in an instance\nfunction updateInstance(docType, docId, updates) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee34() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee34$(_context34) {\n      while (1) switch (_context34.prev = _context34.next) {\n        case 0:\n          _context34.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context34.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(docRef, updates);\n        case 4:\n          console.log(\"\".concat(docType, \" updated successfully.\"));\n          _context34.next = 11;\n          break;\n        case 7:\n          _context34.prev = 7;\n          _context34.t0 = _context34[\"catch\"](0);\n          console.error(\"Error updating \".concat(docType, \":\"), _context34.t0);\n          throw _context34.t0;\n        case 11:\n        case \"end\":\n          return _context34.stop();\n      }\n    }, _callee34, null, [[0, 7]]);\n  }));\n}\n// changes the ongoing status of an improvement work. if ongoing it is paused, if if paused onging.\n// user must be a manager\nfunction startOrPauseImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee35() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee35$(_context35) {\n      while (1) switch (_context35.prev = _context35.next) {\n        case 0:\n          _context35.prev = 0;\n          _context35.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context35.sent;\n          _context35.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context35.sent;\n          if (!(!user || !user.manager)) {\n            _context35.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change improvementWork status\");\n        case 11:\n          if (!improvementWork) {\n            _context35.next = 19;\n            break;\n          }\n          update = {\n            ongoing: !improvementWork.ongoing\n          };\n          _context35.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          return _context35.abrupt(\"return\", true);\n        case 19:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n          return _context35.abrupt(\"return\", false);\n        case 21:\n          _context35.next = 27;\n          break;\n        case 23:\n          _context35.prev = 23;\n          _context35.t0 = _context35[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context35.t0);\n          throw _context35.t0;\n        case 27:\n        case \"end\":\n          return _context35.stop();\n      }\n    }, _callee35, null, [[0, 23]]);\n  }));\n}\nfunction changePatientRiskLevel(userId, improvementWorkId, patientRiskLevel) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee36() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee36$(_context36) {\n      while (1) switch (_context36.prev = _context36.next) {\n        case 0:\n          _context36.prev = 0;\n          _context36.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context36.sent;\n          _context36.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context36.sent;\n          if (!(!user || !user.manager)) {\n            _context36.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change patientRiskLevel in improvement work\");\n        case 11:\n          if (!improvementWork) {\n            _context36.next = 18;\n            break;\n          }\n          update = {\n            patientRiskLevel: patientRiskLevel\n          };\n          _context36.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context36.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context36.next = 25;\n          break;\n        case 21:\n          _context36.prev = 21;\n          _context36.t0 = _context36[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context36.t0);\n          throw _context36.t0;\n        case 25:\n        case \"end\":\n          return _context36.stop();\n      }\n    }, _callee36, null, [[0, 21]]);\n  }));\n}\n// finalizes the improvement work. ongoing is set to false.\n// user must be a manager\nfunction finalizeImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee37() {\n    var user, update;\n    return _regeneratorRuntime().wrap(function _callee37$(_context37) {\n      while (1) switch (_context37.prev = _context37.next) {\n        case 0:\n          _context37.prev = 0;\n          _context37.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context37.sent;\n          if (!(!user || !user.manager)) {\n            _context37.next = 8;\n            break;\n          }\n          return _context37.abrupt(\"return\", false);\n        case 8:\n          update = {\n            completed: true,\n            ongoing: false\n          };\n          _context37.next = 11;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 11:\n          return _context37.abrupt(\"return\", true);\n        case 12:\n          _context37.next = 17;\n          break;\n        case 14:\n          _context37.prev = 14;\n          _context37.t0 = _context37[\"catch\"](0);\n          return _context37.abrupt(\"return\", false);\n        case 17:\n        case \"end\":\n          return _context37.stop();\n      }\n    }, _callee37, null, [[0, 14]]);\n  }));\n}\n\n//////////////////////////////// for later sprint\n//function add_upvotes\n//function add_notes\n//function add_intrested_users\n\n//# sourceURL=webpack://c3/./client/Database/database.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   addDocumentToImprovementWork: () => (/* binding */ addDocumentToImprovementWork),\n/* harmony export */   addMemberToImprovementWork: () => (/* binding */ addMemberToImprovementWork),\n/* harmony export */   addMemberToTask: () => (/* binding */ addMemberToTask),\n/* harmony export */   addNoteToUser: () => (/* binding */ addNoteToUser),\n/* harmony export */   auth: () => (/* binding */ auth),\n/* harmony export */   changePatientRiskLevel: () => (/* binding */ changePatientRiskLevel),\n/* harmony export */   createComment: () => (/* binding */ createComment),\n/* harmony export */   createHospital: () => (/* binding */ createHospital),\n/* harmony export */   createImprovementWork: () => (/* binding */ createImprovementWork),\n/* harmony export */   createSuggestion: () => (/* binding */ createSuggestion),\n/* harmony export */   createTaskOnImprovementWork: () => (/* binding */ createTaskOnImprovementWork),\n/* harmony export */   createUnit: () => (/* binding */ createUnit),\n/* harmony export */   createUser: () => (/* binding */ createUser),\n/* harmony export */   createdDocumentInKnowledgeBank: () => (/* binding */ createdDocumentInKnowledgeBank),\n/* harmony export */   db: () => (/* binding */ db),\n/* harmony export */   deleteAllDocumentsInCollection: () => (/* binding */ deleteAllDocumentsInCollection),\n/* harmony export */   deleteInstance: () => (/* binding */ deleteInstance),\n/* harmony export */   deleteSuggestion: () => (/* binding */ deleteSuggestion),\n/* harmony export */   finalizeImprovementWork: () => (/* binding */ finalizeImprovementWork),\n/* harmony export */   getComments: () => (/* binding */ getComments),\n/* harmony export */   getDocumentsByImprovementWork: () => (/* binding */ getDocumentsByImprovementWork),\n/* harmony export */   getFilteredImprovementWorks: () => (/* binding */ getFilteredImprovementWorks),\n/* harmony export */   getHospitals: () => (/* binding */ getHospitals),\n/* harmony export */   getImprovementWorkOwner: () => (/* binding */ getImprovementWorkOwner),\n/* harmony export */   getImprovementWorkResponsible: () => (/* binding */ getImprovementWorkResponsible),\n/* harmony export */   getImprovementWorks: () => (/* binding */ getImprovementWorks),\n/* harmony export */   getImprovementWorksForUser: () => (/* binding */ getImprovementWorksForUser),\n/* harmony export */   getObject: () => (/* binding */ getObject),\n/* harmony export */   getObjectById: () => (/* binding */ getObjectById),\n/* harmony export */   getSuggestions: () => (/* binding */ getSuggestions),\n/* harmony export */   getTasks: () => (/* binding */ getTasks),\n/* harmony export */   getUnits: () => (/* binding */ getUnits),\n/* harmony export */   getUsers: () => (/* binding */ getUsers),\n/* harmony export */   getUsersForImprovementWork: () => (/* binding */ getUsersForImprovementWork),\n/* harmony export */   startOrPauseImprovementWork: () => (/* binding */ startOrPauseImprovementWork),\n/* harmony export */   updateInstance: () => (/* binding */ updateInstance),\n/* harmony export */   upvoteComment: () => (/* binding */ upvoteComment),\n/* harmony export */   upvoteSuggestion: () => (/* binding */ upvoteSuggestion)\n/* harmony export */ });\n/* harmony import */ var firebase_app__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! firebase/app */ \"./node_modules/firebase/app/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_firestore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! firebase/firestore */ \"./node_modules/firebase/firestore/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_auth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! firebase/auth */ \"./node_modules/firebase/auth/dist/esm/index.esm.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n// C3 solutions databasen - ska användas för P&S\nvar firebaseConfig = {\n  apiKey: \"AIzaSyDqkaVZMr11J4mfnR0auqoQilZyPfyD-x4\",\n  authDomain: \"c3solutions-dc109.firebaseapp.com\",\n  projectId: \"c3solutions-dc109\",\n  storageBucket: \"c3solutions-dc109.appspot.com\",\n  messagingSenderId: \"902143402555\",\n  appId: \"1:902143402555:web:29213e81de0a0cba38b21e\"\n};\n//Backup databas - ska användas av R&D\n/*  const firebaseConfig = {\n   apiKey: \"AIzaSyAMfD8V0belL6GxbuoehL__6YTFZH4pyoc\",\n   authDomain: \"company3-backup.firebaseapp.com\",\n   projectId: \"company3-backup\",\n   storageBucket: \"company3-backup.appspot.com\",\n   messagingSenderId: \"820650717800\",\n   appId: \"1:820650717800:web:7557c7734ed59d3f7281dd\"\n };\n */\n//Bens egna reserv #nödfall\n/* const firebaseConfig = {\n  apiKey: \"AIzaSyBIsZq_yOsJljp1woIxndJO1GkW6soh-g4\",\n  authDomain: \"company3-456bb.firebaseapp.com\",\n  projectId: \"company3-456bb\",\n  storageBucket: \"company3-456bb.appspot.com\",\n  messagingSenderId: \"310033686522\",\n  appId: \"1:310033686522:web:63198bb0db679c98ee4e43\",\n  measurementId: \"G-PFLDQY00DB\"\n}; */\nvar app = (0,firebase_app__WEBPACK_IMPORTED_MODULE_0__.initializeApp)(firebaseConfig);\nvar auth = (0,firebase_auth__WEBPACK_IMPORTED_MODULE_2__.getAuth)();\nvar db = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getFirestore)(app);\nvar userCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\nvar unitCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\nvar improvementWorkCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\nvar taskCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\nvar hospitalCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\nvar suggestionCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\nvar knowledgeDocumentCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"knowledgeDocument\");\nvar userImprovementWorkCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"userImprovementWork\");\nvar userTaskCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"userTask\");\n////////////////////////////////////////Setters///////////////////////////////////////////////////////////////////\n// Function to create user a new user in database\n// takes in userId, unitId, firstname, lastname, email and password as string\n// throws error if transaction failed\nfunction createUser(hsaId, unitId, firstName, lastName, email, manager, role, uid) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n    var userRef;\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          _context.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, hsaId);\n          _context.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(userRef, {\n            id: userRef.id,\n            uid: uid,\n            unitId: unitId,\n            firstName: firstName,\n            lastName: lastName,\n            email: email,\n            role: role,\n            // TODO Replace with userImprovementWork collection\n            improvementWorks: [],\n            tasks: [],\n            manager: manager\n          });\n        case 4:\n          _context.next = 9;\n          break;\n        case 6:\n          _context.prev = 6;\n          _context.t0 = _context[\"catch\"](0);\n          console.log(_context.t0);\n        case 9:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee, null, [[0, 6]]);\n  }));\n}\nfunction createImprovementWork(id, name, currentStage, content,\n// Är detta description bör detta förtydligas. JA\nunitId, purpose,\n//Bör tas bort motsvaras av p2- mål med projektet\npatientRiskLevel, area, projectLeader,\n//Adding projectleader & members to the project\nmembers) {\n  var resources = arguments.length > 10 && arguments[10] !== undefined ? arguments[10] : \"Inte definerat ännu\";\n  var p1 = arguments.length > 11 && arguments[11] !== undefined ? arguments[11] : \"\";\n  var p2 = arguments.length > 12 && arguments[12] !== undefined ? arguments[12] : \"\";\n  var p3 = arguments.length > 13 && arguments[13] !== undefined ? arguments[13] : \"\";\n  var p4 = arguments.length > 14 && arguments[14] !== undefined ? arguments[14] : \"\";\n  var p5 = arguments.length > 15 && arguments[15] !== undefined ? arguments[15] : \"\";\n  var p6 = arguments.length > 16 && arguments[16] !== undefined ? arguments[16] : \"\";\n  var p7 = arguments.length > 17 && arguments[17] !== undefined ? arguments[17] : \"\";\n  var g1 = arguments.length > 18 && arguments[18] !== undefined ? arguments[18] : \"\";\n  var g2 = arguments.length > 19 && arguments[19] !== undefined ? arguments[19] : \"\";\n  var g3 = arguments.length > 20 && arguments[20] !== undefined ? arguments[20] : \"\";\n  var g4 = arguments.length > 21 && arguments[21] !== undefined ? arguments[21] : \"\";\n  var g5 = arguments.length > 22 && arguments[22] !== undefined ? arguments[22] : \"\";\n  var s1 = arguments.length > 23 && arguments[23] !== undefined ? arguments[23] : \"\";\n  var s2 = arguments.length > 24 && arguments[24] !== undefined ? arguments[24] : \"\";\n  var s3 = arguments.length > 25 && arguments[25] !== undefined ? arguments[25] : \"\";\n  var a1 = arguments.length > 26 && arguments[26] !== undefined ? arguments[26] : \"\";\n  var a2 = arguments.length > 27 && arguments[27] !== undefined ? arguments[27] : \"\";\n  var a3 = arguments.length > 28 && arguments[28] !== undefined ? arguments[28] : \"\";\n  var a4 = arguments.length > 29 && arguments[29] !== undefined ? arguments[29] : \"\";\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var improvementWorkData, improvementWorkRef, _improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          _context2.prev = 0;\n          improvementWorkData = {\n            name: name,\n            lowerCaseName: name.toLowerCase(),\n            currentStage: currentStage,\n            content: content,\n            purpose: purpose,\n            dateStarted: new Date(),\n            unitId: unitId,\n            completed: false,\n            ongoing: false,\n            tasks: [],\n            patientRiskLevel: patientRiskLevel,\n            area: area,\n            p1: p1,\n            p2: p2,\n            p3: p3,\n            p4: p4,\n            p5: p5,\n            p6: p6,\n            p7: p7,\n            g1: g1,\n            g2: g2,\n            g3: g3,\n            g4: g4,\n            g5: g5,\n            s1: s1,\n            s2: s2,\n            s3: s3,\n            a1: a1,\n            a2: a2,\n            a3: a3,\n            a4: a4,\n            resources: resources\n          };\n          if (!id) {\n            _context2.next = 8;\n            break;\n          }\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, id);\n          _context2.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(improvementWorkRef, Object.assign({\n            id: improvementWorkRef.id\n          }, improvementWorkData));\n        case 6:\n          _context2.next = 12;\n          break;\n        case 8:\n          _improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection);\n          _context2.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(_improvementWorkRef, improvementWorkData);\n        case 11:\n          id = _improvementWorkRef.id;\n        case 12:\n          //adding the projectleader and users to the project\n          addMemberToImprovementWork(projectLeader, id, false, true);\n          members.forEach(function (member) {\n            addMemberToImprovementWork(member, id, false, false);\n          });\n          _context2.next = 20;\n          break;\n        case 16:\n          _context2.prev = 16;\n          _context2.t0 = _context2[\"catch\"](0);\n          console.log(\"Error creating improvementWork: \", _context2.t0);\n          throw _context2.t0;\n        case 20:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2, null, [[0, 16]]);\n  }));\n}\nfunction addMemberToTask(userHsaId, taskId, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var relationRef;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          _context3.prev = 0;\n          relationRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userTaskCollection);\n          _context3.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(relationRef, {\n            id: relationRef.id,\n            userHsaId: userHsaId,\n            taskId: taskId,\n            isResponsibleFor: isResponsibleFor\n          });\n        case 4:\n          _context3.next = 10;\n          break;\n        case 6:\n          _context3.prev = 6;\n          _context3.t0 = _context3[\"catch\"](0);\n          console.log(\"Error adding member to task: \", _context3.t0);\n          throw _context3.t0;\n        case 10:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3, null, [[0, 6]]);\n  }));\n}\nfunction addMemberToImprovementWork(userHsaId, improvementWorkId, isOwner, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n    var relationRef;\n    return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n      while (1) switch (_context4.prev = _context4.next) {\n        case 0:\n          _context4.prev = 0;\n          relationRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userImprovementWorkCollection);\n          _context4.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(relationRef, {\n            id: relationRef.id,\n            userHsaId: userHsaId,\n            improvementWorkId: improvementWorkId,\n            isOwner: isOwner,\n            isResponsibleFor: isResponsibleFor\n          });\n        case 4:\n          _context4.next = 10;\n          break;\n        case 6:\n          _context4.prev = 6;\n          _context4.t0 = _context4[\"catch\"](0);\n          console.log(\"Error adding member to improvementWork: \", _context4.t0);\n          throw _context4.t0;\n        case 10:\n        case \"end\":\n          return _context4.stop();\n      }\n    }, _callee4, null, [[0, 6]]);\n  }));\n}\nfunction createTaskOnImprovementWork(taskId, improvementWorkId, name, deadlineDate, startDate, stage, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n    var taskData, taskRef, _taskRef;\n    return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n      while (1) switch (_context5.prev = _context5.next) {\n        case 0:\n          _context5.prev = 0;\n          taskData = {\n            improvementWorkId: improvementWorkId,\n            name: name,\n            deadlineDate: deadlineDate,\n            startDate: startDate,\n            stage: stage,\n            content: content,\n            completed: false\n          };\n          if (!taskId) {\n            _context5.next = 8;\n            break;\n          }\n          taskRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context5.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(taskRef, Object.assign({\n            id: taskRef.id\n          }, taskData));\n        case 6:\n          _context5.next = 11;\n          break;\n        case 8:\n          _taskRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection);\n          _context5.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(_taskRef, taskData);\n        case 11:\n          _context5.next = 17;\n          break;\n        case 13:\n          _context5.prev = 13;\n          _context5.t0 = _context5[\"catch\"](0);\n          console.log(\"Error creating task: \", _context5.t0);\n          throw _context5.t0;\n        case 17:\n        case \"end\":\n          return _context5.stop();\n      }\n    }, _callee5, null, [[0, 13]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction createdDocumentInKnowledgeBank(documentUrl, name, projectId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n      while (1) switch (_context6.prev = _context6.next) {\n        case 0:\n          _context6.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(knowledgeDocumentCollection);\n          _context6.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            name: name,\n            projectId: projectId\n          });\n        case 4:\n          _context6.next = 10;\n          break;\n        case 6:\n          _context6.prev = 6;\n          _context6.t0 = _context6[\"catch\"](0);\n          console.log(\"Error adding document: \", _context6.t0);\n          throw _context6.t0;\n        case 10:\n        case \"end\":\n          return _context6.stop();\n      }\n    }, _callee6, null, [[0, 6]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction addDocumentToImprovementWork(documentUrl, name, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var improvementWorkRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          _context7.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkRef, \"documents\");\n          _context7.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            timestamp: new Date(),\n            name: name\n          });\n        case 5:\n          _context7.next = 11;\n          break;\n        case 7:\n          _context7.prev = 7;\n          _context7.t0 = _context7[\"catch\"](0);\n          console.log(\"Error adding document: \", _context7.t0);\n          throw _context7.t0;\n        case 11:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7, null, [[0, 7]]);\n  }));\n}\nfunction getDocumentsByImprovementWork(improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var q, querySnapshot, documents, _iterator, _step, _doc, documentId, documentDoc;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          _context8.prev = 0;\n          console.log(\"Getting documents for improvementwork: \", improvementWorkId);\n          // Query the userImprovementWork collection for relations involving this user\n          q = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)(knowledgeDocumentCollection, (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"projectId\", \"==\", improvementWorkId));\n          _context8.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 5:\n          querySnapshot = _context8.sent;\n          // Fetch each related improvementWork document\n          documents = [];\n          _iterator = _createForOfIteratorHelper(querySnapshot.docs);\n          _context8.prev = 8;\n          _iterator.s();\n        case 10:\n          if ((_step = _iterator.n()).done) {\n            _context8.next = 19;\n            break;\n          }\n          _doc = _step.value;\n          documentId = _doc.data().id;\n          _context8.next = 15;\n          return getObjectById(\"knowledgeDocument\", documentId);\n        case 15:\n          documentDoc = _context8.sent;\n          documents.push(documentDoc);\n        case 17:\n          _context8.next = 10;\n          break;\n        case 19:\n          _context8.next = 24;\n          break;\n        case 21:\n          _context8.prev = 21;\n          _context8.t0 = _context8[\"catch\"](8);\n          _iterator.e(_context8.t0);\n        case 24:\n          _context8.prev = 24;\n          _iterator.f();\n          return _context8.finish(24);\n        case 27:\n          return _context8.abrupt(\"return\", documents);\n        case 30:\n          _context8.prev = 30;\n          _context8.t1 = _context8[\"catch\"](0);\n          console.error(\"Error getting documents for improvmentwork: \", _context8.t1);\n          throw _context8.t1;\n        case 34:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8, null, [[0, 30], [8, 21, 24, 27]]);\n  }));\n}\nfunction createHospital(hospitalId,\n// should be auto?\nname) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n    var hospitalData, hospitalRef, _hospitalRef;\n    return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n      while (1) switch (_context9.prev = _context9.next) {\n        case 0:\n          _context9.prev = 0;\n          hospitalData = {\n            name: name,\n            units: []\n          };\n          if (!hospitalId) {\n            _context9.next = 8;\n            break;\n          }\n          hospitalRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context9.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(hospitalRef, Object.assign({\n            id: hospitalRef.id\n          }, hospitalData));\n        case 6:\n          _context9.next = 11;\n          break;\n        case 8:\n          _hospitalRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection);\n          _context9.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(_hospitalRef, hospitalData);\n        case 11:\n          _context9.next = 17;\n          break;\n        case 13:\n          _context9.prev = 13;\n          _context9.t0 = _context9[\"catch\"](0);\n          console.log(\"Error creating hospital: \", _context9.t0);\n          throw _context9.t0;\n        case 17:\n        case \"end\":\n          return _context9.stop();\n      }\n    }, _callee9, null, [[0, 13]]);\n  }));\n}\nfunction createUnit(unitId,\n//should be auto?\nhospitalId, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var unitData, unitRef, _unitRef;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          _context10.prev = 0;\n          unitData = {\n            hospitalId: hospitalId,\n            name: name\n          };\n          if (!unitId) {\n            _context10.next = 8;\n            break;\n          }\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context10.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(unitRef, Object.assign({\n            id: unitRef.id\n          }, unitData));\n        case 6:\n          _context10.next = 11;\n          break;\n        case 8:\n          _unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection);\n          _context10.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(_unitRef, unitData);\n        case 11:\n          _context10.next = 17;\n          break;\n        case 13:\n          _context10.prev = 13;\n          _context10.t0 = _context10[\"catch\"](0);\n          console.log(\"Error creating unit: \", _context10.t0);\n          throw _context10.t0;\n        case 17:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10, null, [[0, 13]]);\n  }));\n}\nfunction createSuggestion(id, creatorHsaId, name, area, content, purpose, measure, ideas,\n//need: boolean,\nunitId, departmentId, isPublic) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {\n    var suggestionData, suggestionRef, _suggestionRef;\n    return _regeneratorRuntime().wrap(function _callee11$(_context11) {\n      while (1) switch (_context11.prev = _context11.next) {\n        case 0:\n          _context11.prev = 0;\n          suggestionData = {\n            creatorHsaId: creatorHsaId,\n            name: name,\n            area: area,\n            content: content,\n            purpose: purpose,\n            measure: measure,\n            ideas: ideas,\n            //need,\n            unitId: unitId,\n            departmentId: departmentId,\n            \"public\": isPublic,\n            upvotes: [],\n            comments: [],\n            dateCreated: new Date()\n          };\n          if (!id) {\n            _context11.next = 8;\n            break;\n          }\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, id);\n          _context11.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(suggestionRef, Object.assign({\n            id: suggestionRef.id\n          }, suggestionData));\n        case 6:\n          _context11.next = 11;\n          break;\n        case 8:\n          _suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection);\n          _context11.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(_suggestionRef, suggestionData);\n        case 11:\n          _context11.next = 17;\n          break;\n        case 13:\n          _context11.prev = 13;\n          _context11.t0 = _context11[\"catch\"](0);\n          console.log(\"Error creating suggestion: \", _context11.t0);\n          throw _context11.t0;\n        case 17:\n        case \"end\":\n          return _context11.stop();\n      }\n    }, _callee11, null, [[0, 13]]);\n  }));\n}\nfunction deleteSuggestion(suggestionId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {\n    var suggestionRef;\n    return _regeneratorRuntime().wrap(function _callee12$(_context12) {\n      while (1) switch (_context12.prev = _context12.next) {\n        case 0:\n          _context12.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          _context12.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(suggestionRef);\n        case 4:\n          _context12.next = 10;\n          break;\n        case 6:\n          _context12.prev = 6;\n          _context12.t0 = _context12[\"catch\"](0);\n          console.log(\"Error deleting suggestion: \", _context12.t0);\n          throw _context12.t0;\n        case 10:\n        case \"end\":\n          return _context12.stop();\n      }\n    }, _callee12, null, [[0, 6]]);\n  }));\n}\n// Upvote a suggestion for a user\n// takes in suggestion id, user HSAid\n// returns error if transaction failed\nfunction upvoteSuggestion(suggestionId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {\n    var suggestionRef;\n    return _regeneratorRuntime().wrap(function _callee13$(_context13) {\n      while (1) switch (_context13.prev = _context13.next) {\n        case 0:\n          _context13.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId); // Atomically add a update to the upvote array field.\n          _context13.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(suggestionRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 4:\n          _context13.next = 10;\n          break;\n        case 6:\n          _context13.prev = 6;\n          _context13.t0 = _context13[\"catch\"](0);\n          console.log(\"Error upvoting suggestion: \", _context13.t0);\n          throw _context13.t0;\n        case 10:\n        case \"end\":\n          return _context13.stop();\n      }\n    }, _callee13, null, [[0, 6]]);\n  }));\n}\n//creates a comment\n// takes in commenters id, suggestion id and content as string\n// throws error if transaction failed\nfunction createComment(\n// change to subcollection\ncommenterHsaId, suggestionId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee14() {\n    var suggestionRef, commentCollection, commentRef;\n    return _regeneratorRuntime().wrap(function _callee14$(_context14) {\n      while (1) switch (_context14.prev = _context14.next) {\n        case 0:\n          _context14.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          _context14.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 4:\n          commentCollection = _context14.sent;\n          _context14.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 7:\n          commentRef = _context14.sent;\n          _context14.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(commentRef, {\n            id: commentRef.id,\n            commenterHsaId: commenterHsaId,\n            content: content,\n            dateCreated: new Date(),\n            upvotes: []\n          });\n        case 10:\n          _context14.next = 16;\n          break;\n        case 12:\n          _context14.prev = 12;\n          _context14.t0 = _context14[\"catch\"](0);\n          console.log(\"Error creating comment: \", _context14.t0);\n          throw _context14.t0;\n        case 16:\n        case \"end\":\n          return _context14.stop();\n      }\n    }, _callee14, null, [[0, 12]]);\n  }));\n}\n// Upvote a comment for a user\n// takes in suggestionId, commentId and userId as strings\n// return error if transaction failed\nfunction upvoteComment(suggestionId, commentId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee15() {\n    var suggestionRef, commentRef;\n    return _regeneratorRuntime().wrap(function _callee15$(_context15) {\n      while (1) switch (_context15.prev = _context15.next) {\n        case 0:\n          _context15.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          commentRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionRef, \"comment\", commentId); // Atomically add a update to the upvote array field.\n          _context15.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(commentRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 5:\n          _context15.next = 11;\n          break;\n        case 7:\n          _context15.prev = 7;\n          _context15.t0 = _context15[\"catch\"](0);\n          console.log(\"Error upvoting comment: \", _context15.t0);\n          throw _context15.t0;\n        case 11:\n        case \"end\":\n          return _context15.stop();\n      }\n    }, _callee15, null, [[0, 7]]);\n  }));\n}\n//add a note to a user\n// takes in userHsaId and content as string\n// throws error if transaction failed\nfunction addNoteToUser(userHsaId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee16() {\n    var userRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee16$(_context16) {\n      while (1) switch (_context16.prev = _context16.next) {\n        case 0:\n          _context16.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userRef, \"notes\");\n          _context16.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            content: content,\n            dateCreated: new Date()\n          });\n        case 5:\n          _context16.next = 11;\n          break;\n        case 7:\n          _context16.prev = 7;\n          _context16.t0 = _context16[\"catch\"](0);\n          console.log(\"Error adding document: \", _context16.t0);\n          throw _context16.t0;\n        case 11:\n        case \"end\":\n          return _context16.stop();\n      }\n    }, _callee16, null, [[0, 7]]);\n  }));\n}\n// export to setters to be able to use in other files\n\n//////////////////////////////////////////////GETTERS/////////////////////////////////////////////////////////////////////\n// Get any object\n// input is the database type as a string.\n// output is the whole collection of that type.\nfunction getObject(collectionPath) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee17() {\n    var collectionRef, querySnapshot, result;\n    return _regeneratorRuntime().wrap(function _callee17$(_context17) {\n      while (1) switch (_context17.prev = _context17.next) {\n        case 0:\n          _context17.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionPath);\n          _context17.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          querySnapshot = _context17.sent;\n          result = [];\n          querySnapshot.forEach(function (doc) {\n            result.push(doc.data());\n          });\n          return _context17.abrupt(\"return\", result);\n        case 10:\n          _context17.prev = 10;\n          _context17.t0 = _context17[\"catch\"](0);\n          console.error(\"Error getting collection data\", _context17.t0);\n          throw _context17.t0;\n        case 14:\n        case \"end\":\n          return _context17.stop();\n      }\n    }, _callee17, null, [[0, 10]]);\n  }));\n}\n/**\n * Asynchronously retrieves a single document object from the specified collection path and document ID.\n * If the document does not exist, logs a warning and returns null.\n *\n * @param {string} collectionPath - The path to the collection in the database (\"improvementWork\", \"hospital\", \"suggestion\", \"task\", \"unit\", \"users\")\n * @param {string} documentId - The ID of the document to retrieve.\n * @returns {Promise<any|null>} A promise that resolves to the document object if found, or null if not.\n *\n * @throws Will throw an error if there is an issue during retrieval from the database.\n */\nfunction getObjectById(collectionPath, documentId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee18() {\n    var docRef, docSnapshot;\n    return _regeneratorRuntime().wrap(function _callee18$(_context18) {\n      while (1) switch (_context18.prev = _context18.next) {\n        case 0:\n          _context18.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, collectionPath, documentId);\n          _context18.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDoc)(docRef);\n        case 4:\n          docSnapshot = _context18.sent;\n          if (!docSnapshot.exists()) {\n            _context18.next = 9;\n            break;\n          }\n          return _context18.abrupt(\"return\", Object.assign({\n            id: docSnapshot.id\n          }, docSnapshot.data()));\n        case 9:\n          console.warn(\"No such document! \".concat(collectionPath, \"/\").concat(documentId));\n          return _context18.abrupt(\"return\", null);\n        case 11:\n          _context18.next = 17;\n          break;\n        case 13:\n          _context18.prev = 13;\n          _context18.t0 = _context18[\"catch\"](0);\n          console.error(\"Error getting object\", _context18.t0);\n          throw _context18.t0;\n        case 17:\n        case \"end\":\n          return _context18.stop();\n      }\n    }, _callee18, null, [[0, 13]]);\n  }));\n}\n/**\n * Asynchronously retrieves comments for a given suggestion.\n *\n * @param {Object} params - The parameters for fetching comments.\n * @param {string} params.suggestionId - The ID of the suggestion to fetch comments for.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - The criterion to sort the comments by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Determines if the sorting should be in ascending order. Defaults to false (descending).\n * @returns {Promise<any[]>} A promise that resolves to an array of comment objects.\n *\n * @throws Will throw an error if the comments cannot be retrieved.\n */\nfunction getComments(_ref) {\n  var suggestionId = _ref.suggestionId,\n    _ref$sortBy = _ref.sortBy,\n    sortBy = _ref$sortBy === void 0 ? \"dateCreated\" : _ref$sortBy,\n    _ref$ascending = _ref.ascending,\n    ascending = _ref$ascending === void 0 ? false : _ref$ascending;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee19() {\n    var suggestionRef, commentsQuery, commentsSnapshot, comments;\n    return _regeneratorRuntime().wrap(function _callee19$(_context19) {\n      while (1) switch (_context19.prev = _context19.next) {\n        case 0:\n          _context19.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, \"suggestionCollection\", suggestionId);\n          commentsQuery = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\"), (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          _context19.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(commentsQuery);\n        case 5:\n          commentsSnapshot = _context19.sent;\n          comments = [];\n          commentsSnapshot.forEach(function (doc) {\n            comments.push(doc.data());\n          });\n          return _context19.abrupt(\"return\", comments);\n        case 11:\n          _context19.prev = 11;\n          _context19.t0 = _context19[\"catch\"](0);\n          console.error(\"Error getting comments for suggestion: \", _context19.t0);\n          throw _context19.t0;\n        case 15:\n        case \"end\":\n          return _context19.stop();\n      }\n    }, _callee19, null, [[0, 11]]);\n  }));\n}\n//Filtering suggestions on unitId AND creatorHsaId\n//Sort suggestions on dateCreated OR upvotes\n/**\n * Asynchronously retrieves an array of suggestions from the database, with various filters and sorting options.\n *\n * @param {Object} params - The parameters for filtering and sorting suggestions.\n * @param {string} [params.id] - Optional ID to filter suggestions by a specific identifier.\n * @param {string} [params.creatorHsaId] - Optional HSA ID to filter suggestions by the creator's HSA ID.\n * @param {string} [params.unitId] - Optional unit ID to filter suggestions by a specific unit.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - Criterion to sort the suggestions by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Flag indicating if sorting should be ascending. Defaults to false (descending order).\n * @param {boolean} [params.isPublic=true] - Flag indicating whether to filter for public suggestions. Defaults to true.\n * @returns {Promise<any[]>} A promise that resolves to an array of suggestion objects.\n *\n * @throws Will throw an error if there is an issue retrieving suggestions.\n */\nfunction getSuggestions(_ref2) {\n  var id = _ref2.id,\n    creatorHsaId = _ref2.creatorHsaId,\n    name = _ref2.name,\n    unitId = _ref2.unitId,\n    _ref2$sortBy = _ref2.sortBy,\n    sortBy = _ref2$sortBy === void 0 ? \"dateCreated\" : _ref2$sortBy,\n    _ref2$ascending = _ref2.ascending,\n    ascending = _ref2$ascending === void 0 ? false : _ref2$ascending,\n    _ref2$isPublic = _ref2.isPublic,\n    isPublic = _ref2$isPublic === void 0 ? true : _ref2$isPublic;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee20() {\n    var collectionRef, constraints, q, querySnapshot, suggestions;\n    return _regeneratorRuntime().wrap(function _callee20$(_context20) {\n      while (1) switch (_context20.prev = _context20.next) {\n        case 0:\n          _context20.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (creatorHsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"creatorHsaId\", \"==\", creatorHsaId));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", name));\n            sortBy = \"name\";\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"public\", \"==\", isPublic));\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context20.next = 12;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 12:\n          querySnapshot = _context20.sent;\n          suggestions = [];\n          querySnapshot.forEach(function (doc) {\n            suggestions.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context20.abrupt(\"return\", suggestions);\n        case 18:\n          _context20.prev = 18;\n          _context20.t0 = _context20[\"catch\"](0);\n          console.log(\"Error retrieving suggestions by department: \", _context20.t0);\n          throw _context20.t0;\n        case 22:\n        case \"end\":\n          return _context20.stop();\n      }\n    }, _callee20, null, [[0, 18]]);\n  }));\n}\n/**\n * Asynchronously searches for hospital documents in the database.\n * It can filter the results by the hospital's name, ID, or both.\n * If no parameters are provided, it retrieves all hospitals.\n *\n * @param {Object} params - An object containing the search parameters.\n * @param {string} [params.hospitalName] - Optional name of the hospital to filter the search.\n * @param {string} [params.hospitalId] - Optional unique identifier of the hospital to filter the search.\n * @returns {Promise<any[]>} A promise that resolves to an array of hospital objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getHospitals(_ref3) {\n  var hospitalName = _ref3.hospitalName,\n    hospitalId = _ref3.hospitalId;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee21() {\n    var collectionRef, constraints, q, querySnapshot, hospitals;\n    return _regeneratorRuntime().wrap(function _callee21$(_context21) {\n      while (1) switch (_context21.prev = _context21.next) {\n        case 0:\n          _context21.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\n          constraints = [];\n          if (hospitalName) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", hospitalName));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hospitalId));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context21.next = 8;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 8:\n          querySnapshot = _context21.sent;\n          hospitals = [];\n          querySnapshot.forEach(function (doc) {\n            hospitals.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context21.abrupt(\"return\", hospitals);\n        case 14:\n          _context21.prev = 14;\n          _context21.t0 = _context21[\"catch\"](0);\n          console.log(\"Error retrieving Hospitals\", _context21.t0);\n          throw _context21.t0;\n        case 18:\n        case \"end\":\n          return _context21.stop();\n      }\n    }, _callee21, null, [[0, 14]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of improvement work documents based on various filter criteria.\n * It supports filtering by ID, Nolan stage, unit ID, completion status, ongoing status, and patient risk level.\n * It also supports sorting by the start date of the improvement work in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.id] - Optional identifier to filter the improvement works.\n * @param {string} [params.nolanStage] - Optional Nolan stage to filter the improvement works.\n * @param {string} [params.unitId] - Optional unit ID to filter the improvement works.\n * @param {boolean} [params.completed] - Optional flag to filter the improvement works by their completion status.\n * @param {boolean} [params.ongoing] - Optional flag to filter the improvement works by their ongoing status.\n * @param {string} [params.patientRiskLevel] - Optional patient risk level to filter the improvement works.\n * @param {boolean} [params.ascendingDates=false] - Optional flag for sorting by date in ascending order. Defaults to false.\n * @returns {Promise<any[]>} A promise that resolves to an array of improvement work objects that match the criteria.\n *\n * @throws Will throw an error if there is a problem retrieving the improvement works.\n */\nfunction getImprovementWorks(_ref4) {\n  var id = _ref4.id,\n    name = _ref4.name,\n    nolanStage = _ref4.nolanStage,\n    unitId = _ref4.unitId,\n    completed = _ref4.completed,\n    ongoing = _ref4.ongoing,\n    patientRiskLevel = _ref4.patientRiskLevel,\n    _ref4$ascendingDates = _ref4.ascendingDates,\n    ascendingDates = _ref4$ascendingDates === void 0 ? false : _ref4$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee22() {\n    var collectionRef, constraints, q, querySnapshot, improvementWorks;\n    return _regeneratorRuntime().wrap(function _callee22$(_context22) {\n      while (1) switch (_context22.prev = _context22.next) {\n        case 0:\n          _context22.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            console.log(\"inne i ifsatsen i databasen\");\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (nolanStage) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"currentStage\", \"==\", nolanStage));\n          }\n          if (completed != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"completed\", \"==\", completed));\n          }\n          if (ongoing !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"ongoing\", \"==\", ongoing));\n          }\n          if (patientRiskLevel) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"patientRiskLevel\", \"==\", patientRiskLevel));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"lowerCaseName\", \">=\", name.toLowerCase()));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"lowerCaseName\", \"<=\", name.toLowerCase() + \"~\"));\n          } else {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"dateStarted\", ascendingDates ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context22.next = 13;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 13:\n          querySnapshot = _context22.sent;\n          improvementWorks = [];\n          querySnapshot.forEach(function (doc) {\n            improvementWorks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context22.abrupt(\"return\", improvementWorks);\n        case 19:\n          _context22.prev = 19;\n          _context22.t0 = _context22[\"catch\"](0);\n          console.log(\"Error retrieving improvementWorks: \", _context22.t0);\n          throw _context22.t0;\n        case 23:\n        case \"end\":\n          return _context22.stop();\n      }\n    }, _callee22, null, [[0, 19]]);\n  }));\n}\n// Gets improvementWorks where each field matches the union of elements in the input array for each fo the fields\nfunction getFilteredImprovementWorks(_ref5) {\n  var patientRiskLevels = _ref5.patientRiskLevels,\n    nolanStages = _ref5.nolanStages,\n    units = _ref5.units,\n    _ref5$ascendingDates = _ref5.ascendingDates,\n    ascendingDates = _ref5$ascendingDates === void 0 ? false : _ref5$ascendingDates,\n    completed = _ref5.completed;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee23() {\n    var collectionRef, constraints, q, querySnapshot, improvementWorks;\n    return _regeneratorRuntime().wrap(function _callee23$(_context23) {\n      while (1) switch (_context23.prev = _context23.next) {\n        case 0:\n          _context23.prev = 0;\n          console.log(\"Getting improvement works with the following constraints\", patientRiskLevels, nolanStages, units, ascendingDates);\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\n          constraints = [];\n          if (patientRiskLevels && patientRiskLevels.length) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"patientRiskLevel\", \"in\", patientRiskLevels));\n          }\n          if (nolanStages && nolanStages.length) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"currentStage\", \"in\", nolanStages));\n          }\n          if (units && units.length) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"in\", units));\n          }\n          // If none of the array filters are provided, default to ordering by date.\n          if (!patientRiskLevels.length && !nolanStages.length && !units.length) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"dateStarted\", ascendingDates ? \"asc\" : \"desc\"));\n          }\n          if (completed) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"completed\", \"==\", completed));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context23.next = 12;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 12:\n          querySnapshot = _context23.sent;\n          improvementWorks = [];\n          querySnapshot.forEach(function (doc) {\n            improvementWorks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context23.abrupt(\"return\", improvementWorks);\n        case 18:\n          _context23.prev = 18;\n          _context23.t0 = _context23[\"catch\"](0);\n          console.error(\"Error retrieving filtered improvementWorks: \", _context23.t0);\n          throw _context23.t0;\n        case 22:\n        case \"end\":\n          return _context23.stop();\n      }\n    }, _callee23, null, [[0, 18]]);\n  }));\n}\nfunction getImprovementWorkOwner(improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee24() {\n    var constraints, q, querySnapshot, owner;\n    return _regeneratorRuntime().wrap(function _callee24$(_context24) {\n      while (1) switch (_context24.prev = _context24.next) {\n        case 0:\n          _context24.prev = 0;\n          constraints = [];\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"isOwner\", \"==\", true));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [userImprovementWorkCollection].concat(constraints));\n          _context24.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 7:\n          querySnapshot = _context24.sent;\n          if (!querySnapshot.empty) {\n            _context24.next = 13;\n            break;\n          }\n          console.log(\"Improvement work \", improvementWorkId, \" has no owner\");\n          return _context24.abrupt(\"return\", null);\n        case 13:\n          owner = querySnapshot.docs[0].data().userHsaId;\n          return _context24.abrupt(\"return\", owner);\n        case 15:\n          _context24.next = 20;\n          break;\n        case 17:\n          _context24.prev = 17;\n          _context24.t0 = _context24[\"catch\"](0);\n          console.log(_context24.t0);\n        case 20:\n        case \"end\":\n          return _context24.stop();\n      }\n    }, _callee24, null, [[0, 17]]);\n  }));\n}\nfunction getImprovementWorkResponsible(improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee25() {\n    var constraints, q, querySnapshot, responsibleId, responsible;\n    return _regeneratorRuntime().wrap(function _callee25$(_context25) {\n      while (1) switch (_context25.prev = _context25.next) {\n        case 0:\n          _context25.prev = 0;\n          constraints = [];\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"isResponsibleFor\", \"==\", true));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [userImprovementWorkCollection].concat(constraints));\n          _context25.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 7:\n          querySnapshot = _context25.sent;\n          if (!querySnapshot.empty) {\n            _context25.next = 13;\n            break;\n          }\n          console.log(\"Improvement work \", improvementWorkId, \" has no responsible\");\n          return _context25.abrupt(\"return\", null);\n        case 13:\n          responsibleId = querySnapshot.docs[0].data().userHsaId;\n          _context25.next = 16;\n          return getObjectById(\"users\", responsibleId);\n        case 16:\n          responsible = _context25.sent;\n          return _context25.abrupt(\"return\", responsible);\n        case 18:\n          _context25.next = 23;\n          break;\n        case 20:\n          _context25.prev = 20;\n          _context25.t0 = _context25[\"catch\"](0);\n          console.log(_context25.t0);\n        case 23:\n        case \"end\":\n          return _context25.stop();\n      }\n    }, _callee25, null, [[0, 20]]);\n  }));\n}\n// TODO getUsersForTask!\n/**\n * Asynchronously retrieves user documents from the database based on various filter criteria.\n * It can filter by the Health Savings Account ID (hsaId), unit ID, and unique identifier (uid).\n * Additionally, it can sort the results by first name in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.hsaId] - Optional HSA ID to filter the users.\n * @param {string} [params.unitId] - Optional unit ID to filter the users.\n * @param {boolean} [params.ascendingFirstNames=false] - Optional flag to sort by first names in ascending order. Defaults to false (descending order).\n * @param {string} [params.uid] - Optional unique identifier to filter the users.\n * @returns {Promise<any[]>} A promise that resolves to an array of user objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUsers(_ref6) {\n  var hsaId = _ref6.hsaId,\n    name = _ref6.name,\n    unitId = _ref6.unitId,\n    _ref6$ascendingFirstN = _ref6.ascendingFirstNames,\n    ascendingFirstNames = _ref6$ascendingFirstN === void 0 ? false : _ref6$ascendingFirstN,\n    uid = _ref6.uid;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee26() {\n    var collectionRef, constraints, q, querySnapshot, users;\n    return _regeneratorRuntime().wrap(function _callee26$(_context26) {\n      while (1) switch (_context26.prev = _context26.next) {\n        case 0:\n          _context26.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\n          constraints = [];\n          if (hsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hsaId));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (uid) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"uid\", \"==\", uid));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", name));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"firstName\", ascendingFirstNames ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context26.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 11:\n          querySnapshot = _context26.sent;\n          users = [];\n          querySnapshot.forEach(function (doc) {\n            users.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context26.abrupt(\"return\", users);\n        case 17:\n          _context26.prev = 17;\n          _context26.t0 = _context26[\"catch\"](0);\n          console.log(\"Error retrieving users by department: \", _context26.t0);\n          throw _context26.t0;\n        case 21:\n        case \"end\":\n          return _context26.stop();\n      }\n    }, _callee26, null, [[0, 17]]);\n  }));\n}\n// TODO getTasksForUser!\n/**\n * Asynchronously retrieves an array of task documents from the database based on several filter and sorting criteria.\n * Filters include task ID, user ID and their responsibility status, and related improvement work ID.\n * Results can be sorted by date either in ascending or descending order.\n *\n * @param {Object} params - Parameters to filter and sort the task results.\n * @param {string} [params.taskId] - Optional task ID to filter the tasks.\n * @param {string} [params.userId] - Optional user ID to identify tasks related to a user.\n * @param {boolean} [params.isResponsibleFor] - Optional flag to filter tasks where the user is marked as responsible.\n * @param {string} [params.improvementWorkId] - Optional improvement work ID to filter tasks related to a specific improvement work.\n * @param {boolean} [params.ascendingDates=false] - Optional flag to sort tasks by date in ascending order; defaults to descending order.\n * @returns {Promise<any[]>} A promise that resolves to an array of task objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getTasks(_ref7) {\n  var improvementWorkId = _ref7.improvementWorkId,\n    stage = _ref7.stage,\n    _ref7$ascendingDates = _ref7.ascendingDates,\n    ascendingDates = _ref7$ascendingDates === void 0 ? false : _ref7$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee27() {\n    var collectionRef, constraints, q, querySnapshot, tasks;\n    return _regeneratorRuntime().wrap(function _callee27$(_context27) {\n      while (1) switch (_context27.prev = _context27.next) {\n        case 0:\n          _context27.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\n          constraints = [];\n          if (stage) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"stage\", \"==\", stage));\n          }\n          if (improvementWorkId != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"startDate\", ascendingDates ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context27.next = 8;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 8:\n          querySnapshot = _context27.sent;\n          tasks = [];\n          querySnapshot.forEach(function (doc) {\n            tasks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context27.abrupt(\"return\", tasks);\n        case 14:\n          _context27.prev = 14;\n          _context27.t0 = _context27[\"catch\"](0);\n          console.log(\"Error retrieving task by department: \", _context27.t0);\n          throw _context27.t0;\n        case 18:\n        case \"end\":\n          return _context27.stop();\n      }\n    }, _callee27, null, [[0, 14]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of unit documents from the database based on various filter criteria.\n * Filters can be applied based on unit ID, hospital ID, and unit name.\n * Additionally, results can be sorted by unit names in ascending or descending order.\n *\n * @param {Object} params - The parameters object containing filter and sorting options.\n * @param {string} [params.unitId] - Optional unit ID to filter the units.\n * @param {string} [params.hospitalId] - Optional hospital ID to filter units within a specific hospital.\n * @param {string} [params.name] - Optional name to filter units by a specific name.\n * @param {boolean} [params.ascendingUnitNames=false] - Optional flag to sort units by name in ascending order, defaults to descending.\n * @returns {Promise<any[]>} A promise that resolves to an array of unit objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUnits(_ref8) {\n  var unitId = _ref8.unitId,\n    hospitalId = _ref8.hospitalId,\n    name = _ref8.name,\n    _ref8$ascendingUnitNa = _ref8.ascendingUnitNames,\n    ascendingUnitNames = _ref8$ascendingUnitNa === void 0 ? false : _ref8$ascendingUnitNa;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee28() {\n    var collectionRef, constraints, q, querySnapshot, units;\n    return _regeneratorRuntime().wrap(function _callee28$(_context28) {\n      while (1) switch (_context28.prev = _context28.next) {\n        case 0:\n          _context28.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\n          constraints = [];\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", unitId));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", name));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"hospitalId\", \"==\", hospitalId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"name\", ascendingUnitNames ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context28.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context28.sent;\n          units = [];\n          querySnapshot.forEach(function (doc) {\n            units.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context28.abrupt(\"return\", units);\n        case 15:\n          _context28.prev = 15;\n          _context28.t0 = _context28[\"catch\"](0);\n          console.log(\"Error retrieving units by hospitalId: \", _context28.t0);\n          throw _context28.t0;\n        case 19:\n        case \"end\":\n          return _context28.stop();\n      }\n    }, _callee28, null, [[0, 15]]);\n  }));\n}\nfunction getImprovementWorksForUser(userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee29() {\n    var q, querySnapshot, improvementWorks, _iterator2, _step2, _doc2, improvementWorkId, improvementWorkDoc;\n    return _regeneratorRuntime().wrap(function _callee29$(_context29) {\n      while (1) switch (_context29.prev = _context29.next) {\n        case 0:\n          _context29.prev = 0;\n          console.log(\"Getting improvementworks for user: \", userHsaId);\n          // Query the userImprovementWork collection for relations involving this user\n          q = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)(userImprovementWorkCollection, (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"userHsaId\", \"==\", userHsaId));\n          _context29.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 5:\n          querySnapshot = _context29.sent;\n          // Fetch each related improvementWork document\n          improvementWorks = [];\n          _iterator2 = _createForOfIteratorHelper(querySnapshot.docs);\n          _context29.prev = 8;\n          _iterator2.s();\n        case 10:\n          if ((_step2 = _iterator2.n()).done) {\n            _context29.next = 19;\n            break;\n          }\n          _doc2 = _step2.value;\n          improvementWorkId = _doc2.data().improvementWorkId;\n          _context29.next = 15;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 15:\n          improvementWorkDoc = _context29.sent;\n          improvementWorks.push(improvementWorkDoc);\n        case 17:\n          _context29.next = 10;\n          break;\n        case 19:\n          _context29.next = 24;\n          break;\n        case 21:\n          _context29.prev = 21;\n          _context29.t0 = _context29[\"catch\"](8);\n          _iterator2.e(_context29.t0);\n        case 24:\n          _context29.prev = 24;\n          _iterator2.f();\n          return _context29.finish(24);\n        case 27:\n          return _context29.abrupt(\"return\", improvementWorks);\n        case 30:\n          _context29.prev = 30;\n          _context29.t1 = _context29[\"catch\"](0);\n          console.error(\"Error getting improvement works for user: \", _context29.t1);\n          throw _context29.t1;\n        case 34:\n        case \"end\":\n          return _context29.stop();\n      }\n    }, _callee29, null, [[0, 30], [8, 21, 24, 27]]);\n  }));\n}\nfunction getUsersForImprovementWork(improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee30() {\n    var q, querySnapshot, users, _iterator3, _step3, _doc3, userHsaId, userDoc;\n    return _regeneratorRuntime().wrap(function _callee30$(_context30) {\n      while (1) switch (_context30.prev = _context30.next) {\n        case 0:\n          _context30.prev = 0;\n          // Query the userImprovementWork collection for relations involving this improvementWork\n          q = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)(userImprovementWorkCollection, (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n          _context30.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 4:\n          querySnapshot = _context30.sent;\n          // Fetch each related user document\n          users = [];\n          _iterator3 = _createForOfIteratorHelper(querySnapshot.docs);\n          _context30.prev = 7;\n          _iterator3.s();\n        case 9:\n          if ((_step3 = _iterator3.n()).done) {\n            _context30.next = 18;\n            break;\n          }\n          _doc3 = _step3.value;\n          userHsaId = _doc3.data().userHsaId;\n          _context30.next = 14;\n          return getObjectById(\"users\", userHsaId);\n        case 14:\n          userDoc = _context30.sent;\n          users.push(userDoc);\n        case 16:\n          _context30.next = 9;\n          break;\n        case 18:\n          _context30.next = 23;\n          break;\n        case 20:\n          _context30.prev = 20;\n          _context30.t0 = _context30[\"catch\"](7);\n          _iterator3.e(_context30.t0);\n        case 23:\n          _context30.prev = 23;\n          _iterator3.f();\n          return _context30.finish(23);\n        case 26:\n          return _context30.abrupt(\"return\", users);\n        case 29:\n          _context30.prev = 29;\n          _context30.t1 = _context30[\"catch\"](0);\n          console.error(\"Error getting users for improvementWork: \", _context30.t1);\n          throw _context30.t1;\n        case 33:\n        case \"end\":\n          return _context30.stop();\n      }\n    }, _callee30, null, [[0, 29], [7, 20, 23, 26]]);\n  }));\n}\n// export getters to be able to use in other files\n\n////////////////////////////////////DELETING/////////////////////////////////////////////\n// delete an instance of a type\nfunction deleteInstance(docType, docId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee31() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee31$(_context31) {\n      while (1) switch (_context31.prev = _context31.next) {\n        case 0:\n          _context31.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context31.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(docRef);\n        case 4:\n          console.log(\"\".concat(docType, \" deleted successfully.\"));\n          _context31.next = 11;\n          break;\n        case 7:\n          _context31.prev = 7;\n          _context31.t0 = _context31[\"catch\"](0);\n          console.error(\"Error deleting \".concat(docType, \":\"), _context31.t0);\n          throw _context31.t0;\n        case 11:\n        case \"end\":\n          return _context31.stop();\n      }\n    }, _callee31, null, [[0, 7]]);\n  }));\n}\n// delete all instances of a type\nfunction deleteAllDocumentsInCollection(collectionName) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee33() {\n    var _this = this;\n    var collectionRef, snapshot, deletePromises;\n    return _regeneratorRuntime().wrap(function _callee33$(_context33) {\n      while (1) switch (_context33.prev = _context33.next) {\n        case 0:\n          _context33.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionName);\n          _context33.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          snapshot = _context33.sent;\n          // Delete all documents in the collection\n          deletePromises = snapshot.docs.map(function (doc) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee32() {\n              return _regeneratorRuntime().wrap(function _callee32$(_context32) {\n                while (1) switch (_context32.prev = _context32.next) {\n                  case 0:\n                    _context32.next = 2;\n                    return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(doc.ref);\n                  case 2:\n                  case \"end\":\n                    return _context32.stop();\n                }\n              }, _callee32);\n            }));\n          });\n          _context33.next = 8;\n          return Promise.all(deletePromises);\n        case 8:\n          console.log(\"All documents in the \".concat(collectionName, \" collection deleted successfully.\"));\n          _context33.next = 15;\n          break;\n        case 11:\n          _context33.prev = 11;\n          _context33.t0 = _context33[\"catch\"](0);\n          console.error(\"Error deleting all documents in \".concat(collectionName, \":\"), _context33.t0);\n          throw _context33.t0;\n        case 15:\n        case \"end\":\n          return _context33.stop();\n      }\n    }, _callee33, null, [[0, 11]]);\n  }));\n}\n////////////////////////////////////UPDATING/////////////////////////////////////////////\n// update a field in an instance\nfunction updateInstance(docType, docId, updates) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee34() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee34$(_context34) {\n      while (1) switch (_context34.prev = _context34.next) {\n        case 0:\n          _context34.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context34.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(docRef, updates);\n        case 4:\n          console.log(\"\".concat(docType, \" updated successfully.\"));\n          _context34.next = 11;\n          break;\n        case 7:\n          _context34.prev = 7;\n          _context34.t0 = _context34[\"catch\"](0);\n          console.error(\"Error updating \".concat(docType, \":\"), _context34.t0);\n          throw _context34.t0;\n        case 11:\n        case \"end\":\n          return _context34.stop();\n      }\n    }, _callee34, null, [[0, 7]]);\n  }));\n}\n// changes the ongoing status of an improvement work. if ongoing it is paused, if if paused onging.\n// user must be a manager\nfunction startOrPauseImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee35() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee35$(_context35) {\n      while (1) switch (_context35.prev = _context35.next) {\n        case 0:\n          _context35.prev = 0;\n          _context35.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context35.sent;\n          _context35.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context35.sent;\n          if (!(!user || !user.manager)) {\n            _context35.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change improvementWork status\");\n        case 11:\n          if (!improvementWork) {\n            _context35.next = 19;\n            break;\n          }\n          update = {\n            ongoing: !improvementWork.ongoing\n          };\n          _context35.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          return _context35.abrupt(\"return\", true);\n        case 19:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n          return _context35.abrupt(\"return\", false);\n        case 21:\n          _context35.next = 27;\n          break;\n        case 23:\n          _context35.prev = 23;\n          _context35.t0 = _context35[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context35.t0);\n          throw _context35.t0;\n        case 27:\n        case \"end\":\n          return _context35.stop();\n      }\n    }, _callee35, null, [[0, 23]]);\n  }));\n}\nfunction changePatientRiskLevel(userId, improvementWorkId, patientRiskLevel) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee36() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee36$(_context36) {\n      while (1) switch (_context36.prev = _context36.next) {\n        case 0:\n          _context36.prev = 0;\n          _context36.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context36.sent;\n          _context36.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context36.sent;\n          if (!(!user || !user.manager)) {\n            _context36.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change patientRiskLevel in improvement work\");\n        case 11:\n          if (!improvementWork) {\n            _context36.next = 18;\n            break;\n          }\n          update = {\n            patientRiskLevel: patientRiskLevel\n          };\n          _context36.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context36.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context36.next = 25;\n          break;\n        case 21:\n          _context36.prev = 21;\n          _context36.t0 = _context36[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context36.t0);\n          throw _context36.t0;\n        case 25:\n        case \"end\":\n          return _context36.stop();\n      }\n    }, _callee36, null, [[0, 21]]);\n  }));\n}\n// finalizes the improvement work. ongoing is set to false.\n// user must be a manager\nfunction finalizeImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee37() {\n    var user, update;\n    return _regeneratorRuntime().wrap(function _callee37$(_context37) {\n      while (1) switch (_context37.prev = _context37.next) {\n        case 0:\n          _context37.prev = 0;\n          _context37.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context37.sent;\n          if (!(!user || !user.manager)) {\n            _context37.next = 8;\n            break;\n          }\n          return _context37.abrupt(\"return\", false);\n        case 8:\n          update = {\n            completed: true,\n            ongoing: false\n          };\n          _context37.next = 11;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 11:\n          return _context37.abrupt(\"return\", true);\n        case 12:\n          _context37.next = 17;\n          break;\n        case 14:\n          _context37.prev = 14;\n          _context37.t0 = _context37[\"catch\"](0);\n          return _context37.abrupt(\"return\", false);\n        case 17:\n        case \"end\":\n          return _context37.stop();\n      }\n    }, _callee37, null, [[0, 14]]);\n  }));\n}\n\n//////////////////////////////// for later sprint\n//function add_upvotes\n//function add_notes\n//function add_intrested_users\n\n//# sourceURL=webpack://c3/./client/Database/database.js?");
 
 /***/ }),
 
@@ -156,7 +156,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
   \*****************************************/
 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   loadPage: () => (/* binding */ loadPage)\n/* harmony export */ });\nfunction loadPage() {\n  var container = document.querySelector('#container-fluid');\n  if (!container) return; // Stop if the container isn't found\n  fetch('KnowledgeBank/Nolans3.html').then(function (response) {\n    return response.text();\n  }).then(function (data) {\n    // Create a temporary container element to hold the loaded content\n    var tempContainer = document.createElement('div');\n    tempContainer.innerHTML = data;\n    // Select the specific element with the class you want\n    var specificElement = tempContainer.querySelector('.nolans-main-container');\n    if (specificElement) {\n      // Insert the specific element into the target element\n      container.insertBefore(specificElement, container.firstChild);\n    }\n  })[\"catch\"](function (error) {\n    console.error('Failed to load the external HTML file:', error);\n  });\n}\n\n//# sourceURL=webpack://c3/./client/KnowledgeBank/Nolans3.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   loadPage: () => (/* binding */ loadPage)\n/* harmony export */ });\nfunction loadPage() {\n  var container = document.querySelector(\"#container-fluid\");\n  if (!container) return; // Stop if the container isn't found\n  fetch(\"KnowledgeBank/Nolans3.html\").then(function (response) {\n    return response.text();\n  }).then(function (data) {\n    // Create a temporary container element to hold the loaded content\n    var tempContainer = document.createElement(\"div\");\n    tempContainer.innerHTML = data;\n    // Select the specific element with the class you want\n    var specificElement = tempContainer.querySelector(\".nolans-main-container\");\n    if (specificElement) {\n      // Insert the specific element into the target element\n      container.insertBefore(specificElement, container.firstChild);\n    }\n  })[\"catch\"](function (error) {\n    console.error(\"Failed to load the external HTML file:\", error);\n  });\n}\n\n//# sourceURL=webpack://c3/./client/KnowledgeBank/Nolans3.js?");
 
 /***/ }),
 
@@ -256,7 +256,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
   \***************************************************/
 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   addEventListener: () => (/* binding */ addEventListener),\n/* harmony export */   loadPage: () => (/* binding */ loadPage)\n/* harmony export */ });\n/* harmony import */ var _Database_database_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Database/database.js */ \"./client/Database/database.js\");\n/* harmony import */ var _SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../SidebarAndHeader/pageHandler.js */ \"./client/SidebarAndHeader/pageHandler.js\");\n/* harmony import */ var _ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../ideaBank/ideaBank.js */ \"./client/ideaBank/ideaBank.js\");\n\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\nvar projectCards = [];\nvar filteredImprovementWorks = [];\nvar projectCard = /*#__PURE__*/function () {\n  function projectCard(id, name, department, title, description, projectId, currentStage) {\n    _classCallCheck(this, projectCard);\n    this.name = name;\n    this.department = department;\n    this.title = title;\n    this.description = description;\n    this.id = id;\n    this.projectId = projectId;\n    this.stage = currentStage;\n  }\n  _createClass(projectCard, [{\n    key: \"showMoreInfo\",\n    value: function showMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"flex\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"^ Stäng detaljer\";\n      }\n    }\n  }, {\n    key: \"closeMoreInfo\",\n    value: function closeMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"none\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"> Mer information\";\n      }\n    }\n  }, {\n    key: \"loadInitiatePage\",\n    value: function loadInitiatePage() {\n      alert(\"The initiate project page should now be loaded\");\n    }\n  }, {\n    key: \"generateHTML\",\n    value: function generateHTML() {\n      var stageImages = {\n        Act: \"../images/Hemsida_PGSA_A.png\",\n        Study: \"../images/Hemsida_PGSA_S.png\",\n        Do: \"../images/Hemsida_PGSA_G.png\",\n        Plan: \"../images/Hemsida_PGSA_P.png\",\n        Finished: \"path/to/finished-image.jpg\"\n      };\n      var stageKey = this.stage;\n      // Check if the stage is directly a key in stageImages\n      if (!stageImages[stageKey]) {\n        // If not, try to map the Swedish stage to English using nolanStageMapping\n        stageKey = nolanStageMapping[stageKey];\n      }\n      // Now get the imageUrl using the stageKey\n      var imageUrl = stageImages[stageKey];\n      return \"\\n    <div class=\\\"totalExpandedOngoingWorkCard\\\">\\n      <div style=\\\"cursor: default;\\\" class=\\\"flex-container ongoingCard\\\" id=\\\"\".concat(this.projectId, \"\\\">\\n        <div class=\\\"ongoingCardImageContainer toSinglePage\\\">\\n          <div class = \\\"flex-box ongoingCardImage toSinglePage\\\" id=\\\"pinkFaded\\\"></div>\\n        </div>\\n        <div class=\\\"div ongoingCardInfo toSinglePage\\\">\\n          <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardManager\\\">\").concat(this.name, \"</p>\\n          <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardDepartment\\\">\").concat(this.department, \"</p>\\n          <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardIdeaTitle\\\">\").concat(this.title, \"</p>\\n        </div>\\n        <button id=\\\"project-button-\").concat(this.projectId, \"\\\" data-project-id=\\\"\").concat(this.id, \"\\\" class=\\\"projectButton\\\" role=\\\"button\\\">G\\xE5 till projektsidan</button>\\n        <div>\\n          <img class=\\\"statusImage\\\" src=\\\"\").concat(imageUrl, \"\\\" alt=\\\"Stage Image\\\">\\n        </div>\\n        <div class=\\\"container ongoingSeeCardDetails toSinglePage\\\">\\n          <div class=\\\"ongoingSeeCardDetailsInner\\\">\\n            <p id=\\\"ongoingSeeDetailsButton\").concat(this.projectId, \"\\\" class = \\\"moreInfoClass\\\">> Mer information</p>\\n          </div>\\n        </div>\\n      </div> \\n      <div class = \\\"expandedOngoingWorkCard\\\" id=\\\"expandedOngoingWorkCard\").concat(this.projectId, \"\\\" style=\\\"display: none;\\\">\\n        <div class =\\\"expandedTextOngoingWorkCard\\\">\\n          \").concat(this.description, \"\\n        </div>\\n      </div>\\n    </div> \");\n    }\n  }]);\n  return projectCard;\n}();\nfunction loadPage(listenersLoaded) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n    var container, checkedHospitalIds, checkedUnitIds, checkedNolanStages, checkedPatientRiskLevels, ascendingDates, searchBar;\n    return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n      while (1) switch (_context6.prev = _context6.next) {\n        case 0:\n          container = document.querySelector(\"#container-fluid\");\n          if (container) {\n            _context6.next = 3;\n            break;\n          }\n          return _context6.abrupt(\"return\");\n        case 3:\n          // Stop if the container isn't found\n          projectCards = [];\n          // Initialize empty lists of checked hospital and unit ids\n          checkedHospitalIds = [];\n          checkedUnitIds = [];\n          checkedNolanStages = [];\n          checkedPatientRiskLevels = [];\n          ascendingDates = false;\n          fetch(\"currentProjects/currentProjects.html\").then(function (response) {\n            return response.text();\n          }).then(function (data) {\n            // Create a temporary container element to hold the loaded content\n            var tempContainer = document.createElement(\"div\");\n            tempContainer.innerHTML = data;\n            // Select the specific element with the class you want\n            var specificElement = tempContainer.querySelector(\".filterBar\");\n            var createHospitalCheckBoxContainer = tempContainer.querySelector('#hospitalSelection');\n            var createUnitCheckBoxContainer = tempContainer.querySelector('#unitSelection');\n            var createNolanStageCheckBoxContainer = tempContainer.querySelector('#nolanStageSelection');\n            var createPatientRiskLevelCheckBoxContainer = tempContainer.querySelector('#patientRiskLevelSelection');\n            var createOrderSelectionContainer = tempContainer.querySelector('#orderSelection');\n            if (createHospitalCheckBoxContainer) {\n              createHospitalCheckBoxContainer.addEventListener('change', function (event) {\n                return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n                  var checkboxes;\n                  return _regeneratorRuntime().wrap(function _callee$(_context) {\n                    while (1) switch (_context.prev = _context.next) {\n                      case 0:\n                        checkboxes = createHospitalCheckBoxContainer.querySelectorAll('input[type=\"checkbox\"]');\n                        console.log(\"createHospitalCheckBoxContainer\");\n                        // Empty list of checked hospitals\n                        checkedHospitalIds = [];\n                        // Array to store IDs of checked checkboxes\n                        checkboxes.forEach(function (checkbox) {\n                          // Ensure the checkbox is an HTMLInputElement\n                          var inputCheckbox = checkbox;\n                          // Check if the checkbox is checked and add its ID to the array\n                          if (inputCheckbox.checked) {\n                            checkedHospitalIds.push(inputCheckbox.id);\n                          }\n                        });\n                        // Log all checked hospital IDs\n                        console.log('Checked hospitals:', checkedHospitalIds);\n                        // Future change: Only clear the unitIds for unchecked hospitals!\n                        (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.clearContent)(\"unitSelection\");\n                        (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.loadUnits)(checkedHospitalIds);\n                      case 7:\n                      case \"end\":\n                        return _context.stop();\n                    }\n                  }, _callee);\n                }));\n              });\n            }\n            if (createUnitCheckBoxContainer) {\n              createUnitCheckBoxContainer.addEventListener('change', function (event) {\n                return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n                  var checkboxes;\n                  return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n                    while (1) switch (_context2.prev = _context2.next) {\n                      case 0:\n                        checkboxes = createUnitCheckBoxContainer.querySelectorAll('input[type=\"checkbox\"]');\n                        console.log(\"createUnitCheckBoxContainer\");\n                        // Empty list of checked units\n                        checkedUnitIds = [];\n                        checkboxes.forEach(function (checkbox) {\n                          // Ensure the checkbox is an HTMLInputElement\n                          var inputCheckbox = checkbox;\n                          // Check if the checkbox is checked and add its ID to the array\n                          if (inputCheckbox.checked) {\n                            checkedUnitIds.push(inputCheckbox.id);\n                          }\n                        });\n                        _context2.next = 6;\n                        return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getFilteredImprovementWorks)({\n                          patientRiskLevels: checkedPatientRiskLevels,\n                          nolanStages: checkedNolanStages,\n                          units: checkedUnitIds\n                        });\n                      case 6:\n                        filteredImprovementWorks = _context2.sent;\n                        (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.removeCardsFromDiv)(\"div.projectCardCardDiv\");\n                        getProjects(container, listenersLoaded, filteredImprovementWorks);\n                      case 9:\n                      case \"end\":\n                        return _context2.stop();\n                    }\n                  }, _callee2);\n                }));\n              });\n            }\n            if (createNolanStageCheckBoxContainer) {\n              createNolanStageCheckBoxContainer.addEventListener('change', function (event) {\n                return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n                  var checkboxes;\n                  return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n                    while (1) switch (_context3.prev = _context3.next) {\n                      case 0:\n                        checkboxes = createNolanStageCheckBoxContainer.querySelectorAll('input[type=\"checkbox\"]'); // Empty list of checked hospitals\n                        checkedNolanStages = [];\n                        // Array to store IDs of checked checkboxes\n                        checkboxes.forEach(function (checkbox) {\n                          // Ensure the checkbox is an HTMLInputElement\n                          var inputCheckbox = checkbox;\n                          // Check if the checkbox is checked and add its ID to the array\n                          if (inputCheckbox.checked) {\n                            checkedNolanStages.push(inputCheckbox.id);\n                            checkedNolanStages.push(nolanStageMapping[inputCheckbox.id]);\n                            console.log(\"checkedNolanStages: \", checkedNolanStages);\n                          }\n                        });\n                        _context3.next = 5;\n                        return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getFilteredImprovementWorks)({\n                          patientRiskLevels: checkedPatientRiskLevels,\n                          nolanStages: checkedNolanStages,\n                          units: checkedUnitIds\n                        });\n                      case 5:\n                        filteredImprovementWorks = _context3.sent;\n                        (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.removeCardsFromDiv)(\"div.projectCardCardDiv\");\n                        getProjects(container, listenersLoaded, filteredImprovementWorks);\n                      case 8:\n                      case \"end\":\n                        return _context3.stop();\n                    }\n                  }, _callee3);\n                }));\n              });\n            }\n            if (createPatientRiskLevelCheckBoxContainer) {\n              createPatientRiskLevelCheckBoxContainer.addEventListener('change', function (event) {\n                return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n                  var checkboxes;\n                  return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n                    while (1) switch (_context4.prev = _context4.next) {\n                      case 0:\n                        checkboxes = createPatientRiskLevelCheckBoxContainer.querySelectorAll('input[type=\"checkbox\"]');\n                        console.log(\"createPatientRiskLevelCheckBoxContainer\");\n                        // Empty list of checked hospitals\n                        checkedPatientRiskLevels = [];\n                        // Array to store IDs of checked checkboxes\n                        checkboxes.forEach(function (checkbox) {\n                          // Ensure the checkbox is an HTMLInputElement\n                          var inputCheckbox = checkbox;\n                          // Check if the checkbox is checked and add its ID to the array\n                          if (inputCheckbox.checked) {\n                            checkedPatientRiskLevels.push(inputCheckbox.id);\n                            checkedPatientRiskLevels.push(patientRiskLevelMapping[inputCheckbox.id]);\n                            console.log(\"checkedPatientRiskLevels: \", checkedPatientRiskLevels);\n                          }\n                        });\n                        _context4.next = 6;\n                        return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getFilteredImprovementWorks)({\n                          patientRiskLevels: checkedPatientRiskLevels,\n                          nolanStages: checkedNolanStages,\n                          units: checkedUnitIds\n                        });\n                      case 6:\n                        filteredImprovementWorks = _context4.sent;\n                        (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.removeCardsFromDiv)(\"div.projectCardCardDiv\");\n                        getProjects(container, listenersLoaded, filteredImprovementWorks);\n                      case 9:\n                      case \"end\":\n                        return _context4.stop();\n                    }\n                  }, _callee4);\n                }));\n              });\n            }\n            if (createOrderSelectionContainer) {\n              createOrderSelectionContainer.addEventListener('change', function (event) {\n                return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n                  var inputCheckbox;\n                  return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n                    while (1) switch (_context5.prev = _context5.next) {\n                      case 0:\n                        inputCheckbox = event.target;\n                        ascendingDates = inputCheckbox.checked;\n                        (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.removeCardsFromDiv)(\"div.projectCardCardDiv\");\n                        sortProjects(container, listenersLoaded, ascendingDates);\n                      case 4:\n                      case \"end\":\n                        return _context5.stop();\n                    }\n                  }, _callee5);\n                }));\n              });\n            }\n            if (specificElement) {\n              // Insert the specific element into the target element\n              container.insertBefore(specificElement, container.firstChild);\n            }\n          })[\"catch\"](function (error) {\n            console.error(\"Failed to load the external HTML file:\", error);\n          });\n          _context6.next = 12;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getImprovementWorks)({\n            completed: false\n          });\n        case 12:\n          filteredImprovementWorks = _context6.sent;\n          console.log(\"Filtered improvementWorks: \", filteredImprovementWorks);\n          (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.removeCardsFromDiv)(\"div.projectCardCardDiv\");\n          getProjects(container, listenersLoaded, filteredImprovementWorks);\n          searchBar = document.getElementById(\"searchBarImprovement\");\n          searchBar === null || searchBar === void 0 ? void 0 : searchBar.addEventListener(\"keydown\", function (event) {\n            if (event.key === \"Enter\") {\n              performSearch(searchBar, container);\n            }\n          });\n          console.log(\"Loading hospitals\");\n          (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.clearContent)(\"hospitalSelection\");\n          (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.loadHospitals)();\n          loadNolanStages();\n          loadPatientRiskLevels();\n        case 23:\n        case \"end\":\n          return _context6.stop();\n      }\n    }, _callee6);\n  }));\n}\nfunction loadNolanStages() {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var selectStageHTML, allStages;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          selectStageHTML = $('#nolanStageSelection'); // loads the select type from html\n          allStages = [\"Planera\", \"Göra\", \"Studera\", \"Agera\"];\n          allStages.forEach(function (stage) {\n            var generatedElement = document.createRange().createContextualFragment(\"\\n    <div class=\\\"form-check\\\">\\n      <input class=\\\"form-check-input\\\" type=\\\"checkbox\\\" value=\\\"\\\" id=\\\"\" + stage + \"\\\">\\n      <label class=\\\"form-check-label\\\" for=\\\"flexCheckDefault\\\">\" + stage + \"</label>\\n    </div>\");\n            selectStageHTML.append(generatedElement);\n            console.log(\"Adding HTML for for stage \", stage);\n          });\n        case 3:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7);\n  }));\n}\nfunction loadPatientRiskLevels() {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var selectPatientRiskLevelHTML, allRiskLevels;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          selectPatientRiskLevelHTML = $('#patientRiskLevelSelection'); // loads the select type from html\n          allRiskLevels = [\"Grön\", \"Blå\", \"Gul\", \"Röd\"];\n          allRiskLevels.forEach(function (riskLevel) {\n            var generatedElement = document.createRange().createContextualFragment(\"\\n    <div class=\\\"form-check\\\">\\n      <input class=\\\"form-check-input\\\" type=\\\"checkbox\\\" value=\\\"\\\" id=\\\"\" + riskLevel + \"\\\">\\n      <label class=\\\"form-check-label\\\" for=\\\"flexCheckDefault\\\">Riskniv\\xE5 \" + riskLevel + \"</label>\\n    </div>\");\n            selectPatientRiskLevelHTML.append(generatedElement);\n            console.log(\"Adding HTML for for risk level \", riskLevel);\n          });\n        case 3:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8);\n  }));\n}\nfunction sortProjects(selectElement, listenersLoaded, ascendingDates) {\n  // Sort in reversed order if ascendingDates is true\n  var cardsToIterate = ascendingDates ? _toConsumableArray(projectCards).reverse() : projectCards;\n  // Loop through the saved array of cards and generate HTML for each card\n  var _iterator = _createForOfIteratorHelper(cardsToIterate),\n    _step;\n  try {\n    for (_iterator.s(); !(_step = _iterator.n()).done;) {\n      var card = _step.value;\n      var cardHTML = card.generateHTML();\n      var div = document.createElement(\"div\");\n      div.className = \"projectCardCardDiv\"; // Set the class name(s) here\n      div.innerHTML = cardHTML;\n      if (!selectElement) return;\n      selectElement.appendChild(div); // Stop if the container isn't found\n      addEventListener(card.projectId, card);\n    }\n  } catch (err) {\n    _iterator.e(err);\n  } finally {\n    _iterator.f();\n  }\n}\nfunction getProjects(selectElement, listenersLoaded, improvementWorks) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var _this = this;\n    var id;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          id = 0;\n          projectCards = [];\n          improvementWorks.forEach(function (improvementWork) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n              var title, department, projectLeader, card, cardHTML, div;\n              return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n                while (1) switch (_context9.prev = _context9.next) {\n                  case 0:\n                    title = improvementWork.name;\n                    _context9.next = 3;\n                    return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getObjectById)(\"unit\", improvementWork.unitId);\n                  case 3:\n                    department = _context9.sent;\n                    _context9.next = 6;\n                    return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getImprovementWorkResponsible)(improvementWork.id);\n                  case 6:\n                    projectLeader = _context9.sent;\n                    if (!department) {\n                      _context9.next = 21;\n                      break;\n                    }\n                    card = new projectCard(id, projectLeader.firstName + \" \" + projectLeader.lastName, department.name, title, improvementWork.content, improvementWork.id, improvementWork.currentStage);\n                    projectCards.push(card);\n                    cardHTML = card.generateHTML();\n                    div = document.createElement(\"div\");\n                    div.className = \"projectCardCardDiv\"; // Set the class name(s) here\n                    div.innerHTML = cardHTML;\n                    if (selectElement) {\n                      _context9.next = 16;\n                      break;\n                    }\n                    return _context9.abrupt(\"return\");\n                  case 16:\n                    selectElement.appendChild(div); // Stop if the container isn't found\n                    addEventListener(improvementWork.id, card);\n                    id++;\n                    _context9.next = 22;\n                    break;\n                  case 21:\n                    console.log(improvementWork.unitId + \" is not a unit\"); //Unit Ids on improvement work that do not exist\n                  case 22:\n                  case \"end\":\n                    return _context9.stop();\n                }\n              }, _callee9);\n            }));\n          });\n        case 3:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10);\n  }));\n}\nfunction addEventListener(projectId, card) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {\n    return _regeneratorRuntime().wrap(function _callee13$(_context13) {\n      while (1) switch (_context13.prev = _context13.next) {\n        case 0:\n          $(\"#ongoingSeeDetailsButton\" + projectId).off(\"click\").on(\"click\", function () {\n            return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {\n              var expandedDiv;\n              return _regeneratorRuntime().wrap(function _callee11$(_context11) {\n                while (1) switch (_context11.prev = _context11.next) {\n                  case 0:\n                    expandedDiv = document.getElementById(\"expandedOngoingWorkCard\" + projectId);\n                    if (expandedDiv && expandedDiv.style.display === \"none\") {\n                      card.showMoreInfo(\"expandedOngoingWorkCard\" + projectId, \"ongoingSeeDetailsButton\" + projectId);\n                    } else {\n                      card.closeMoreInfo(\"expandedOngoingWorkCard\" + projectId, \"ongoingSeeDetailsButton\" + projectId);\n                    }\n                  case 2:\n                  case \"end\":\n                    return _context11.stop();\n                }\n              }, _callee11);\n            }));\n          });\n          $(\"#project-button-\" + projectId).off(\"click\").on(\"click\", function () {\n            return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {\n              var tmp, currentStage;\n              return _regeneratorRuntime().wrap(function _callee12$(_context12) {\n                while (1) switch (_context12.prev = _context12.next) {\n                  case 0:\n                    _context12.next = 2;\n                    return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getObjectById)(\"improvementWork\", projectId);\n                  case 2:\n                    tmp = _context12.sent;\n                    currentStage = tmp.currentStage;\n                    if (currentStage === \"Act\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageA)(projectId);\n                    } else if (currentStage === \"Study\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageS)(projectId);\n                    } else if (currentStage === \"Do\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageG)(projectId);\n                    } else if (currentStage === \"Plan\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageP)(projectId);\n                    } else if (currentStage === \"Finished\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageP)(projectId);\n                    }\n                  case 5:\n                  case \"end\":\n                    return _context12.stop();\n                }\n              }, _callee12);\n            }));\n          });\n          /*$(document).on(\"click\", \"#\" + projectId, async function (event) {\n            let tmp = await getObjectById(\"improvementWork\", projectId);\n            const currentStage = tmp.currentStage;\n            const element = event.target as HTMLElement;\n            if (element.classList.contains(\"moreInfoClass\")) {\n              const expandedDiv = document.getElementById(\n                \"expandedOngoingWorkCard\" + projectId\n              );\n              if (expandedDiv && expandedDiv.style.display === \"none\") {\n                card.showMoreInfo(\n                  `expandedOngoingWorkCard` + projectId,\n                  `ongoingSeeDetailsButton` + projectId\n                );\n              } else {\n                card.closeMoreInfo(\n                  `expandedOngoingWorkCard` + projectId,\n                  `ongoingSeeDetailsButton` + projectId\n                );\n              }\n            } else if (element.classList.contains(\"projectButton\") || element.classList.contains(\"toSinglePage\")) {\n              document.removeEventListener(\"click\", event.target);\n              if (currentStage === \"Act\") {\n                loadProjectPageA(projectId);\n              } else if (currentStage === \"Study\") {\n                loadProjectPageS(projectId);\n              } else if (currentStage === \"Do\") {\n                loadProjectPageG(projectId);\n              } else if (currentStage === \"Plan\") {\n                loadProjectPageP(projectId);\n              } else if (currentStage === \"Finished\") {\n                loadProjectPageP(projectId);\n              }\n            }\n          });*/\n        case 2:\n        case \"end\":\n          return _context13.stop();\n      }\n    }, _callee13);\n  }));\n}\nvar patientRiskLevelMapping = {\n  Grön: \"Green\",\n  Blå: \"Blue\",\n  Gul: \"Yellow\",\n  Röd: \"Red\"\n};\nvar nolanStageMapping = {\n  Planera: \"Plan\",\n  Göra: \"Do\",\n  Studera: \"Study\",\n  Agera: \"Act\"\n};\nfunction performSearch(searchBar, container) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee14() {\n    var inputValue, query, matchedStage;\n    return _regeneratorRuntime().wrap(function _callee14$(_context14) {\n      while (1) switch (_context14.prev = _context14.next) {\n        case 0:\n          inputValue = searchBar.value; //make first character uppercase\n          inputValue = inputValue.toLowerCase();\n          console.log(\"Search query:\", inputValue);\n          // Remove each element\n          projectCards = [];\n          query = {};\n          query.completed = false;\n          (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.removeCardsFromDiv)(\"div.projectCardCardDiv\");\n          if (inputValue !== \"\") {\n            matchedStage = Object.keys(nolanStageMapping).find(function (stage) {\n              return stage.toLowerCase().includes(inputValue.toLowerCase());\n            });\n            if (matchedStage) {\n              query.nolanStage = nolanStageMapping[matchedStage];\n            } else {\n              query.name = inputValue;\n            }\n          }\n          _context14.next = 10;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getImprovementWorks)(query);\n        case 10:\n          filteredImprovementWorks = _context14.sent;\n          _context14.next = 13;\n          return getProjects(container, true, filteredImprovementWorks);\n        case 13:\n        case \"end\":\n          return _context14.stop();\n      }\n    }, _callee14);\n  }));\n}\n\n//# sourceURL=webpack://c3/./client/currentProjects/currentProjects.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   addEventListener: () => (/* binding */ addEventListener),\n/* harmony export */   loadPage: () => (/* binding */ loadPage)\n/* harmony export */ });\n/* harmony import */ var _Database_database_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Database/database.js */ \"./client/Database/database.js\");\n/* harmony import */ var _SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../SidebarAndHeader/pageHandler.js */ \"./client/SidebarAndHeader/pageHandler.js\");\n/* harmony import */ var _ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../ideaBank/ideaBank.js */ \"./client/ideaBank/ideaBank.js\");\n/* harmony import */ var _projectPage_projectPage_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../projectPage/projectPage.js */ \"./client/projectPage/projectPage.js\");\n\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\nvar projectCards = [];\nvar filteredImprovementWorks = [];\nvar projectCard = /*#__PURE__*/function () {\n  function projectCard(id, name, department, title, description, projectId, currentStage, dateStarted) {\n    _classCallCheck(this, projectCard);\n    this.name = name;\n    this.department = department;\n    this.title = title;\n    this.description = description;\n    this.id = id;\n    this.projectId = projectId;\n    this.stage = currentStage;\n    this.dateStarted = dateStarted;\n  }\n  _createClass(projectCard, [{\n    key: \"showMoreInfo\",\n    value: function showMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"flex\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"^ Stäng detaljer\";\n      }\n    }\n  }, {\n    key: \"closeMoreInfo\",\n    value: function closeMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"none\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"> Mer information\";\n      }\n    }\n  }, {\n    key: \"loadInitiatePage\",\n    value: function loadInitiatePage() {\n      alert(\"The initiate project page should now be loaded\");\n    }\n  }, {\n    key: \"generateHTML\",\n    value: function generateHTML() {\n      var stageImages = {\n        Act: \"../images/Hemsida_PGSA_A.png\",\n        Study: \"../images/Hemsida_PGSA_S.png\",\n        Do: \"../images/Hemsida_PGSA_G.png\",\n        Plan: \"../images/Hemsida_PGSA_P.png\",\n        Finished: \"path/to/finished-image.jpg\"\n      };\n      var stageKey = this.stage;\n      // Check if the stage is directly a key in stageImages\n      if (!stageImages[stageKey]) {\n        // If not, try to map the Swedish stage to English using nolanStageMapping\n        stageKey = nolanStageMapping[stageKey];\n      }\n      // Now get the imageUrl using the stageKey\n      var imageUrl = stageImages[stageKey];\n      return \"\\n    <div class=\\\"totalExpandedOngoingWorkCard\\\">\\n      <div style=\\\"cursor: default;\\\" class=\\\"flex-container ongoingCard\\\" id=\\\"\".concat(this.projectId, \"\\\">\\n        <div class=\\\"ongoingCardImageContainer toSinglePage\\\">\\n          <div class = \\\"flex-box ongoingCardImage toSinglePage\\\" id=\\\"pinkFaded\\\"></div>\\n        </div>\\n        <div class=\\\"div ongoingCardInfo toSinglePage\\\">\\n          <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardManager\\\">\").concat(this.name, \"</p>\\n          <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardDepartment\\\">\").concat(this.department, \"</p>\\n          <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardIdeaTitle\\\">\").concat(this.title, \"</p>\\n\\n          <p class=\\\"toSinglePage\\\" id=ongoingCardStartDate\\\" style=\\\"font-size: 12px;\\\">\").concat((0,_projectPage_projectPage_js__WEBPACK_IMPORTED_MODULE_3__.formatDate)(this.dateStarted), \"</p>\\n        </div>\\n        <button id=\\\"project-button-\").concat(this.projectId, \"\\\" data-project-id=\\\"\").concat(this.id, \"\\\" class=\\\"projectButton\\\" role=\\\"button\\\">G\\xE5 till projektsidan</button>\\n        <div>\\n          <img class=\\\"statusImage\\\" src=\\\"\").concat(imageUrl, \"\\\" alt=\\\"Stage Image\\\">\\n        </div>\\n        <div class=\\\"container ongoingSeeCardDetails toSinglePage\\\">\\n          <div class=\\\"ongoingSeeCardDetailsInner\\\">\\n            <p id=\\\"ongoingSeeDetailsButton\").concat(this.projectId, \"\\\" class = \\\"moreInfoClass\\\">> Mer information</p>\\n          </div>\\n        </div>\\n      </div> \\n      <div class = \\\"expandedOngoingWorkCard\\\" id=\\\"expandedOngoingWorkCard\").concat(this.projectId, \"\\\" style=\\\"display: none;\\\">\\n        <div class =\\\"expandedTextOngoingWorkCard\\\">\\n          \").concat(this.description, \"\\n        </div>\\n      </div>\\n    </div> \");\n    }\n  }]);\n  return projectCard;\n}();\nfunction loadPage(listenersLoaded) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n    var container, checkedHospitalIds, checkedUnitIds, checkedNolanStages, checkedPatientRiskLevels, ascendingDates, searchBar;\n    return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n      while (1) switch (_context6.prev = _context6.next) {\n        case 0:\n          container = document.querySelector(\"#container-fluid\");\n          if (container) {\n            _context6.next = 3;\n            break;\n          }\n          return _context6.abrupt(\"return\");\n        case 3:\n          // Stop if the container isn't found\n          projectCards = [];\n          // Initialize empty lists of checked hospital and unit ids\n          checkedHospitalIds = [];\n          checkedUnitIds = [];\n          checkedNolanStages = [];\n          checkedPatientRiskLevels = [];\n          ascendingDates = false;\n          fetch(\"currentProjects/currentProjects.html\").then(function (response) {\n            return response.text();\n          }).then(function (data) {\n            // Create a temporary container element to hold the loaded content\n            var tempContainer = document.createElement(\"div\");\n            tempContainer.innerHTML = data;\n            // Select the specific element with the class you want\n            var specificElement = tempContainer.querySelector(\".filterBar\");\n            var createHospitalCheckBoxContainer = tempContainer.querySelector(\"#hospitalSelection\");\n            var createUnitCheckBoxContainer = tempContainer.querySelector(\"#unitSelection\");\n            var createNolanStageCheckBoxContainer = tempContainer.querySelector(\"#nolanStageSelection\");\n            var createPatientRiskLevelCheckBoxContainer = tempContainer.querySelector(\"#patientRiskLevelSelection\");\n            var createOrderSelectionContainer = tempContainer.querySelector(\"#orderSelection\");\n            if (createHospitalCheckBoxContainer) {\n              createHospitalCheckBoxContainer.addEventListener(\"change\", function (event) {\n                return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n                  var checkboxes;\n                  return _regeneratorRuntime().wrap(function _callee$(_context) {\n                    while (1) switch (_context.prev = _context.next) {\n                      case 0:\n                        checkboxes = createHospitalCheckBoxContainer.querySelectorAll('input[type=\"checkbox\"]');\n                        console.log(\"createHospitalCheckBoxContainer\");\n                        // Empty list of checked hospitals\n                        checkedHospitalIds = [];\n                        // Array to store IDs of checked checkboxes\n                        checkboxes.forEach(function (checkbox) {\n                          // Ensure the checkbox is an HTMLInputElement\n                          var inputCheckbox = checkbox;\n                          // Check if the checkbox is checked and add its ID to the array\n                          if (inputCheckbox.checked) {\n                            checkedHospitalIds.push(inputCheckbox.id);\n                          }\n                        });\n                        // Log all checked hospital IDs\n                        console.log(\"Checked hospitals:\", checkedHospitalIds);\n                        // Future change: Only clear the unitIds for unchecked hospitals!\n                        (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.clearContent)(\"unitSelection\");\n                        (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.loadUnits)(checkedHospitalIds);\n                      case 7:\n                      case \"end\":\n                        return _context.stop();\n                    }\n                  }, _callee);\n                }));\n              });\n            }\n            if (createUnitCheckBoxContainer) {\n              createUnitCheckBoxContainer.addEventListener(\"change\", function (event) {\n                return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n                  var checkboxes;\n                  return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n                    while (1) switch (_context2.prev = _context2.next) {\n                      case 0:\n                        checkboxes = createUnitCheckBoxContainer.querySelectorAll('input[type=\"checkbox\"]');\n                        console.log(\"createUnitCheckBoxContainer\");\n                        // Empty list of checked units\n                        checkedUnitIds = [];\n                        checkboxes.forEach(function (checkbox) {\n                          // Ensure the checkbox is an HTMLInputElement\n                          var inputCheckbox = checkbox;\n                          // Check if the checkbox is checked and add its ID to the array\n                          if (inputCheckbox.checked) {\n                            checkedUnitIds.push(inputCheckbox.id);\n                          }\n                        });\n                        _context2.next = 6;\n                        return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getFilteredImprovementWorks)({\n                          patientRiskLevels: checkedPatientRiskLevels,\n                          nolanStages: checkedNolanStages,\n                          units: checkedUnitIds\n                        });\n                      case 6:\n                        filteredImprovementWorks = _context2.sent;\n                        (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.removeCardsFromDiv)(\"div.projectCardCardDiv\");\n                        getProjects(container, listenersLoaded, filteredImprovementWorks);\n                      case 9:\n                      case \"end\":\n                        return _context2.stop();\n                    }\n                  }, _callee2);\n                }));\n              });\n            }\n            if (createNolanStageCheckBoxContainer) {\n              createNolanStageCheckBoxContainer.addEventListener(\"change\", function (event) {\n                return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n                  var checkboxes;\n                  return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n                    while (1) switch (_context3.prev = _context3.next) {\n                      case 0:\n                        checkboxes = createNolanStageCheckBoxContainer.querySelectorAll('input[type=\"checkbox\"]'); // Empty list of checked hospitals\n                        checkedNolanStages = [];\n                        // Array to store IDs of checked checkboxes\n                        checkboxes.forEach(function (checkbox) {\n                          // Ensure the checkbox is an HTMLInputElement\n                          var inputCheckbox = checkbox;\n                          // Check if the checkbox is checked and add its ID to the array\n                          if (inputCheckbox.checked) {\n                            checkedNolanStages.push(inputCheckbox.id);\n                            checkedNolanStages.push(nolanStageMapping[inputCheckbox.id]);\n                            console.log(\"checkedNolanStages: \", checkedNolanStages);\n                          }\n                        });\n                        _context3.next = 5;\n                        return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getFilteredImprovementWorks)({\n                          patientRiskLevels: checkedPatientRiskLevels,\n                          nolanStages: checkedNolanStages,\n                          units: checkedUnitIds\n                        });\n                      case 5:\n                        filteredImprovementWorks = _context3.sent;\n                        (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.removeCardsFromDiv)(\"div.projectCardCardDiv\");\n                        getProjects(container, listenersLoaded, filteredImprovementWorks);\n                      case 8:\n                      case \"end\":\n                        return _context3.stop();\n                    }\n                  }, _callee3);\n                }));\n              });\n            }\n            if (createPatientRiskLevelCheckBoxContainer) {\n              createPatientRiskLevelCheckBoxContainer.addEventListener(\"change\", function (event) {\n                return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n                  var checkboxes;\n                  return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n                    while (1) switch (_context4.prev = _context4.next) {\n                      case 0:\n                        checkboxes = createPatientRiskLevelCheckBoxContainer.querySelectorAll('input[type=\"checkbox\"]');\n                        console.log(\"createPatientRiskLevelCheckBoxContainer\");\n                        // Empty list of checked hospitals\n                        checkedPatientRiskLevels = [];\n                        // Array to store IDs of checked checkboxes\n                        checkboxes.forEach(function (checkbox) {\n                          // Ensure the checkbox is an HTMLInputElement\n                          var inputCheckbox = checkbox;\n                          // Check if the checkbox is checked and add its ID to the array\n                          if (inputCheckbox.checked) {\n                            checkedPatientRiskLevels.push(inputCheckbox.id);\n                            checkedPatientRiskLevels.push(patientRiskLevelMapping[inputCheckbox.id]);\n                            console.log(\"checkedPatientRiskLevels: \", checkedPatientRiskLevels);\n                          }\n                        });\n                        _context4.next = 6;\n                        return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getFilteredImprovementWorks)({\n                          patientRiskLevels: checkedPatientRiskLevels,\n                          nolanStages: checkedNolanStages,\n                          units: checkedUnitIds\n                        });\n                      case 6:\n                        filteredImprovementWorks = _context4.sent;\n                        (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.removeCardsFromDiv)(\"div.projectCardCardDiv\");\n                        getProjects(container, listenersLoaded, filteredImprovementWorks);\n                      case 9:\n                      case \"end\":\n                        return _context4.stop();\n                    }\n                  }, _callee4);\n                }));\n              });\n            }\n            if (createOrderSelectionContainer) {\n              createOrderSelectionContainer.addEventListener(\"change\", function (event) {\n                return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n                  var inputCheckbox;\n                  return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n                    while (1) switch (_context5.prev = _context5.next) {\n                      case 0:\n                        inputCheckbox = event.target;\n                        ascendingDates = inputCheckbox.checked;\n                        (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.removeCardsFromDiv)(\"div.projectCardCardDiv\");\n                        sortProjects(container, listenersLoaded, ascendingDates);\n                      case 4:\n                      case \"end\":\n                        return _context5.stop();\n                    }\n                  }, _callee5);\n                }));\n              });\n            }\n            if (specificElement) {\n              // Insert the specific element into the target element\n              container.insertBefore(specificElement, container.firstChild);\n            }\n          })[\"catch\"](function (error) {\n            console.error(\"Failed to load the external HTML file:\", error);\n          });\n          _context6.next = 12;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getImprovementWorks)({\n            completed: false\n          });\n        case 12:\n          filteredImprovementWorks = _context6.sent;\n          console.log(\"Filtered improvementWorks: \", filteredImprovementWorks);\n          (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.removeCardsFromDiv)(\"div.projectCardCardDiv\");\n          getProjects(container, listenersLoaded, filteredImprovementWorks);\n          searchBar = document.getElementById(\"searchBarImprovement\");\n          searchBar === null || searchBar === void 0 ? void 0 : searchBar.addEventListener(\"keydown\", function (event) {\n            if (event.key === \"Enter\") {\n              performSearch(searchBar, container);\n            }\n          });\n          console.log(\"Loading hospitals\");\n          (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.clearContent)(\"hospitalSelection\");\n          (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.loadHospitals)();\n          loadNolanStages();\n          loadPatientRiskLevels();\n        case 23:\n        case \"end\":\n          return _context6.stop();\n      }\n    }, _callee6);\n  }));\n}\nfunction loadNolanStages() {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var selectStageHTML, allStages;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          selectStageHTML = $(\"#nolanStageSelection\"); // loads the select type from html\n          allStages = [\"Planera\", \"Göra\", \"Studera\", \"Agera\"];\n          allStages.forEach(function (stage) {\n            var generatedElement = document.createRange().createContextualFragment(\"\\n    <div class=\\\"form-check\\\">\\n      <input class=\\\"form-check-input\\\" type=\\\"checkbox\\\" value=\\\"\\\" id=\\\"\" + stage + \"\\\">\\n      <label class=\\\"form-check-label\\\" for=\\\"flexCheckDefault\\\">\" + stage + \"</label>\\n    </div>\");\n            selectStageHTML.append(generatedElement);\n            console.log(\"Adding HTML for for stage \", stage);\n          });\n        case 3:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7);\n  }));\n}\nfunction loadPatientRiskLevels() {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var selectPatientRiskLevelHTML, allRiskLevels;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          selectPatientRiskLevelHTML = $(\"#patientRiskLevelSelection\"); // loads the select type from html\n          allRiskLevels = [\"Grön\", \"Blå\", \"Gul\", \"Röd\"];\n          allRiskLevels.forEach(function (riskLevel) {\n            var generatedElement = document.createRange().createContextualFragment(\"\\n    <div class=\\\"form-check\\\">\\n      <input class=\\\"form-check-input\\\" type=\\\"checkbox\\\" value=\\\"\\\" id=\\\"\" + riskLevel + \"\\\">\\n      <label class=\\\"form-check-label\\\" for=\\\"flexCheckDefault\\\">Riskniv\\xE5 \" + riskLevel + \"</label>\\n    </div>\");\n            selectPatientRiskLevelHTML.append(generatedElement);\n            console.log(\"Adding HTML for for risk level \", riskLevel);\n          });\n        case 3:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8);\n  }));\n}\nfunction sortProjects(selectElement, listenersLoaded, ascendingDates) {\n  // Sort in reversed order if ascendingDates is true\n  var cardsToIterate = ascendingDates ? _toConsumableArray(projectCards).reverse() : projectCards;\n  // Loop through the saved array of cards and generate HTML for each card\n  var _iterator = _createForOfIteratorHelper(cardsToIterate),\n    _step;\n  try {\n    for (_iterator.s(); !(_step = _iterator.n()).done;) {\n      var card = _step.value;\n      var cardHTML = card.generateHTML();\n      var div = document.createElement(\"div\");\n      div.className = \"projectCardCardDiv\"; // Set the class name(s) here\n      div.innerHTML = cardHTML;\n      if (!selectElement) return;\n      selectElement.appendChild(div); // Stop if the container isn't found\n      addEventListener(card.projectId, card);\n    }\n  } catch (err) {\n    _iterator.e(err);\n  } finally {\n    _iterator.f();\n  }\n}\nfunction getProjects(selectElement, listenersLoaded, improvementWorks) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var _this = this;\n    var id;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          id = 0;\n          projectCards = [];\n          improvementWorks.forEach(function (improvementWork) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n              var title, department, projectLeader, dateStarted, card, cardHTML, div;\n              return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n                while (1) switch (_context9.prev = _context9.next) {\n                  case 0:\n                    title = improvementWork.name;\n                    _context9.next = 3;\n                    return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getObjectById)(\"unit\", improvementWork.unitId);\n                  case 3:\n                    department = _context9.sent;\n                    _context9.next = 6;\n                    return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getImprovementWorkResponsible)(improvementWork.id);\n                  case 6:\n                    projectLeader = _context9.sent;\n                    dateStarted = improvementWork.dateStarted;\n                    if (!department) {\n                      _context9.next = 22;\n                      break;\n                    }\n                    card = new projectCard(id, projectLeader.firstName + \" \" + projectLeader.lastName, department.name, title, improvementWork.content, improvementWork.id, improvementWork.currentStage, dateStarted);\n                    projectCards.push(card);\n                    cardHTML = card.generateHTML();\n                    div = document.createElement(\"div\");\n                    div.className = \"projectCardCardDiv\"; // Set the class name(s) here\n                    div.innerHTML = cardHTML;\n                    if (selectElement) {\n                      _context9.next = 17;\n                      break;\n                    }\n                    return _context9.abrupt(\"return\");\n                  case 17:\n                    selectElement.appendChild(div); // Stop if the container isn't found\n                    addEventListener(improvementWork.id, card);\n                    id++;\n                    _context9.next = 23;\n                    break;\n                  case 22:\n                    console.log(improvementWork.unitId + \" is not a unit\"); //Unit Ids on improvement work that do not exist\n                  case 23:\n                  case \"end\":\n                    return _context9.stop();\n                }\n              }, _callee9);\n            }));\n          });\n        case 3:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10);\n  }));\n}\nfunction addEventListener(projectId, card) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {\n    return _regeneratorRuntime().wrap(function _callee13$(_context13) {\n      while (1) switch (_context13.prev = _context13.next) {\n        case 0:\n          $(\"#ongoingSeeDetailsButton\" + projectId).off(\"click\").on(\"click\", function () {\n            return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {\n              var expandedDiv;\n              return _regeneratorRuntime().wrap(function _callee11$(_context11) {\n                while (1) switch (_context11.prev = _context11.next) {\n                  case 0:\n                    expandedDiv = document.getElementById(\"expandedOngoingWorkCard\" + projectId);\n                    if (expandedDiv && expandedDiv.style.display === \"none\") {\n                      card.showMoreInfo(\"expandedOngoingWorkCard\" + projectId, \"ongoingSeeDetailsButton\" + projectId);\n                    } else {\n                      card.closeMoreInfo(\"expandedOngoingWorkCard\" + projectId, \"ongoingSeeDetailsButton\" + projectId);\n                    }\n                  case 2:\n                  case \"end\":\n                    return _context11.stop();\n                }\n              }, _callee11);\n            }));\n          });\n          $(\"#project-button-\" + projectId).off(\"click\").on(\"click\", function () {\n            return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {\n              var tmp, currentStage;\n              return _regeneratorRuntime().wrap(function _callee12$(_context12) {\n                while (1) switch (_context12.prev = _context12.next) {\n                  case 0:\n                    _context12.next = 2;\n                    return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getObjectById)(\"improvementWork\", projectId);\n                  case 2:\n                    tmp = _context12.sent;\n                    currentStage = tmp.currentStage;\n                    if (currentStage === \"Act\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageA)(projectId);\n                    } else if (currentStage === \"Study\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageS)(projectId);\n                    } else if (currentStage === \"Do\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageG)(projectId);\n                    } else if (currentStage === \"Plan\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageP)(projectId);\n                    } else if (currentStage === \"Finished\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageP)(projectId);\n                    }\n                  case 5:\n                  case \"end\":\n                    return _context12.stop();\n                }\n              }, _callee12);\n            }));\n          });\n          /*$(document).on(\"click\", \"#\" + projectId, async function (event) {\n              let tmp = await getObjectById(\"improvementWork\", projectId);\n              const currentStage = tmp.currentStage;\n              const element = event.target as HTMLElement;\n              if (element.classList.contains(\"moreInfoClass\")) {\n                const expandedDiv = document.getElementById(\n                  \"expandedOngoingWorkCard\" + projectId\n                );\n                if (expandedDiv && expandedDiv.style.display === \"none\") {\n                  card.showMoreInfo(\n                    `expandedOngoingWorkCard` + projectId,\n                    `ongoingSeeDetailsButton` + projectId\n                  );\n                } else {\n                  card.closeMoreInfo(\n                    `expandedOngoingWorkCard` + projectId,\n                    `ongoingSeeDetailsButton` + projectId\n                  );\n                }\n              } else if (element.classList.contains(\"projectButton\") || element.classList.contains(\"toSinglePage\")) {\n                document.removeEventListener(\"click\", event.target);\n                if (currentStage === \"Act\") {\n                  loadProjectPageA(projectId);\n                } else if (currentStage === \"Study\") {\n                  loadProjectPageS(projectId);\n                } else if (currentStage === \"Do\") {\n                  loadProjectPageG(projectId);\n                } else if (currentStage === \"Plan\") {\n                  loadProjectPageP(projectId);\n                } else if (currentStage === \"Finished\") {\n                  loadProjectPageP(projectId);\n                }\n              }\n            });*/\n        case 2:\n        case \"end\":\n          return _context13.stop();\n      }\n    }, _callee13);\n  }));\n}\nvar patientRiskLevelMapping = {\n  Grön: \"Green\",\n  Blå: \"Blue\",\n  Gul: \"Yellow\",\n  Röd: \"Red\"\n};\nvar nolanStageMapping = {\n  Planera: \"Plan\",\n  Göra: \"Do\",\n  Studera: \"Study\",\n  Agera: \"Act\"\n};\nfunction performSearch(searchBar, container) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee14() {\n    var inputValue, query, matchedStage;\n    return _regeneratorRuntime().wrap(function _callee14$(_context14) {\n      while (1) switch (_context14.prev = _context14.next) {\n        case 0:\n          inputValue = searchBar.value; //make first character uppercase\n          inputValue = inputValue.toLowerCase();\n          console.log(\"Search query:\", inputValue);\n          // Remove each element\n          projectCards = [];\n          query = {};\n          query.completed = false;\n          (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.removeCardsFromDiv)(\"div.projectCardCardDiv\");\n          if (inputValue !== \"\") {\n            matchedStage = Object.keys(nolanStageMapping).find(function (stage) {\n              return stage.toLowerCase().includes(inputValue.toLowerCase());\n            });\n            if (matchedStage) {\n              query.nolanStage = nolanStageMapping[matchedStage];\n            } else {\n              query.name = inputValue;\n            }\n          }\n          _context14.next = 10;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getImprovementWorks)(query);\n        case 10:\n          filteredImprovementWorks = _context14.sent;\n          _context14.next = 13;\n          return getProjects(container, true, filteredImprovementWorks);\n        case 13:\n        case \"end\":\n          return _context14.stop();\n      }\n    }, _callee14);\n  }));\n}\n\n//# sourceURL=webpack://c3/./client/currentProjects/currentProjects.js?");
 
 /***/ }),
 
@@ -266,7 +266,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
   \****************************/
 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   addEventListener: () => (/* binding */ addEventListener),\n/* harmony export */   loadPage: () => (/* binding */ loadPage)\n/* harmony export */ });\n/* harmony import */ var _Database_authentication_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Database/authentication.js */ \"./client/Database/authentication.js\");\n/* harmony import */ var _SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SidebarAndHeader/pageHandler.js */ \"./client/SidebarAndHeader/pageHandler.js\");\n/* harmony import */ var _client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../client/Database/database.js */ \"./client/Database/database.js\");\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\nfunction logoutUser(event) {\n  event.preventDefault();\n  alert(\"logout\");\n  (0,_Database_authentication_js__WEBPACK_IMPORTED_MODULE_0__.logout)();\n}\nvar myIdeaCards = {};\nvar IdeaCard = /*#__PURE__*/function () {\n  function IdeaCard(id, header, department, name, description, upvoteCount, suggestionID) {\n    _classCallCheck(this, IdeaCard);\n    this.header = header;\n    this.department = department;\n    this.name = name;\n    this.description = description;\n    this.upvoteCount = upvoteCount;\n    this.id = id;\n    this.suggestionID = suggestionID;\n  }\n  _createClass(IdeaCard, [{\n    key: \"generateHTML\",\n    value: function generateHTML() {\n      return \"<div class=\\\"totalExpandedIdeaCard\\\">\\n          <div class=\\\"ideaCard\\\">\\n              <div class=\\\"ideaCardBorder\\\">\\n                  <div class=\\\"ideaCardImageHP\\\">\\n                      <img src=\\\"../images/pinkFaded.png\\\" class =\\\"pinkFadedHP\\\" alt=\\\"pinkFaded\\\">\\n                  </div>\\n                  <div class=\\\"ideaCardMiddleText\\\">\\n                      <p id=\\\"ideaCardHeader\\\" class=\\\"ideaCardFont\\\">\".concat(this.header, \"</p>\\n                      <p id=\\\"ideaCardDepartment\\\" class=\\\"ideaCardFont\\\">\").concat(this.department, \"</p>\\n                      <p id=\\\"ideaCardName\\\" class=\\\"ideaCardFont\\\">\").concat(this.name, \"</p>\\n                      <p id=\\\"ideaCardMoreInfo\").concat(this.id, \"\\\" class=\\\"ideaCardFont moreInfoClass\\\"> > Mer information</p>\\n                  </div>\\n              </div>\\n              <div class=\\\"ideaCardUpvotesHP\\\">\\n              <div class=\\\"upvoteDivHP\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"28\\\" height=\\\"28\\\" fill=\\\"currentColor\\\" class=\\\"bi bi-caret-up upvoteSymbol\\\" viewBox=\\\"0 0 16 16\\\">\\n  <path d=\\\"M3.204 11h9.592L8 5.519 3.204 11zm-.753-.659 4.796-5.48a1 1 0 0 1 1.506 0l4.796 5.48c.566.647.106 1.659-.753 1.659H3.204a1 1 0 0 1-.753-1.659z\\\"/>\\n</svg>              <div id =\\\"upvoteNumber\\\" class=\\\"ideaCardFont\\\"> \").concat(this.upvoteCount, \"</div>\\n\\n              </div>\\n          </div>\\n          </div>\\n          <div id=\\\"expandedContent\").concat(this.id, \"\\\" class= \\\"expandedIdeaContent\\\" style =\\\"display : none;\\\">\\n              <div class=\\\"expandedDescriptionText\\\">\\n                  <p class=\\\"ideaCardFont\\\" id=\\\"expandedHeader\\\">Om ideen</p>\\n                  <p id=\\\"expandedDescription\\\">\").concat(this.description, \"</p>\\n              </div>\\n              <div class=\\\"expandedCommentAndButton id = \\\"expandedCommentAndButton\").concat(this.id, \"\\\">\\n                  <div class=\\\"expandedComment\\\">\\n                      <p class=\\\"ideaCardFont\\\">Kommentarer</p>\\n                      <p class=\\\"ideaCardFont\\\">Komment 1</p>\\n                      <p class=\\\"ideaCardFont\\\">K0mment 2</p>\\n                  </div>\\n                  <div class=\\\"expandedButton\\\">\\n                      <button class=\\\"initiateProjectButton\\\" id=\\\"initiateProjectFromCard\").concat(this.suggestionID, \"\\\">Initiera Projekt</button>\\n                  </div>\\n              </div>\\n          </div>\\n      </div>\");\n    }\n  }, {\n    key: \"showMoreInfo\",\n    value: function showMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"flex\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"^ Stäng detaljer\";\n      }\n    }\n  }, {\n    key: \"closeMoreInfo\",\n    value: function closeMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"none\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"> Mer information\";\n      }\n    }\n  }, {\n    key: \"loadInitiatePage\",\n    value: function loadInitiatePage() {\n      alert(\"The initiate project page should now be loaded\");\n    }\n  }]);\n  return IdeaCard;\n}();\nfunction createNewCards(className, container, signedInUserHsaID) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var _this = this;\n    var user, userSuggestions, counter;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          _context2.next = 2;\n          return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getObjectById)(\"users\", signedInUserHsaID);\n        case 2:\n          user = _context2.sent;\n          _context2.next = 5;\n          return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getSuggestions)({\n            creatorHsaId: user.id\n          });\n        case 5:\n          userSuggestions = _context2.sent;\n          //If there exist filter use those instead to get matching suggestions rest should not need to be changed\n          counter = 0;\n          userSuggestions.forEach(function (suggestion) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n              var unit, user;\n              return _regeneratorRuntime().wrap(function _callee$(_context) {\n                while (1) switch (_context.prev = _context.next) {\n                  case 0:\n                    _context.next = 2;\n                    return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getObjectById)(\"unit\", suggestion.unitId);\n                  case 2:\n                    unit = _context.sent;\n                    _context.next = 5;\n                    return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getObjectById)(\"users\", suggestion.creatorHsaId);\n                  case 5:\n                    user = _context.sent;\n                    createNewIdeaCard(suggestion.name, unit.name, user.firstName + \" \" + user.lastName, suggestion.content, suggestion.upvotes.length, className, container, counter, suggestion.id);\n                    counter = counter + 1;\n                  case 8:\n                  case \"end\":\n                    return _context.stop();\n                }\n              }, _callee);\n            }));\n          });\n          addListner(userSuggestions, container);\n        case 9:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2);\n  }));\n}\nfunction addListner(cardArray, element) {\n  element.addEventListener(\"click\", function (event) {\n    var target = event.target;\n    //Adds an eventlistener for the more info of the card\n    if (target && target.className === \"ideaCardFont moreInfoClass\") {\n      var cardId = parseInt(target.id.replace(\"ideaCardMoreInfo\", \"\"), 10);\n      if (cardArray[cardId]) {\n        var card = cardArray[cardId];\n        var expandedDiv = document.getElementById(\"expandedContent\".concat(cardId));\n        console.log(expandedDiv);\n        if (expandedDiv) {\n          if (expandedDiv.style.display === \"none\") {\n            card.showMoreInfo(\"expandedContent\".concat(cardId), \"ideaCardMoreInfo\".concat(cardId));\n          } else {\n            card.closeMoreInfo(\"expandedContent\".concat(cardId), \"ideaCardMoreInfo\".concat(cardId));\n          }\n        } else {\n          console.error(\"Expanded div not found\");\n        }\n      }\n    }\n  });\n}\nfunction createNewIdeaCard(header, department, name, description, upvoteCount, className, container, ID, suggestionID) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var card, cardHTML, div;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          card = new IdeaCard(ID, header, department, name, description, upvoteCount, suggestionID);\n          cardHTML = card.generateHTML();\n          myIdeaCards[ID] = card;\n          div = document.createElement(\"div\");\n          div.className = className; // Set the class name(s) here\n          div.innerHTML = cardHTML;\n          container.appendChild(div);\n        case 7:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3);\n  }));\n}\nfunction loadPage(listenersLoaded) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n    var _this2 = this;\n    var container;\n    return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n      while (1) switch (_context5.prev = _context5.next) {\n        case 0:\n          container = document.querySelector(\"#container-fluid\");\n          if (container) {\n            _context5.next = 3;\n            break;\n          }\n          return _context5.abrupt(\"return\");\n        case 3:\n          // Stop if the container isn't found\n          fetch(\"homePage.html\").then(function (response) {\n            return response.text();\n          }).then(function (data) {\n            return __awaiter(_this2, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n              var tempContainer, specificElement, tmp, user, suggestionContainer, nameHeaderElement, userFullName, projectContainer, departmentContainer, departmentDiv;\n              return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n                while (1) switch (_context4.prev = _context4.next) {\n                  case 0:\n                    // Create a temporary container element to hold the loaded content\n                    tempContainer = document.createElement(\"div\");\n                    tempContainer.innerHTML = data;\n                    // Select the specific element with the class you want\n                    specificElement = tempContainer.querySelector(\".main-content\");\n                    if (specificElement) {\n                      // Insert the specific element into the target element\n                      container.insertBefore(specificElement, container.firstChild);\n                    }\n                    tmp = localStorage.getItem(\"user\");\n                    console.log(tmp);\n                    if (tmp) {\n                      _context4.next = 9;\n                      break;\n                    }\n                    console.log(\"there is not an user in localStorage\");\n                    return _context4.abrupt(\"return\");\n                  case 9:\n                    user = JSON.parse(tmp)[0];\n                    suggestionContainer = document.getElementById(\"suggestion-container\");\n                    if (!suggestionContainer) {\n                      _context4.next = 15;\n                      break;\n                    }\n                    _context4.next = 14;\n                    return createNewCards(\"HomePageIdeaCardDiv\", suggestionContainer, user.id);\n                  case 14:\n                    addListner(myIdeaCards, container);\n                  case 15:\n                    nameHeaderElement = document.getElementById(\"user-name-header\");\n                    userFullName = user.firstName + \" \" + user.lastName;\n                    if (nameHeaderElement) {\n                      nameHeaderElement.textContent = userFullName;\n                    }\n                    projectContainer = document.getElementById(\"project-container\");\n                    if (!projectContainer) {\n                      _context4.next = 22;\n                      break;\n                    }\n                    _context4.next = 22;\n                    return getProjects(projectContainer, listenersLoaded, user.id);\n                  case 22:\n                    console.log(\"innan\");\n                    departmentContainer = document.getElementById(\"department-container\");\n                    departmentDiv = document.getElementById(\"nolanAct\");\n                    if (!(departmentContainer && document.getElementById(\"nolanAct\") && departmentDiv.innerHTML.trim() === \"\")) {\n                      _context4.next = 29;\n                      break;\n                    }\n                    console.log(\"anropar funktionen\");\n                    _context4.next = 29;\n                    return improvementWorkInfo(departmentContainer, user);\n                  case 29:\n                  case \"end\":\n                    return _context4.stop();\n                }\n              }, _callee4);\n            }));\n          })[\"catch\"](function (error) {\n            console.error(\"Failed to load the external HTML file:\", error);\n          });\n        case 4:\n        case \"end\":\n          return _context5.stop();\n      }\n    }, _callee5);\n  }));\n}\nfunction addEventListener(projectId, card) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          $(\"#homepage-\" + projectId).off(\"click\").on(\"click\", function () {\n            return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n              var tmp, currentStage;\n              return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n                while (1) switch (_context6.prev = _context6.next) {\n                  case 0:\n                    _context6.next = 2;\n                    return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getObjectById)(\"improvementWork\", projectId);\n                  case 2:\n                    tmp = _context6.sent;\n                    currentStage = tmp.currentStage;\n                    if (currentStage === \"Act\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageA)(projectId);\n                    } else if (currentStage === \"Study\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageS)(projectId);\n                    } else if (currentStage === \"Do\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageG)(projectId);\n                    } else if (currentStage === \"Plan\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageP)(projectId);\n                    } else if (currentStage === \"Finished\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageP)(projectId);\n                    }\n                  case 5:\n                  case \"end\":\n                    return _context6.stop();\n                }\n              }, _callee6);\n            }));\n          });\n        case 1:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7);\n  }));\n}\nvar patientRiskLevelMapping = {\n  Grön: \"Green\",\n  Blå: \"Blue\",\n  Gul: \"Yellow\",\n  Röd: \"Red\"\n};\nvar nolanStageMapping = {\n  Planera: \"Plan\",\n  Göra: \"Do\",\n  Studera: \"Study\",\n  Agera: \"Act\"\n};\n/*\nasync function performSearch(searchBar: HTMLInputElement, container: HTMLElement) {\n  let inputValue = searchBar.value;\n  //make first character uppercase\n  inputValue = inputValue.toLowerCase();\n  console.log(\"Search query:\", inputValue);\n  // Remove each element\n  projectCards = [];\n\n  let query: { [key: string]: string } = {};\n\n  removeCardsFromDiv(\"div.projectCardCardDiv\");\n    \n  if (inputValue !== \"\") {\n    const matchedStage = Object.keys(nolanStageMapping).find((stage) =>\n      stage.toLowerCase().includes(inputValue.toLowerCase())\n    );\n\n    if (matchedStage) {\n      query.nolanStage = nolanStageMapping[matchedStage];\n    } else {\n      query.name = inputValue;\n    }\n  }\n  filteredImprovementWorks = await getImprovementWorks(query);\n  await getProjects(container, true, filteredImprovementWorks);\n}\n*/\nfunction improvementWorkInfo(departmentContainer, user) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var improvementWorks, improvementWorksPlan, improvementWorksDo, improvementWorkStudy, improvementWorksAct, _iterator, _step, improvementWork, improvementWorkContainer, improvementWorkContainerElement, nolanAct, actElement, nolanPlan, planElement, nolanDo, doElement, nolanStudy, studyElement;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          _context8.next = 2;\n          return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getImprovementWorks)({\n            unitId: user.unitId\n          });\n        case 2:\n          improvementWorks = _context8.sent;\n          console.log(\"i funktionen\");\n          //Count number of improvement works in the department in each stage\n          improvementWorksPlan = 0;\n          improvementWorksDo = 0;\n          improvementWorkStudy = 0;\n          improvementWorksAct = 0;\n          _iterator = _createForOfIteratorHelper(improvementWorks);\n          try {\n            for (_iterator.s(); !(_step = _iterator.n()).done;) {\n              improvementWork = _step.value;\n              if (improvementWork.currentStage == \"Plan\") {\n                improvementWorksPlan += 1;\n              } else if (improvementWork.currentStage == \"Do\") {\n                improvementWorksDo += 1;\n              } else if (improvementWork.currentStage == \"Study\") {\n                improvementWorkStudy += 1;\n              } else if (improvementWork.currentStage == \"Act\") {\n                improvementWorksAct += 1;\n              }\n            }\n          } catch (err) {\n            _iterator.e(err);\n          } finally {\n            _iterator.f();\n          }\n          improvementWorkContainer = document.getElementById(\"numberOfImprovementWorks\"); //Append a div displaying the number of improvement works in the user's department\n          improvementWorkContainerElement = document.createElement(\"p\");\n          improvementWorkContainerElement.innerHTML = \"Antal pågående förbättringsarbeten i din avdelning: \" + improvementWorks.length;\n          if (improvementWorkContainer && improvementWorkContainer.innerHTML.trim() === \"\") {\n            improvementWorkContainer.appendChild(improvementWorkContainerElement);\n          }\n          //Append the text displaying the number of improvement works that are in the stage act\n          nolanAct = document.getElementById(\"nolanAct\");\n          actElement = document.createElement(\"p\");\n          actElement.innerHTML = \"Agera: \" + improvementWorksAct;\n          actElement.style.margin = \"5px\";\n          if (nolanAct) {\n            nolanAct.appendChild(actElement);\n          }\n          //Append the text displaying the number of improvement works that are in the stage plan\n          nolanPlan = document.getElementById(\"nolanPlan\");\n          planElement = document.createElement(\"p\");\n          planElement.innerHTML = \"Planera: \" + improvementWorksPlan;\n          planElement.style.margin = \"5px\";\n          if (nolanPlan) {\n            nolanPlan.appendChild(planElement);\n          }\n          //Append the text displaying the number of improvement works that are in the stage do\n          nolanDo = document.getElementById(\"nolanDo\");\n          doElement = document.createElement(\"p\");\n          doElement.innerHTML = \"Göra: \" + improvementWorksDo;\n          doElement.style.margin = \"5px\";\n          if (nolanDo) {\n            nolanDo.appendChild(doElement);\n          }\n          //Append the text displaying the number of improvement works that are in the stage study\n          nolanStudy = document.getElementById(\"nolanStudy\");\n          studyElement = document.createElement(\"p\");\n          studyElement.innerHTML = \"Studera: \" + improvementWorkStudy;\n          studyElement.style.margin = \"5px\";\n          if (nolanStudy) {\n            nolanStudy.appendChild(studyElement);\n          }\n        case 34:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8);\n  }));\n}\nfunction getProjects(selectElement, listenersLoaded, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var _this3 = this;\n    var data, id;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          _context10.next = 2;\n          return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getImprovementWorksForUser)(userHsaId);\n        case 2:\n          data = _context10.sent;\n          id = 0;\n          data.forEach(function (project) {\n            return __awaiter(_this3, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n              var title, department, name, description, i, card, cardHTML, div;\n              return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n                while (1) switch (_context9.prev = _context9.next) {\n                  case 0:\n                    title = project.name;\n                    _context9.next = 3;\n                    return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getObjectById)(\"unit\", project.unitId);\n                  case 3:\n                    department = _context9.sent;\n                    if (!department) {\n                      _context9.next = 21;\n                      break;\n                    }\n                    name = \"Projektledare\"; //Waiting for backend fix\n                    description = project.content;\n                    i = id;\n                    card = new projectCard(i, name, department.name, title, description, project.id);\n                    projectCards[i] = card;\n                    cardHTML = card.generateHTML();\n                    div = document.createElement(\"div\");\n                    div.className = \"homePageProjectCardDiv\"; // Set the class name(s) here\n                    div.innerHTML = cardHTML;\n                    if (selectElement) {\n                      _context9.next = 16;\n                      break;\n                    }\n                    return _context9.abrupt(\"return\");\n                  case 16:\n                    selectElement.appendChild(div); // Stop if the container isn't found\n                    addEventListener(project.id, card);\n                    id++;\n                    _context9.next = 22;\n                    break;\n                  case 21:\n                    console.log(project.unitId + \" is not a unit\"); //Unit Ids on improvement work that do not exist\n                  case 22:\n                  case \"end\":\n                    return _context9.stop();\n                }\n              }, _callee9);\n            }));\n          });\n        case 5:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10);\n  }));\n}\nvar projectCards = {};\nvar projectCard = /*#__PURE__*/function () {\n  function projectCard(id, name, department, title, description, projectId) {\n    _classCallCheck(this, projectCard);\n    this.name = name;\n    this.department = department;\n    this.title = title;\n    this.description = description;\n    this.id = id;\n    this.projectId = projectId;\n  }\n  _createClass(projectCard, [{\n    key: \"showMoreInfo\",\n    value: function showMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"flex\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"^ Stäng detaljer\";\n      }\n    }\n  }, {\n    key: \"closeMoreInfo\",\n    value: function closeMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"none\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"> Mer information\";\n      }\n    }\n  }, {\n    key: \"loadInitiatePage\",\n    value: function loadInitiatePage() {\n      alert(\"The initiate project page should now be loaded\");\n    }\n  }, {\n    key: \"generateHTML\",\n    value: function generateHTML() {\n      return \"<div class=\\\"homeTotalExpandedOngoingWorkCard\\\">\\n        <div style=\\\"cursor: pointer;\\\" class=\\\"flex-container ongoingCard\\\" id=\\\"homepage-\".concat(this.projectId, \"\\\">\\n            <div class=\\\"ongoingCardImageContainer toSinglePage\\\">\\n                <div class = \\\"flex-box ongoingCardImage toSinglePage\\\" id=\\\"pinkFaded\\\"></div>\\n            </div>\\n            <div class=\\\"div ongoingCardInfo toSinglePage\\\">\\n                <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardManager\\\">\").concat(this.name, \"</p>\\n                <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardDepartment\\\">\").concat(this.department, \"</p>\\n                <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardIdeaTitle\\\">\").concat(this.title, \"</p>\\n            </div>\\n\\n            <!--<button id=\\\"homepage-project-button-\").concat(this.projectId, \"\\\" data-project-id=\\\"\").concat(this.id, \"\\\" class=\\\"projectButton\\\" role=\\\"button\\\">G\\xE5 till projektsidan</button>-->\\n\\n\\n            <div class=\\\"container ongoingSeeCardDetails toSinglePage\\\">\\n                <div class=\\\"ongoingSeeCardDetailsInner\\\">\\n                    \\n                </div>\\n            </div>\\n        </div> \\n        <div class = \\\"expandedOngoingWorkCard\\\" id=\\\"homepage-expandedOngoingWorkCard\").concat(this.projectId, \"\\\" style=\\\"display: none;\\\">\\n            <div class =\\\"homepage-expandedTextOngoingWorkCard\\\">\\n            \").concat(this.description, \"\\n            </div>\\n        </div>\\n        </div> \");\n    }\n  }]);\n  return projectCard;\n}(); //<p id=\"homepage-ongoingSeeDetailsButton${this.projectId}\" class = \"moreInfoClass\">> Mer information</p>\n\n//# sourceURL=webpack://c3/./client/homePage.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   addEventListener: () => (/* binding */ addEventListener),\n/* harmony export */   loadPage: () => (/* binding */ loadPage)\n/* harmony export */ });\n/* harmony import */ var _Database_authentication_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Database/authentication.js */ \"./client/Database/authentication.js\");\n/* harmony import */ var _SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SidebarAndHeader/pageHandler.js */ \"./client/SidebarAndHeader/pageHandler.js\");\n/* harmony import */ var _client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../client/Database/database.js */ \"./client/Database/database.js\");\n/* harmony import */ var _projectPage_projectPage_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./projectPage/projectPage.js */ \"./client/projectPage/projectPage.js\");\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\nfunction logoutUser(event) {\n  event.preventDefault();\n  alert(\"logout\");\n  (0,_Database_authentication_js__WEBPACK_IMPORTED_MODULE_0__.logout)();\n}\nvar myIdeaCards = {};\nvar IdeaCard = /*#__PURE__*/function () {\n  function IdeaCard(id, header, department, name, description, upvoteCount, suggestionID) {\n    _classCallCheck(this, IdeaCard);\n    this.header = header;\n    this.department = department;\n    this.name = name;\n    this.description = description;\n    this.upvoteCount = upvoteCount;\n    this.id = id;\n    this.suggestionID = suggestionID;\n  }\n  _createClass(IdeaCard, [{\n    key: \"generateHTML\",\n    value: function generateHTML() {\n      return \"<div class=\\\"totalExpandedIdeaCard\\\">\\n          <div class=\\\"ideaCard\\\">\\n              <div class=\\\"ideaCardBorder\\\">\\n                  <div class=\\\"ideaCardImageHP\\\">\\n                      <img src=\\\"../images/pinkFaded.png\\\" class =\\\"pinkFadedHP\\\" alt=\\\"pinkFaded\\\">\\n                  </div>\\n                  <div class=\\\"ideaCardMiddleText\\\">\\n                      <p id=\\\"ideaCardHeader\\\" class=\\\"ideaCardFont\\\">\".concat(this.header, \"</p>\\n                      <p id=\\\"ideaCardDepartment\\\" class=\\\"ideaCardFont\\\">\").concat(this.department, \"</p>\\n                      <p id=\\\"ideaCardName\\\" class=\\\"ideaCardFont\\\">\").concat(this.name, \"</p>\\n                      <p id=\\\"ideaCardMoreInfo\").concat(this.id, \"\\\" class=\\\"ideaCardFont moreInfoClass\\\"> > Mer information</p>\\n                  </div>\\n              </div>\\n              <div class=\\\"ideaCardUpvotesHP\\\">\\n              <div class=\\\"upvoteDivHP\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"28\\\" height=\\\"28\\\" fill=\\\"currentColor\\\" class=\\\"bi bi-caret-up upvoteSymbol\\\" viewBox=\\\"0 0 16 16\\\">\\n  <path d=\\\"M3.204 11h9.592L8 5.519 3.204 11zm-.753-.659 4.796-5.48a1 1 0 0 1 1.506 0l4.796 5.48c.566.647.106 1.659-.753 1.659H3.204a1 1 0 0 1-.753-1.659z\\\"/>\\n</svg>              <div id =\\\"upvoteNumber\\\" class=\\\"ideaCardFont\\\"> \").concat(this.upvoteCount, \"</div>\\n\\n              </div>\\n          </div>\\n          </div>\\n          <div id=\\\"expandedContent\").concat(this.id, \"\\\" class= \\\"expandedIdeaContent\\\" style =\\\"display : none;\\\">\\n              <div class=\\\"expandedDescriptionText\\\">\\n                  <p class=\\\"ideaCardFont\\\" id=\\\"expandedHeader\\\">Om ideen</p>\\n                  <p id=\\\"expandedDescription\\\">\").concat(this.description, \"</p>\\n              </div>\\n              <div class=\\\"expandedCommentAndButton id = \\\"expandedCommentAndButton\").concat(this.id, \"\\\">\\n                  <div class=\\\"expandedComment\\\">\\n                      <p class=\\\"ideaCardFont\\\">Kommentarer</p>\\n                      <p class=\\\"ideaCardFont\\\">Komment 1</p>\\n                      <p class=\\\"ideaCardFont\\\">K0mment 2</p>\\n                  </div>\\n                  <div class=\\\"expandedButton\\\">\\n                      <button class=\\\"initiateProjectButton\\\" id=\\\"initiateProjectFromCard\").concat(this.suggestionID, \"\\\">Initiera Projekt</button>\\n                  </div>\\n              </div>\\n          </div>\\n      </div>\");\n    }\n  }, {\n    key: \"showMoreInfo\",\n    value: function showMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"flex\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"^ Stäng detaljer\";\n      }\n    }\n  }, {\n    key: \"closeMoreInfo\",\n    value: function closeMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"none\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"> Mer information\";\n      }\n    }\n  }, {\n    key: \"loadInitiatePage\",\n    value: function loadInitiatePage() {\n      alert(\"The initiate project page should now be loaded\");\n    }\n  }]);\n  return IdeaCard;\n}();\nfunction createNewCards(className, container, signedInUserHsaID) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var _this = this;\n    var user, userSuggestions, counter;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          _context2.next = 2;\n          return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getObjectById)(\"users\", signedInUserHsaID);\n        case 2:\n          user = _context2.sent;\n          _context2.next = 5;\n          return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getSuggestions)({\n            creatorHsaId: user.id\n          });\n        case 5:\n          userSuggestions = _context2.sent;\n          //If there exist filter use those instead to get matching suggestions rest should not need to be changed\n          counter = 0;\n          userSuggestions.forEach(function (suggestion) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n              var unit, user;\n              return _regeneratorRuntime().wrap(function _callee$(_context) {\n                while (1) switch (_context.prev = _context.next) {\n                  case 0:\n                    _context.next = 2;\n                    return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getObjectById)(\"unit\", suggestion.unitId);\n                  case 2:\n                    unit = _context.sent;\n                    _context.next = 5;\n                    return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getObjectById)(\"users\", suggestion.creatorHsaId);\n                  case 5:\n                    user = _context.sent;\n                    createNewIdeaCard(suggestion.name, unit.name, user.firstName + \" \" + user.lastName, suggestion.content, suggestion.upvotes.length, className, container, counter, suggestion.id);\n                    counter = counter + 1;\n                  case 8:\n                  case \"end\":\n                    return _context.stop();\n                }\n              }, _callee);\n            }));\n          });\n          addListner(userSuggestions, container);\n        case 9:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2);\n  }));\n}\nfunction addListner(cardArray, element) {\n  element.addEventListener(\"click\", function (event) {\n    var target = event.target;\n    //Adds an eventlistener for the more info of the card\n    if (target && target.className === \"ideaCardFont moreInfoClass\") {\n      var cardId = parseInt(target.id.replace(\"ideaCardMoreInfo\", \"\"), 10);\n      if (cardArray[cardId]) {\n        var card = cardArray[cardId];\n        var expandedDiv = document.getElementById(\"expandedContent\".concat(cardId));\n        console.log(expandedDiv);\n        if (expandedDiv) {\n          if (expandedDiv.style.display === \"none\") {\n            card.showMoreInfo(\"expandedContent\".concat(cardId), \"ideaCardMoreInfo\".concat(cardId));\n          } else {\n            card.closeMoreInfo(\"expandedContent\".concat(cardId), \"ideaCardMoreInfo\".concat(cardId));\n          }\n        } else {\n          console.error(\"Expanded div not found\");\n        }\n      }\n    }\n  });\n}\nfunction createNewIdeaCard(header, department, name, description, upvoteCount, className, container, ID, suggestionID) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var card, cardHTML, div;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          card = new IdeaCard(ID, header, department, name, description, upvoteCount, suggestionID);\n          cardHTML = card.generateHTML();\n          myIdeaCards[ID] = card;\n          div = document.createElement(\"div\");\n          div.className = className; // Set the class name(s) here\n          div.innerHTML = cardHTML;\n          container.appendChild(div);\n        case 7:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3);\n  }));\n}\nfunction loadPage(listenersLoaded) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n    var _this2 = this;\n    var container;\n    return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n      while (1) switch (_context5.prev = _context5.next) {\n        case 0:\n          container = document.querySelector(\"#container-fluid\");\n          if (container) {\n            _context5.next = 3;\n            break;\n          }\n          return _context5.abrupt(\"return\");\n        case 3:\n          // Stop if the container isn't found\n          fetch(\"homePage.html\").then(function (response) {\n            return response.text();\n          }).then(function (data) {\n            return __awaiter(_this2, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n              var tempContainer, specificElement, tmp, user, suggestionContainer, nameHeaderElement, userFullName, projectContainer, departmentContainer, departmentDiv;\n              return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n                while (1) switch (_context4.prev = _context4.next) {\n                  case 0:\n                    // Create a temporary container element to hold the loaded content\n                    tempContainer = document.createElement(\"div\");\n                    tempContainer.innerHTML = data;\n                    // Select the specific element with the class you want\n                    specificElement = tempContainer.querySelector(\".main-content\");\n                    if (specificElement) {\n                      // Insert the specific element into the target element\n                      container.insertBefore(specificElement, container.firstChild);\n                    }\n                    tmp = localStorage.getItem(\"user\");\n                    console.log(tmp);\n                    if (tmp) {\n                      _context4.next = 9;\n                      break;\n                    }\n                    console.log(\"there is not an user in localStorage\");\n                    return _context4.abrupt(\"return\");\n                  case 9:\n                    user = JSON.parse(tmp)[0];\n                    suggestionContainer = document.getElementById(\"suggestion-container\");\n                    if (!suggestionContainer) {\n                      _context4.next = 15;\n                      break;\n                    }\n                    _context4.next = 14;\n                    return createNewCards(\"HomePageIdeaCardDiv\", suggestionContainer, user.id);\n                  case 14:\n                    addListner(myIdeaCards, container);\n                  case 15:\n                    nameHeaderElement = document.getElementById(\"user-name-header\");\n                    userFullName = user.firstName + \" \" + user.lastName;\n                    if (nameHeaderElement) {\n                      nameHeaderElement.textContent = userFullName;\n                    }\n                    projectContainer = document.getElementById(\"project-container\");\n                    if (!projectContainer) {\n                      _context4.next = 22;\n                      break;\n                    }\n                    _context4.next = 22;\n                    return getProjects(projectContainer, listenersLoaded, user.id);\n                  case 22:\n                    console.log(\"innan\");\n                    departmentContainer = document.getElementById(\"department-container\");\n                    departmentDiv = document.getElementById(\"nolanAct\");\n                    if (!(departmentContainer && document.getElementById(\"nolanAct\") && departmentDiv.innerHTML.trim() === \"\")) {\n                      _context4.next = 29;\n                      break;\n                    }\n                    console.log(\"anropar funktionen\");\n                    _context4.next = 29;\n                    return improvementWorkInfo(departmentContainer, user);\n                  case 29:\n                  case \"end\":\n                    return _context4.stop();\n                }\n              }, _callee4);\n            }));\n          })[\"catch\"](function (error) {\n            console.error(\"Failed to load the external HTML file:\", error);\n          });\n        case 4:\n        case \"end\":\n          return _context5.stop();\n      }\n    }, _callee5);\n  }));\n}\nfunction addEventListener(projectId, card) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          $(\"#homepage-\" + projectId).off(\"click\").on(\"click\", function () {\n            return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n              var tmp, currentStage;\n              return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n                while (1) switch (_context6.prev = _context6.next) {\n                  case 0:\n                    _context6.next = 2;\n                    return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getObjectById)(\"improvementWork\", projectId);\n                  case 2:\n                    tmp = _context6.sent;\n                    currentStage = tmp.currentStage;\n                    if (currentStage === \"Act\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageA)(projectId);\n                    } else if (currentStage === \"Study\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageS)(projectId);\n                    } else if (currentStage === \"Do\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageG)(projectId);\n                    } else if (currentStage === \"Plan\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageP)(projectId);\n                    } else if (currentStage === \"Finished\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageP)(projectId);\n                    }\n                  case 5:\n                  case \"end\":\n                    return _context6.stop();\n                }\n              }, _callee6);\n            }));\n          });\n        case 1:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7);\n  }));\n}\nvar patientRiskLevelMapping = {\n  Grön: \"Green\",\n  Blå: \"Blue\",\n  Gul: \"Yellow\",\n  Röd: \"Red\"\n};\nvar nolanStageMapping = {\n  Planera: \"Plan\",\n  Göra: \"Do\",\n  Studera: \"Study\",\n  Agera: \"Act\"\n};\n/*\nasync function performSearch(searchBar: HTMLInputElement, container: HTMLElement) {\n  let inputValue = searchBar.value;\n  //make first character uppercase\n  inputValue = inputValue.toLowerCase();\n  console.log(\"Search query:\", inputValue);\n  // Remove each element\n  projectCards = [];\n\n  let query: { [key: string]: string } = {};\n\n  removeCardsFromDiv(\"div.projectCardCardDiv\");\n    \n  if (inputValue !== \"\") {\n    const matchedStage = Object.keys(nolanStageMapping).find((stage) =>\n      stage.toLowerCase().includes(inputValue.toLowerCase())\n    );\n\n    if (matchedStage) {\n      query.nolanStage = nolanStageMapping[matchedStage];\n    } else {\n      query.name = inputValue;\n    }\n  }\n  filteredImprovementWorks = await getImprovementWorks(query);\n  await getProjects(container, true, filteredImprovementWorks);\n}\n*/\nfunction improvementWorkInfo(departmentContainer, user) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var improvementWorks, improvementWorksPlan, improvementWorksDo, improvementWorkStudy, improvementWorksAct, _iterator, _step, improvementWork, improvementWorkContainer, improvementWorkContainerElement, nolanAct, actElement, nolanPlan, planElement, nolanDo, doElement, nolanStudy, studyElement;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          _context8.next = 2;\n          return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getImprovementWorks)({\n            unitId: user.unitId\n          });\n        case 2:\n          improvementWorks = _context8.sent;\n          console.log(\"i funktionen\");\n          //Count number of improvement works in the department in each stage\n          improvementWorksPlan = 0;\n          improvementWorksDo = 0;\n          improvementWorkStudy = 0;\n          improvementWorksAct = 0;\n          _iterator = _createForOfIteratorHelper(improvementWorks);\n          try {\n            for (_iterator.s(); !(_step = _iterator.n()).done;) {\n              improvementWork = _step.value;\n              if (improvementWork.currentStage == \"Plan\") {\n                improvementWorksPlan += 1;\n              } else if (improvementWork.currentStage == \"Do\") {\n                improvementWorksDo += 1;\n              } else if (improvementWork.currentStage == \"Study\") {\n                improvementWorkStudy += 1;\n              } else if (improvementWork.currentStage == \"Act\") {\n                improvementWorksAct += 1;\n              }\n            }\n          } catch (err) {\n            _iterator.e(err);\n          } finally {\n            _iterator.f();\n          }\n          improvementWorkContainer = document.getElementById(\"numberOfImprovementWorks\"); //Append a div displaying the number of improvement works in the user's department\n          improvementWorkContainerElement = document.createElement(\"p\");\n          improvementWorkContainerElement.innerHTML = \"Antal pågående förbättringsarbeten i din avdelning: \" + improvementWorks.length;\n          if (improvementWorkContainer && improvementWorkContainer.innerHTML.trim() === \"\") {\n            improvementWorkContainer.appendChild(improvementWorkContainerElement);\n          }\n          //Append the text displaying the number of improvement works that are in the stage act\n          nolanAct = document.getElementById(\"nolanAct\");\n          actElement = document.createElement(\"p\");\n          actElement.innerHTML = \"Agera: \" + improvementWorksAct;\n          actElement.style.margin = \"5px\";\n          if (nolanAct) {\n            nolanAct.appendChild(actElement);\n          }\n          //Append the text displaying the number of improvement works that are in the stage plan\n          nolanPlan = document.getElementById(\"nolanPlan\");\n          planElement = document.createElement(\"p\");\n          planElement.innerHTML = \"Planera: \" + improvementWorksPlan;\n          planElement.style.margin = \"5px\";\n          if (nolanPlan) {\n            nolanPlan.appendChild(planElement);\n          }\n          //Append the text displaying the number of improvement works that are in the stage do\n          nolanDo = document.getElementById(\"nolanDo\");\n          doElement = document.createElement(\"p\");\n          doElement.innerHTML = \"Göra: \" + improvementWorksDo;\n          doElement.style.margin = \"5px\";\n          if (nolanDo) {\n            nolanDo.appendChild(doElement);\n          }\n          //Append the text displaying the number of improvement works that are in the stage study\n          nolanStudy = document.getElementById(\"nolanStudy\");\n          studyElement = document.createElement(\"p\");\n          studyElement.innerHTML = \"Studera: \" + improvementWorkStudy;\n          studyElement.style.margin = \"5px\";\n          if (nolanStudy) {\n            nolanStudy.appendChild(studyElement);\n          }\n        case 34:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8);\n  }));\n}\nfunction getProjects(selectElement, listenersLoaded, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var _this3 = this;\n    var data, id;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          _context10.next = 2;\n          return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getImprovementWorksForUser)(userHsaId);\n        case 2:\n          data = _context10.sent;\n          id = 0;\n          data.forEach(function (project) {\n            return __awaiter(_this3, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n              var title, department, name, description, i, card, cardHTML, div;\n              return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n                while (1) switch (_context9.prev = _context9.next) {\n                  case 0:\n                    title = project.name;\n                    _context9.next = 3;\n                    return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getObjectById)(\"unit\", project.unitId);\n                  case 3:\n                    department = _context9.sent;\n                    if (!department) {\n                      _context9.next = 21;\n                      break;\n                    }\n                    name = \"Projektledare\"; //Waiting for backend fix\n                    description = project.content;\n                    i = id;\n                    card = new projectCard(i, name, department.name, title, description, project.id, project.dateStarted);\n                    projectCards[i] = card;\n                    cardHTML = card.generateHTML();\n                    div = document.createElement(\"div\");\n                    div.className = \"homePageProjectCardDiv\"; // Set the class name(s) here\n                    div.innerHTML = cardHTML;\n                    if (selectElement) {\n                      _context9.next = 16;\n                      break;\n                    }\n                    return _context9.abrupt(\"return\");\n                  case 16:\n                    selectElement.appendChild(div); // Stop if the container isn't found\n                    addEventListener(project.id, card);\n                    id++;\n                    _context9.next = 22;\n                    break;\n                  case 21:\n                    console.log(project.unitId + \" is not a unit\"); //Unit Ids on improvement work that do not exist\n                  case 22:\n                  case \"end\":\n                    return _context9.stop();\n                }\n              }, _callee9);\n            }));\n          });\n        case 5:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10);\n  }));\n}\nvar projectCards = {};\nvar projectCard = /*#__PURE__*/function () {\n  function projectCard(id, name, department, title, description, projectId, dateStarted) {\n    _classCallCheck(this, projectCard);\n    this.name = name;\n    this.department = department;\n    this.title = title;\n    this.description = description;\n    this.id = id;\n    this.projectId = projectId;\n    this.dateStarted = dateStarted;\n  }\n  _createClass(projectCard, [{\n    key: \"showMoreInfo\",\n    value: function showMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"flex\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"^ Stäng detaljer\";\n      }\n    }\n  }, {\n    key: \"closeMoreInfo\",\n    value: function closeMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"none\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"> Mer information\";\n      }\n    }\n  }, {\n    key: \"loadInitiatePage\",\n    value: function loadInitiatePage() {\n      alert(\"The initiate project page should now be loaded\");\n    }\n  }, {\n    key: \"generateHTML\",\n    value: function generateHTML() {\n      return \"<div class=\\\"homeTotalExpandedOngoingWorkCard\\\">\\n        <div style=\\\"cursor: pointer;\\\" class=\\\"flex-container ongoingCard\\\" id=\\\"homepage-\".concat(this.projectId, \"\\\">\\n            <div class=\\\"ongoingCardImageContainer toSinglePage\\\">\\n                <div class = \\\"flex-box ongoingCardImage toSinglePage\\\" id=\\\"pinkFaded\\\"></div>\\n            </div>\\n            <div class=\\\"div ongoingCardInfo toSinglePage\\\">\\n                <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardManager\\\">\").concat(this.name, \"</p>\\n                <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardDepartment\\\">\").concat(this.department, \"</p>\\n                <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardIdeaTitle\\\">\").concat(this.title, \"</p>\\n                <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardStartDate\\\" style=\\\"font-size: 12px;\\\"> \").concat((0,_projectPage_projectPage_js__WEBPACK_IMPORTED_MODULE_3__.formatDate)(this.dateStarted), \"</p>\\n            </div>\\n\\n            <!--<button id=\\\"homepage-project-button-\").concat(this.projectId, \"\\\" data-project-id=\\\"\").concat(this.id, \"\\\" class=\\\"projectButton\\\" role=\\\"button\\\">G\\xE5 till projektsidan</button>-->\\n\\n\\n            <div class=\\\"container ongoingSeeCardDetails toSinglePage\\\">\\n                <div class=\\\"ongoingSeeCardDetailsInner\\\">\\n                    \\n                </div>\\n            </div>\\n        </div> \\n        <div class = \\\"expandedOngoingWorkCard\\\" id=\\\"homepage-expandedOngoingWorkCard\").concat(this.projectId, \"\\\" style=\\\"display: none;\\\">\\n            <div class =\\\"homepage-expandedTextOngoingWorkCard\\\">\\n            \").concat(this.description, \"\\n            </div>\\n        </div>\\n        </div> \");\n    }\n  }]);\n  return projectCard;\n}(); //<p id=\"homepage-ongoingSeeDetailsButton${this.projectId}\" class = \"moreInfoClass\">> Mer information</p>\n\n//# sourceURL=webpack://c3/./client/homePage.js?");
 
 /***/ }),
 
@@ -276,7 +276,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
   \*************************************/
 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   clearContent: () => (/* binding */ clearContent),\n/* harmony export */   loadHospitals: () => (/* binding */ loadHospitals),\n/* harmony export */   loadPage: () => (/* binding */ loadPage),\n/* harmony export */   loadUnits: () => (/* binding */ loadUnits),\n/* harmony export */   removeCardsFromDiv: () => (/* binding */ removeCardsFromDiv),\n/* harmony export */   testFunc: () => (/* binding */ testFunc)\n/* harmony export */ });\n/* harmony import */ var _Database_database_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Database/database.js */ \"./client/Database/database.js\");\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n//import {loadInitiatePage} from \"../SidebarAndHeader/pageHandler.js\";\nvar myIdeaCards = {};\n// Initialize filtered suggestions as empty array (potentially change to get all suggestions\nvar filteredSuggestions = [];\nvar IdeaCard = /*#__PURE__*/function () {\n  function IdeaCard(id, header, department, name, description, upvoteCount, suggestionID) {\n    _classCallCheck(this, IdeaCard);\n    this.header = header;\n    this.department = department;\n    this.name = name;\n    this.description = description;\n    this.upvoteCount = upvoteCount;\n    this.id = id;\n    this.suggestionID = suggestionID;\n  }\n  // <img src=\"images/upvoteIcon.png\" class =\"upvoteIcon\" alt=\"upvoteIcon\">\n  _createClass(IdeaCard, [{\n    key: \"addUpvote\",\n    value: function addUpvote() {\n      return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n        var tmp, user, suggestion;\n        return _regeneratorRuntime().wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              tmp = localStorage.getItem(\"user\");\n              if (tmp) {\n                _context.next = 4;\n                break;\n              }\n              console.log(\"there is not an user in localStorage\");\n              return _context.abrupt(\"return\");\n            case 4:\n              user = JSON.parse(tmp)[0];\n              _context.next = 7;\n              return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.upvoteSuggestion)(this.suggestionID, user.id);\n            case 7:\n              _context.next = 9;\n              return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({\n                id: this.suggestionID\n              });\n            case 9:\n              suggestion = _context.sent;\n              this.upvoteCount = suggestion[0].upvotes.length;\n              return _context.abrupt(\"return\", suggestion[0].upvotes.length);\n            case 12:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this);\n      }));\n    }\n  }, {\n    key: \"generateHTML\",\n    value: function generateHTML() {\n      return \"<div class=\\\"totalExpandedIdeaCard\\\">\\n          <div class=\\\"ideaCard\\\">\\n              <div class=\\\"ideaCardBorder\\\">\\n                  <div class=\\\"ideaCardImage\\\">\\n                      <img src=\\\"../images/pinkFaded.png\\\" class =\\\"pinkFaded\\\" alt=\\\"pinkFaded\\\">\\n                  </div>\\n                  <div class=\\\"ideaCardMiddleText\\\">\\n                      <p id=\\\"ideaCardHeader\\\" class=\\\"ideaCardFont\\\">\".concat(this.header, \"</p>\\n                      <p id=\\\"ideaCardDepartment\\\" class=\\\"ideaCardFont\\\">\").concat(this.department, \"</p>\\n                      <p id=\\\"ideaCardName\\\" class=\\\"ideaCardFont\\\">\").concat(this.name, \"</p>\\n                      <p id=\\\"ideaCardMoreInfo\").concat(this.id, \"\\\" class=\\\"ideaCardFont moreInfoClass\\\"> > Mer information</p>\\n                  </div>\\n                  <div class=\\\"ideaCardUpvotes\\\">\\n                  <div class=\\\"upvoteDiv\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"28\\\" id = \\\"upvoteIconPic\").concat(this.id, \"\\\" height=\\\"28\\\" fill=\\\"currentColor\\\" class=\\\"bi bi-caret-up upvoteSymbol\\\" viewBox=\\\"0 0 16 16\\\">\\n  <path d=\\\"M3.204 11h9.592L8 5.519 3.204 11zm-.753-.659 4.796-5.48a1 1 0 0 1 1.506 0l4.796 5.48c.566.647.106 1.659-.753 1.659H3.204a1 1 0 0 1-.753-1.659z\\\"/>\\n</svg>                  <div id =\\\"upvoteNumber\").concat(this.id, \"\\\" class=\\\"ideaCardFont upvoteNumber\\\" >\").concat(this.upvoteCount, \"</div>\\n\\n                  </div>\\n              </div>\\n              </div>\\n    \\n          </div>\\n          <div id=\\\"expandedContent\").concat(this.id, \"\\\" class= \\\"expandedIdeaContent\\\" style =\\\"display : none;\\\">\\n              <div class=\\\"expandedDescriptionText\\\">\\n                  <p class=\\\"ideaCardFontComments\\\" id=\\\"expandedHeader\\\">Om ideen</p>\\n                  <p class=\\\"ideaCardFont\\\" id=\\\"expandedDescription\\\">\").concat(this.description, \"</p>\\n              </div>\\n              <div class=\\\"expandedCommentAndButton id = \\\"expandedCommentAndButton\").concat(this.id, \"\\\">\\n                  <div class=\\\"expandedComment\\\">\\n                      <p  class=\\\"ideaCardFontComments\\\">Kommentarer</p>\\n                      <p  class=\\\"ideaCardFont\\\">Komment 7</p>\\n                      <p  class=\\\"ideaCardFont\\\">Komment 2</p>\\n                  </div>\\n\\n                  <div class=\\\"expandedButton\\\">\\n                      <button class=\\\"initiateProjectButton\\\" id=\\\"initiateProjectFromCard\").concat(this.suggestionID, \"\\\">Initiera f\\xF6rb\\xE4ttringsf\\xF6rslag</button>\\n                  </div>\\n              </div>\\n          </div>\\n      </div>\");\n    }\n  }, {\n    key: \"showMoreInfo\",\n    value: function showMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"flex\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"^ Stäng detaljer\";\n      }\n    }\n  }, {\n    key: \"closeMoreInfo\",\n    value: function closeMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"none\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"> Mer information\";\n      }\n    }\n  }, {\n    key: \"loadInitiatePage\",\n    value: function loadInitiatePage() {\n      alert(\"The initiate project page should now be loaded\");\n      window.location.href = '../client/projectPage/projectPageP.html';\n    }\n  }]);\n  return IdeaCard;\n}();\nfunction createNewCards(className, container, suggestions) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var _this = this;\n    var counter;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          counter = 1;\n          suggestions.forEach(function (suggestion) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n              var unit, user;\n              return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n                while (1) switch (_context2.prev = _context2.next) {\n                  case 0:\n                    _context2.next = 2;\n                    return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getObjectById)(\"unit\", suggestion.unitId);\n                  case 2:\n                    unit = _context2.sent;\n                    _context2.next = 5;\n                    return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getObjectById)(\"users\", suggestion.creatorHsaId);\n                  case 5:\n                    user = _context2.sent;\n                    console.log(suggestion);\n                    createNewIdeaCard(suggestion.name, unit.name, user.firstName + \" \" + user.lastName, suggestion.content, suggestion.upvotes.length, className, container, counter, suggestion.id);\n                    counter = counter + 1;\n                  case 9:\n                  case \"end\":\n                    return _context2.stop();\n                }\n              }, _callee2);\n            }));\n          });\n        case 2:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3);\n  }));\n}\nfunction createNewIdeaCard(header, department, name, description, upvoteCount, className, container, ID, suggestionID) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n    var card, cardHTML, div;\n    return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n      while (1) switch (_context4.prev = _context4.next) {\n        case 0:\n          card = new IdeaCard(ID, header, department, name, description, upvoteCount, suggestionID);\n          cardHTML = card.generateHTML();\n          myIdeaCards[ID] = card;\n          div = document.createElement(\"div\");\n          div.className = className; // Set the class name(s) here\n          div.innerHTML = cardHTML;\n          container.appendChild(div);\n        case 7:\n        case \"end\":\n          return _context4.stop();\n      }\n    }, _callee4);\n  }));\n}\nfunction testFunc() {\n  console.log(\"Test func works\");\n}\nfunction loadPage() {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var container, scriptElement, checkedHospitalIds, checkedUnitIds, searchBar;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          container = document.querySelector(\"#container-fluid\");\n          if (container) {\n            _context7.next = 3;\n            break;\n          }\n          return _context7.abrupt(\"return\");\n        case 3:\n          // Stop if the container isn't found\n          scriptElement = document.createElement(\"script\");\n          scriptElement.src = \"../dist/ideaBank.bundle.js\";\n          container.appendChild(scriptElement);\n          // Initialize empty lists of checked hospital and unit ids\n          checkedHospitalIds = [];\n          checkedUnitIds = [];\n          fetch(\"ideaBank/ideaBank.html\").then(function (response) {\n            return response.text();\n          }).then(function (data) {\n            // Create a temporary container element to hold the loaded content\n            var tempContainer = document.createElement(\"div\");\n            tempContainer.innerHTML = data;\n            // Select the specific element with the class you want\n            var specificElement = tempContainer.querySelector(\".filterBar\");\n            var createHospitalCheckBoxContainer = tempContainer.querySelector('#hospitalSelection');\n            var createUnitCheckBoxContainer = tempContainer.querySelector('#unitSelection');\n            if (createHospitalCheckBoxContainer) {\n              createHospitalCheckBoxContainer.addEventListener('change', function (event) {\n                return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n                  var checkboxes;\n                  return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n                    while (1) switch (_context5.prev = _context5.next) {\n                      case 0:\n                        checkboxes = createHospitalCheckBoxContainer.querySelectorAll('input[type=\"checkbox\"]'); // Empty list of checked hospitals\n                        checkedHospitalIds = [];\n                        // Array to store IDs of checked checkboxes\n                        checkboxes.forEach(function (checkbox) {\n                          // Ensure the checkbox is an HTMLInputElement\n                          var inputCheckbox = checkbox;\n                          // Check if the checkbox is checked and add its ID to the array\n                          if (inputCheckbox.checked) {\n                            checkedHospitalIds.push(inputCheckbox.id);\n                          }\n                        });\n                        // Log all checked hospital IDs\n                        console.log('Checked hospitals:', checkedHospitalIds);\n                        // Future change: Only clear the unitIds for unchecked hospitals!\n                        clearContent(\"unitSelection\");\n                        loadUnits(checkedHospitalIds);\n                      case 6:\n                      case \"end\":\n                        return _context5.stop();\n                    }\n                  }, _callee5);\n                }));\n              });\n            }\n            if (createUnitCheckBoxContainer) {\n              createUnitCheckBoxContainer.addEventListener('change', function (event) {\n                return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n                  var checkboxes;\n                  return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n                    while (1) switch (_context6.prev = _context6.next) {\n                      case 0:\n                        checkboxes = createUnitCheckBoxContainer.querySelectorAll('input[type=\"checkbox\"]'); // Empty list of checked units\n                        checkedUnitIds = [];\n                        checkboxes.forEach(function (checkbox) {\n                          // Ensure the checkbox is an HTMLInputElement\n                          var inputCheckbox = checkbox;\n                          // Check if the checkbox is checked and add its ID to the array\n                          if (inputCheckbox.checked) {\n                            checkedUnitIds.push(inputCheckbox.id);\n                          }\n                        });\n                        // Log all checked unit IDs\n                        _context6.next = 5;\n                        return getFilteredSuggestions(checkedUnitIds);\n                      case 5:\n                        filteredSuggestions = _context6.sent;\n                        removeCardsFromDiv(\"div.IdeaCardDiv\");\n                        createNewCards(\"IdeaCardDiv\", container, filteredSuggestions);\n                      case 8:\n                      case \"end\":\n                        return _context6.stop();\n                    }\n                  }, _callee6);\n                }));\n              });\n            }\n            if (specificElement) {\n              // Insert the specific element into the target element\n              container.insertBefore(specificElement, container.firstChild);\n            }\n          })[\"catch\"](function (error) {\n            console.error(\"Failed to load the external HTML file:\", error);\n          });\n          myIdeaCards = {};\n          _context7.next = 12;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({});\n        case 12:\n          filteredSuggestions = _context7.sent;\n          console.log(\"Filtered suggestions: \", filteredSuggestions);\n          removeCardsFromDiv(\"div.IdeaCardDiv\");\n          _context7.next = 17;\n          return createNewCards(\"IdeaCardDiv\", container, filteredSuggestions);\n        case 17:\n          addListner(myIdeaCards, container);\n          searchBar = document.getElementById(\"searchBarId\");\n          searchBar.addEventListener(\"keydown\", function (event) {\n            if (event.key === \"Enter\") {\n              performSearch(searchBar);\n            }\n          });\n          loadHospitals();\n        case 21:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7);\n  }));\n}\nfunction getFilteredSuggestions(checkedUnitIds) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var suggestions, _iterator, _step, checkedUnitId, allSuggestionsOfUnit;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          suggestions = [];\n          if (!checkedUnitIds) {\n            _context8.next = 24;\n            break;\n          }\n          _iterator = _createForOfIteratorHelper(checkedUnitIds);\n          _context8.prev = 3;\n          _iterator.s();\n        case 5:\n          if ((_step = _iterator.n()).done) {\n            _context8.next = 13;\n            break;\n          }\n          checkedUnitId = _step.value;\n          _context8.next = 9;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({\n            unitId: checkedUnitId\n          });\n        case 9:\n          allSuggestionsOfUnit = _context8.sent;\n          suggestions = suggestions.concat(allSuggestionsOfUnit);\n        case 11:\n          _context8.next = 5;\n          break;\n        case 13:\n          _context8.next = 18;\n          break;\n        case 15:\n          _context8.prev = 15;\n          _context8.t0 = _context8[\"catch\"](3);\n          _iterator.e(_context8.t0);\n        case 18:\n          _context8.prev = 18;\n          _iterator.f();\n          return _context8.finish(18);\n        case 21:\n          return _context8.abrupt(\"return\", suggestions);\n        case 24:\n          _context8.next = 26;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({});\n        case 26:\n          suggestions = _context8.sent;\n          return _context8.abrupt(\"return\", suggestions);\n        case 28:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8, null, [[3, 15, 18, 21]]);\n  }));\n}\nfunction loadHospitals() {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n    var selectHospitalHTML, allHospitals;\n    return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n      while (1) switch (_context9.prev = _context9.next) {\n        case 0:\n          selectHospitalHTML = $('#hospitalSelection'); // loads the select type from html\n          _context9.next = 3;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getHospitals)({});\n        case 3:\n          allHospitals = _context9.sent;\n          console.log(allHospitals);\n          allHospitals.forEach(function (hospital) {\n            var generatedElement = document.createRange().createContextualFragment(\"\\n    <div class=\\\"form-check\\\">\\n      <input class=\\\"form-check-input\\\" type=\\\"checkbox\\\" value=\\\"\\\" id=\\\"\" + hospital.id + \"\\\">\\n      <label class=\\\"form-check-label\\\" for=\\\"flexCheckDefault\\\">\" + hospital.name + \"</label>\\n    </div>\");\n            selectHospitalHTML.append(generatedElement);\n            console.log(\"Adding HTML for for hospital \", hospital.id);\n          });\n        case 6:\n        case \"end\":\n          return _context9.stop();\n      }\n    }, _callee9);\n  }));\n}\nfunction loadUnits(checkedHospitalIds) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var selectUnitHTML, allUnits, _iterator2, _step2, checkedHospitalId, allUnitsOfHospital;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          selectUnitHTML = $('#unitSelection'); // loads the select type from html\n          allUnits = [];\n          if (!(checkedHospitalIds.length != 0)) {\n            _context10.next = 22;\n            break;\n          }\n          _iterator2 = _createForOfIteratorHelper(checkedHospitalIds);\n          _context10.prev = 4;\n          _iterator2.s();\n        case 6:\n          if ((_step2 = _iterator2.n()).done) {\n            _context10.next = 14;\n            break;\n          }\n          checkedHospitalId = _step2.value;\n          _context10.next = 10;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getUnits)({\n            hospitalId: checkedHospitalId\n          });\n        case 10:\n          allUnitsOfHospital = _context10.sent;\n          allUnits = allUnits.concat(allUnitsOfHospital);\n        case 12:\n          _context10.next = 6;\n          break;\n        case 14:\n          _context10.next = 19;\n          break;\n        case 16:\n          _context10.prev = 16;\n          _context10.t0 = _context10[\"catch\"](4);\n          _iterator2.e(_context10.t0);\n        case 19:\n          _context10.prev = 19;\n          _iterator2.f();\n          return _context10.finish(19);\n        case 22:\n          allUnits.forEach(function (unit) {\n            var generatedElement = document.createRange().createContextualFragment(\"\\n    <div class=\\\"form-check\\\">\\n      <input class=\\\"form-check-input\\\" type=\\\"checkbox\\\" value=\\\"\\\" id=\\\"\" + unit.id + \"\\\">\\n      <label class=\\\"form-check-label\\\" for=\\\"flexCheckDefault\\\">\" + unit.name + \"</label>\\n    </div>\");\n            selectUnitHTML.append(generatedElement);\n            console.log(\"Adding HTML for for unit \", unit.id);\n          });\n        case 23:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10, null, [[4, 16, 19, 22]]);\n  }));\n}\nfunction clearContent(id) {\n  var container = document.getElementById(id);\n  while (container.firstChild) {\n    container.removeChild(container.firstChild);\n  }\n}\nfunction addListner(cardArray, element) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {\n    return _regeneratorRuntime().wrap(function _callee12$(_context12) {\n      while (1) switch (_context12.prev = _context12.next) {\n        case 0:\n          element.addEventListener(\"click\", function (event) {\n            return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {\n              var target, cardId, card, expandedDiv, _cardId, _card, upvoteDisplay;\n              return _regeneratorRuntime().wrap(function _callee11$(_context11) {\n                while (1) switch (_context11.prev = _context11.next) {\n                  case 0:\n                    target = event.target; //Adds an eventlistener for the more info of the card\n                    if (target && target.className === \"ideaCardFont moreInfoClass\") {\n                      console.log(\"fel Div\");\n                      cardId = parseInt(target.id.replace(\"ideaCardMoreInfo\", \"\"), 10);\n                      if (cardArray[cardId]) {\n                        card = cardArray[cardId];\n                        expandedDiv = document.getElementById(\"expandedContent\".concat(cardId));\n                        if (expandedDiv) {\n                          if (expandedDiv.style.display === \"none\") {\n                            card.showMoreInfo(\"expandedContent\".concat(cardId), \"ideaCardMoreInfo\".concat(cardId));\n                          } else {\n                            card.closeMoreInfo(\"expandedContent\".concat(cardId), \"ideaCardMoreInfo\".concat(cardId));\n                          }\n                        } else {\n                          console.error(\"Expanded div not found\");\n                        }\n                      }\n                    }\n                    if (!(target && target.className.baseVal.includes(\"bi-caret-up upvoteSymbol\"))) {\n                      _context11.next = 14;\n                      break;\n                    }\n                    _cardId = parseInt(target.id.replace(\"upvoteIconPic\", \"\"), 10);\n                    if (!myIdeaCards[_cardId]) {\n                      _context11.next = 12;\n                      break;\n                    }\n                    _card = myIdeaCards[_cardId];\n                    _context11.next = 8;\n                    return _card.addUpvote();\n                  case 8:\n                    upvoteDisplay = document.getElementById(\"upvoteNumber\" + _cardId);\n                    if (upvoteDisplay) {\n                      upvoteDisplay.textContent = _card.upvoteCount.toString();\n                    }\n                    _context11.next = 13;\n                    break;\n                  case 12:\n                    console.error(\"Card not found for ID: \" + _cardId);\n                  case 13:\n                    console.log(\"upvoteIcon clicked\");\n                  case 14:\n                  case \"end\":\n                    return _context11.stop();\n                }\n              }, _callee11);\n            }));\n          });\n        case 1:\n        case \"end\":\n          return _context12.stop();\n      }\n    }, _callee12);\n  }));\n}\nfunction removeCardsFromDiv(divName) {\n  //Remove current elements\n  var elementsToRemove = document.querySelectorAll(divName);\n  // Remove each element\n  elementsToRemove.forEach(function (element) {\n    element.remove();\n  });\n  myIdeaCards = {};\n}\nfunction performSearch(searchBar) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {\n    var inputValue, container, suggestions, suggestionName, _iterator3, _step3, suggestion, users, spaceIndex, firstName, lastName, _iterator4, _step4, user, _iterator5, _step5, _user;\n    return _regeneratorRuntime().wrap(function _callee13$(_context13) {\n      while (1) switch (_context13.prev = _context13.next) {\n        case 0:\n          inputValue = searchBar.value;\n          console.log(\"Search query:\", inputValue);\n          container = document.querySelector(\"#container-fluid\");\n          if (container) {\n            _context13.next = 5;\n            break;\n          }\n          return _context13.abrupt(\"return\");\n        case 5:\n          // Stop if the container isn't found\n          removeCardsFromDiv(\"div.IdeaCardDiv\");\n          if (!(inputValue != \"\")) {\n            _context13.next = 92;\n            break;\n          }\n          _context13.next = 9;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({});\n        case 9:\n          suggestions = _context13.sent;\n          suggestionName = false;\n          _iterator3 = _createForOfIteratorHelper(suggestions);\n          _context13.prev = 12;\n          _iterator3.s();\n        case 14:\n          if ((_step3 = _iterator3.n()).done) {\n            _context13.next = 24;\n            break;\n          }\n          suggestion = _step3.value;\n          if (!(suggestion.name.toLowerCase() >= inputValue.toLowerCase() && suggestion.name.toLowerCase() <= inputValue.toLowerCase() + \"~\")) {\n            _context13.next = 22;\n            break;\n          }\n          suggestionName = true;\n          _context13.next = 20;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({\n            name: suggestion.name\n          });\n        case 20:\n          filteredSuggestions = _context13.sent;\n          createNewCards(\"IdeaCardDiv\", container, filteredSuggestions);\n        case 22:\n          _context13.next = 14;\n          break;\n        case 24:\n          _context13.next = 29;\n          break;\n        case 26:\n          _context13.prev = 26;\n          _context13.t0 = _context13[\"catch\"](12);\n          _iterator3.e(_context13.t0);\n        case 29:\n          _context13.prev = 29;\n          _iterator3.f();\n          return _context13.finish(29);\n        case 32:\n          if (suggestionName) {\n            _context13.next = 90;\n            break;\n          }\n          _context13.next = 35;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getUsers)({});\n        case 35:\n          users = _context13.sent;\n          spaceIndex = inputValue.indexOf(\" \"); //If the search is for first and last name\n          if (!(spaceIndex !== -1)) {\n            _context13.next = 63;\n            break;\n          }\n          firstName = inputValue.substring(0, spaceIndex).toLowerCase();\n          lastName = inputValue.substring(spaceIndex + 1).toLowerCase();\n          _iterator4 = _createForOfIteratorHelper(users);\n          _context13.prev = 41;\n          _iterator4.s();\n        case 43:\n          if ((_step4 = _iterator4.n()).done) {\n            _context13.next = 53;\n            break;\n          }\n          user = _step4.value;\n          if (!(user.firstName.toLowerCase() >= firstName && user.firstName.toLowerCase() <= firstName + \"~\")) {\n            _context13.next = 51;\n            break;\n          }\n          if (!(user.lastName.toLowerCase() >= lastName && user.lastName.toLowerCase() <= lastName + \"~\")) {\n            _context13.next = 51;\n            break;\n          }\n          _context13.next = 49;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({\n            creatorHsaId: user.id\n          });\n        case 49:\n          filteredSuggestions = _context13.sent;\n          createNewCards(\"IdeaCardDiv\", container, filteredSuggestions);\n        case 51:\n          _context13.next = 43;\n          break;\n        case 53:\n          _context13.next = 58;\n          break;\n        case 55:\n          _context13.prev = 55;\n          _context13.t1 = _context13[\"catch\"](41);\n          _iterator4.e(_context13.t1);\n        case 58:\n          _context13.prev = 58;\n          _iterator4.f();\n          return _context13.finish(58);\n        case 61:\n          _context13.next = 90;\n          break;\n        case 63:\n          //If the search is for only first or last name\n          _iterator5 = _createForOfIteratorHelper(users);\n          _context13.prev = 64;\n          _iterator5.s();\n        case 66:\n          if ((_step5 = _iterator5.n()).done) {\n            _context13.next = 82;\n            break;\n          }\n          _user = _step5.value;\n          if (!(_user.firstName.toLowerCase() >= inputValue.toLowerCase() && _user.firstName.toLowerCase() <= inputValue.toLowerCase() + \"~\")) {\n            _context13.next = 75;\n            break;\n          }\n          _context13.next = 71;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({\n            creatorHsaId: _user.id\n          });\n        case 71:\n          filteredSuggestions = _context13.sent;\n          createNewCards(\"IdeaCardDiv\", container, filteredSuggestions);\n          _context13.next = 80;\n          break;\n        case 75:\n          if (!(_user.lastName.toLowerCase() >= inputValue.toLowerCase() && _user.lastName.toLowerCase() <= inputValue.toLowerCase() + \"~\")) {\n            _context13.next = 80;\n            break;\n          }\n          _context13.next = 78;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({\n            creatorHsaId: _user.id\n          });\n        case 78:\n          filteredSuggestions = _context13.sent;\n          createNewCards(\"IdeaCardDiv\", container, filteredSuggestions);\n        case 80:\n          _context13.next = 66;\n          break;\n        case 82:\n          _context13.next = 87;\n          break;\n        case 84:\n          _context13.prev = 84;\n          _context13.t2 = _context13[\"catch\"](64);\n          _iterator5.e(_context13.t2);\n        case 87:\n          _context13.prev = 87;\n          _iterator5.f();\n          return _context13.finish(87);\n        case 90:\n          _context13.next = 96;\n          break;\n        case 92:\n          _context13.next = 94;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({});\n        case 94:\n          filteredSuggestions = _context13.sent;\n          createNewCards(\"IdeaCardDiv\", container, filteredSuggestions);\n        case 96:\n          addListner(myIdeaCards, container);\n        case 97:\n        case \"end\":\n          return _context13.stop();\n      }\n    }, _callee13, null, [[12, 26, 29, 32], [41, 55, 58, 61], [64, 84, 87, 90]]);\n  }));\n}\n\n//# sourceURL=webpack://c3/./client/ideaBank/ideaBank.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   clearContent: () => (/* binding */ clearContent),\n/* harmony export */   loadHospitals: () => (/* binding */ loadHospitals),\n/* harmony export */   loadPage: () => (/* binding */ loadPage),\n/* harmony export */   loadUnits: () => (/* binding */ loadUnits),\n/* harmony export */   removeCardsFromDiv: () => (/* binding */ removeCardsFromDiv),\n/* harmony export */   testFunc: () => (/* binding */ testFunc)\n/* harmony export */ });\n/* harmony import */ var _Database_database_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Database/database.js */ \"./client/Database/database.js\");\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n//import {loadInitiatePage} from \"../SidebarAndHeader/pageHandler.js\";\nvar myIdeaCards = {};\n// Initialize filtered suggestions as empty array (potentially change to get all suggestions\nvar filteredSuggestions = [];\nvar IdeaCard = /*#__PURE__*/function () {\n  function IdeaCard(id, header, department, name, description, upvoteCount, suggestionID) {\n    _classCallCheck(this, IdeaCard);\n    this.header = header;\n    this.department = department;\n    this.name = name;\n    this.description = description;\n    this.upvoteCount = upvoteCount;\n    this.id = id;\n    this.suggestionID = suggestionID;\n  }\n  // <img src=\"images/upvoteIcon.png\" class =\"upvoteIcon\" alt=\"upvoteIcon\">\n  _createClass(IdeaCard, [{\n    key: \"addUpvote\",\n    value: function addUpvote() {\n      return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n        var tmp, user, suggestion;\n        return _regeneratorRuntime().wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              tmp = localStorage.getItem(\"user\");\n              if (tmp) {\n                _context.next = 4;\n                break;\n              }\n              console.log(\"there is not an user in localStorage\");\n              return _context.abrupt(\"return\");\n            case 4:\n              user = JSON.parse(tmp)[0];\n              _context.next = 7;\n              return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.upvoteSuggestion)(this.suggestionID, user.id);\n            case 7:\n              _context.next = 9;\n              return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({\n                id: this.suggestionID\n              });\n            case 9:\n              suggestion = _context.sent;\n              this.upvoteCount = suggestion[0].upvotes.length;\n              this.upvoteCount++;\n              return _context.abrupt(\"return\", suggestion[0].upvotes.length);\n            case 13:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this);\n      }));\n    }\n  }, {\n    key: \"generateHTML\",\n    value: function generateHTML() {\n      return \"<div class=\\\"totalExpandedIdeaCard\\\">\\n          <div class=\\\"ideaCard\\\">\\n              <div class=\\\"ideaCardBorder\\\">\\n                  <div class=\\\"ideaCardImage\\\">\\n                      <img src=\\\"../images/pinkFaded.png\\\" class =\\\"pinkFaded\\\" alt=\\\"pinkFaded\\\">\\n                  </div>\\n                  <div class=\\\"ideaCardMiddleText\\\">\\n                      <p id=\\\"ideaCardHeader\\\" class=\\\"ideaCardFont\\\">\".concat(this.header, \"</p>\\n                      <p id=\\\"ideaCardDepartment\\\" class=\\\"ideaCardFont\\\">\").concat(this.department, \"</p>\\n                      <p id=\\\"ideaCardName\\\" class=\\\"ideaCardFont\\\">\").concat(this.name, \"</p>\\n                      <p id=\\\"ideaCardMoreInfo\").concat(this.id, \"\\\" class=\\\"ideaCardFont moreInfoClass\\\"> > Mer information</p>\\n                  </div>\\n                  <div class=\\\"ideaCardUpvotes\\\">\\n                  <div class=\\\"upvoteDiv\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"28\\\" height=\\\"28\\\" fill=\\\"grey\\\" class=\\\"bi bi-caret-up upvoteSymbol\\\" viewBox=\\\"0 0 16 16\\\" id=\\\"upvoteIconPic\").concat(this.id, \"\\\">\\n  <path d=\\\"M3.204 11h9.592L8 5.519 3.204 11zm-.753-.659 4.796-5.48a1 1 0 0 1 1.506 0l4.796 5.48c.566.647.106 1.659-.753 1.659H3.204a1 1 0 0 1-.753-1.659z\\\"/>\\n</svg>\\n                  <div id =\\\"upvoteNumber\").concat(this.id, \"\\\" class=\\\"ideaCardFont upvoteNumber\\\" >\").concat(this.upvoteCount, \"</div>\\n\\n                  </div>\\n              </div>\\n              </div>\\n    \\n          </div>\\n          <div id=\\\"expandedContent\").concat(this.id, \"\\\" class= \\\"expandedIdeaContent\\\" style =\\\"display : none;\\\">\\n              <div class=\\\"expandedDescriptionText\\\">\\n                  <p class=\\\"ideaCardFontComments\\\" id=\\\"expandedHeader\\\">Om ideen</p>\\n                  <p class=\\\"ideaCardFont\\\" id=\\\"expandedDescription\\\">\").concat(this.description, \"</p>\\n              </div>\\n              <div class=\\\"expandedCommentAndButton id = \\\"expandedCommentAndButton\").concat(this.id, \"\\\">\\n                  <div class=\\\"expandedComment\\\">\\n                      <p  class=\\\"ideaCardFontComments\\\">Kommentarer</p>\\n                      <p  class=\\\"ideaCardFont\\\">Komment 7</p>\\n                      <p  class=\\\"ideaCardFont\\\">Komment 2</p>\\n                  </div>\\n\\n                  <div class=\\\"expandedButton\\\">\\n                      <button class=\\\"initiateProjectButton\\\" id=\\\"initiateProjectFromCard\").concat(this.suggestionID, \"\\\">Initiera f\\xF6rb\\xE4ttringsf\\xF6rslag</button>\\n                  </div>\\n              </div>\\n          </div>\\n      </div>\");\n    }\n  }, {\n    key: \"showMoreInfo\",\n    value: function showMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"flex\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"^ Stäng detaljer\";\n      }\n    }\n  }, {\n    key: \"closeMoreInfo\",\n    value: function closeMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"none\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"> Mer information\";\n      }\n    }\n  }, {\n    key: \"loadInitiatePage\",\n    value: function loadInitiatePage() {\n      alert(\"The initiate project page should now be loaded\");\n      window.location.href = '../client/projectPage/projectPageP.html';\n    }\n  }]);\n  return IdeaCard;\n}();\nfunction createNewCards(className, container, suggestions) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var _this = this;\n    var counter;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          counter = 1;\n          suggestions.forEach(function (suggestion) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n              var unit, user;\n              return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n                while (1) switch (_context2.prev = _context2.next) {\n                  case 0:\n                    _context2.next = 2;\n                    return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getObjectById)(\"unit\", suggestion.unitId);\n                  case 2:\n                    unit = _context2.sent;\n                    _context2.next = 5;\n                    return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getObjectById)(\"users\", suggestion.creatorHsaId);\n                  case 5:\n                    user = _context2.sent;\n                    console.log(suggestion);\n                    createNewIdeaCard(suggestion.name, unit.name, user.firstName + \" \" + user.lastName, suggestion.content, suggestion.upvotes.length, className, container, counter, suggestion.id);\n                    counter = counter + 1;\n                  case 9:\n                  case \"end\":\n                    return _context2.stop();\n                }\n              }, _callee2);\n            }));\n          });\n        case 2:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3);\n  }));\n}\nfunction createNewIdeaCard(header, department, name, description, upvoteCount, className, container, ID, suggestionID) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n    var card, cardHTML, div;\n    return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n      while (1) switch (_context4.prev = _context4.next) {\n        case 0:\n          card = new IdeaCard(ID, header, department, name, description, upvoteCount, suggestionID);\n          cardHTML = card.generateHTML();\n          myIdeaCards[ID] = card;\n          div = document.createElement(\"div\");\n          div.className = className; // Set the class name(s) here\n          div.innerHTML = cardHTML;\n          container.appendChild(div);\n        case 7:\n        case \"end\":\n          return _context4.stop();\n      }\n    }, _callee4);\n  }));\n}\nfunction testFunc() {\n  console.log(\"Test func works\");\n}\nfunction loadPage() {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var container, scriptElement, checkedHospitalIds, checkedUnitIds, searchBar;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          container = document.querySelector(\"#container-fluid\");\n          if (container) {\n            _context7.next = 3;\n            break;\n          }\n          return _context7.abrupt(\"return\");\n        case 3:\n          // Stop if the container isn't found\n          scriptElement = document.createElement(\"script\");\n          scriptElement.src = \"../dist/ideaBank.bundle.js\";\n          container.appendChild(scriptElement);\n          // Initialize empty lists of checked hospital and unit ids\n          checkedHospitalIds = [];\n          checkedUnitIds = [];\n          fetch(\"ideaBank/ideaBank.html\").then(function (response) {\n            return response.text();\n          }).then(function (data) {\n            // Create a temporary container element to hold the loaded content\n            var tempContainer = document.createElement(\"div\");\n            tempContainer.innerHTML = data;\n            // Select the specific element with the class you want\n            var specificElement = tempContainer.querySelector(\".filterBar\");\n            var createHospitalCheckBoxContainer = tempContainer.querySelector('#hospitalSelection');\n            var createUnitCheckBoxContainer = tempContainer.querySelector('#unitSelection');\n            if (createHospitalCheckBoxContainer) {\n              createHospitalCheckBoxContainer.addEventListener('change', function (event) {\n                return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n                  var checkboxes;\n                  return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n                    while (1) switch (_context5.prev = _context5.next) {\n                      case 0:\n                        checkboxes = createHospitalCheckBoxContainer.querySelectorAll('input[type=\"checkbox\"]'); // Empty list of checked hospitals\n                        checkedHospitalIds = [];\n                        // Array to store IDs of checked checkboxes\n                        checkboxes.forEach(function (checkbox) {\n                          // Ensure the checkbox is an HTMLInputElement\n                          var inputCheckbox = checkbox;\n                          // Check if the checkbox is checked and add its ID to the array\n                          if (inputCheckbox.checked) {\n                            checkedHospitalIds.push(inputCheckbox.id);\n                          }\n                        });\n                        // Log all checked hospital IDs\n                        console.log('Checked hospitals:', checkedHospitalIds);\n                        // Future change: Only clear the unitIds for unchecked hospitals!\n                        clearContent(\"unitSelection\");\n                        loadUnits(checkedHospitalIds);\n                      case 6:\n                      case \"end\":\n                        return _context5.stop();\n                    }\n                  }, _callee5);\n                }));\n              });\n            }\n            if (createUnitCheckBoxContainer) {\n              createUnitCheckBoxContainer.addEventListener('change', function (event) {\n                return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n                  var checkboxes;\n                  return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n                    while (1) switch (_context6.prev = _context6.next) {\n                      case 0:\n                        checkboxes = createUnitCheckBoxContainer.querySelectorAll('input[type=\"checkbox\"]'); // Empty list of checked units\n                        checkedUnitIds = [];\n                        checkboxes.forEach(function (checkbox) {\n                          // Ensure the checkbox is an HTMLInputElement\n                          var inputCheckbox = checkbox;\n                          // Check if the checkbox is checked and add its ID to the array\n                          if (inputCheckbox.checked) {\n                            checkedUnitIds.push(inputCheckbox.id);\n                          }\n                        });\n                        // Log all checked unit IDs\n                        _context6.next = 5;\n                        return getFilteredSuggestions(checkedUnitIds);\n                      case 5:\n                        filteredSuggestions = _context6.sent;\n                        removeCardsFromDiv(\"div.IdeaCardDiv\");\n                        createNewCards(\"IdeaCardDiv\", container, filteredSuggestions);\n                      case 8:\n                      case \"end\":\n                        return _context6.stop();\n                    }\n                  }, _callee6);\n                }));\n              });\n            }\n            if (specificElement) {\n              // Insert the specific element into the target element\n              container.insertBefore(specificElement, container.firstChild);\n            }\n          })[\"catch\"](function (error) {\n            console.error(\"Failed to load the external HTML file:\", error);\n          });\n          myIdeaCards = {};\n          _context7.next = 12;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({});\n        case 12:\n          filteredSuggestions = _context7.sent;\n          console.log(\"Filtered suggestions: \", filteredSuggestions);\n          removeCardsFromDiv(\"div.IdeaCardDiv\");\n          _context7.next = 17;\n          return createNewCards(\"IdeaCardDiv\", container, filteredSuggestions);\n        case 17:\n          addListner(myIdeaCards, container);\n          searchBar = document.getElementById(\"searchBarId\");\n          searchBar.addEventListener(\"keydown\", function (event) {\n            if (event.key === \"Enter\") {\n              performSearch(searchBar);\n            }\n          });\n          loadHospitals();\n        case 21:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7);\n  }));\n}\nfunction getFilteredSuggestions(checkedUnitIds) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var suggestions, _iterator, _step, checkedUnitId, allSuggestionsOfUnit;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          suggestions = [];\n          if (!checkedUnitIds) {\n            _context8.next = 24;\n            break;\n          }\n          _iterator = _createForOfIteratorHelper(checkedUnitIds);\n          _context8.prev = 3;\n          _iterator.s();\n        case 5:\n          if ((_step = _iterator.n()).done) {\n            _context8.next = 13;\n            break;\n          }\n          checkedUnitId = _step.value;\n          _context8.next = 9;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({\n            unitId: checkedUnitId\n          });\n        case 9:\n          allSuggestionsOfUnit = _context8.sent;\n          suggestions = suggestions.concat(allSuggestionsOfUnit);\n        case 11:\n          _context8.next = 5;\n          break;\n        case 13:\n          _context8.next = 18;\n          break;\n        case 15:\n          _context8.prev = 15;\n          _context8.t0 = _context8[\"catch\"](3);\n          _iterator.e(_context8.t0);\n        case 18:\n          _context8.prev = 18;\n          _iterator.f();\n          return _context8.finish(18);\n        case 21:\n          return _context8.abrupt(\"return\", suggestions);\n        case 24:\n          _context8.next = 26;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({});\n        case 26:\n          suggestions = _context8.sent;\n          return _context8.abrupt(\"return\", suggestions);\n        case 28:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8, null, [[3, 15, 18, 21]]);\n  }));\n}\nfunction loadHospitals() {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n    var selectHospitalHTML, allHospitals;\n    return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n      while (1) switch (_context9.prev = _context9.next) {\n        case 0:\n          selectHospitalHTML = $('#hospitalSelection'); // loads the select type from html\n          _context9.next = 3;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getHospitals)({});\n        case 3:\n          allHospitals = _context9.sent;\n          console.log(allHospitals);\n          allHospitals.forEach(function (hospital) {\n            var generatedElement = document.createRange().createContextualFragment(\"\\n    <div class=\\\"form-check\\\">\\n      <input class=\\\"form-check-input\\\" type=\\\"checkbox\\\" value=\\\"\\\" id=\\\"\" + hospital.id + \"\\\">\\n      <label class=\\\"form-check-label\\\" for=\\\"flexCheckDefault\\\">\" + hospital.name + \"</label>\\n    </div>\");\n            selectHospitalHTML.append(generatedElement);\n            console.log(\"Adding HTML for for hospital \", hospital.id);\n          });\n        case 6:\n        case \"end\":\n          return _context9.stop();\n      }\n    }, _callee9);\n  }));\n}\nfunction loadUnits(checkedHospitalIds) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var selectUnitHTML, allUnits, _iterator2, _step2, checkedHospitalId, allUnitsOfHospital;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          selectUnitHTML = $('#unitSelection'); // loads the select type from html\n          allUnits = [];\n          if (!(checkedHospitalIds.length != 0)) {\n            _context10.next = 22;\n            break;\n          }\n          _iterator2 = _createForOfIteratorHelper(checkedHospitalIds);\n          _context10.prev = 4;\n          _iterator2.s();\n        case 6:\n          if ((_step2 = _iterator2.n()).done) {\n            _context10.next = 14;\n            break;\n          }\n          checkedHospitalId = _step2.value;\n          _context10.next = 10;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getUnits)({\n            hospitalId: checkedHospitalId\n          });\n        case 10:\n          allUnitsOfHospital = _context10.sent;\n          allUnits = allUnits.concat(allUnitsOfHospital);\n        case 12:\n          _context10.next = 6;\n          break;\n        case 14:\n          _context10.next = 19;\n          break;\n        case 16:\n          _context10.prev = 16;\n          _context10.t0 = _context10[\"catch\"](4);\n          _iterator2.e(_context10.t0);\n        case 19:\n          _context10.prev = 19;\n          _iterator2.f();\n          return _context10.finish(19);\n        case 22:\n          allUnits.forEach(function (unit) {\n            var generatedElement = document.createRange().createContextualFragment(\"\\n    <div class=\\\"form-check\\\">\\n      <input class=\\\"form-check-input\\\" type=\\\"checkbox\\\" value=\\\"\\\" id=\\\"\" + unit.id + \"\\\">\\n      <label class=\\\"form-check-label\\\" for=\\\"flexCheckDefault\\\">\" + unit.name + \"</label>\\n    </div>\");\n            selectUnitHTML.append(generatedElement);\n            console.log(\"Adding HTML for for unit \", unit.id);\n          });\n        case 23:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10, null, [[4, 16, 19, 22]]);\n  }));\n}\nfunction clearContent(id) {\n  var container = document.getElementById(id);\n  while (container.firstChild) {\n    container.removeChild(container.firstChild);\n  }\n}\nfunction addListner(cardArray, element) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {\n    return _regeneratorRuntime().wrap(function _callee12$(_context12) {\n      while (1) switch (_context12.prev = _context12.next) {\n        case 0:\n          element.addEventListener(\"click\", function (event) {\n            return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {\n              var target, cardId, card, expandedDiv, _cardId, _card, upvoteDisplay;\n              return _regeneratorRuntime().wrap(function _callee11$(_context11) {\n                while (1) switch (_context11.prev = _context11.next) {\n                  case 0:\n                    target = event.target; //Adds an eventlistener for the more info of the card\n                    if (target && target.className === \"ideaCardFont moreInfoClass\") {\n                      console.log(\"fel Div\");\n                      cardId = parseInt(target.id.replace(\"ideaCardMoreInfo\", \"\"), 10);\n                      if (cardArray[cardId]) {\n                        card = cardArray[cardId];\n                        expandedDiv = document.getElementById(\"expandedContent\".concat(cardId));\n                        if (expandedDiv) {\n                          if (expandedDiv.style.display === \"none\") {\n                            card.showMoreInfo(\"expandedContent\".concat(cardId), \"ideaCardMoreInfo\".concat(cardId));\n                          } else {\n                            card.closeMoreInfo(\"expandedContent\".concat(cardId), \"ideaCardMoreInfo\".concat(cardId));\n                          }\n                        } else {\n                          console.error(\"Expanded div not found\");\n                        }\n                      }\n                    }\n                    if (!(target && target.className.baseVal.includes(\"bi-caret-up upvoteSymbol\"))) {\n                      _context11.next = 16;\n                      break;\n                    }\n                    _cardId = parseInt(target.id.replace(\"upvoteIconPic\", \"\"), 10);\n                    if (!myIdeaCards[_cardId]) {\n                      _context11.next = 14;\n                      break;\n                    }\n                    _card = myIdeaCards[_cardId];\n                    _context11.next = 8;\n                    return _card.addUpvote();\n                  case 8:\n                    if (target.getAttribute(\"fill\") === \"grey\") {\n                      target.setAttribute(\"fill\", \"red\"); // Replace 'red' with the color indicating an upvote\n                    } else {\n                      target.setAttribute(\"fill\", \"grey\"); // Revert back to default color\n                    }\n                    upvoteDisplay = document.getElementById(\"upvoteNumber\" + _cardId);\n                    console.log(_card.upvoteCount.toString());\n                    if (upvoteDisplay) {\n                      upvoteDisplay.textContent = _card.upvoteCount.toString();\n                    }\n                    _context11.next = 15;\n                    break;\n                  case 14:\n                    console.error(\"Card not found for ID: \" + _cardId);\n                  case 15:\n                    console.log(\"upvoteIcon clicked\");\n                  case 16:\n                  case \"end\":\n                    return _context11.stop();\n                }\n              }, _callee11);\n            }));\n          });\n        case 1:\n        case \"end\":\n          return _context12.stop();\n      }\n    }, _callee12);\n  }));\n}\nfunction removeCardsFromDiv(divName) {\n  //Remove current elements\n  var elementsToRemove = document.querySelectorAll(divName);\n  // Remove each element\n  elementsToRemove.forEach(function (element) {\n    element.remove();\n  });\n  myIdeaCards = {};\n}\nfunction performSearch(searchBar) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {\n    var inputValue, container, suggestions, suggestionName, _iterator3, _step3, suggestion, users, spaceIndex, firstName, lastName, _iterator4, _step4, user, _iterator5, _step5, _user;\n    return _regeneratorRuntime().wrap(function _callee13$(_context13) {\n      while (1) switch (_context13.prev = _context13.next) {\n        case 0:\n          inputValue = searchBar.value;\n          console.log(\"Search query:\", inputValue);\n          container = document.querySelector(\"#container-fluid\");\n          if (container) {\n            _context13.next = 5;\n            break;\n          }\n          return _context13.abrupt(\"return\");\n        case 5:\n          // Stop if the container isn't found\n          removeCardsFromDiv(\"div.IdeaCardDiv\");\n          if (!(inputValue != \"\")) {\n            _context13.next = 92;\n            break;\n          }\n          _context13.next = 9;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({});\n        case 9:\n          suggestions = _context13.sent;\n          suggestionName = false;\n          _iterator3 = _createForOfIteratorHelper(suggestions);\n          _context13.prev = 12;\n          _iterator3.s();\n        case 14:\n          if ((_step3 = _iterator3.n()).done) {\n            _context13.next = 24;\n            break;\n          }\n          suggestion = _step3.value;\n          if (!(suggestion.name.toLowerCase() >= inputValue.toLowerCase() && suggestion.name.toLowerCase() <= inputValue.toLowerCase() + \"~\")) {\n            _context13.next = 22;\n            break;\n          }\n          suggestionName = true;\n          _context13.next = 20;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({\n            name: suggestion.name\n          });\n        case 20:\n          filteredSuggestions = _context13.sent;\n          createNewCards(\"IdeaCardDiv\", container, filteredSuggestions);\n        case 22:\n          _context13.next = 14;\n          break;\n        case 24:\n          _context13.next = 29;\n          break;\n        case 26:\n          _context13.prev = 26;\n          _context13.t0 = _context13[\"catch\"](12);\n          _iterator3.e(_context13.t0);\n        case 29:\n          _context13.prev = 29;\n          _iterator3.f();\n          return _context13.finish(29);\n        case 32:\n          if (suggestionName) {\n            _context13.next = 90;\n            break;\n          }\n          _context13.next = 35;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getUsers)({});\n        case 35:\n          users = _context13.sent;\n          spaceIndex = inputValue.indexOf(\" \"); //If the search is for first and last name\n          if (!(spaceIndex !== -1)) {\n            _context13.next = 63;\n            break;\n          }\n          firstName = inputValue.substring(0, spaceIndex).toLowerCase();\n          lastName = inputValue.substring(spaceIndex + 1).toLowerCase();\n          _iterator4 = _createForOfIteratorHelper(users);\n          _context13.prev = 41;\n          _iterator4.s();\n        case 43:\n          if ((_step4 = _iterator4.n()).done) {\n            _context13.next = 53;\n            break;\n          }\n          user = _step4.value;\n          if (!(user.firstName.toLowerCase() >= firstName && user.firstName.toLowerCase() <= firstName + \"~\")) {\n            _context13.next = 51;\n            break;\n          }\n          if (!(user.lastName.toLowerCase() >= lastName && user.lastName.toLowerCase() <= lastName + \"~\")) {\n            _context13.next = 51;\n            break;\n          }\n          _context13.next = 49;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({\n            creatorHsaId: user.id\n          });\n        case 49:\n          filteredSuggestions = _context13.sent;\n          createNewCards(\"IdeaCardDiv\", container, filteredSuggestions);\n        case 51:\n          _context13.next = 43;\n          break;\n        case 53:\n          _context13.next = 58;\n          break;\n        case 55:\n          _context13.prev = 55;\n          _context13.t1 = _context13[\"catch\"](41);\n          _iterator4.e(_context13.t1);\n        case 58:\n          _context13.prev = 58;\n          _iterator4.f();\n          return _context13.finish(58);\n        case 61:\n          _context13.next = 90;\n          break;\n        case 63:\n          //If the search is for only first or last name\n          _iterator5 = _createForOfIteratorHelper(users);\n          _context13.prev = 64;\n          _iterator5.s();\n        case 66:\n          if ((_step5 = _iterator5.n()).done) {\n            _context13.next = 82;\n            break;\n          }\n          _user = _step5.value;\n          if (!(_user.firstName.toLowerCase() >= inputValue.toLowerCase() && _user.firstName.toLowerCase() <= inputValue.toLowerCase() + \"~\")) {\n            _context13.next = 75;\n            break;\n          }\n          _context13.next = 71;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({\n            creatorHsaId: _user.id\n          });\n        case 71:\n          filteredSuggestions = _context13.sent;\n          createNewCards(\"IdeaCardDiv\", container, filteredSuggestions);\n          _context13.next = 80;\n          break;\n        case 75:\n          if (!(_user.lastName.toLowerCase() >= inputValue.toLowerCase() && _user.lastName.toLowerCase() <= inputValue.toLowerCase() + \"~\")) {\n            _context13.next = 80;\n            break;\n          }\n          _context13.next = 78;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({\n            creatorHsaId: _user.id\n          });\n        case 78:\n          filteredSuggestions = _context13.sent;\n          createNewCards(\"IdeaCardDiv\", container, filteredSuggestions);\n        case 80:\n          _context13.next = 66;\n          break;\n        case 82:\n          _context13.next = 87;\n          break;\n        case 84:\n          _context13.prev = 84;\n          _context13.t2 = _context13[\"catch\"](64);\n          _iterator5.e(_context13.t2);\n        case 87:\n          _context13.prev = 87;\n          _iterator5.f();\n          return _context13.finish(87);\n        case 90:\n          _context13.next = 96;\n          break;\n        case 92:\n          _context13.next = 94;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({});\n        case 94:\n          filteredSuggestions = _context13.sent;\n          createNewCards(\"IdeaCardDiv\", container, filteredSuggestions);\n        case 96:\n          addListner(myIdeaCards, container);\n        case 97:\n        case \"end\":\n          return _context13.stop();\n      }\n    }, _callee13, null, [[12, 26, 29, 32], [41, 55, 58, 61], [64, 84, 87, 90]]);\n  }));\n}\n\n//# sourceURL=webpack://c3/./client/ideaBank/ideaBank.js?");
 
 /***/ }),
 
@@ -326,7 +326,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
   \*******************************************/
 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   loadImprovementWorkTasks: () => (/* binding */ loadImprovementWorkTasks),\n/* harmony export */   loadMemberModal: () => (/* binding */ loadMemberModal),\n/* harmony export */   loadPage: () => (/* binding */ loadPage),\n/* harmony export */   loadProjectHeader: () => (/* binding */ loadProjectHeader),\n/* harmony export */   openTaskModal: () => (/* binding */ openTaskModal)\n/* harmony export */ });\n/* harmony import */ var _Database_database_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Database/database.js */ \"./client/Database/database.js\");\n/* harmony import */ var firebase_firestore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! firebase/firestore */ \"./node_modules/firebase/firestore/dist/esm/index.esm.js\");\n/* harmony import */ var _initiateForbattringsarbete_initiateIdea_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../initiateForbattringsarbete/initiateIdea.js */ \"./client/initiateForbattringsarbete/initiateIdea.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\nfunction loadPage(projectId) {}\nfunction loadImprovementWorkTasks(projectId, stage, stageListClassName, taskListId, closeBtnId, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, saveBtnId, deleteBtnId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var _this = this;\n    var tasks, taskListElement;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          _context2.next = 2;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getTasks)({\n            improvementWorkId: projectId,\n            stage: stage\n          });\n        case 2:\n          tasks = _context2.sent;\n          taskListElement = $('#' + taskListId);\n          modalEventListeners(projectId, stage, stageListClassName, closeBtnId, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, taskListId, saveBtnId, deleteBtnId);\n          if (taskListElement) {\n            tasks.forEach(function (task) {\n              return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n                var taskElement, textSpan, checkbox;\n                return _regeneratorRuntime().wrap(function _callee$(_context) {\n                  while (1) switch (_context.prev = _context.next) {\n                    case 0:\n                      taskElement = $('<li>');\n                      textSpan = $('<span>').text(task.name);\n                      checkbox = $('<input>').attr('type', 'checkbox');\n                      if (task.completed) {\n                        checkbox.prop('checked', true);\n                      }\n                      taskElement.append(textSpan, checkbox);\n                      taskElement.addClass(stageListClassName);\n                      taskElement.on('click', function () {\n                        var startDateFormatted = formatDate(task.startDate);\n                        var endDateFormatted = formatDate(task.deadlineDate);\n                        openTaskModal(task.name, task.content, task.id, startDateFormatted, endDateFormatted, taskModalId, taskTitleId, taskContentId, taskStartDateId, taskEndDateId);\n                      });\n                      checkbox.on('click', function (event) {\n                        event.stopPropagation();\n                        if (checkbox.prop('checked')) {\n                          console.log('Checkbox is checked.');\n                          (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.updateInstance)('task', task.id, {\n                            completed: true\n                          });\n                        } else {\n                          console.log('Checkbox is unchecked.');\n                          (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.updateInstance)('task', task.id, {\n                            completed: false\n                          });\n                        }\n                      });\n                      taskListElement.append(taskElement); // Stop if the container isn't found\n                    case 9:\n                    case \"end\":\n                      return _context.stop();\n                  }\n                }, _callee);\n              }));\n            });\n          } else {\n            console.log(\"Task container not found\");\n          }\n        case 6:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2);\n  }));\n}\n//Opens modal for a task\nfunction openTaskModal(taskTitle, taskContent, taskId, taskStart, taskEnd, taskModalId, taskTitleId, taskContentId, taskStartDateId, taskEndDateId) {\n  var taskModal = document.getElementById(taskModalId);\n  var title = document.getElementById(taskTitleId);\n  var content = document.getElementById(taskContentId);\n  var startDate = document.getElementById(taskStartDateId);\n  var endDate = document.getElementById(taskEndDateId);\n  if (taskModal) {\n    taskModal.setAttribute('data-task-id', taskId);\n    if (title && content && startDate && endDate) {\n      title.value = \"\";\n      content.value = \"\";\n      startDate.value = \"\";\n      endDate.value = \"\";\n      if (taskTitle !== \"\" || taskContent !== \"\" || taskStart !== \"\" || taskEnd !== \"\") {\n        title.value = taskTitle;\n        content.value = taskContent;\n        startDate.value = taskStart;\n        endDate.value = taskEnd;\n      }\n    }\n    taskModal.style.display = 'block';\n  }\n}\n//Adds eventlistener to close modal\nfunction modalEventListeners(projectId, stage, stageListClassName, closeBtnId, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, taskListId, saveBtnId, deleteBtnId) {\n  var closeButton = document.getElementById(closeBtnId);\n  var taskModal = document.getElementById(taskModalId);\n  var saveButton = document.getElementById(saveBtnId);\n  var deleteButton = document.getElementById(deleteBtnId);\n  if (closeButton && taskModal) {\n    var closeBtnListener = closeButton.hasAttribute('data-has-event-listener');\n    if (!closeBtnListener) {\n      closeButton.setAttribute('data-has-event-listener', 'true');\n      closeButton.addEventListener('click', function () {\n        taskModal.style.display = 'none'; //Closes modal\n      });\n    }\n  }\n\n  if (saveButton && taskModal) {\n    var saveBtnListener = saveButton.hasAttribute('data-has-event-listener');\n    if (!saveBtnListener) {\n      saveButton.setAttribute('data-has-event-listener', 'true');\n      saveButton.addEventListener('click', function () {\n        createNewOrSaveTask(projectId, stage, stageListClassName, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, taskListId, closeBtnId, saveBtnId, deleteBtnId);\n        taskModal.style.display = 'none'; //Closes modal\n      });\n    }\n  }\n\n  if (deleteButton && taskModal) {\n    var deleteBtnListener = deleteButton.hasAttribute('data-has-event-listener');\n    if (!deleteBtnListener) {\n      deleteButton.setAttribute('data-has-event-listener', 'true');\n      deleteButton.addEventListener('click', function () {\n        deleteTask(projectId, stage, stageListClassName, taskModalId, taskListId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, saveBtnId, deleteBtnId, closeBtnId);\n        taskModal.style.display = 'none'; //Closes modal\n      });\n    }\n  }\n}\n\nfunction createNewOrSaveTask(projectId, stage, stageListClassName, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, taskListId, closeBtnId, saveBtnId, deleteBtnId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var modalElement, titleElement, deadlineElement, startElement, contentElement, taskId, improvementWork, deadline, startDate, listElement, _deadline, _startDate, _listElement;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          //title: string, deadline : Date, startDate: Date, stage: string, content: string\n          modalElement = document.getElementById(taskModalId);\n          titleElement = document.getElementById(taskTitleId);\n          deadlineElement = document.getElementById(taskEndDateId);\n          startElement = document.getElementById(taskStartDateId);\n          contentElement = document.getElementById(taskContentId);\n          taskId = modalElement.getAttribute('data-task-id');\n          if (!(taskId === '')) {\n            _context3.next = 13;\n            break;\n          }\n          _context3.next = 9;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getObjectById)('improvementWork', projectId);\n        case 9:\n          improvementWork = _context3.sent;\n          if (titleElement && contentElement && deadlineElement && startElement) {\n            if (titleElement.value !== \"\", deadlineElement.value !== \"\", startElement.value !== \"\", contentElement.value !== \"\") {\n              deadline = new Date(deadlineElement.value); //Date string to timestamp\n              startDate = new Date(startElement.value); //Date string to timestamp\n              (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.createTaskOnImprovementWork)(null, projectId, titleElement.value, deadline, startDate, improvementWork.currentStage, contentElement.value);\n              listElement = document.getElementById(taskListId);\n              listElement.innerHTML = \"\";\n              loadImprovementWorkTasks(projectId, stage, stageListClassName, taskListId, closeBtnId, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, saveBtnId, deleteBtnId);\n            } else {\n              console.log(\"All input fields for the task where not filled in\");\n            }\n          } else {\n            console.log(\"All input element where not found\");\n          }\n          _context3.next = 21;\n          break;\n        case 13:\n          if (!taskId) {\n            _context3.next = 21;\n            break;\n          }\n          _deadline = new Date(deadlineElement.value); //Date string to timestamp\n          _startDate = new Date(startElement.value); //Date string to timestamp\n          _context3.next = 18;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.updateInstance)('task', taskId, {\n            name: titleElement.value,\n            deadlineDate: _deadline,\n            startDate: _startDate,\n            content: contentElement.value\n          });\n        case 18:\n          _listElement = document.getElementById(taskListId);\n          _listElement.innerHTML = \"\";\n          loadImprovementWorkTasks(projectId, stage, stageListClassName, taskListId, closeBtnId, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, saveBtnId, deleteBtnId);\n          //loadPage(projectId); //Loads tasks since updated ASK for help\n        case 21:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3);\n  }));\n}\nfunction deleteTask(projectId, stage, stageListClassName, taskModalId, taskListId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, saveBtnId, deleteBtnId, closeBtnId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n    var modalElement, taskId, listElement;\n    return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n      while (1) switch (_context4.prev = _context4.next) {\n        case 0:\n          modalElement = document.getElementById(taskModalId);\n          taskId = modalElement.getAttribute('data-task-id');\n          if (!taskId) {\n            _context4.next = 8;\n            break;\n          }\n          _context4.next = 5;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.deleteInstance)('task', taskId);\n        case 5:\n          listElement = document.getElementById(taskListId);\n          listElement.innerHTML = \"\";\n          loadImprovementWorkTasks(projectId, stage, stageListClassName, taskListId, closeBtnId, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, saveBtnId, deleteBtnId);\n        case 8:\n        case \"end\":\n          return _context4.stop();\n      }\n    }, _callee4);\n  }));\n}\nfunction formatDate(timeStamp) {\n  var date = timeStamp.toDate();\n  var day = String(date.getDate()).toString();\n  var month = String(date.getMonth() + 1).toString(); // Adding 1 because months are zero-based\n  var year = String(date.getFullYear()).toString();\n  if (parseInt(month, 10) < 10 && parseInt(day, 10) > 9) {\n    return \"\".concat(year, \"-0\").concat(month, \"-\").concat(day);\n  } else if (parseInt(month, 10) > 9 && parseInt(day, 10) < 10) {\n    return \"\".concat(year, \"-\").concat(month, \"-0\").concat(day);\n  } else if (parseInt(month, 10) < 10 && parseInt(day, 10) < 10) {\n    return \"\".concat(year, \"-0\").concat(month, \"-0\").concat(day);\n  } else {\n    return \"\".concat(year, \"-\").concat(month, \"-\").concat(day);\n  }\n}\nfunction timestamptoDate(timestamp) {\n  if (timestamp instanceof firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.Timestamp) {\n    var date = timestamp.toDate();\n    return date;\n  } else {\n    console.error('Invalid timestamp type.');\n    return null;\n  }\n}\nfunction getDaysMonthYear(startDate) {\n  var currentTime = new Date();\n  if (startDate) {\n    var millisecondsDifference = currentTime.getTime() - startDate.getTime();\n    // Convert milliseconds to seconds\n    var secondsDifference = millisecondsDifference / 1000;\n    // Calculate years, months, and days\n    var years = Math.floor(secondsDifference / (365.25 * 24 * 60 * 60));\n    var remainingSeconds = secondsDifference % (365.25 * 24 * 60 * 60);\n    var months = Math.floor(remainingSeconds / (30 * 24 * 60 * 60)); // Assuming 30 days per month\n    var days = Math.floor(remainingSeconds % (30 * 24 * 60 * 60) / (24 * 60 * 60));\n    return \" \".concat(years, \" \\xE5r, \").concat(months, \" m\\xE5nader, \").concat(days, \" dagar.\");\n  } else {\n    return \"Det finns inget startdatum registrerat\";\n  }\n}\nfunction loadProjectHeader(improvementWork) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n    var _this2 = this;\n    var loadingIndicators, titleP, aAreaElement, resources, time, formatdateStarted, aUnitArray, projectLeader, members, aProjectLeader, aMembers, aUnit, aUnitElement, hospitalArray, aHospital, aHospitalElement;\n    return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n      while (1) switch (_context6.prev = _context6.next) {\n        case 0:\n          loadingIndicators = document.querySelectorAll(\".loadingIndicator\");\n          loadingIndicators.forEach(function (indicator) {\n            indicator.style.display = 'block';\n          });\n          titleP = document.getElementById(\"title\");\n          titleP.textContent = improvementWork.name;\n          aAreaElement = document.getElementById(\"pArea\");\n          aAreaElement.textContent = improvementWork.area;\n          resources = document.getElementById(\"pResources\");\n          resources.textContent = improvementWork.resources;\n          time = document.getElementById(\"pTime\");\n          formatdateStarted = timestamptoDate(improvementWork.dateStarted);\n          time.textContent = getDaysMonthYear(formatdateStarted);\n          _context6.next = 13;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getUnits)({\n            unitId: improvementWork.unitId\n          });\n        case 13:\n          aUnitArray = _context6.sent;\n          _context6.next = 16;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getImprovementWorkResponsible)(improvementWork.id);\n        case 16:\n          projectLeader = _context6.sent;\n          _context6.next = 19;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getUsersForImprovementWork)(improvementWork.id);\n        case 19:\n          members = _context6.sent;\n          aProjectLeader = document.getElementById(\"pLeader\");\n          aProjectLeader.textContent = projectLeader.firstName + \" \" + projectLeader.lastName + \" (\" + projectLeader.email + \")\";\n          aMembers = document.getElementById(\"pMembers\");\n          members.forEach(function (member) {\n            return __awaiter(_this2, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n              return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n                while (1) switch (_context5.prev = _context5.next) {\n                  case 0:\n                    aMembers.textContent = aMembers.textContent + member.firstName + \" \" + member.lastName + \", \";\n                  case 1:\n                  case \"end\":\n                    return _context5.stop();\n                }\n              }, _callee5);\n            }));\n          });\n          //stop loding current members\n          if (aUnitArray.length === 0) {\n            console.log(\"Error loading the units.\");\n          }\n          aUnit = aUnitArray[0];\n          aUnitElement = document.getElementById(\"pUnit\");\n          aUnitElement.textContent = aUnit.name;\n          _context6.next = 30;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getHospitals)({\n            hospitalId: aUnit.hospitalId\n          });\n        case 30:\n          hospitalArray = _context6.sent;\n          if (hospitalArray.length === 0) {\n            console.log(\"Error loading the hospitals.\");\n          }\n          aHospital = hospitalArray[0];\n          aHospitalElement = document.getElementById(\"pHospital\");\n          aHospitalElement.textContent = aHospital.name;\n          // Close loading indicators\n          loadingIndicators.forEach(function (indicator) {\n            indicator.style.display = 'none';\n          });\n        case 36:\n        case \"end\":\n          return _context6.stop();\n      }\n    }, _callee6);\n  }));\n}\nfunction getDivWithIdFromHTML(path, id) {\n  // Returning a Promise\n  return fetch(path).then(function (response) {\n    return response.text();\n  }).then(function (html) {\n    // Create a temporary container\n    var container = document.createElement('div');\n    container.innerHTML = html;\n    // Get the modal content from the container\n    var element = container.querySelector(id);\n    return element;\n  })[\"catch\"](function (error) {\n    console.error('Error loading modal content:', error);\n    return null;\n  });\n}\nfunction loadMemberModal() {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var modalContent, selectEmployeeChangeSection;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          _context7.next = 2;\n          return getDivWithIdFromHTML('../projectPage/addMemberModal.html', '#addMemberModal');\n        case 2:\n          modalContent = _context7.sent;\n          if (modalContent) {\n            $('#container-fluid').append(modalContent);\n            $(modalContent).modal('show');\n          }\n          /*     const selectMemberContent = await getDivWithIdFromHTML('../initiateForbattringsarbete/initiateIdea.html', '#selectEmployees');\n              if (selectMemberContent) {\n                  $('#modal-body').append(selectMemberContent);\n              } */\n          selectEmployeeChangeSection = document.querySelector('#selectEmployee');\n          if (selectEmployeeChangeSection) {\n            selectEmployeeChangeSection.addEventListener('change', _initiateForbattringsarbete_initiateIdea_js__WEBPACK_IMPORTED_MODULE_2__.assignedEmployer);\n          } else {\n            console.error(\"Error: 'changebutton' not found\");\n          }\n          (0,_initiateForbattringsarbete_initiateIdea_js__WEBPACK_IMPORTED_MODULE_2__.loadEmployees)();\n        case 7:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7);\n  }));\n}\n\n//# sourceURL=webpack://c3/./client/projectPage/projectPage.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   formatDate: () => (/* binding */ formatDate),\n/* harmony export */   loadImprovementWorkTasks: () => (/* binding */ loadImprovementWorkTasks),\n/* harmony export */   loadMemberModal: () => (/* binding */ loadMemberModal),\n/* harmony export */   loadPage: () => (/* binding */ loadPage),\n/* harmony export */   loadProjectHeader: () => (/* binding */ loadProjectHeader),\n/* harmony export */   openTaskModal: () => (/* binding */ openTaskModal)\n/* harmony export */ });\n/* harmony import */ var _Database_database_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Database/database.js */ \"./client/Database/database.js\");\n/* harmony import */ var firebase_firestore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! firebase/firestore */ \"./node_modules/firebase/firestore/dist/esm/index.esm.js\");\n/* harmony import */ var _initiateForbattringsarbete_initiateIdea_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../initiateForbattringsarbete/initiateIdea.js */ \"./client/initiateForbattringsarbete/initiateIdea.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\nfunction loadPage(projectId) {}\nfunction loadImprovementWorkTasks(projectId, stage, stageListClassName, taskListId, closeBtnId, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, saveBtnId, deleteBtnId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var _this = this;\n    var tasks, taskListElement;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          _context2.next = 2;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getTasks)({\n            improvementWorkId: projectId,\n            stage: stage\n          });\n        case 2:\n          tasks = _context2.sent;\n          taskListElement = $(\"#\" + taskListId);\n          modalEventListeners(projectId, stage, stageListClassName, closeBtnId, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, taskListId, saveBtnId, deleteBtnId);\n          if (taskListElement) {\n            tasks.forEach(function (task) {\n              return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n                var taskElement, textSpan, checkbox;\n                return _regeneratorRuntime().wrap(function _callee$(_context) {\n                  while (1) switch (_context.prev = _context.next) {\n                    case 0:\n                      taskElement = $(\"<li>\");\n                      textSpan = $(\"<span>\").text(task.name);\n                      checkbox = $(\"<input>\").attr(\"type\", \"checkbox\");\n                      if (task.completed) {\n                        checkbox.prop(\"checked\", true);\n                      }\n                      taskElement.append(textSpan, checkbox);\n                      taskElement.addClass(stageListClassName);\n                      taskElement.on(\"click\", function () {\n                        var startDateFormatted = formatDate(task.startDate);\n                        var endDateFormatted = formatDate(task.deadlineDate);\n                        openTaskModal(task.name, task.content, task.id, startDateFormatted, endDateFormatted, taskModalId, taskTitleId, taskContentId, taskStartDateId, taskEndDateId);\n                      });\n                      checkbox.on(\"click\", function (event) {\n                        event.stopPropagation();\n                        if (checkbox.prop(\"checked\")) {\n                          console.log(\"Checkbox is checked.\");\n                          (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.updateInstance)(\"task\", task.id, {\n                            completed: true\n                          });\n                        } else {\n                          console.log(\"Checkbox is unchecked.\");\n                          (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.updateInstance)(\"task\", task.id, {\n                            completed: false\n                          });\n                        }\n                      });\n                      taskListElement.append(taskElement); // Stop if the container isn't found\n                    case 9:\n                    case \"end\":\n                      return _context.stop();\n                  }\n                }, _callee);\n              }));\n            });\n          } else {\n            console.log(\"Task container not found\");\n          }\n        case 6:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2);\n  }));\n}\n//Opens modal for a task\nfunction openTaskModal(taskTitle, taskContent, taskId, taskStart, taskEnd, taskModalId, taskTitleId, taskContentId, taskStartDateId, taskEndDateId) {\n  var taskModal = document.getElementById(taskModalId);\n  var title = document.getElementById(taskTitleId);\n  var content = document.getElementById(taskContentId);\n  var startDate = document.getElementById(taskStartDateId);\n  var endDate = document.getElementById(taskEndDateId);\n  if (taskModal) {\n    taskModal.setAttribute(\"data-task-id\", taskId);\n    if (title && content && startDate && endDate) {\n      title.value = \"\";\n      content.value = \"\";\n      startDate.value = \"\";\n      endDate.value = \"\";\n      if (taskTitle !== \"\" || taskContent !== \"\" || taskStart !== \"\" || taskEnd !== \"\") {\n        title.value = taskTitle;\n        content.value = taskContent;\n        startDate.value = taskStart;\n        endDate.value = taskEnd;\n      }\n    }\n    taskModal.style.display = \"block\";\n  }\n}\n//Adds eventlistener to close modal\nfunction modalEventListeners(projectId, stage, stageListClassName, closeBtnId, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, taskListId, saveBtnId, deleteBtnId) {\n  var closeButton = document.getElementById(closeBtnId);\n  var taskModal = document.getElementById(taskModalId);\n  var saveButton = document.getElementById(saveBtnId);\n  var deleteButton = document.getElementById(deleteBtnId);\n  if (closeButton && taskModal) {\n    var closeBtnListener = closeButton.hasAttribute(\"data-has-event-listener\");\n    if (!closeBtnListener) {\n      closeButton.setAttribute(\"data-has-event-listener\", \"true\");\n      closeButton.addEventListener(\"click\", function () {\n        taskModal.style.display = \"none\"; //Closes modal\n      });\n    }\n  }\n\n  if (saveButton && taskModal) {\n    var saveBtnListener = saveButton.hasAttribute(\"data-has-event-listener\");\n    if (!saveBtnListener) {\n      saveButton.setAttribute(\"data-has-event-listener\", \"true\");\n      saveButton.addEventListener(\"click\", function () {\n        createNewOrSaveTask(projectId, stage, stageListClassName, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, taskListId, closeBtnId, saveBtnId, deleteBtnId);\n        taskModal.style.display = \"none\"; //Closes modal\n      });\n    }\n  }\n\n  if (deleteButton && taskModal) {\n    var deleteBtnListener = deleteButton.hasAttribute(\"data-has-event-listener\");\n    if (!deleteBtnListener) {\n      deleteButton.setAttribute(\"data-has-event-listener\", \"true\");\n      deleteButton.addEventListener(\"click\", function () {\n        deleteTask(projectId, stage, stageListClassName, taskModalId, taskListId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, saveBtnId, deleteBtnId, closeBtnId);\n        taskModal.style.display = \"none\"; //Closes modal\n      });\n    }\n  }\n}\n\nfunction createNewOrSaveTask(projectId, stage, stageListClassName, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, taskListId, closeBtnId, saveBtnId, deleteBtnId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var modalElement, titleElement, deadlineElement, startElement, contentElement, taskId, improvementWork, deadline, startDate, listElement, _deadline, _startDate, _listElement;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          //title: string, deadline : Date, startDate: Date, stage: string, content: string\n          modalElement = document.getElementById(taskModalId);\n          titleElement = document.getElementById(taskTitleId);\n          deadlineElement = document.getElementById(taskEndDateId);\n          startElement = document.getElementById(taskStartDateId);\n          contentElement = document.getElementById(taskContentId);\n          taskId = modalElement.getAttribute(\"data-task-id\");\n          if (!(taskId === \"\")) {\n            _context3.next = 13;\n            break;\n          }\n          _context3.next = 9;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getObjectById)(\"improvementWork\", projectId);\n        case 9:\n          improvementWork = _context3.sent;\n          if (titleElement && contentElement && deadlineElement && startElement) {\n            if (titleElement.value !== \"\", deadlineElement.value !== \"\", startElement.value !== \"\", contentElement.value !== \"\") {\n              deadline = new Date(deadlineElement.value); //Date string to timestamp\n              startDate = new Date(startElement.value); //Date string to timestamp\n              (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.createTaskOnImprovementWork)(null, projectId, titleElement.value, deadline, startDate, improvementWork.currentStage, contentElement.value);\n              listElement = document.getElementById(taskListId);\n              listElement.innerHTML = \"\";\n              loadImprovementWorkTasks(projectId, stage, stageListClassName, taskListId, closeBtnId, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, saveBtnId, deleteBtnId);\n            } else {\n              console.log(\"All input fields for the task where not filled in\");\n            }\n          } else {\n            console.log(\"All input element where not found\");\n          }\n          _context3.next = 21;\n          break;\n        case 13:\n          if (!taskId) {\n            _context3.next = 21;\n            break;\n          }\n          _deadline = new Date(deadlineElement.value); //Date string to timestamp\n          _startDate = new Date(startElement.value); //Date string to timestamp\n          _context3.next = 18;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.updateInstance)(\"task\", taskId, {\n            name: titleElement.value,\n            deadlineDate: _deadline,\n            startDate: _startDate,\n            content: contentElement.value\n          });\n        case 18:\n          _listElement = document.getElementById(taskListId);\n          _listElement.innerHTML = \"\";\n          loadImprovementWorkTasks(projectId, stage, stageListClassName, taskListId, closeBtnId, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, saveBtnId, deleteBtnId);\n          //loadPage(projectId); //Loads tasks since updated ASK for help\n        case 21:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3);\n  }));\n}\nfunction deleteTask(projectId, stage, stageListClassName, taskModalId, taskListId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, saveBtnId, deleteBtnId, closeBtnId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n    var modalElement, taskId, listElement;\n    return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n      while (1) switch (_context4.prev = _context4.next) {\n        case 0:\n          modalElement = document.getElementById(taskModalId);\n          taskId = modalElement.getAttribute(\"data-task-id\");\n          if (!taskId) {\n            _context4.next = 8;\n            break;\n          }\n          _context4.next = 5;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.deleteInstance)(\"task\", taskId);\n        case 5:\n          listElement = document.getElementById(taskListId);\n          listElement.innerHTML = \"\";\n          loadImprovementWorkTasks(projectId, stage, stageListClassName, taskListId, closeBtnId, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, saveBtnId, deleteBtnId);\n        case 8:\n        case \"end\":\n          return _context4.stop();\n      }\n    }, _callee4);\n  }));\n}\nfunction formatDate(timeStamp) {\n  var date = timeStamp.toDate();\n  var day = String(date.getDate()).toString();\n  var month = String(date.getMonth() + 1).toString(); // Adding 1 because months are zero-based\n  var year = String(date.getFullYear()).toString();\n  if (parseInt(month, 10) < 10 && parseInt(day, 10) > 9) {\n    return \"\".concat(year, \"-0\").concat(month, \"-\").concat(day);\n  } else if (parseInt(month, 10) > 9 && parseInt(day, 10) < 10) {\n    return \"\".concat(year, \"-\").concat(month, \"-0\").concat(day);\n  } else if (parseInt(month, 10) < 10 && parseInt(day, 10) < 10) {\n    return \"\".concat(year, \"-0\").concat(month, \"-0\").concat(day);\n  } else {\n    return \"\".concat(year, \"-\").concat(month, \"-\").concat(day);\n  }\n}\nfunction timestamptoDate(timestamp) {\n  if (timestamp instanceof firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.Timestamp) {\n    var date = timestamp.toDate();\n    return date;\n  } else {\n    console.error(\"Invalid timestamp type.\");\n    return null;\n  }\n}\nfunction getDaysMonthYear(startDate) {\n  var currentTime = new Date();\n  if (startDate) {\n    var millisecondsDifference = currentTime.getTime() - startDate.getTime();\n    // Convert milliseconds to seconds\n    var secondsDifference = millisecondsDifference / 1000;\n    // Calculate years, months, and days\n    var years = Math.floor(secondsDifference / (365.25 * 24 * 60 * 60));\n    var remainingSeconds = secondsDifference % (365.25 * 24 * 60 * 60);\n    var months = Math.floor(remainingSeconds / (30 * 24 * 60 * 60)); // Assuming 30 days per month\n    var days = Math.floor(remainingSeconds % (30 * 24 * 60 * 60) / (24 * 60 * 60));\n    return \" \".concat(years, \" \\xE5r, \").concat(months, \" m\\xE5nader, \").concat(days, \" dagar.\");\n  } else {\n    return \"Det finns inget startdatum registrerat\";\n  }\n}\nfunction loadProjectHeader(improvementWork) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n    var _this2 = this;\n    var loadingIndicators, titleP, aAreaElement, resources, time, formatdateStarted, aUnitArray, projectLeader, members, aProjectLeader, aMembers, aUnit, aUnitElement, hospitalArray, aHospital, aHospitalElement;\n    return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n      while (1) switch (_context6.prev = _context6.next) {\n        case 0:\n          // Show loading indicators\n          loadingIndicators = document.querySelectorAll(\".loadingIndicator\");\n          loadingIndicators.forEach(function (indicator) {\n            indicator.style.display = \"block\";\n          });\n          titleP = document.getElementById(\"title\");\n          titleP.textContent = improvementWork.name;\n          aAreaElement = document.getElementById(\"pArea\");\n          aAreaElement.textContent = improvementWork.area;\n          resources = document.getElementById(\"pResources\");\n          resources.textContent = improvementWork.resources;\n          time = document.getElementById(\"pTime\");\n          formatdateStarted = timestamptoDate(improvementWork.dateStarted);\n          time.textContent = getDaysMonthYear(formatdateStarted);\n          _context6.next = 13;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getUnits)({\n            unitId: improvementWork.unitId\n          });\n        case 13:\n          aUnitArray = _context6.sent;\n          _context6.next = 16;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getImprovementWorkResponsible)(improvementWork.id);\n        case 16:\n          projectLeader = _context6.sent;\n          _context6.next = 19;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getUsersForImprovementWork)(improvementWork.id);\n        case 19:\n          members = _context6.sent;\n          aProjectLeader = document.getElementById(\"pLeader\");\n          aProjectLeader.textContent = projectLeader.firstName + \" \" + projectLeader.lastName + \" (\" + projectLeader.email + \")\";\n          aMembers = document.getElementById(\"pMembers\");\n          members.forEach(function (member) {\n            return __awaiter(_this2, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n              return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n                while (1) switch (_context5.prev = _context5.next) {\n                  case 0:\n                    aMembers.textContent = aMembers.textContent + member.firstName + \" \" + member.lastName + \", \";\n                  case 1:\n                  case \"end\":\n                    return _context5.stop();\n                }\n              }, _callee5);\n            }));\n          });\n          //stop loding current members\n          if (aUnitArray.length === 0) {\n            console.log(\"Error loading the units.\");\n          }\n          aUnit = aUnitArray[0];\n          aUnitElement = document.getElementById(\"pUnit\");\n          aUnitElement.textContent = aUnit.name;\n          _context6.next = 30;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getHospitals)({\n            hospitalId: aUnit.hospitalId\n          });\n        case 30:\n          hospitalArray = _context6.sent;\n          if (hospitalArray.length === 0) {\n            console.log(\"Error loading the hospitals.\");\n          }\n          aHospital = hospitalArray[0];\n          aHospitalElement = document.getElementById(\"pHospital\");\n          aHospitalElement.textContent = aHospital.name;\n          // Close loading indicators\n          loadingIndicators.forEach(function (indicator) {\n            indicator.style.display = \"none\";\n          });\n        case 36:\n        case \"end\":\n          return _context6.stop();\n      }\n    }, _callee6);\n  }));\n}\nfunction getDivWithIdFromHTML(path, id) {\n  // Returning a Promise\n  return fetch(path).then(function (response) {\n    return response.text();\n  }).then(function (html) {\n    // Create a temporary container\n    var container = document.createElement(\"div\");\n    container.innerHTML = html;\n    // Get the modal content from the container\n    var element = container.querySelector(id);\n    return element;\n  })[\"catch\"](function (error) {\n    console.error(\"Error loading modal content:\", error);\n    return null;\n  });\n}\nfunction loadMemberModal() {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var modalContent, selectEmployeeChangeSection;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          _context7.next = 2;\n          return getDivWithIdFromHTML(\"../projectPage/addMemberModal.html\", \"#addMemberModal\");\n        case 2:\n          modalContent = _context7.sent;\n          if (modalContent) {\n            $(\"#container-fluid\").append(modalContent);\n            $(modalContent).modal(\"show\");\n          }\n          /*     const selectMemberContent = await getDivWithIdFromHTML('../initiateForbattringsarbete/initiateIdea.html', '#selectEmployees');\n            if (selectMemberContent) {\n                $('#modal-body').append(selectMemberContent);\n            } */\n          selectEmployeeChangeSection = document.querySelector(\"#selectEmployee\");\n          if (selectEmployeeChangeSection) {\n            selectEmployeeChangeSection.addEventListener(\"change\", _initiateForbattringsarbete_initiateIdea_js__WEBPACK_IMPORTED_MODULE_2__.assignedEmployer);\n          } else {\n            console.error(\"Error: 'changebutton' not found\");\n          }\n          (0,_initiateForbattringsarbete_initiateIdea_js__WEBPACK_IMPORTED_MODULE_2__.loadEmployees)();\n        case 7:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7);\n  }));\n}\n\n//# sourceURL=webpack://c3/./client/projectPage/projectPage.js?");
 
 /***/ }),
 
diff --git a/client/dist/makeSuggestion.bundle.js b/client/dist/makeSuggestion.bundle.js
index e7fe0b62066f34f43ac478f0f95d5c375ff25ae6..0c473f9c52c120dc1a3efed22ea4321b2dda96d1 100644
--- a/client/dist/makeSuggestion.bundle.js
+++ b/client/dist/makeSuggestion.bundle.js
@@ -96,7 +96,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
   \*******************************************/
 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   login: () => (/* binding */ login),\n/* harmony export */   logout: () => (/* binding */ logout),\n/* harmony export */   register: () => (/* binding */ register)\n/* harmony export */ });\n/* harmony import */ var _database_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./database.js */ \"./client/Database/database.js\");\n/* harmony import */ var firebase_auth__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! firebase/auth */ \"./node_modules/firebase/auth/dist/esm/index.esm.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n///////////////////////////////////login functions/////////////////////////////////////////////////////////////////////\n//Log ins the user\nfunction login(email, password) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var _this = this;\n    var returnValue;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          returnValue = false;\n          _context2.next = 3;\n          return (0,firebase_auth__WEBPACK_IMPORTED_MODULE_1__.signInWithEmailAndPassword)(_database_js__WEBPACK_IMPORTED_MODULE_0__.auth, email, password).then(function (userCredential) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n              var user;\n              return _regeneratorRuntime().wrap(function _callee$(_context) {\n                while (1) switch (_context.prev = _context.next) {\n                  case 0:\n                    _context.next = 2;\n                    return (0,_database_js__WEBPACK_IMPORTED_MODULE_0__.getUsers)({\n                      uid: userCredential.user.uid\n                    });\n                  case 2:\n                    user = _context.sent;\n                    localStorage.setItem(\"user\", JSON.stringify(user));\n                    returnValue = true;\n                  case 5:\n                  case \"end\":\n                    return _context.stop();\n                }\n              }, _callee);\n            }));\n          })[\"catch\"](function (error) {\n            console.log(error);\n            returnValue = false;\n          });\n        case 3:\n          return _context2.abrupt(\"return\", returnValue);\n        case 4:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2);\n  }));\n}\n//Redirects to the login in screen and log outs the user\nfunction logout() {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          (0,firebase_auth__WEBPACK_IMPORTED_MODULE_1__.signOut)(_database_js__WEBPACK_IMPORTED_MODULE_0__.auth);\n          localStorage.removeItem(\"user\");\n        case 2:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3);\n  }));\n}\n//Registers and log ins a new user\nfunction register(hsaId, hospitalName, unitName, role, firstName, lastName, email, password, isManager) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n    var _this2 = this;\n    var hospital, unit, uid;\n    return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n      while (1) switch (_context5.prev = _context5.next) {\n        case 0:\n          _context5.next = 2;\n          return (0,_database_js__WEBPACK_IMPORTED_MODULE_0__.getHospitals)({\n            hospitalName: hospitalName\n          });\n        case 2:\n          hospital = _context5.sent;\n          if (!(hospital.length != 1)) {\n            _context5.next = 6;\n            break;\n          }\n          console.log(\"hospital does not exist\");\n          return _context5.abrupt(\"return\", false);\n        case 6:\n          _context5.next = 8;\n          return (0,_database_js__WEBPACK_IMPORTED_MODULE_0__.getUnits)({\n            name: unitName,\n            hospitalId: hospital[0].id,\n            ascendingUnitNames: false\n          });\n        case 8:\n          unit = _context5.sent;\n          if (!(unit.length != 1)) {\n            _context5.next = 12;\n            break;\n          }\n          console.log(\"that unit does not exist for this hospital\");\n          return _context5.abrupt(\"return\", false);\n        case 12:\n          uid = \"\";\n          _context5.next = 15;\n          return (0,firebase_auth__WEBPACK_IMPORTED_MODULE_1__.createUserWithEmailAndPassword)(_database_js__WEBPACK_IMPORTED_MODULE_0__.auth, email, password).then(function (userCredential) {\n            return __awaiter(_this2, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n              return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n                while (1) switch (_context4.prev = _context4.next) {\n                  case 0:\n                    uid = userCredential.user.uid;\n                  case 1:\n                  case \"end\":\n                    return _context4.stop();\n                }\n              }, _callee4);\n            }));\n          })[\"catch\"](function (error) {\n            var errorMessage = error.message;\n            console.log(errorMessage);\n            return false;\n          });\n        case 15:\n          (0,_database_js__WEBPACK_IMPORTED_MODULE_0__.createUser)(hsaId, unit[0].id, firstName, lastName, email, isManager, \"Sjuksöterska\", uid);\n          return _context5.abrupt(\"return\", login(email, password));\n        case 17:\n        case \"end\":\n          return _context5.stop();\n      }\n    }, _callee5);\n  }));\n}\n\n\n//# sourceURL=webpack://c3/./client/Database/authentication.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   login: () => (/* binding */ login),\n/* harmony export */   logout: () => (/* binding */ logout),\n/* harmony export */   register: () => (/* binding */ register)\n/* harmony export */ });\n/* harmony import */ var _database_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./database.js */ \"./client/Database/database.js\");\n/* harmony import */ var firebase_auth__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! firebase/auth */ \"./node_modules/firebase/auth/dist/esm/index.esm.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n///////////////////////////////////login functions/////////////////////////////////////////////////////////////////////\n//Log ins the user\nfunction login(email, password) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var _this = this;\n    var returnValue;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          returnValue = false;\n          _context2.next = 3;\n          return (0,firebase_auth__WEBPACK_IMPORTED_MODULE_1__.signInWithEmailAndPassword)(_database_js__WEBPACK_IMPORTED_MODULE_0__.auth, email, password).then(function (userCredential) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n              var user;\n              return _regeneratorRuntime().wrap(function _callee$(_context) {\n                while (1) switch (_context.prev = _context.next) {\n                  case 0:\n                    _context.next = 2;\n                    return (0,_database_js__WEBPACK_IMPORTED_MODULE_0__.getUsers)({\n                      uid: userCredential.user.uid\n                    });\n                  case 2:\n                    user = _context.sent;\n                    localStorage.setItem(\"user\", JSON.stringify(user));\n                    returnValue = true;\n                  case 5:\n                  case \"end\":\n                    return _context.stop();\n                }\n              }, _callee);\n            }));\n          })[\"catch\"](function (error) {\n            console.log(error);\n            alert(\"Felaktiga inloggnings-uppgifter\");\n            returnValue = false;\n          });\n        case 3:\n          return _context2.abrupt(\"return\", returnValue);\n        case 4:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2);\n  }));\n}\n//Redirects to the login in screen and log outs the user\nfunction logout() {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          (0,firebase_auth__WEBPACK_IMPORTED_MODULE_1__.signOut)(_database_js__WEBPACK_IMPORTED_MODULE_0__.auth);\n          localStorage.removeItem(\"user\");\n        case 2:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3);\n  }));\n}\n//Registers and log ins a new user\nfunction register(hsaId, hospitalName, unitName, role, firstName, lastName, email, password, isManager) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n    var _this2 = this;\n    var hospital, unit, uid;\n    return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n      while (1) switch (_context5.prev = _context5.next) {\n        case 0:\n          _context5.next = 2;\n          return (0,_database_js__WEBPACK_IMPORTED_MODULE_0__.getHospitals)({\n            hospitalName: hospitalName\n          });\n        case 2:\n          hospital = _context5.sent;\n          if (!(hospital.length != 1)) {\n            _context5.next = 6;\n            break;\n          }\n          console.log(\"hospital does not exist\");\n          return _context5.abrupt(\"return\", false);\n        case 6:\n          _context5.next = 8;\n          return (0,_database_js__WEBPACK_IMPORTED_MODULE_0__.getUnits)({\n            name: unitName,\n            hospitalId: hospital[0].id,\n            ascendingUnitNames: false\n          });\n        case 8:\n          unit = _context5.sent;\n          if (!(unit.length != 1)) {\n            _context5.next = 12;\n            break;\n          }\n          console.log(\"that unit does not exist for this hospital\");\n          return _context5.abrupt(\"return\", false);\n        case 12:\n          uid = \"\";\n          _context5.next = 15;\n          return (0,firebase_auth__WEBPACK_IMPORTED_MODULE_1__.createUserWithEmailAndPassword)(_database_js__WEBPACK_IMPORTED_MODULE_0__.auth, email, password).then(function (userCredential) {\n            return __awaiter(_this2, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n              return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n                while (1) switch (_context4.prev = _context4.next) {\n                  case 0:\n                    uid = userCredential.user.uid;\n                  case 1:\n                  case \"end\":\n                    return _context4.stop();\n                }\n              }, _callee4);\n            }));\n          })[\"catch\"](function (error) {\n            var errorMessage = error.message;\n            console.log(errorMessage);\n            return false;\n          });\n        case 15:\n          (0,_database_js__WEBPACK_IMPORTED_MODULE_0__.createUser)(hsaId, unit[0].id, firstName, lastName, email, isManager, \"Sjuksöterska\", uid);\n          return _context5.abrupt(\"return\", login(email, password));\n        case 17:\n        case \"end\":\n          return _context5.stop();\n      }\n    }, _callee5);\n  }));\n}\n\n\n//# sourceURL=webpack://c3/./client/Database/authentication.js?");
 
 /***/ }),
 
@@ -106,7 +106,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
   \*************************************/
 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   addDocumentToImprovementWork: () => (/* binding */ addDocumentToImprovementWork),\n/* harmony export */   addMemberToImprovementWork: () => (/* binding */ addMemberToImprovementWork),\n/* harmony export */   addMemberToTask: () => (/* binding */ addMemberToTask),\n/* harmony export */   addNoteToUser: () => (/* binding */ addNoteToUser),\n/* harmony export */   auth: () => (/* binding */ auth),\n/* harmony export */   changePatientRiskLevel: () => (/* binding */ changePatientRiskLevel),\n/* harmony export */   createComment: () => (/* binding */ createComment),\n/* harmony export */   createHospital: () => (/* binding */ createHospital),\n/* harmony export */   createImprovementWork: () => (/* binding */ createImprovementWork),\n/* harmony export */   createSuggestion: () => (/* binding */ createSuggestion),\n/* harmony export */   createTaskOnImprovementWork: () => (/* binding */ createTaskOnImprovementWork),\n/* harmony export */   createUnit: () => (/* binding */ createUnit),\n/* harmony export */   createUser: () => (/* binding */ createUser),\n/* harmony export */   createdDocumentInKnowledgeBank: () => (/* binding */ createdDocumentInKnowledgeBank),\n/* harmony export */   db: () => (/* binding */ db),\n/* harmony export */   deleteAllDocumentsInCollection: () => (/* binding */ deleteAllDocumentsInCollection),\n/* harmony export */   deleteInstance: () => (/* binding */ deleteInstance),\n/* harmony export */   deleteSuggestion: () => (/* binding */ deleteSuggestion),\n/* harmony export */   finalizeImprovementWork: () => (/* binding */ finalizeImprovementWork),\n/* harmony export */   getComments: () => (/* binding */ getComments),\n/* harmony export */   getDocumentsByImprovementWork: () => (/* binding */ getDocumentsByImprovementWork),\n/* harmony export */   getFilteredImprovementWorks: () => (/* binding */ getFilteredImprovementWorks),\n/* harmony export */   getHospitals: () => (/* binding */ getHospitals),\n/* harmony export */   getImprovementWorkOwner: () => (/* binding */ getImprovementWorkOwner),\n/* harmony export */   getImprovementWorkResponsible: () => (/* binding */ getImprovementWorkResponsible),\n/* harmony export */   getImprovementWorks: () => (/* binding */ getImprovementWorks),\n/* harmony export */   getImprovementWorksForUser: () => (/* binding */ getImprovementWorksForUser),\n/* harmony export */   getObject: () => (/* binding */ getObject),\n/* harmony export */   getObjectById: () => (/* binding */ getObjectById),\n/* harmony export */   getSuggestions: () => (/* binding */ getSuggestions),\n/* harmony export */   getTasks: () => (/* binding */ getTasks),\n/* harmony export */   getUnits: () => (/* binding */ getUnits),\n/* harmony export */   getUsers: () => (/* binding */ getUsers),\n/* harmony export */   getUsersForImprovementWork: () => (/* binding */ getUsersForImprovementWork),\n/* harmony export */   startOrPauseImprovementWork: () => (/* binding */ startOrPauseImprovementWork),\n/* harmony export */   updateInstance: () => (/* binding */ updateInstance),\n/* harmony export */   upvoteComment: () => (/* binding */ upvoteComment),\n/* harmony export */   upvoteSuggestion: () => (/* binding */ upvoteSuggestion)\n/* harmony export */ });\n/* harmony import */ var firebase_app__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! firebase/app */ \"./node_modules/firebase/app/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_firestore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! firebase/firestore */ \"./node_modules/firebase/firestore/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_auth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! firebase/auth */ \"./node_modules/firebase/auth/dist/esm/index.esm.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n// C3 solutions databasen - ska användas för P&S\nvar firebaseConfig = {\n  apiKey: \"AIzaSyB7n9YIDCmeyzeZzteFnXqOUBijzEO59ls\",\n  authDomain: \"backup-277c3.firebaseapp.com\",\n  projectId: \"backup-277c3\",\n  storageBucket: \"backup-277c3.appspot.com\",\n  messagingSenderId: \"296015398098\",\n  appId: \"1:296015398098:web:71e1d1ec2b0c370e5a590b\",\n  measurementId: \"G-E933CXWWCG\"\n};\n//Backup databas - ska användas av R&D\n/*  const firebaseConfig = {\n   apiKey: \"AIzaSyAMfD8V0belL6GxbuoehL__6YTFZH4pyoc\",\n   authDomain: \"company3-backup.firebaseapp.com\",\n   projectId: \"company3-backup\",\n   storageBucket: \"company3-backup.appspot.com\",\n   messagingSenderId: \"820650717800\",\n   appId: \"1:820650717800:web:7557c7734ed59d3f7281dd\"\n };\n */\n//Bens egna reserv #nödfall\n/* const firebaseConfig = {\n  apiKey: \"AIzaSyBIsZq_yOsJljp1woIxndJO1GkW6soh-g4\",\n  authDomain: \"company3-456bb.firebaseapp.com\",\n  projectId: \"company3-456bb\",\n  storageBucket: \"company3-456bb.appspot.com\",\n  messagingSenderId: \"310033686522\",\n  appId: \"1:310033686522:web:63198bb0db679c98ee4e43\",\n  measurementId: \"G-PFLDQY00DB\"\n}; */\nvar app = (0,firebase_app__WEBPACK_IMPORTED_MODULE_0__.initializeApp)(firebaseConfig);\nvar auth = (0,firebase_auth__WEBPACK_IMPORTED_MODULE_2__.getAuth)();\nvar db = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getFirestore)(app);\nvar userCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\nvar unitCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\nvar improvementWorkCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\nvar taskCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\nvar hospitalCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\nvar suggestionCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\nvar knowledgeDocumentCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"knowledgeDocument\");\nvar userImprovementWorkCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"userImprovementWork\");\nvar userTaskCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"userTask\");\n////////////////////////////////////////Setters///////////////////////////////////////////////////////////////////\n// Function to create user a new user in database\n// takes in userId, unitId, firstname, lastname, email and password as string\n// throws error if transaction failed\nfunction createUser(hsaId, unitId, firstName, lastName, email, manager, role, uid) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n    var userRef;\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          _context.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, hsaId);\n          _context.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(userRef, {\n            id: userRef.id,\n            uid: uid,\n            unitId: unitId,\n            firstName: firstName,\n            lastName: lastName,\n            email: email,\n            role: role,\n            // TODO Replace with userImprovementWork collection\n            improvementWorks: [],\n            tasks: [],\n            manager: manager\n          });\n        case 4:\n          _context.next = 9;\n          break;\n        case 6:\n          _context.prev = 6;\n          _context.t0 = _context[\"catch\"](0);\n          console.log(_context.t0);\n        case 9:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee, null, [[0, 6]]);\n  }));\n}\nfunction createImprovementWork(id, name, currentStage, content,\n// Är detta description bör detta förtydligas. JA\nunitId, purpose,\n//Bör tas bort motsvaras av p2- mål med projektet\npatientRiskLevel, area, projectLeader,\n//Adding projectleader & members to the project\nmembers) {\n  var resources = arguments.length > 10 && arguments[10] !== undefined ? arguments[10] : \"Inte definerat ännu\";\n  var p1 = arguments.length > 11 && arguments[11] !== undefined ? arguments[11] : \"\";\n  var p2 = arguments.length > 12 && arguments[12] !== undefined ? arguments[12] : \"\";\n  var p3 = arguments.length > 13 && arguments[13] !== undefined ? arguments[13] : \"\";\n  var p4 = arguments.length > 14 && arguments[14] !== undefined ? arguments[14] : \"\";\n  var p5 = arguments.length > 15 && arguments[15] !== undefined ? arguments[15] : \"\";\n  var p6 = arguments.length > 16 && arguments[16] !== undefined ? arguments[16] : \"\";\n  var p7 = arguments.length > 17 && arguments[17] !== undefined ? arguments[17] : \"\";\n  var g1 = arguments.length > 18 && arguments[18] !== undefined ? arguments[18] : \"\";\n  var g2 = arguments.length > 19 && arguments[19] !== undefined ? arguments[19] : \"\";\n  var g3 = arguments.length > 20 && arguments[20] !== undefined ? arguments[20] : \"\";\n  var g4 = arguments.length > 21 && arguments[21] !== undefined ? arguments[21] : \"\";\n  var g5 = arguments.length > 22 && arguments[22] !== undefined ? arguments[22] : \"\";\n  var s1 = arguments.length > 23 && arguments[23] !== undefined ? arguments[23] : \"\";\n  var s2 = arguments.length > 24 && arguments[24] !== undefined ? arguments[24] : \"\";\n  var s3 = arguments.length > 25 && arguments[25] !== undefined ? arguments[25] : \"\";\n  var a1 = arguments.length > 26 && arguments[26] !== undefined ? arguments[26] : \"\";\n  var a2 = arguments.length > 27 && arguments[27] !== undefined ? arguments[27] : \"\";\n  var a3 = arguments.length > 28 && arguments[28] !== undefined ? arguments[28] : \"\";\n  var a4 = arguments.length > 29 && arguments[29] !== undefined ? arguments[29] : \"\";\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var improvementWorkData, improvementWorkRef, _improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          _context2.prev = 0;\n          improvementWorkData = {\n            name: name,\n            lowerCaseName: name.toLowerCase(),\n            currentStage: currentStage,\n            content: content,\n            purpose: purpose,\n            dateStarted: new Date(),\n            unitId: unitId,\n            completed: false,\n            ongoing: false,\n            tasks: [],\n            patientRiskLevel: patientRiskLevel,\n            area: area,\n            p1: p1,\n            p2: p2,\n            p3: p3,\n            p4: p4,\n            p5: p5,\n            p6: p6,\n            p7: p7,\n            g1: g1,\n            g2: g2,\n            g3: g3,\n            g4: g4,\n            g5: g5,\n            s1: s1,\n            s2: s2,\n            s3: s3,\n            a1: a1,\n            a2: a2,\n            a3: a3,\n            a4: a4,\n            resources: resources\n          };\n          if (!id) {\n            _context2.next = 8;\n            break;\n          }\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, id);\n          _context2.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(improvementWorkRef, Object.assign({\n            id: improvementWorkRef.id\n          }, improvementWorkData));\n        case 6:\n          _context2.next = 12;\n          break;\n        case 8:\n          _improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection);\n          _context2.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(_improvementWorkRef, improvementWorkData);\n        case 11:\n          id = _improvementWorkRef.id;\n        case 12:\n          //adding the projectleader and users to the project\n          addMemberToImprovementWork(projectLeader, id, false, true);\n          members.forEach(function (member) {\n            addMemberToImprovementWork(member, id, false, false);\n          });\n          _context2.next = 20;\n          break;\n        case 16:\n          _context2.prev = 16;\n          _context2.t0 = _context2[\"catch\"](0);\n          console.log(\"Error creating improvementWork: \", _context2.t0);\n          throw _context2.t0;\n        case 20:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2, null, [[0, 16]]);\n  }));\n}\nfunction addMemberToTask(userHsaId, taskId, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var relationRef;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          _context3.prev = 0;\n          relationRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userTaskCollection);\n          _context3.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(relationRef, {\n            id: relationRef.id,\n            userHsaId: userHsaId,\n            taskId: taskId,\n            isResponsibleFor: isResponsibleFor\n          });\n        case 4:\n          _context3.next = 10;\n          break;\n        case 6:\n          _context3.prev = 6;\n          _context3.t0 = _context3[\"catch\"](0);\n          console.log(\"Error adding member to task: \", _context3.t0);\n          throw _context3.t0;\n        case 10:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3, null, [[0, 6]]);\n  }));\n}\nfunction addMemberToImprovementWork(userHsaId, improvementWorkId, isOwner, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n    var relationRef;\n    return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n      while (1) switch (_context4.prev = _context4.next) {\n        case 0:\n          _context4.prev = 0;\n          relationRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userImprovementWorkCollection);\n          _context4.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(relationRef, {\n            id: relationRef.id,\n            userHsaId: userHsaId,\n            improvementWorkId: improvementWorkId,\n            isOwner: isOwner,\n            isResponsibleFor: isResponsibleFor\n          });\n        case 4:\n          _context4.next = 10;\n          break;\n        case 6:\n          _context4.prev = 6;\n          _context4.t0 = _context4[\"catch\"](0);\n          console.log(\"Error adding member to improvementWork: \", _context4.t0);\n          throw _context4.t0;\n        case 10:\n        case \"end\":\n          return _context4.stop();\n      }\n    }, _callee4, null, [[0, 6]]);\n  }));\n}\nfunction createTaskOnImprovementWork(taskId, improvementWorkId, name, deadlineDate, startDate, stage, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n    var taskData, taskRef, _taskRef;\n    return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n      while (1) switch (_context5.prev = _context5.next) {\n        case 0:\n          _context5.prev = 0;\n          taskData = {\n            improvementWorkId: improvementWorkId,\n            name: name,\n            deadlineDate: deadlineDate,\n            startDate: startDate,\n            stage: stage,\n            content: content,\n            completed: false\n          };\n          if (!taskId) {\n            _context5.next = 8;\n            break;\n          }\n          taskRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context5.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(taskRef, Object.assign({\n            id: taskRef.id\n          }, taskData));\n        case 6:\n          _context5.next = 11;\n          break;\n        case 8:\n          _taskRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection);\n          _context5.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(_taskRef, taskData);\n        case 11:\n          _context5.next = 17;\n          break;\n        case 13:\n          _context5.prev = 13;\n          _context5.t0 = _context5[\"catch\"](0);\n          console.log(\"Error creating task: \", _context5.t0);\n          throw _context5.t0;\n        case 17:\n        case \"end\":\n          return _context5.stop();\n      }\n    }, _callee5, null, [[0, 13]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction createdDocumentInKnowledgeBank(documentUrl, name, projectId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n      while (1) switch (_context6.prev = _context6.next) {\n        case 0:\n          _context6.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(knowledgeDocumentCollection);\n          _context6.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            name: name,\n            projectId: projectId\n          });\n        case 4:\n          _context6.next = 10;\n          break;\n        case 6:\n          _context6.prev = 6;\n          _context6.t0 = _context6[\"catch\"](0);\n          console.log(\"Error adding document: \", _context6.t0);\n          throw _context6.t0;\n        case 10:\n        case \"end\":\n          return _context6.stop();\n      }\n    }, _callee6, null, [[0, 6]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction addDocumentToImprovementWork(documentUrl, name, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var improvementWorkRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          _context7.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkRef, \"documents\");\n          _context7.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            timestamp: new Date(),\n            name: name\n          });\n        case 5:\n          _context7.next = 11;\n          break;\n        case 7:\n          _context7.prev = 7;\n          _context7.t0 = _context7[\"catch\"](0);\n          console.log(\"Error adding document: \", _context7.t0);\n          throw _context7.t0;\n        case 11:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7, null, [[0, 7]]);\n  }));\n}\nfunction getDocumentsByImprovementWork(improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var q, querySnapshot, documents, _iterator, _step, _doc, documentId, documentDoc;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          _context8.prev = 0;\n          console.log(\"Getting documents for improvementwork: \", improvementWorkId);\n          // Query the userImprovementWork collection for relations involving this user\n          q = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)(knowledgeDocumentCollection, (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"projectId\", \"==\", improvementWorkId));\n          _context8.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 5:\n          querySnapshot = _context8.sent;\n          // Fetch each related improvementWork document\n          documents = [];\n          _iterator = _createForOfIteratorHelper(querySnapshot.docs);\n          _context8.prev = 8;\n          _iterator.s();\n        case 10:\n          if ((_step = _iterator.n()).done) {\n            _context8.next = 19;\n            break;\n          }\n          _doc = _step.value;\n          documentId = _doc.data().id;\n          _context8.next = 15;\n          return getObjectById(\"knowledgeDocument\", documentId);\n        case 15:\n          documentDoc = _context8.sent;\n          documents.push(documentDoc);\n        case 17:\n          _context8.next = 10;\n          break;\n        case 19:\n          _context8.next = 24;\n          break;\n        case 21:\n          _context8.prev = 21;\n          _context8.t0 = _context8[\"catch\"](8);\n          _iterator.e(_context8.t0);\n        case 24:\n          _context8.prev = 24;\n          _iterator.f();\n          return _context8.finish(24);\n        case 27:\n          return _context8.abrupt(\"return\", documents);\n        case 30:\n          _context8.prev = 30;\n          _context8.t1 = _context8[\"catch\"](0);\n          console.error(\"Error getting documents for improvmentwork: \", _context8.t1);\n          throw _context8.t1;\n        case 34:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8, null, [[0, 30], [8, 21, 24, 27]]);\n  }));\n}\nfunction createHospital(hospitalId,\n// should be auto?\nname) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n    var hospitalData, hospitalRef, _hospitalRef;\n    return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n      while (1) switch (_context9.prev = _context9.next) {\n        case 0:\n          _context9.prev = 0;\n          hospitalData = {\n            name: name,\n            units: []\n          };\n          if (!hospitalId) {\n            _context9.next = 8;\n            break;\n          }\n          hospitalRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context9.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(hospitalRef, Object.assign({\n            id: hospitalRef.id\n          }, hospitalData));\n        case 6:\n          _context9.next = 11;\n          break;\n        case 8:\n          _hospitalRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection);\n          _context9.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(_hospitalRef, hospitalData);\n        case 11:\n          _context9.next = 17;\n          break;\n        case 13:\n          _context9.prev = 13;\n          _context9.t0 = _context9[\"catch\"](0);\n          console.log(\"Error creating hospital: \", _context9.t0);\n          throw _context9.t0;\n        case 17:\n        case \"end\":\n          return _context9.stop();\n      }\n    }, _callee9, null, [[0, 13]]);\n  }));\n}\nfunction createUnit(unitId,\n//should be auto?\nhospitalId, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var unitData, unitRef, _unitRef;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          _context10.prev = 0;\n          unitData = {\n            hospitalId: hospitalId,\n            name: name\n          };\n          if (!unitId) {\n            _context10.next = 8;\n            break;\n          }\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context10.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(unitRef, Object.assign({\n            id: unitRef.id\n          }, unitData));\n        case 6:\n          _context10.next = 11;\n          break;\n        case 8:\n          _unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection);\n          _context10.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(_unitRef, unitData);\n        case 11:\n          _context10.next = 17;\n          break;\n        case 13:\n          _context10.prev = 13;\n          _context10.t0 = _context10[\"catch\"](0);\n          console.log(\"Error creating unit: \", _context10.t0);\n          throw _context10.t0;\n        case 17:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10, null, [[0, 13]]);\n  }));\n}\nfunction createSuggestion(id, creatorHsaId, name, area, content, purpose, measure, ideas,\n//need: boolean,\nunitId, departmentId, isPublic) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {\n    var suggestionData, suggestionRef, _suggestionRef;\n    return _regeneratorRuntime().wrap(function _callee11$(_context11) {\n      while (1) switch (_context11.prev = _context11.next) {\n        case 0:\n          _context11.prev = 0;\n          suggestionData = {\n            creatorHsaId: creatorHsaId,\n            name: name,\n            area: area,\n            content: content,\n            purpose: purpose,\n            measure: measure,\n            ideas: ideas,\n            //need,\n            unitId: unitId,\n            departmentId: departmentId,\n            \"public\": isPublic,\n            upvotes: [],\n            comments: [],\n            dateCreated: new Date()\n          };\n          if (!id) {\n            _context11.next = 8;\n            break;\n          }\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, id);\n          _context11.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(suggestionRef, Object.assign({\n            id: suggestionRef.id\n          }, suggestionData));\n        case 6:\n          _context11.next = 11;\n          break;\n        case 8:\n          _suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection);\n          _context11.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(_suggestionRef, suggestionData);\n        case 11:\n          _context11.next = 17;\n          break;\n        case 13:\n          _context11.prev = 13;\n          _context11.t0 = _context11[\"catch\"](0);\n          console.log(\"Error creating suggestion: \", _context11.t0);\n          throw _context11.t0;\n        case 17:\n        case \"end\":\n          return _context11.stop();\n      }\n    }, _callee11, null, [[0, 13]]);\n  }));\n}\nfunction deleteSuggestion(suggestionId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {\n    var suggestionRef;\n    return _regeneratorRuntime().wrap(function _callee12$(_context12) {\n      while (1) switch (_context12.prev = _context12.next) {\n        case 0:\n          _context12.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          _context12.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(suggestionRef);\n        case 4:\n          _context12.next = 10;\n          break;\n        case 6:\n          _context12.prev = 6;\n          _context12.t0 = _context12[\"catch\"](0);\n          console.log(\"Error deleting suggestion: \", _context12.t0);\n          throw _context12.t0;\n        case 10:\n        case \"end\":\n          return _context12.stop();\n      }\n    }, _callee12, null, [[0, 6]]);\n  }));\n}\n// Upvote a suggestion for a user\n// takes in suggestion id, user HSAid\n// returns error if transaction failed\nfunction upvoteSuggestion(suggestionId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {\n    var suggestionRef;\n    return _regeneratorRuntime().wrap(function _callee13$(_context13) {\n      while (1) switch (_context13.prev = _context13.next) {\n        case 0:\n          _context13.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId); // Atomically add a update to the upvote array field.\n          _context13.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(suggestionRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 4:\n          _context13.next = 10;\n          break;\n        case 6:\n          _context13.prev = 6;\n          _context13.t0 = _context13[\"catch\"](0);\n          console.log(\"Error upvoting suggestion: \", _context13.t0);\n          throw _context13.t0;\n        case 10:\n        case \"end\":\n          return _context13.stop();\n      }\n    }, _callee13, null, [[0, 6]]);\n  }));\n}\n//creates a comment\n// takes in commenters id, suggestion id and content as string\n// throws error if transaction failed\nfunction createComment(\n// change to subcollection\ncommenterHsaId, suggestionId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee14() {\n    var suggestionRef, commentCollection, commentRef;\n    return _regeneratorRuntime().wrap(function _callee14$(_context14) {\n      while (1) switch (_context14.prev = _context14.next) {\n        case 0:\n          _context14.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          _context14.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 4:\n          commentCollection = _context14.sent;\n          _context14.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 7:\n          commentRef = _context14.sent;\n          _context14.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(commentRef, {\n            id: commentRef.id,\n            commenterHsaId: commenterHsaId,\n            content: content,\n            dateCreated: new Date(),\n            upvotes: []\n          });\n        case 10:\n          _context14.next = 16;\n          break;\n        case 12:\n          _context14.prev = 12;\n          _context14.t0 = _context14[\"catch\"](0);\n          console.log(\"Error creating comment: \", _context14.t0);\n          throw _context14.t0;\n        case 16:\n        case \"end\":\n          return _context14.stop();\n      }\n    }, _callee14, null, [[0, 12]]);\n  }));\n}\n// Upvote a comment for a user\n// takes in suggestionId, commentId and userId as strings\n// return error if transaction failed\nfunction upvoteComment(suggestionId, commentId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee15() {\n    var suggestionRef, commentRef;\n    return _regeneratorRuntime().wrap(function _callee15$(_context15) {\n      while (1) switch (_context15.prev = _context15.next) {\n        case 0:\n          _context15.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          commentRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionRef, \"comment\", commentId); // Atomically add a update to the upvote array field.\n          _context15.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(commentRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 5:\n          _context15.next = 11;\n          break;\n        case 7:\n          _context15.prev = 7;\n          _context15.t0 = _context15[\"catch\"](0);\n          console.log(\"Error upvoting comment: \", _context15.t0);\n          throw _context15.t0;\n        case 11:\n        case \"end\":\n          return _context15.stop();\n      }\n    }, _callee15, null, [[0, 7]]);\n  }));\n}\n//add a note to a user\n// takes in userHsaId and content as string\n// throws error if transaction failed\nfunction addNoteToUser(userHsaId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee16() {\n    var userRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee16$(_context16) {\n      while (1) switch (_context16.prev = _context16.next) {\n        case 0:\n          _context16.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userRef, \"notes\");\n          _context16.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            content: content,\n            dateCreated: new Date()\n          });\n        case 5:\n          _context16.next = 11;\n          break;\n        case 7:\n          _context16.prev = 7;\n          _context16.t0 = _context16[\"catch\"](0);\n          console.log(\"Error adding document: \", _context16.t0);\n          throw _context16.t0;\n        case 11:\n        case \"end\":\n          return _context16.stop();\n      }\n    }, _callee16, null, [[0, 7]]);\n  }));\n}\n// export to setters to be able to use in other files\n\n//////////////////////////////////////////////GETTERS/////////////////////////////////////////////////////////////////////\n// Get any object\n// input is the database type as a string.\n// output is the whole collection of that type.\nfunction getObject(collectionPath) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee17() {\n    var collectionRef, querySnapshot, result;\n    return _regeneratorRuntime().wrap(function _callee17$(_context17) {\n      while (1) switch (_context17.prev = _context17.next) {\n        case 0:\n          _context17.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionPath);\n          _context17.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          querySnapshot = _context17.sent;\n          result = [];\n          querySnapshot.forEach(function (doc) {\n            result.push(doc.data());\n          });\n          return _context17.abrupt(\"return\", result);\n        case 10:\n          _context17.prev = 10;\n          _context17.t0 = _context17[\"catch\"](0);\n          console.error(\"Error getting collection data\", _context17.t0);\n          throw _context17.t0;\n        case 14:\n        case \"end\":\n          return _context17.stop();\n      }\n    }, _callee17, null, [[0, 10]]);\n  }));\n}\n/**\n * Asynchronously retrieves a single document object from the specified collection path and document ID.\n * If the document does not exist, logs a warning and returns null.\n *\n * @param {string} collectionPath - The path to the collection in the database (\"improvementWork\", \"hospital\", \"suggestion\", \"task\", \"unit\", \"users\")\n * @param {string} documentId - The ID of the document to retrieve.\n * @returns {Promise<any|null>} A promise that resolves to the document object if found, or null if not.\n *\n * @throws Will throw an error if there is an issue during retrieval from the database.\n */\nfunction getObjectById(collectionPath, documentId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee18() {\n    var docRef, docSnapshot;\n    return _regeneratorRuntime().wrap(function _callee18$(_context18) {\n      while (1) switch (_context18.prev = _context18.next) {\n        case 0:\n          _context18.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, collectionPath, documentId);\n          _context18.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDoc)(docRef);\n        case 4:\n          docSnapshot = _context18.sent;\n          if (!docSnapshot.exists()) {\n            _context18.next = 9;\n            break;\n          }\n          return _context18.abrupt(\"return\", Object.assign({\n            id: docSnapshot.id\n          }, docSnapshot.data()));\n        case 9:\n          console.warn(\"No such document! \".concat(collectionPath, \"/\").concat(documentId));\n          return _context18.abrupt(\"return\", null);\n        case 11:\n          _context18.next = 17;\n          break;\n        case 13:\n          _context18.prev = 13;\n          _context18.t0 = _context18[\"catch\"](0);\n          console.error(\"Error getting object\", _context18.t0);\n          throw _context18.t0;\n        case 17:\n        case \"end\":\n          return _context18.stop();\n      }\n    }, _callee18, null, [[0, 13]]);\n  }));\n}\n/**\n * Asynchronously retrieves comments for a given suggestion.\n *\n * @param {Object} params - The parameters for fetching comments.\n * @param {string} params.suggestionId - The ID of the suggestion to fetch comments for.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - The criterion to sort the comments by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Determines if the sorting should be in ascending order. Defaults to false (descending).\n * @returns {Promise<any[]>} A promise that resolves to an array of comment objects.\n *\n * @throws Will throw an error if the comments cannot be retrieved.\n */\nfunction getComments(_ref) {\n  var suggestionId = _ref.suggestionId,\n    _ref$sortBy = _ref.sortBy,\n    sortBy = _ref$sortBy === void 0 ? \"dateCreated\" : _ref$sortBy,\n    _ref$ascending = _ref.ascending,\n    ascending = _ref$ascending === void 0 ? false : _ref$ascending;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee19() {\n    var suggestionRef, commentsQuery, commentsSnapshot, comments;\n    return _regeneratorRuntime().wrap(function _callee19$(_context19) {\n      while (1) switch (_context19.prev = _context19.next) {\n        case 0:\n          _context19.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, \"suggestionCollection\", suggestionId);\n          commentsQuery = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\"), (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          _context19.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(commentsQuery);\n        case 5:\n          commentsSnapshot = _context19.sent;\n          comments = [];\n          commentsSnapshot.forEach(function (doc) {\n            comments.push(doc.data());\n          });\n          return _context19.abrupt(\"return\", comments);\n        case 11:\n          _context19.prev = 11;\n          _context19.t0 = _context19[\"catch\"](0);\n          console.error(\"Error getting comments for suggestion: \", _context19.t0);\n          throw _context19.t0;\n        case 15:\n        case \"end\":\n          return _context19.stop();\n      }\n    }, _callee19, null, [[0, 11]]);\n  }));\n}\n//Filtering suggestions on unitId AND creatorHsaId\n//Sort suggestions on dateCreated OR upvotes\n/**\n * Asynchronously retrieves an array of suggestions from the database, with various filters and sorting options.\n *\n * @param {Object} params - The parameters for filtering and sorting suggestions.\n * @param {string} [params.id] - Optional ID to filter suggestions by a specific identifier.\n * @param {string} [params.creatorHsaId] - Optional HSA ID to filter suggestions by the creator's HSA ID.\n * @param {string} [params.unitId] - Optional unit ID to filter suggestions by a specific unit.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - Criterion to sort the suggestions by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Flag indicating if sorting should be ascending. Defaults to false (descending order).\n * @param {boolean} [params.isPublic=true] - Flag indicating whether to filter for public suggestions. Defaults to true.\n * @returns {Promise<any[]>} A promise that resolves to an array of suggestion objects.\n *\n * @throws Will throw an error if there is an issue retrieving suggestions.\n */\nfunction getSuggestions(_ref2) {\n  var id = _ref2.id,\n    creatorHsaId = _ref2.creatorHsaId,\n    name = _ref2.name,\n    unitId = _ref2.unitId,\n    _ref2$sortBy = _ref2.sortBy,\n    sortBy = _ref2$sortBy === void 0 ? \"dateCreated\" : _ref2$sortBy,\n    _ref2$ascending = _ref2.ascending,\n    ascending = _ref2$ascending === void 0 ? false : _ref2$ascending,\n    _ref2$isPublic = _ref2.isPublic,\n    isPublic = _ref2$isPublic === void 0 ? true : _ref2$isPublic;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee20() {\n    var collectionRef, constraints, q, querySnapshot, suggestions;\n    return _regeneratorRuntime().wrap(function _callee20$(_context20) {\n      while (1) switch (_context20.prev = _context20.next) {\n        case 0:\n          _context20.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (creatorHsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"creatorHsaId\", \"==\", creatorHsaId));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", name));\n            sortBy = \"name\";\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"public\", \"==\", isPublic));\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context20.next = 12;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 12:\n          querySnapshot = _context20.sent;\n          suggestions = [];\n          querySnapshot.forEach(function (doc) {\n            suggestions.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context20.abrupt(\"return\", suggestions);\n        case 18:\n          _context20.prev = 18;\n          _context20.t0 = _context20[\"catch\"](0);\n          console.log(\"Error retrieving suggestions by department: \", _context20.t0);\n          throw _context20.t0;\n        case 22:\n        case \"end\":\n          return _context20.stop();\n      }\n    }, _callee20, null, [[0, 18]]);\n  }));\n}\n/**\n * Asynchronously searches for hospital documents in the database.\n * It can filter the results by the hospital's name, ID, or both.\n * If no parameters are provided, it retrieves all hospitals.\n *\n * @param {Object} params - An object containing the search parameters.\n * @param {string} [params.hospitalName] - Optional name of the hospital to filter the search.\n * @param {string} [params.hospitalId] - Optional unique identifier of the hospital to filter the search.\n * @returns {Promise<any[]>} A promise that resolves to an array of hospital objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getHospitals(_ref3) {\n  var hospitalName = _ref3.hospitalName,\n    hospitalId = _ref3.hospitalId;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee21() {\n    var collectionRef, constraints, q, querySnapshot, hospitals;\n    return _regeneratorRuntime().wrap(function _callee21$(_context21) {\n      while (1) switch (_context21.prev = _context21.next) {\n        case 0:\n          _context21.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\n          constraints = [];\n          if (hospitalName) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", hospitalName));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hospitalId));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context21.next = 8;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 8:\n          querySnapshot = _context21.sent;\n          hospitals = [];\n          querySnapshot.forEach(function (doc) {\n            hospitals.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context21.abrupt(\"return\", hospitals);\n        case 14:\n          _context21.prev = 14;\n          _context21.t0 = _context21[\"catch\"](0);\n          console.log(\"Error retrieving Hospitals\", _context21.t0);\n          throw _context21.t0;\n        case 18:\n        case \"end\":\n          return _context21.stop();\n      }\n    }, _callee21, null, [[0, 14]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of improvement work documents based on various filter criteria.\n * It supports filtering by ID, Nolan stage, unit ID, completion status, ongoing status, and patient risk level.\n * It also supports sorting by the start date of the improvement work in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.id] - Optional identifier to filter the improvement works.\n * @param {string} [params.nolanStage] - Optional Nolan stage to filter the improvement works.\n * @param {string} [params.unitId] - Optional unit ID to filter the improvement works.\n * @param {boolean} [params.completed] - Optional flag to filter the improvement works by their completion status.\n * @param {boolean} [params.ongoing] - Optional flag to filter the improvement works by their ongoing status.\n * @param {string} [params.patientRiskLevel] - Optional patient risk level to filter the improvement works.\n * @param {boolean} [params.ascendingDates=false] - Optional flag for sorting by date in ascending order. Defaults to false.\n * @returns {Promise<any[]>} A promise that resolves to an array of improvement work objects that match the criteria.\n *\n * @throws Will throw an error if there is a problem retrieving the improvement works.\n */\nfunction getImprovementWorks(_ref4) {\n  var id = _ref4.id,\n    name = _ref4.name,\n    nolanStage = _ref4.nolanStage,\n    unitId = _ref4.unitId,\n    completed = _ref4.completed,\n    ongoing = _ref4.ongoing,\n    patientRiskLevel = _ref4.patientRiskLevel,\n    _ref4$ascendingDates = _ref4.ascendingDates,\n    ascendingDates = _ref4$ascendingDates === void 0 ? false : _ref4$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee22() {\n    var collectionRef, constraints, q, querySnapshot, improvementWorks;\n    return _regeneratorRuntime().wrap(function _callee22$(_context22) {\n      while (1) switch (_context22.prev = _context22.next) {\n        case 0:\n          _context22.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            console.log(\"inne i ifsatsen i databasen\");\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (nolanStage) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"currentStage\", \"==\", nolanStage));\n          }\n          if (completed != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"completed\", \"==\", completed));\n          }\n          if (ongoing !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"ongoing\", \"==\", ongoing));\n          }\n          if (patientRiskLevel) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"patientRiskLevel\", \"==\", patientRiskLevel));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"lowerCaseName\", \">=\", name.toLowerCase()));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"lowerCaseName\", \"<=\", name.toLowerCase() + \"~\"));\n          } else {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"dateStarted\", ascendingDates ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context22.next = 13;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 13:\n          querySnapshot = _context22.sent;\n          improvementWorks = [];\n          querySnapshot.forEach(function (doc) {\n            improvementWorks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context22.abrupt(\"return\", improvementWorks);\n        case 19:\n          _context22.prev = 19;\n          _context22.t0 = _context22[\"catch\"](0);\n          console.log(\"Error retrieving improvementWorks: \", _context22.t0);\n          throw _context22.t0;\n        case 23:\n        case \"end\":\n          return _context22.stop();\n      }\n    }, _callee22, null, [[0, 19]]);\n  }));\n}\n// Gets improvementWorks where each field matches the union of elements in the input array for each fo the fields\nfunction getFilteredImprovementWorks(_ref5) {\n  var patientRiskLevels = _ref5.patientRiskLevels,\n    nolanStages = _ref5.nolanStages,\n    units = _ref5.units,\n    _ref5$ascendingDates = _ref5.ascendingDates,\n    ascendingDates = _ref5$ascendingDates === void 0 ? false : _ref5$ascendingDates,\n    completed = _ref5.completed;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee23() {\n    var collectionRef, constraints, q, querySnapshot, improvementWorks;\n    return _regeneratorRuntime().wrap(function _callee23$(_context23) {\n      while (1) switch (_context23.prev = _context23.next) {\n        case 0:\n          _context23.prev = 0;\n          console.log(\"Getting improvement works with the following constraints\", patientRiskLevels, nolanStages, units, ascendingDates);\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\n          constraints = [];\n          if (patientRiskLevels && patientRiskLevels.length) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"patientRiskLevel\", \"in\", patientRiskLevels));\n          }\n          if (nolanStages && nolanStages.length) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"currentStage\", \"in\", nolanStages));\n          }\n          if (units && units.length) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"in\", units));\n          }\n          // If none of the array filters are provided, default to ordering by date.\n          if (!patientRiskLevels.length && !nolanStages.length && !units.length) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"dateStarted\", ascendingDates ? \"asc\" : \"desc\"));\n          }\n          if (completed) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"completed\", \"==\", completed));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context23.next = 12;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 12:\n          querySnapshot = _context23.sent;\n          improvementWorks = [];\n          querySnapshot.forEach(function (doc) {\n            improvementWorks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context23.abrupt(\"return\", improvementWorks);\n        case 18:\n          _context23.prev = 18;\n          _context23.t0 = _context23[\"catch\"](0);\n          console.error(\"Error retrieving filtered improvementWorks: \", _context23.t0);\n          throw _context23.t0;\n        case 22:\n        case \"end\":\n          return _context23.stop();\n      }\n    }, _callee23, null, [[0, 18]]);\n  }));\n}\nfunction getImprovementWorkOwner(improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee24() {\n    var constraints, q, querySnapshot, owner;\n    return _regeneratorRuntime().wrap(function _callee24$(_context24) {\n      while (1) switch (_context24.prev = _context24.next) {\n        case 0:\n          _context24.prev = 0;\n          constraints = [];\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"isOwner\", \"==\", true));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [userImprovementWorkCollection].concat(constraints));\n          _context24.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 7:\n          querySnapshot = _context24.sent;\n          if (!querySnapshot.empty) {\n            _context24.next = 13;\n            break;\n          }\n          console.log(\"Improvement work \", improvementWorkId, \" has no owner\");\n          return _context24.abrupt(\"return\", null);\n        case 13:\n          owner = querySnapshot.docs[0].data().userHsaId;\n          return _context24.abrupt(\"return\", owner);\n        case 15:\n          _context24.next = 20;\n          break;\n        case 17:\n          _context24.prev = 17;\n          _context24.t0 = _context24[\"catch\"](0);\n          console.log(_context24.t0);\n        case 20:\n        case \"end\":\n          return _context24.stop();\n      }\n    }, _callee24, null, [[0, 17]]);\n  }));\n}\nfunction getImprovementWorkResponsible(improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee25() {\n    var constraints, q, querySnapshot, responsibleId, responsible;\n    return _regeneratorRuntime().wrap(function _callee25$(_context25) {\n      while (1) switch (_context25.prev = _context25.next) {\n        case 0:\n          _context25.prev = 0;\n          constraints = [];\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"isResponsibleFor\", \"==\", true));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [userImprovementWorkCollection].concat(constraints));\n          _context25.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 7:\n          querySnapshot = _context25.sent;\n          if (!querySnapshot.empty) {\n            _context25.next = 13;\n            break;\n          }\n          console.log(\"Improvement work \", improvementWorkId, \" has no responsible\");\n          return _context25.abrupt(\"return\", null);\n        case 13:\n          responsibleId = querySnapshot.docs[0].data().userHsaId;\n          _context25.next = 16;\n          return getObjectById(\"users\", responsibleId);\n        case 16:\n          responsible = _context25.sent;\n          return _context25.abrupt(\"return\", responsible);\n        case 18:\n          _context25.next = 23;\n          break;\n        case 20:\n          _context25.prev = 20;\n          _context25.t0 = _context25[\"catch\"](0);\n          console.log(_context25.t0);\n        case 23:\n        case \"end\":\n          return _context25.stop();\n      }\n    }, _callee25, null, [[0, 20]]);\n  }));\n}\n// TODO getUsersForTask!\n/**\n * Asynchronously retrieves user documents from the database based on various filter criteria.\n * It can filter by the Health Savings Account ID (hsaId), unit ID, and unique identifier (uid).\n * Additionally, it can sort the results by first name in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.hsaId] - Optional HSA ID to filter the users.\n * @param {string} [params.unitId] - Optional unit ID to filter the users.\n * @param {boolean} [params.ascendingFirstNames=false] - Optional flag to sort by first names in ascending order. Defaults to false (descending order).\n * @param {string} [params.uid] - Optional unique identifier to filter the users.\n * @returns {Promise<any[]>} A promise that resolves to an array of user objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUsers(_ref6) {\n  var hsaId = _ref6.hsaId,\n    name = _ref6.name,\n    unitId = _ref6.unitId,\n    _ref6$ascendingFirstN = _ref6.ascendingFirstNames,\n    ascendingFirstNames = _ref6$ascendingFirstN === void 0 ? false : _ref6$ascendingFirstN,\n    uid = _ref6.uid;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee26() {\n    var collectionRef, constraints, q, querySnapshot, users;\n    return _regeneratorRuntime().wrap(function _callee26$(_context26) {\n      while (1) switch (_context26.prev = _context26.next) {\n        case 0:\n          _context26.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\n          constraints = [];\n          if (hsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hsaId));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (uid) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"uid\", \"==\", uid));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", name));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"firstName\", ascendingFirstNames ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context26.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 11:\n          querySnapshot = _context26.sent;\n          users = [];\n          querySnapshot.forEach(function (doc) {\n            users.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context26.abrupt(\"return\", users);\n        case 17:\n          _context26.prev = 17;\n          _context26.t0 = _context26[\"catch\"](0);\n          console.log(\"Error retrieving users by department: \", _context26.t0);\n          throw _context26.t0;\n        case 21:\n        case \"end\":\n          return _context26.stop();\n      }\n    }, _callee26, null, [[0, 17]]);\n  }));\n}\n// TODO getTasksForUser!\n/**\n * Asynchronously retrieves an array of task documents from the database based on several filter and sorting criteria.\n * Filters include task ID, user ID and their responsibility status, and related improvement work ID.\n * Results can be sorted by date either in ascending or descending order.\n *\n * @param {Object} params - Parameters to filter and sort the task results.\n * @param {string} [params.taskId] - Optional task ID to filter the tasks.\n * @param {string} [params.userId] - Optional user ID to identify tasks related to a user.\n * @param {boolean} [params.isResponsibleFor] - Optional flag to filter tasks where the user is marked as responsible.\n * @param {string} [params.improvementWorkId] - Optional improvement work ID to filter tasks related to a specific improvement work.\n * @param {boolean} [params.ascendingDates=false] - Optional flag to sort tasks by date in ascending order; defaults to descending order.\n * @returns {Promise<any[]>} A promise that resolves to an array of task objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getTasks(_ref7) {\n  var improvementWorkId = _ref7.improvementWorkId,\n    stage = _ref7.stage,\n    _ref7$ascendingDates = _ref7.ascendingDates,\n    ascendingDates = _ref7$ascendingDates === void 0 ? false : _ref7$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee27() {\n    var collectionRef, constraints, q, querySnapshot, tasks;\n    return _regeneratorRuntime().wrap(function _callee27$(_context27) {\n      while (1) switch (_context27.prev = _context27.next) {\n        case 0:\n          _context27.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\n          constraints = [];\n          if (stage) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"stage\", \"==\", stage));\n          }\n          if (improvementWorkId != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"startDate\", ascendingDates ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context27.next = 8;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 8:\n          querySnapshot = _context27.sent;\n          tasks = [];\n          querySnapshot.forEach(function (doc) {\n            tasks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context27.abrupt(\"return\", tasks);\n        case 14:\n          _context27.prev = 14;\n          _context27.t0 = _context27[\"catch\"](0);\n          console.log(\"Error retrieving task by department: \", _context27.t0);\n          throw _context27.t0;\n        case 18:\n        case \"end\":\n          return _context27.stop();\n      }\n    }, _callee27, null, [[0, 14]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of unit documents from the database based on various filter criteria.\n * Filters can be applied based on unit ID, hospital ID, and unit name.\n * Additionally, results can be sorted by unit names in ascending or descending order.\n *\n * @param {Object} params - The parameters object containing filter and sorting options.\n * @param {string} [params.unitId] - Optional unit ID to filter the units.\n * @param {string} [params.hospitalId] - Optional hospital ID to filter units within a specific hospital.\n * @param {string} [params.name] - Optional name to filter units by a specific name.\n * @param {boolean} [params.ascendingUnitNames=false] - Optional flag to sort units by name in ascending order, defaults to descending.\n * @returns {Promise<any[]>} A promise that resolves to an array of unit objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUnits(_ref8) {\n  var unitId = _ref8.unitId,\n    hospitalId = _ref8.hospitalId,\n    name = _ref8.name,\n    _ref8$ascendingUnitNa = _ref8.ascendingUnitNames,\n    ascendingUnitNames = _ref8$ascendingUnitNa === void 0 ? false : _ref8$ascendingUnitNa;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee28() {\n    var collectionRef, constraints, q, querySnapshot, units;\n    return _regeneratorRuntime().wrap(function _callee28$(_context28) {\n      while (1) switch (_context28.prev = _context28.next) {\n        case 0:\n          _context28.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\n          constraints = [];\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", unitId));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", name));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"hospitalId\", \"==\", hospitalId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"name\", ascendingUnitNames ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context28.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context28.sent;\n          units = [];\n          querySnapshot.forEach(function (doc) {\n            units.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context28.abrupt(\"return\", units);\n        case 15:\n          _context28.prev = 15;\n          _context28.t0 = _context28[\"catch\"](0);\n          console.log(\"Error retrieving units by hospitalId: \", _context28.t0);\n          throw _context28.t0;\n        case 19:\n        case \"end\":\n          return _context28.stop();\n      }\n    }, _callee28, null, [[0, 15]]);\n  }));\n}\nfunction getImprovementWorksForUser(userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee29() {\n    var q, querySnapshot, improvementWorks, _iterator2, _step2, _doc2, improvementWorkId, improvementWorkDoc;\n    return _regeneratorRuntime().wrap(function _callee29$(_context29) {\n      while (1) switch (_context29.prev = _context29.next) {\n        case 0:\n          _context29.prev = 0;\n          console.log(\"Getting improvementworks for user: \", userHsaId);\n          // Query the userImprovementWork collection for relations involving this user\n          q = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)(userImprovementWorkCollection, (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"userHsaId\", \"==\", userHsaId));\n          _context29.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 5:\n          querySnapshot = _context29.sent;\n          // Fetch each related improvementWork document\n          improvementWorks = [];\n          _iterator2 = _createForOfIteratorHelper(querySnapshot.docs);\n          _context29.prev = 8;\n          _iterator2.s();\n        case 10:\n          if ((_step2 = _iterator2.n()).done) {\n            _context29.next = 19;\n            break;\n          }\n          _doc2 = _step2.value;\n          improvementWorkId = _doc2.data().improvementWorkId;\n          _context29.next = 15;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 15:\n          improvementWorkDoc = _context29.sent;\n          improvementWorks.push(improvementWorkDoc);\n        case 17:\n          _context29.next = 10;\n          break;\n        case 19:\n          _context29.next = 24;\n          break;\n        case 21:\n          _context29.prev = 21;\n          _context29.t0 = _context29[\"catch\"](8);\n          _iterator2.e(_context29.t0);\n        case 24:\n          _context29.prev = 24;\n          _iterator2.f();\n          return _context29.finish(24);\n        case 27:\n          return _context29.abrupt(\"return\", improvementWorks);\n        case 30:\n          _context29.prev = 30;\n          _context29.t1 = _context29[\"catch\"](0);\n          console.error(\"Error getting improvement works for user: \", _context29.t1);\n          throw _context29.t1;\n        case 34:\n        case \"end\":\n          return _context29.stop();\n      }\n    }, _callee29, null, [[0, 30], [8, 21, 24, 27]]);\n  }));\n}\nfunction getUsersForImprovementWork(improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee30() {\n    var q, querySnapshot, users, _iterator3, _step3, _doc3, userHsaId, userDoc;\n    return _regeneratorRuntime().wrap(function _callee30$(_context30) {\n      while (1) switch (_context30.prev = _context30.next) {\n        case 0:\n          _context30.prev = 0;\n          // Query the userImprovementWork collection for relations involving this improvementWork\n          q = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)(userImprovementWorkCollection, (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n          _context30.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 4:\n          querySnapshot = _context30.sent;\n          // Fetch each related user document\n          users = [];\n          _iterator3 = _createForOfIteratorHelper(querySnapshot.docs);\n          _context30.prev = 7;\n          _iterator3.s();\n        case 9:\n          if ((_step3 = _iterator3.n()).done) {\n            _context30.next = 18;\n            break;\n          }\n          _doc3 = _step3.value;\n          userHsaId = _doc3.data().userHsaId;\n          _context30.next = 14;\n          return getObjectById(\"users\", userHsaId);\n        case 14:\n          userDoc = _context30.sent;\n          users.push(userDoc);\n        case 16:\n          _context30.next = 9;\n          break;\n        case 18:\n          _context30.next = 23;\n          break;\n        case 20:\n          _context30.prev = 20;\n          _context30.t0 = _context30[\"catch\"](7);\n          _iterator3.e(_context30.t0);\n        case 23:\n          _context30.prev = 23;\n          _iterator3.f();\n          return _context30.finish(23);\n        case 26:\n          return _context30.abrupt(\"return\", users);\n        case 29:\n          _context30.prev = 29;\n          _context30.t1 = _context30[\"catch\"](0);\n          console.error(\"Error getting users for improvementWork: \", _context30.t1);\n          throw _context30.t1;\n        case 33:\n        case \"end\":\n          return _context30.stop();\n      }\n    }, _callee30, null, [[0, 29], [7, 20, 23, 26]]);\n  }));\n}\n// export getters to be able to use in other files\n\n////////////////////////////////////DELETING/////////////////////////////////////////////\n// delete an instance of a type\nfunction deleteInstance(docType, docId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee31() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee31$(_context31) {\n      while (1) switch (_context31.prev = _context31.next) {\n        case 0:\n          _context31.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context31.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(docRef);\n        case 4:\n          console.log(\"\".concat(docType, \" deleted successfully.\"));\n          _context31.next = 11;\n          break;\n        case 7:\n          _context31.prev = 7;\n          _context31.t0 = _context31[\"catch\"](0);\n          console.error(\"Error deleting \".concat(docType, \":\"), _context31.t0);\n          throw _context31.t0;\n        case 11:\n        case \"end\":\n          return _context31.stop();\n      }\n    }, _callee31, null, [[0, 7]]);\n  }));\n}\n// delete all instances of a type\nfunction deleteAllDocumentsInCollection(collectionName) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee33() {\n    var _this = this;\n    var collectionRef, snapshot, deletePromises;\n    return _regeneratorRuntime().wrap(function _callee33$(_context33) {\n      while (1) switch (_context33.prev = _context33.next) {\n        case 0:\n          _context33.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionName);\n          _context33.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          snapshot = _context33.sent;\n          // Delete all documents in the collection\n          deletePromises = snapshot.docs.map(function (doc) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee32() {\n              return _regeneratorRuntime().wrap(function _callee32$(_context32) {\n                while (1) switch (_context32.prev = _context32.next) {\n                  case 0:\n                    _context32.next = 2;\n                    return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(doc.ref);\n                  case 2:\n                  case \"end\":\n                    return _context32.stop();\n                }\n              }, _callee32);\n            }));\n          });\n          _context33.next = 8;\n          return Promise.all(deletePromises);\n        case 8:\n          console.log(\"All documents in the \".concat(collectionName, \" collection deleted successfully.\"));\n          _context33.next = 15;\n          break;\n        case 11:\n          _context33.prev = 11;\n          _context33.t0 = _context33[\"catch\"](0);\n          console.error(\"Error deleting all documents in \".concat(collectionName, \":\"), _context33.t0);\n          throw _context33.t0;\n        case 15:\n        case \"end\":\n          return _context33.stop();\n      }\n    }, _callee33, null, [[0, 11]]);\n  }));\n}\n////////////////////////////////////UPDATING/////////////////////////////////////////////\n// update a field in an instance\nfunction updateInstance(docType, docId, updates) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee34() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee34$(_context34) {\n      while (1) switch (_context34.prev = _context34.next) {\n        case 0:\n          _context34.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context34.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(docRef, updates);\n        case 4:\n          console.log(\"\".concat(docType, \" updated successfully.\"));\n          _context34.next = 11;\n          break;\n        case 7:\n          _context34.prev = 7;\n          _context34.t0 = _context34[\"catch\"](0);\n          console.error(\"Error updating \".concat(docType, \":\"), _context34.t0);\n          throw _context34.t0;\n        case 11:\n        case \"end\":\n          return _context34.stop();\n      }\n    }, _callee34, null, [[0, 7]]);\n  }));\n}\n// changes the ongoing status of an improvement work. if ongoing it is paused, if if paused onging.\n// user must be a manager\nfunction startOrPauseImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee35() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee35$(_context35) {\n      while (1) switch (_context35.prev = _context35.next) {\n        case 0:\n          _context35.prev = 0;\n          _context35.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context35.sent;\n          _context35.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context35.sent;\n          if (!(!user || !user.manager)) {\n            _context35.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change improvementWork status\");\n        case 11:\n          if (!improvementWork) {\n            _context35.next = 19;\n            break;\n          }\n          update = {\n            ongoing: !improvementWork.ongoing\n          };\n          _context35.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          return _context35.abrupt(\"return\", true);\n        case 19:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n          return _context35.abrupt(\"return\", false);\n        case 21:\n          _context35.next = 27;\n          break;\n        case 23:\n          _context35.prev = 23;\n          _context35.t0 = _context35[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context35.t0);\n          throw _context35.t0;\n        case 27:\n        case \"end\":\n          return _context35.stop();\n      }\n    }, _callee35, null, [[0, 23]]);\n  }));\n}\nfunction changePatientRiskLevel(userId, improvementWorkId, patientRiskLevel) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee36() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee36$(_context36) {\n      while (1) switch (_context36.prev = _context36.next) {\n        case 0:\n          _context36.prev = 0;\n          _context36.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context36.sent;\n          _context36.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context36.sent;\n          if (!(!user || !user.manager)) {\n            _context36.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change patientRiskLevel in improvement work\");\n        case 11:\n          if (!improvementWork) {\n            _context36.next = 18;\n            break;\n          }\n          update = {\n            patientRiskLevel: patientRiskLevel\n          };\n          _context36.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context36.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context36.next = 25;\n          break;\n        case 21:\n          _context36.prev = 21;\n          _context36.t0 = _context36[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context36.t0);\n          throw _context36.t0;\n        case 25:\n        case \"end\":\n          return _context36.stop();\n      }\n    }, _callee36, null, [[0, 21]]);\n  }));\n}\n// finalizes the improvement work. ongoing is set to false.\n// user must be a manager\nfunction finalizeImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee37() {\n    var user, update;\n    return _regeneratorRuntime().wrap(function _callee37$(_context37) {\n      while (1) switch (_context37.prev = _context37.next) {\n        case 0:\n          _context37.prev = 0;\n          _context37.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context37.sent;\n          if (!(!user || !user.manager)) {\n            _context37.next = 8;\n            break;\n          }\n          return _context37.abrupt(\"return\", false);\n        case 8:\n          update = {\n            completed: true,\n            ongoing: false\n          };\n          _context37.next = 11;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 11:\n          return _context37.abrupt(\"return\", true);\n        case 12:\n          _context37.next = 17;\n          break;\n        case 14:\n          _context37.prev = 14;\n          _context37.t0 = _context37[\"catch\"](0);\n          return _context37.abrupt(\"return\", false);\n        case 17:\n        case \"end\":\n          return _context37.stop();\n      }\n    }, _callee37, null, [[0, 14]]);\n  }));\n}\n\n//////////////////////////////// for later sprint\n//function add_upvotes\n//function add_notes\n//function add_intrested_users\n\n//# sourceURL=webpack://c3/./client/Database/database.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   addDocumentToImprovementWork: () => (/* binding */ addDocumentToImprovementWork),\n/* harmony export */   addMemberToImprovementWork: () => (/* binding */ addMemberToImprovementWork),\n/* harmony export */   addMemberToTask: () => (/* binding */ addMemberToTask),\n/* harmony export */   addNoteToUser: () => (/* binding */ addNoteToUser),\n/* harmony export */   auth: () => (/* binding */ auth),\n/* harmony export */   changePatientRiskLevel: () => (/* binding */ changePatientRiskLevel),\n/* harmony export */   createComment: () => (/* binding */ createComment),\n/* harmony export */   createHospital: () => (/* binding */ createHospital),\n/* harmony export */   createImprovementWork: () => (/* binding */ createImprovementWork),\n/* harmony export */   createSuggestion: () => (/* binding */ createSuggestion),\n/* harmony export */   createTaskOnImprovementWork: () => (/* binding */ createTaskOnImprovementWork),\n/* harmony export */   createUnit: () => (/* binding */ createUnit),\n/* harmony export */   createUser: () => (/* binding */ createUser),\n/* harmony export */   createdDocumentInKnowledgeBank: () => (/* binding */ createdDocumentInKnowledgeBank),\n/* harmony export */   db: () => (/* binding */ db),\n/* harmony export */   deleteAllDocumentsInCollection: () => (/* binding */ deleteAllDocumentsInCollection),\n/* harmony export */   deleteInstance: () => (/* binding */ deleteInstance),\n/* harmony export */   deleteSuggestion: () => (/* binding */ deleteSuggestion),\n/* harmony export */   finalizeImprovementWork: () => (/* binding */ finalizeImprovementWork),\n/* harmony export */   getComments: () => (/* binding */ getComments),\n/* harmony export */   getDocumentsByImprovementWork: () => (/* binding */ getDocumentsByImprovementWork),\n/* harmony export */   getFilteredImprovementWorks: () => (/* binding */ getFilteredImprovementWorks),\n/* harmony export */   getHospitals: () => (/* binding */ getHospitals),\n/* harmony export */   getImprovementWorkOwner: () => (/* binding */ getImprovementWorkOwner),\n/* harmony export */   getImprovementWorkResponsible: () => (/* binding */ getImprovementWorkResponsible),\n/* harmony export */   getImprovementWorks: () => (/* binding */ getImprovementWorks),\n/* harmony export */   getImprovementWorksForUser: () => (/* binding */ getImprovementWorksForUser),\n/* harmony export */   getObject: () => (/* binding */ getObject),\n/* harmony export */   getObjectById: () => (/* binding */ getObjectById),\n/* harmony export */   getSuggestions: () => (/* binding */ getSuggestions),\n/* harmony export */   getTasks: () => (/* binding */ getTasks),\n/* harmony export */   getUnits: () => (/* binding */ getUnits),\n/* harmony export */   getUsers: () => (/* binding */ getUsers),\n/* harmony export */   getUsersForImprovementWork: () => (/* binding */ getUsersForImprovementWork),\n/* harmony export */   startOrPauseImprovementWork: () => (/* binding */ startOrPauseImprovementWork),\n/* harmony export */   updateInstance: () => (/* binding */ updateInstance),\n/* harmony export */   upvoteComment: () => (/* binding */ upvoteComment),\n/* harmony export */   upvoteSuggestion: () => (/* binding */ upvoteSuggestion)\n/* harmony export */ });\n/* harmony import */ var firebase_app__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! firebase/app */ \"./node_modules/firebase/app/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_firestore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! firebase/firestore */ \"./node_modules/firebase/firestore/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_auth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! firebase/auth */ \"./node_modules/firebase/auth/dist/esm/index.esm.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n// C3 solutions databasen - ska användas för P&S\nvar firebaseConfig = {\n  apiKey: \"AIzaSyDqkaVZMr11J4mfnR0auqoQilZyPfyD-x4\",\n  authDomain: \"c3solutions-dc109.firebaseapp.com\",\n  projectId: \"c3solutions-dc109\",\n  storageBucket: \"c3solutions-dc109.appspot.com\",\n  messagingSenderId: \"902143402555\",\n  appId: \"1:902143402555:web:29213e81de0a0cba38b21e\"\n};\n//Backup databas - ska användas av R&D\n/*  const firebaseConfig = {\n   apiKey: \"AIzaSyAMfD8V0belL6GxbuoehL__6YTFZH4pyoc\",\n   authDomain: \"company3-backup.firebaseapp.com\",\n   projectId: \"company3-backup\",\n   storageBucket: \"company3-backup.appspot.com\",\n   messagingSenderId: \"820650717800\",\n   appId: \"1:820650717800:web:7557c7734ed59d3f7281dd\"\n };\n */\n//Bens egna reserv #nödfall\n/* const firebaseConfig = {\n  apiKey: \"AIzaSyBIsZq_yOsJljp1woIxndJO1GkW6soh-g4\",\n  authDomain: \"company3-456bb.firebaseapp.com\",\n  projectId: \"company3-456bb\",\n  storageBucket: \"company3-456bb.appspot.com\",\n  messagingSenderId: \"310033686522\",\n  appId: \"1:310033686522:web:63198bb0db679c98ee4e43\",\n  measurementId: \"G-PFLDQY00DB\"\n}; */\nvar app = (0,firebase_app__WEBPACK_IMPORTED_MODULE_0__.initializeApp)(firebaseConfig);\nvar auth = (0,firebase_auth__WEBPACK_IMPORTED_MODULE_2__.getAuth)();\nvar db = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getFirestore)(app);\nvar userCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\nvar unitCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\nvar improvementWorkCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\nvar taskCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\nvar hospitalCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\nvar suggestionCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\nvar knowledgeDocumentCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"knowledgeDocument\");\nvar userImprovementWorkCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"userImprovementWork\");\nvar userTaskCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"userTask\");\n////////////////////////////////////////Setters///////////////////////////////////////////////////////////////////\n// Function to create user a new user in database\n// takes in userId, unitId, firstname, lastname, email and password as string\n// throws error if transaction failed\nfunction createUser(hsaId, unitId, firstName, lastName, email, manager, role, uid) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n    var userRef;\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          _context.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, hsaId);\n          _context.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(userRef, {\n            id: userRef.id,\n            uid: uid,\n            unitId: unitId,\n            firstName: firstName,\n            lastName: lastName,\n            email: email,\n            role: role,\n            // TODO Replace with userImprovementWork collection\n            improvementWorks: [],\n            tasks: [],\n            manager: manager\n          });\n        case 4:\n          _context.next = 9;\n          break;\n        case 6:\n          _context.prev = 6;\n          _context.t0 = _context[\"catch\"](0);\n          console.log(_context.t0);\n        case 9:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee, null, [[0, 6]]);\n  }));\n}\nfunction createImprovementWork(id, name, currentStage, content,\n// Är detta description bör detta förtydligas. JA\nunitId, purpose,\n//Bör tas bort motsvaras av p2- mål med projektet\npatientRiskLevel, area, projectLeader,\n//Adding projectleader & members to the project\nmembers) {\n  var resources = arguments.length > 10 && arguments[10] !== undefined ? arguments[10] : \"Inte definerat ännu\";\n  var p1 = arguments.length > 11 && arguments[11] !== undefined ? arguments[11] : \"\";\n  var p2 = arguments.length > 12 && arguments[12] !== undefined ? arguments[12] : \"\";\n  var p3 = arguments.length > 13 && arguments[13] !== undefined ? arguments[13] : \"\";\n  var p4 = arguments.length > 14 && arguments[14] !== undefined ? arguments[14] : \"\";\n  var p5 = arguments.length > 15 && arguments[15] !== undefined ? arguments[15] : \"\";\n  var p6 = arguments.length > 16 && arguments[16] !== undefined ? arguments[16] : \"\";\n  var p7 = arguments.length > 17 && arguments[17] !== undefined ? arguments[17] : \"\";\n  var g1 = arguments.length > 18 && arguments[18] !== undefined ? arguments[18] : \"\";\n  var g2 = arguments.length > 19 && arguments[19] !== undefined ? arguments[19] : \"\";\n  var g3 = arguments.length > 20 && arguments[20] !== undefined ? arguments[20] : \"\";\n  var g4 = arguments.length > 21 && arguments[21] !== undefined ? arguments[21] : \"\";\n  var g5 = arguments.length > 22 && arguments[22] !== undefined ? arguments[22] : \"\";\n  var s1 = arguments.length > 23 && arguments[23] !== undefined ? arguments[23] : \"\";\n  var s2 = arguments.length > 24 && arguments[24] !== undefined ? arguments[24] : \"\";\n  var s3 = arguments.length > 25 && arguments[25] !== undefined ? arguments[25] : \"\";\n  var a1 = arguments.length > 26 && arguments[26] !== undefined ? arguments[26] : \"\";\n  var a2 = arguments.length > 27 && arguments[27] !== undefined ? arguments[27] : \"\";\n  var a3 = arguments.length > 28 && arguments[28] !== undefined ? arguments[28] : \"\";\n  var a4 = arguments.length > 29 && arguments[29] !== undefined ? arguments[29] : \"\";\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var improvementWorkData, improvementWorkRef, _improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          _context2.prev = 0;\n          improvementWorkData = {\n            name: name,\n            lowerCaseName: name.toLowerCase(),\n            currentStage: currentStage,\n            content: content,\n            purpose: purpose,\n            dateStarted: new Date(),\n            unitId: unitId,\n            completed: false,\n            ongoing: false,\n            tasks: [],\n            patientRiskLevel: patientRiskLevel,\n            area: area,\n            p1: p1,\n            p2: p2,\n            p3: p3,\n            p4: p4,\n            p5: p5,\n            p6: p6,\n            p7: p7,\n            g1: g1,\n            g2: g2,\n            g3: g3,\n            g4: g4,\n            g5: g5,\n            s1: s1,\n            s2: s2,\n            s3: s3,\n            a1: a1,\n            a2: a2,\n            a3: a3,\n            a4: a4,\n            resources: resources\n          };\n          if (!id) {\n            _context2.next = 8;\n            break;\n          }\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, id);\n          _context2.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(improvementWorkRef, Object.assign({\n            id: improvementWorkRef.id\n          }, improvementWorkData));\n        case 6:\n          _context2.next = 12;\n          break;\n        case 8:\n          _improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection);\n          _context2.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(_improvementWorkRef, improvementWorkData);\n        case 11:\n          id = _improvementWorkRef.id;\n        case 12:\n          //adding the projectleader and users to the project\n          addMemberToImprovementWork(projectLeader, id, false, true);\n          members.forEach(function (member) {\n            addMemberToImprovementWork(member, id, false, false);\n          });\n          _context2.next = 20;\n          break;\n        case 16:\n          _context2.prev = 16;\n          _context2.t0 = _context2[\"catch\"](0);\n          console.log(\"Error creating improvementWork: \", _context2.t0);\n          throw _context2.t0;\n        case 20:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2, null, [[0, 16]]);\n  }));\n}\nfunction addMemberToTask(userHsaId, taskId, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var relationRef;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          _context3.prev = 0;\n          relationRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userTaskCollection);\n          _context3.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(relationRef, {\n            id: relationRef.id,\n            userHsaId: userHsaId,\n            taskId: taskId,\n            isResponsibleFor: isResponsibleFor\n          });\n        case 4:\n          _context3.next = 10;\n          break;\n        case 6:\n          _context3.prev = 6;\n          _context3.t0 = _context3[\"catch\"](0);\n          console.log(\"Error adding member to task: \", _context3.t0);\n          throw _context3.t0;\n        case 10:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3, null, [[0, 6]]);\n  }));\n}\nfunction addMemberToImprovementWork(userHsaId, improvementWorkId, isOwner, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n    var relationRef;\n    return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n      while (1) switch (_context4.prev = _context4.next) {\n        case 0:\n          _context4.prev = 0;\n          relationRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userImprovementWorkCollection);\n          _context4.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(relationRef, {\n            id: relationRef.id,\n            userHsaId: userHsaId,\n            improvementWorkId: improvementWorkId,\n            isOwner: isOwner,\n            isResponsibleFor: isResponsibleFor\n          });\n        case 4:\n          _context4.next = 10;\n          break;\n        case 6:\n          _context4.prev = 6;\n          _context4.t0 = _context4[\"catch\"](0);\n          console.log(\"Error adding member to improvementWork: \", _context4.t0);\n          throw _context4.t0;\n        case 10:\n        case \"end\":\n          return _context4.stop();\n      }\n    }, _callee4, null, [[0, 6]]);\n  }));\n}\nfunction createTaskOnImprovementWork(taskId, improvementWorkId, name, deadlineDate, startDate, stage, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n    var taskData, taskRef, _taskRef;\n    return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n      while (1) switch (_context5.prev = _context5.next) {\n        case 0:\n          _context5.prev = 0;\n          taskData = {\n            improvementWorkId: improvementWorkId,\n            name: name,\n            deadlineDate: deadlineDate,\n            startDate: startDate,\n            stage: stage,\n            content: content,\n            completed: false\n          };\n          if (!taskId) {\n            _context5.next = 8;\n            break;\n          }\n          taskRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context5.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(taskRef, Object.assign({\n            id: taskRef.id\n          }, taskData));\n        case 6:\n          _context5.next = 11;\n          break;\n        case 8:\n          _taskRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection);\n          _context5.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(_taskRef, taskData);\n        case 11:\n          _context5.next = 17;\n          break;\n        case 13:\n          _context5.prev = 13;\n          _context5.t0 = _context5[\"catch\"](0);\n          console.log(\"Error creating task: \", _context5.t0);\n          throw _context5.t0;\n        case 17:\n        case \"end\":\n          return _context5.stop();\n      }\n    }, _callee5, null, [[0, 13]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction createdDocumentInKnowledgeBank(documentUrl, name, projectId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n      while (1) switch (_context6.prev = _context6.next) {\n        case 0:\n          _context6.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(knowledgeDocumentCollection);\n          _context6.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            name: name,\n            projectId: projectId\n          });\n        case 4:\n          _context6.next = 10;\n          break;\n        case 6:\n          _context6.prev = 6;\n          _context6.t0 = _context6[\"catch\"](0);\n          console.log(\"Error adding document: \", _context6.t0);\n          throw _context6.t0;\n        case 10:\n        case \"end\":\n          return _context6.stop();\n      }\n    }, _callee6, null, [[0, 6]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction addDocumentToImprovementWork(documentUrl, name, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var improvementWorkRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          _context7.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkRef, \"documents\");\n          _context7.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            timestamp: new Date(),\n            name: name\n          });\n        case 5:\n          _context7.next = 11;\n          break;\n        case 7:\n          _context7.prev = 7;\n          _context7.t0 = _context7[\"catch\"](0);\n          console.log(\"Error adding document: \", _context7.t0);\n          throw _context7.t0;\n        case 11:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7, null, [[0, 7]]);\n  }));\n}\nfunction getDocumentsByImprovementWork(improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var q, querySnapshot, documents, _iterator, _step, _doc, documentId, documentDoc;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          _context8.prev = 0;\n          console.log(\"Getting documents for improvementwork: \", improvementWorkId);\n          // Query the userImprovementWork collection for relations involving this user\n          q = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)(knowledgeDocumentCollection, (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"projectId\", \"==\", improvementWorkId));\n          _context8.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 5:\n          querySnapshot = _context8.sent;\n          // Fetch each related improvementWork document\n          documents = [];\n          _iterator = _createForOfIteratorHelper(querySnapshot.docs);\n          _context8.prev = 8;\n          _iterator.s();\n        case 10:\n          if ((_step = _iterator.n()).done) {\n            _context8.next = 19;\n            break;\n          }\n          _doc = _step.value;\n          documentId = _doc.data().id;\n          _context8.next = 15;\n          return getObjectById(\"knowledgeDocument\", documentId);\n        case 15:\n          documentDoc = _context8.sent;\n          documents.push(documentDoc);\n        case 17:\n          _context8.next = 10;\n          break;\n        case 19:\n          _context8.next = 24;\n          break;\n        case 21:\n          _context8.prev = 21;\n          _context8.t0 = _context8[\"catch\"](8);\n          _iterator.e(_context8.t0);\n        case 24:\n          _context8.prev = 24;\n          _iterator.f();\n          return _context8.finish(24);\n        case 27:\n          return _context8.abrupt(\"return\", documents);\n        case 30:\n          _context8.prev = 30;\n          _context8.t1 = _context8[\"catch\"](0);\n          console.error(\"Error getting documents for improvmentwork: \", _context8.t1);\n          throw _context8.t1;\n        case 34:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8, null, [[0, 30], [8, 21, 24, 27]]);\n  }));\n}\nfunction createHospital(hospitalId,\n// should be auto?\nname) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n    var hospitalData, hospitalRef, _hospitalRef;\n    return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n      while (1) switch (_context9.prev = _context9.next) {\n        case 0:\n          _context9.prev = 0;\n          hospitalData = {\n            name: name,\n            units: []\n          };\n          if (!hospitalId) {\n            _context9.next = 8;\n            break;\n          }\n          hospitalRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context9.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(hospitalRef, Object.assign({\n            id: hospitalRef.id\n          }, hospitalData));\n        case 6:\n          _context9.next = 11;\n          break;\n        case 8:\n          _hospitalRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection);\n          _context9.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(_hospitalRef, hospitalData);\n        case 11:\n          _context9.next = 17;\n          break;\n        case 13:\n          _context9.prev = 13;\n          _context9.t0 = _context9[\"catch\"](0);\n          console.log(\"Error creating hospital: \", _context9.t0);\n          throw _context9.t0;\n        case 17:\n        case \"end\":\n          return _context9.stop();\n      }\n    }, _callee9, null, [[0, 13]]);\n  }));\n}\nfunction createUnit(unitId,\n//should be auto?\nhospitalId, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var unitData, unitRef, _unitRef;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          _context10.prev = 0;\n          unitData = {\n            hospitalId: hospitalId,\n            name: name\n          };\n          if (!unitId) {\n            _context10.next = 8;\n            break;\n          }\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context10.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(unitRef, Object.assign({\n            id: unitRef.id\n          }, unitData));\n        case 6:\n          _context10.next = 11;\n          break;\n        case 8:\n          _unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection);\n          _context10.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(_unitRef, unitData);\n        case 11:\n          _context10.next = 17;\n          break;\n        case 13:\n          _context10.prev = 13;\n          _context10.t0 = _context10[\"catch\"](0);\n          console.log(\"Error creating unit: \", _context10.t0);\n          throw _context10.t0;\n        case 17:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10, null, [[0, 13]]);\n  }));\n}\nfunction createSuggestion(id, creatorHsaId, name, area, content, purpose, measure, ideas,\n//need: boolean,\nunitId, departmentId, isPublic) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {\n    var suggestionData, suggestionRef, _suggestionRef;\n    return _regeneratorRuntime().wrap(function _callee11$(_context11) {\n      while (1) switch (_context11.prev = _context11.next) {\n        case 0:\n          _context11.prev = 0;\n          suggestionData = {\n            creatorHsaId: creatorHsaId,\n            name: name,\n            area: area,\n            content: content,\n            purpose: purpose,\n            measure: measure,\n            ideas: ideas,\n            //need,\n            unitId: unitId,\n            departmentId: departmentId,\n            \"public\": isPublic,\n            upvotes: [],\n            comments: [],\n            dateCreated: new Date()\n          };\n          if (!id) {\n            _context11.next = 8;\n            break;\n          }\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, id);\n          _context11.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(suggestionRef, Object.assign({\n            id: suggestionRef.id\n          }, suggestionData));\n        case 6:\n          _context11.next = 11;\n          break;\n        case 8:\n          _suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection);\n          _context11.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(_suggestionRef, suggestionData);\n        case 11:\n          _context11.next = 17;\n          break;\n        case 13:\n          _context11.prev = 13;\n          _context11.t0 = _context11[\"catch\"](0);\n          console.log(\"Error creating suggestion: \", _context11.t0);\n          throw _context11.t0;\n        case 17:\n        case \"end\":\n          return _context11.stop();\n      }\n    }, _callee11, null, [[0, 13]]);\n  }));\n}\nfunction deleteSuggestion(suggestionId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {\n    var suggestionRef;\n    return _regeneratorRuntime().wrap(function _callee12$(_context12) {\n      while (1) switch (_context12.prev = _context12.next) {\n        case 0:\n          _context12.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          _context12.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(suggestionRef);\n        case 4:\n          _context12.next = 10;\n          break;\n        case 6:\n          _context12.prev = 6;\n          _context12.t0 = _context12[\"catch\"](0);\n          console.log(\"Error deleting suggestion: \", _context12.t0);\n          throw _context12.t0;\n        case 10:\n        case \"end\":\n          return _context12.stop();\n      }\n    }, _callee12, null, [[0, 6]]);\n  }));\n}\n// Upvote a suggestion for a user\n// takes in suggestion id, user HSAid\n// returns error if transaction failed\nfunction upvoteSuggestion(suggestionId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {\n    var suggestionRef;\n    return _regeneratorRuntime().wrap(function _callee13$(_context13) {\n      while (1) switch (_context13.prev = _context13.next) {\n        case 0:\n          _context13.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId); // Atomically add a update to the upvote array field.\n          _context13.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(suggestionRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 4:\n          _context13.next = 10;\n          break;\n        case 6:\n          _context13.prev = 6;\n          _context13.t0 = _context13[\"catch\"](0);\n          console.log(\"Error upvoting suggestion: \", _context13.t0);\n          throw _context13.t0;\n        case 10:\n        case \"end\":\n          return _context13.stop();\n      }\n    }, _callee13, null, [[0, 6]]);\n  }));\n}\n//creates a comment\n// takes in commenters id, suggestion id and content as string\n// throws error if transaction failed\nfunction createComment(\n// change to subcollection\ncommenterHsaId, suggestionId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee14() {\n    var suggestionRef, commentCollection, commentRef;\n    return _regeneratorRuntime().wrap(function _callee14$(_context14) {\n      while (1) switch (_context14.prev = _context14.next) {\n        case 0:\n          _context14.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          _context14.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 4:\n          commentCollection = _context14.sent;\n          _context14.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 7:\n          commentRef = _context14.sent;\n          _context14.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(commentRef, {\n            id: commentRef.id,\n            commenterHsaId: commenterHsaId,\n            content: content,\n            dateCreated: new Date(),\n            upvotes: []\n          });\n        case 10:\n          _context14.next = 16;\n          break;\n        case 12:\n          _context14.prev = 12;\n          _context14.t0 = _context14[\"catch\"](0);\n          console.log(\"Error creating comment: \", _context14.t0);\n          throw _context14.t0;\n        case 16:\n        case \"end\":\n          return _context14.stop();\n      }\n    }, _callee14, null, [[0, 12]]);\n  }));\n}\n// Upvote a comment for a user\n// takes in suggestionId, commentId and userId as strings\n// return error if transaction failed\nfunction upvoteComment(suggestionId, commentId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee15() {\n    var suggestionRef, commentRef;\n    return _regeneratorRuntime().wrap(function _callee15$(_context15) {\n      while (1) switch (_context15.prev = _context15.next) {\n        case 0:\n          _context15.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          commentRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionRef, \"comment\", commentId); // Atomically add a update to the upvote array field.\n          _context15.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(commentRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 5:\n          _context15.next = 11;\n          break;\n        case 7:\n          _context15.prev = 7;\n          _context15.t0 = _context15[\"catch\"](0);\n          console.log(\"Error upvoting comment: \", _context15.t0);\n          throw _context15.t0;\n        case 11:\n        case \"end\":\n          return _context15.stop();\n      }\n    }, _callee15, null, [[0, 7]]);\n  }));\n}\n//add a note to a user\n// takes in userHsaId and content as string\n// throws error if transaction failed\nfunction addNoteToUser(userHsaId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee16() {\n    var userRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee16$(_context16) {\n      while (1) switch (_context16.prev = _context16.next) {\n        case 0:\n          _context16.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userRef, \"notes\");\n          _context16.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            content: content,\n            dateCreated: new Date()\n          });\n        case 5:\n          _context16.next = 11;\n          break;\n        case 7:\n          _context16.prev = 7;\n          _context16.t0 = _context16[\"catch\"](0);\n          console.log(\"Error adding document: \", _context16.t0);\n          throw _context16.t0;\n        case 11:\n        case \"end\":\n          return _context16.stop();\n      }\n    }, _callee16, null, [[0, 7]]);\n  }));\n}\n// export to setters to be able to use in other files\n\n//////////////////////////////////////////////GETTERS/////////////////////////////////////////////////////////////////////\n// Get any object\n// input is the database type as a string.\n// output is the whole collection of that type.\nfunction getObject(collectionPath) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee17() {\n    var collectionRef, querySnapshot, result;\n    return _regeneratorRuntime().wrap(function _callee17$(_context17) {\n      while (1) switch (_context17.prev = _context17.next) {\n        case 0:\n          _context17.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionPath);\n          _context17.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          querySnapshot = _context17.sent;\n          result = [];\n          querySnapshot.forEach(function (doc) {\n            result.push(doc.data());\n          });\n          return _context17.abrupt(\"return\", result);\n        case 10:\n          _context17.prev = 10;\n          _context17.t0 = _context17[\"catch\"](0);\n          console.error(\"Error getting collection data\", _context17.t0);\n          throw _context17.t0;\n        case 14:\n        case \"end\":\n          return _context17.stop();\n      }\n    }, _callee17, null, [[0, 10]]);\n  }));\n}\n/**\n * Asynchronously retrieves a single document object from the specified collection path and document ID.\n * If the document does not exist, logs a warning and returns null.\n *\n * @param {string} collectionPath - The path to the collection in the database (\"improvementWork\", \"hospital\", \"suggestion\", \"task\", \"unit\", \"users\")\n * @param {string} documentId - The ID of the document to retrieve.\n * @returns {Promise<any|null>} A promise that resolves to the document object if found, or null if not.\n *\n * @throws Will throw an error if there is an issue during retrieval from the database.\n */\nfunction getObjectById(collectionPath, documentId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee18() {\n    var docRef, docSnapshot;\n    return _regeneratorRuntime().wrap(function _callee18$(_context18) {\n      while (1) switch (_context18.prev = _context18.next) {\n        case 0:\n          _context18.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, collectionPath, documentId);\n          _context18.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDoc)(docRef);\n        case 4:\n          docSnapshot = _context18.sent;\n          if (!docSnapshot.exists()) {\n            _context18.next = 9;\n            break;\n          }\n          return _context18.abrupt(\"return\", Object.assign({\n            id: docSnapshot.id\n          }, docSnapshot.data()));\n        case 9:\n          console.warn(\"No such document! \".concat(collectionPath, \"/\").concat(documentId));\n          return _context18.abrupt(\"return\", null);\n        case 11:\n          _context18.next = 17;\n          break;\n        case 13:\n          _context18.prev = 13;\n          _context18.t0 = _context18[\"catch\"](0);\n          console.error(\"Error getting object\", _context18.t0);\n          throw _context18.t0;\n        case 17:\n        case \"end\":\n          return _context18.stop();\n      }\n    }, _callee18, null, [[0, 13]]);\n  }));\n}\n/**\n * Asynchronously retrieves comments for a given suggestion.\n *\n * @param {Object} params - The parameters for fetching comments.\n * @param {string} params.suggestionId - The ID of the suggestion to fetch comments for.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - The criterion to sort the comments by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Determines if the sorting should be in ascending order. Defaults to false (descending).\n * @returns {Promise<any[]>} A promise that resolves to an array of comment objects.\n *\n * @throws Will throw an error if the comments cannot be retrieved.\n */\nfunction getComments(_ref) {\n  var suggestionId = _ref.suggestionId,\n    _ref$sortBy = _ref.sortBy,\n    sortBy = _ref$sortBy === void 0 ? \"dateCreated\" : _ref$sortBy,\n    _ref$ascending = _ref.ascending,\n    ascending = _ref$ascending === void 0 ? false : _ref$ascending;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee19() {\n    var suggestionRef, commentsQuery, commentsSnapshot, comments;\n    return _regeneratorRuntime().wrap(function _callee19$(_context19) {\n      while (1) switch (_context19.prev = _context19.next) {\n        case 0:\n          _context19.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, \"suggestionCollection\", suggestionId);\n          commentsQuery = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\"), (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          _context19.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(commentsQuery);\n        case 5:\n          commentsSnapshot = _context19.sent;\n          comments = [];\n          commentsSnapshot.forEach(function (doc) {\n            comments.push(doc.data());\n          });\n          return _context19.abrupt(\"return\", comments);\n        case 11:\n          _context19.prev = 11;\n          _context19.t0 = _context19[\"catch\"](0);\n          console.error(\"Error getting comments for suggestion: \", _context19.t0);\n          throw _context19.t0;\n        case 15:\n        case \"end\":\n          return _context19.stop();\n      }\n    }, _callee19, null, [[0, 11]]);\n  }));\n}\n//Filtering suggestions on unitId AND creatorHsaId\n//Sort suggestions on dateCreated OR upvotes\n/**\n * Asynchronously retrieves an array of suggestions from the database, with various filters and sorting options.\n *\n * @param {Object} params - The parameters for filtering and sorting suggestions.\n * @param {string} [params.id] - Optional ID to filter suggestions by a specific identifier.\n * @param {string} [params.creatorHsaId] - Optional HSA ID to filter suggestions by the creator's HSA ID.\n * @param {string} [params.unitId] - Optional unit ID to filter suggestions by a specific unit.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - Criterion to sort the suggestions by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Flag indicating if sorting should be ascending. Defaults to false (descending order).\n * @param {boolean} [params.isPublic=true] - Flag indicating whether to filter for public suggestions. Defaults to true.\n * @returns {Promise<any[]>} A promise that resolves to an array of suggestion objects.\n *\n * @throws Will throw an error if there is an issue retrieving suggestions.\n */\nfunction getSuggestions(_ref2) {\n  var id = _ref2.id,\n    creatorHsaId = _ref2.creatorHsaId,\n    name = _ref2.name,\n    unitId = _ref2.unitId,\n    _ref2$sortBy = _ref2.sortBy,\n    sortBy = _ref2$sortBy === void 0 ? \"dateCreated\" : _ref2$sortBy,\n    _ref2$ascending = _ref2.ascending,\n    ascending = _ref2$ascending === void 0 ? false : _ref2$ascending,\n    _ref2$isPublic = _ref2.isPublic,\n    isPublic = _ref2$isPublic === void 0 ? true : _ref2$isPublic;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee20() {\n    var collectionRef, constraints, q, querySnapshot, suggestions;\n    return _regeneratorRuntime().wrap(function _callee20$(_context20) {\n      while (1) switch (_context20.prev = _context20.next) {\n        case 0:\n          _context20.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (creatorHsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"creatorHsaId\", \"==\", creatorHsaId));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", name));\n            sortBy = \"name\";\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"public\", \"==\", isPublic));\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context20.next = 12;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 12:\n          querySnapshot = _context20.sent;\n          suggestions = [];\n          querySnapshot.forEach(function (doc) {\n            suggestions.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context20.abrupt(\"return\", suggestions);\n        case 18:\n          _context20.prev = 18;\n          _context20.t0 = _context20[\"catch\"](0);\n          console.log(\"Error retrieving suggestions by department: \", _context20.t0);\n          throw _context20.t0;\n        case 22:\n        case \"end\":\n          return _context20.stop();\n      }\n    }, _callee20, null, [[0, 18]]);\n  }));\n}\n/**\n * Asynchronously searches for hospital documents in the database.\n * It can filter the results by the hospital's name, ID, or both.\n * If no parameters are provided, it retrieves all hospitals.\n *\n * @param {Object} params - An object containing the search parameters.\n * @param {string} [params.hospitalName] - Optional name of the hospital to filter the search.\n * @param {string} [params.hospitalId] - Optional unique identifier of the hospital to filter the search.\n * @returns {Promise<any[]>} A promise that resolves to an array of hospital objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getHospitals(_ref3) {\n  var hospitalName = _ref3.hospitalName,\n    hospitalId = _ref3.hospitalId;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee21() {\n    var collectionRef, constraints, q, querySnapshot, hospitals;\n    return _regeneratorRuntime().wrap(function _callee21$(_context21) {\n      while (1) switch (_context21.prev = _context21.next) {\n        case 0:\n          _context21.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\n          constraints = [];\n          if (hospitalName) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", hospitalName));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hospitalId));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context21.next = 8;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 8:\n          querySnapshot = _context21.sent;\n          hospitals = [];\n          querySnapshot.forEach(function (doc) {\n            hospitals.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context21.abrupt(\"return\", hospitals);\n        case 14:\n          _context21.prev = 14;\n          _context21.t0 = _context21[\"catch\"](0);\n          console.log(\"Error retrieving Hospitals\", _context21.t0);\n          throw _context21.t0;\n        case 18:\n        case \"end\":\n          return _context21.stop();\n      }\n    }, _callee21, null, [[0, 14]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of improvement work documents based on various filter criteria.\n * It supports filtering by ID, Nolan stage, unit ID, completion status, ongoing status, and patient risk level.\n * It also supports sorting by the start date of the improvement work in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.id] - Optional identifier to filter the improvement works.\n * @param {string} [params.nolanStage] - Optional Nolan stage to filter the improvement works.\n * @param {string} [params.unitId] - Optional unit ID to filter the improvement works.\n * @param {boolean} [params.completed] - Optional flag to filter the improvement works by their completion status.\n * @param {boolean} [params.ongoing] - Optional flag to filter the improvement works by their ongoing status.\n * @param {string} [params.patientRiskLevel] - Optional patient risk level to filter the improvement works.\n * @param {boolean} [params.ascendingDates=false] - Optional flag for sorting by date in ascending order. Defaults to false.\n * @returns {Promise<any[]>} A promise that resolves to an array of improvement work objects that match the criteria.\n *\n * @throws Will throw an error if there is a problem retrieving the improvement works.\n */\nfunction getImprovementWorks(_ref4) {\n  var id = _ref4.id,\n    name = _ref4.name,\n    nolanStage = _ref4.nolanStage,\n    unitId = _ref4.unitId,\n    completed = _ref4.completed,\n    ongoing = _ref4.ongoing,\n    patientRiskLevel = _ref4.patientRiskLevel,\n    _ref4$ascendingDates = _ref4.ascendingDates,\n    ascendingDates = _ref4$ascendingDates === void 0 ? false : _ref4$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee22() {\n    var collectionRef, constraints, q, querySnapshot, improvementWorks;\n    return _regeneratorRuntime().wrap(function _callee22$(_context22) {\n      while (1) switch (_context22.prev = _context22.next) {\n        case 0:\n          _context22.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            console.log(\"inne i ifsatsen i databasen\");\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (nolanStage) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"currentStage\", \"==\", nolanStage));\n          }\n          if (completed != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"completed\", \"==\", completed));\n          }\n          if (ongoing !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"ongoing\", \"==\", ongoing));\n          }\n          if (patientRiskLevel) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"patientRiskLevel\", \"==\", patientRiskLevel));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"lowerCaseName\", \">=\", name.toLowerCase()));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"lowerCaseName\", \"<=\", name.toLowerCase() + \"~\"));\n          } else {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"dateStarted\", ascendingDates ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context22.next = 13;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 13:\n          querySnapshot = _context22.sent;\n          improvementWorks = [];\n          querySnapshot.forEach(function (doc) {\n            improvementWorks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context22.abrupt(\"return\", improvementWorks);\n        case 19:\n          _context22.prev = 19;\n          _context22.t0 = _context22[\"catch\"](0);\n          console.log(\"Error retrieving improvementWorks: \", _context22.t0);\n          throw _context22.t0;\n        case 23:\n        case \"end\":\n          return _context22.stop();\n      }\n    }, _callee22, null, [[0, 19]]);\n  }));\n}\n// Gets improvementWorks where each field matches the union of elements in the input array for each fo the fields\nfunction getFilteredImprovementWorks(_ref5) {\n  var patientRiskLevels = _ref5.patientRiskLevels,\n    nolanStages = _ref5.nolanStages,\n    units = _ref5.units,\n    _ref5$ascendingDates = _ref5.ascendingDates,\n    ascendingDates = _ref5$ascendingDates === void 0 ? false : _ref5$ascendingDates,\n    completed = _ref5.completed;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee23() {\n    var collectionRef, constraints, q, querySnapshot, improvementWorks;\n    return _regeneratorRuntime().wrap(function _callee23$(_context23) {\n      while (1) switch (_context23.prev = _context23.next) {\n        case 0:\n          _context23.prev = 0;\n          console.log(\"Getting improvement works with the following constraints\", patientRiskLevels, nolanStages, units, ascendingDates);\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\n          constraints = [];\n          if (patientRiskLevels && patientRiskLevels.length) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"patientRiskLevel\", \"in\", patientRiskLevels));\n          }\n          if (nolanStages && nolanStages.length) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"currentStage\", \"in\", nolanStages));\n          }\n          if (units && units.length) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"in\", units));\n          }\n          // If none of the array filters are provided, default to ordering by date.\n          if (!patientRiskLevels.length && !nolanStages.length && !units.length) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"dateStarted\", ascendingDates ? \"asc\" : \"desc\"));\n          }\n          if (completed) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"completed\", \"==\", completed));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context23.next = 12;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 12:\n          querySnapshot = _context23.sent;\n          improvementWorks = [];\n          querySnapshot.forEach(function (doc) {\n            improvementWorks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context23.abrupt(\"return\", improvementWorks);\n        case 18:\n          _context23.prev = 18;\n          _context23.t0 = _context23[\"catch\"](0);\n          console.error(\"Error retrieving filtered improvementWorks: \", _context23.t0);\n          throw _context23.t0;\n        case 22:\n        case \"end\":\n          return _context23.stop();\n      }\n    }, _callee23, null, [[0, 18]]);\n  }));\n}\nfunction getImprovementWorkOwner(improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee24() {\n    var constraints, q, querySnapshot, owner;\n    return _regeneratorRuntime().wrap(function _callee24$(_context24) {\n      while (1) switch (_context24.prev = _context24.next) {\n        case 0:\n          _context24.prev = 0;\n          constraints = [];\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"isOwner\", \"==\", true));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [userImprovementWorkCollection].concat(constraints));\n          _context24.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 7:\n          querySnapshot = _context24.sent;\n          if (!querySnapshot.empty) {\n            _context24.next = 13;\n            break;\n          }\n          console.log(\"Improvement work \", improvementWorkId, \" has no owner\");\n          return _context24.abrupt(\"return\", null);\n        case 13:\n          owner = querySnapshot.docs[0].data().userHsaId;\n          return _context24.abrupt(\"return\", owner);\n        case 15:\n          _context24.next = 20;\n          break;\n        case 17:\n          _context24.prev = 17;\n          _context24.t0 = _context24[\"catch\"](0);\n          console.log(_context24.t0);\n        case 20:\n        case \"end\":\n          return _context24.stop();\n      }\n    }, _callee24, null, [[0, 17]]);\n  }));\n}\nfunction getImprovementWorkResponsible(improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee25() {\n    var constraints, q, querySnapshot, responsibleId, responsible;\n    return _regeneratorRuntime().wrap(function _callee25$(_context25) {\n      while (1) switch (_context25.prev = _context25.next) {\n        case 0:\n          _context25.prev = 0;\n          constraints = [];\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"isResponsibleFor\", \"==\", true));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [userImprovementWorkCollection].concat(constraints));\n          _context25.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 7:\n          querySnapshot = _context25.sent;\n          if (!querySnapshot.empty) {\n            _context25.next = 13;\n            break;\n          }\n          console.log(\"Improvement work \", improvementWorkId, \" has no responsible\");\n          return _context25.abrupt(\"return\", null);\n        case 13:\n          responsibleId = querySnapshot.docs[0].data().userHsaId;\n          _context25.next = 16;\n          return getObjectById(\"users\", responsibleId);\n        case 16:\n          responsible = _context25.sent;\n          return _context25.abrupt(\"return\", responsible);\n        case 18:\n          _context25.next = 23;\n          break;\n        case 20:\n          _context25.prev = 20;\n          _context25.t0 = _context25[\"catch\"](0);\n          console.log(_context25.t0);\n        case 23:\n        case \"end\":\n          return _context25.stop();\n      }\n    }, _callee25, null, [[0, 20]]);\n  }));\n}\n// TODO getUsersForTask!\n/**\n * Asynchronously retrieves user documents from the database based on various filter criteria.\n * It can filter by the Health Savings Account ID (hsaId), unit ID, and unique identifier (uid).\n * Additionally, it can sort the results by first name in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.hsaId] - Optional HSA ID to filter the users.\n * @param {string} [params.unitId] - Optional unit ID to filter the users.\n * @param {boolean} [params.ascendingFirstNames=false] - Optional flag to sort by first names in ascending order. Defaults to false (descending order).\n * @param {string} [params.uid] - Optional unique identifier to filter the users.\n * @returns {Promise<any[]>} A promise that resolves to an array of user objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUsers(_ref6) {\n  var hsaId = _ref6.hsaId,\n    name = _ref6.name,\n    unitId = _ref6.unitId,\n    _ref6$ascendingFirstN = _ref6.ascendingFirstNames,\n    ascendingFirstNames = _ref6$ascendingFirstN === void 0 ? false : _ref6$ascendingFirstN,\n    uid = _ref6.uid;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee26() {\n    var collectionRef, constraints, q, querySnapshot, users;\n    return _regeneratorRuntime().wrap(function _callee26$(_context26) {\n      while (1) switch (_context26.prev = _context26.next) {\n        case 0:\n          _context26.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\n          constraints = [];\n          if (hsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hsaId));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (uid) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"uid\", \"==\", uid));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", name));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"firstName\", ascendingFirstNames ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context26.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 11:\n          querySnapshot = _context26.sent;\n          users = [];\n          querySnapshot.forEach(function (doc) {\n            users.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context26.abrupt(\"return\", users);\n        case 17:\n          _context26.prev = 17;\n          _context26.t0 = _context26[\"catch\"](0);\n          console.log(\"Error retrieving users by department: \", _context26.t0);\n          throw _context26.t0;\n        case 21:\n        case \"end\":\n          return _context26.stop();\n      }\n    }, _callee26, null, [[0, 17]]);\n  }));\n}\n// TODO getTasksForUser!\n/**\n * Asynchronously retrieves an array of task documents from the database based on several filter and sorting criteria.\n * Filters include task ID, user ID and their responsibility status, and related improvement work ID.\n * Results can be sorted by date either in ascending or descending order.\n *\n * @param {Object} params - Parameters to filter and sort the task results.\n * @param {string} [params.taskId] - Optional task ID to filter the tasks.\n * @param {string} [params.userId] - Optional user ID to identify tasks related to a user.\n * @param {boolean} [params.isResponsibleFor] - Optional flag to filter tasks where the user is marked as responsible.\n * @param {string} [params.improvementWorkId] - Optional improvement work ID to filter tasks related to a specific improvement work.\n * @param {boolean} [params.ascendingDates=false] - Optional flag to sort tasks by date in ascending order; defaults to descending order.\n * @returns {Promise<any[]>} A promise that resolves to an array of task objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getTasks(_ref7) {\n  var improvementWorkId = _ref7.improvementWorkId,\n    stage = _ref7.stage,\n    _ref7$ascendingDates = _ref7.ascendingDates,\n    ascendingDates = _ref7$ascendingDates === void 0 ? false : _ref7$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee27() {\n    var collectionRef, constraints, q, querySnapshot, tasks;\n    return _regeneratorRuntime().wrap(function _callee27$(_context27) {\n      while (1) switch (_context27.prev = _context27.next) {\n        case 0:\n          _context27.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\n          constraints = [];\n          if (stage) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"stage\", \"==\", stage));\n          }\n          if (improvementWorkId != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"startDate\", ascendingDates ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context27.next = 8;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 8:\n          querySnapshot = _context27.sent;\n          tasks = [];\n          querySnapshot.forEach(function (doc) {\n            tasks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context27.abrupt(\"return\", tasks);\n        case 14:\n          _context27.prev = 14;\n          _context27.t0 = _context27[\"catch\"](0);\n          console.log(\"Error retrieving task by department: \", _context27.t0);\n          throw _context27.t0;\n        case 18:\n        case \"end\":\n          return _context27.stop();\n      }\n    }, _callee27, null, [[0, 14]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of unit documents from the database based on various filter criteria.\n * Filters can be applied based on unit ID, hospital ID, and unit name.\n * Additionally, results can be sorted by unit names in ascending or descending order.\n *\n * @param {Object} params - The parameters object containing filter and sorting options.\n * @param {string} [params.unitId] - Optional unit ID to filter the units.\n * @param {string} [params.hospitalId] - Optional hospital ID to filter units within a specific hospital.\n * @param {string} [params.name] - Optional name to filter units by a specific name.\n * @param {boolean} [params.ascendingUnitNames=false] - Optional flag to sort units by name in ascending order, defaults to descending.\n * @returns {Promise<any[]>} A promise that resolves to an array of unit objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUnits(_ref8) {\n  var unitId = _ref8.unitId,\n    hospitalId = _ref8.hospitalId,\n    name = _ref8.name,\n    _ref8$ascendingUnitNa = _ref8.ascendingUnitNames,\n    ascendingUnitNames = _ref8$ascendingUnitNa === void 0 ? false : _ref8$ascendingUnitNa;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee28() {\n    var collectionRef, constraints, q, querySnapshot, units;\n    return _regeneratorRuntime().wrap(function _callee28$(_context28) {\n      while (1) switch (_context28.prev = _context28.next) {\n        case 0:\n          _context28.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\n          constraints = [];\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", unitId));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", name));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"hospitalId\", \"==\", hospitalId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"name\", ascendingUnitNames ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context28.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context28.sent;\n          units = [];\n          querySnapshot.forEach(function (doc) {\n            units.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context28.abrupt(\"return\", units);\n        case 15:\n          _context28.prev = 15;\n          _context28.t0 = _context28[\"catch\"](0);\n          console.log(\"Error retrieving units by hospitalId: \", _context28.t0);\n          throw _context28.t0;\n        case 19:\n        case \"end\":\n          return _context28.stop();\n      }\n    }, _callee28, null, [[0, 15]]);\n  }));\n}\nfunction getImprovementWorksForUser(userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee29() {\n    var q, querySnapshot, improvementWorks, _iterator2, _step2, _doc2, improvementWorkId, improvementWorkDoc;\n    return _regeneratorRuntime().wrap(function _callee29$(_context29) {\n      while (1) switch (_context29.prev = _context29.next) {\n        case 0:\n          _context29.prev = 0;\n          console.log(\"Getting improvementworks for user: \", userHsaId);\n          // Query the userImprovementWork collection for relations involving this user\n          q = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)(userImprovementWorkCollection, (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"userHsaId\", \"==\", userHsaId));\n          _context29.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 5:\n          querySnapshot = _context29.sent;\n          // Fetch each related improvementWork document\n          improvementWorks = [];\n          _iterator2 = _createForOfIteratorHelper(querySnapshot.docs);\n          _context29.prev = 8;\n          _iterator2.s();\n        case 10:\n          if ((_step2 = _iterator2.n()).done) {\n            _context29.next = 19;\n            break;\n          }\n          _doc2 = _step2.value;\n          improvementWorkId = _doc2.data().improvementWorkId;\n          _context29.next = 15;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 15:\n          improvementWorkDoc = _context29.sent;\n          improvementWorks.push(improvementWorkDoc);\n        case 17:\n          _context29.next = 10;\n          break;\n        case 19:\n          _context29.next = 24;\n          break;\n        case 21:\n          _context29.prev = 21;\n          _context29.t0 = _context29[\"catch\"](8);\n          _iterator2.e(_context29.t0);\n        case 24:\n          _context29.prev = 24;\n          _iterator2.f();\n          return _context29.finish(24);\n        case 27:\n          return _context29.abrupt(\"return\", improvementWorks);\n        case 30:\n          _context29.prev = 30;\n          _context29.t1 = _context29[\"catch\"](0);\n          console.error(\"Error getting improvement works for user: \", _context29.t1);\n          throw _context29.t1;\n        case 34:\n        case \"end\":\n          return _context29.stop();\n      }\n    }, _callee29, null, [[0, 30], [8, 21, 24, 27]]);\n  }));\n}\nfunction getUsersForImprovementWork(improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee30() {\n    var q, querySnapshot, users, _iterator3, _step3, _doc3, userHsaId, userDoc;\n    return _regeneratorRuntime().wrap(function _callee30$(_context30) {\n      while (1) switch (_context30.prev = _context30.next) {\n        case 0:\n          _context30.prev = 0;\n          // Query the userImprovementWork collection for relations involving this improvementWork\n          q = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)(userImprovementWorkCollection, (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n          _context30.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 4:\n          querySnapshot = _context30.sent;\n          // Fetch each related user document\n          users = [];\n          _iterator3 = _createForOfIteratorHelper(querySnapshot.docs);\n          _context30.prev = 7;\n          _iterator3.s();\n        case 9:\n          if ((_step3 = _iterator3.n()).done) {\n            _context30.next = 18;\n            break;\n          }\n          _doc3 = _step3.value;\n          userHsaId = _doc3.data().userHsaId;\n          _context30.next = 14;\n          return getObjectById(\"users\", userHsaId);\n        case 14:\n          userDoc = _context30.sent;\n          users.push(userDoc);\n        case 16:\n          _context30.next = 9;\n          break;\n        case 18:\n          _context30.next = 23;\n          break;\n        case 20:\n          _context30.prev = 20;\n          _context30.t0 = _context30[\"catch\"](7);\n          _iterator3.e(_context30.t0);\n        case 23:\n          _context30.prev = 23;\n          _iterator3.f();\n          return _context30.finish(23);\n        case 26:\n          return _context30.abrupt(\"return\", users);\n        case 29:\n          _context30.prev = 29;\n          _context30.t1 = _context30[\"catch\"](0);\n          console.error(\"Error getting users for improvementWork: \", _context30.t1);\n          throw _context30.t1;\n        case 33:\n        case \"end\":\n          return _context30.stop();\n      }\n    }, _callee30, null, [[0, 29], [7, 20, 23, 26]]);\n  }));\n}\n// export getters to be able to use in other files\n\n////////////////////////////////////DELETING/////////////////////////////////////////////\n// delete an instance of a type\nfunction deleteInstance(docType, docId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee31() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee31$(_context31) {\n      while (1) switch (_context31.prev = _context31.next) {\n        case 0:\n          _context31.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context31.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(docRef);\n        case 4:\n          console.log(\"\".concat(docType, \" deleted successfully.\"));\n          _context31.next = 11;\n          break;\n        case 7:\n          _context31.prev = 7;\n          _context31.t0 = _context31[\"catch\"](0);\n          console.error(\"Error deleting \".concat(docType, \":\"), _context31.t0);\n          throw _context31.t0;\n        case 11:\n        case \"end\":\n          return _context31.stop();\n      }\n    }, _callee31, null, [[0, 7]]);\n  }));\n}\n// delete all instances of a type\nfunction deleteAllDocumentsInCollection(collectionName) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee33() {\n    var _this = this;\n    var collectionRef, snapshot, deletePromises;\n    return _regeneratorRuntime().wrap(function _callee33$(_context33) {\n      while (1) switch (_context33.prev = _context33.next) {\n        case 0:\n          _context33.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionName);\n          _context33.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          snapshot = _context33.sent;\n          // Delete all documents in the collection\n          deletePromises = snapshot.docs.map(function (doc) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee32() {\n              return _regeneratorRuntime().wrap(function _callee32$(_context32) {\n                while (1) switch (_context32.prev = _context32.next) {\n                  case 0:\n                    _context32.next = 2;\n                    return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(doc.ref);\n                  case 2:\n                  case \"end\":\n                    return _context32.stop();\n                }\n              }, _callee32);\n            }));\n          });\n          _context33.next = 8;\n          return Promise.all(deletePromises);\n        case 8:\n          console.log(\"All documents in the \".concat(collectionName, \" collection deleted successfully.\"));\n          _context33.next = 15;\n          break;\n        case 11:\n          _context33.prev = 11;\n          _context33.t0 = _context33[\"catch\"](0);\n          console.error(\"Error deleting all documents in \".concat(collectionName, \":\"), _context33.t0);\n          throw _context33.t0;\n        case 15:\n        case \"end\":\n          return _context33.stop();\n      }\n    }, _callee33, null, [[0, 11]]);\n  }));\n}\n////////////////////////////////////UPDATING/////////////////////////////////////////////\n// update a field in an instance\nfunction updateInstance(docType, docId, updates) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee34() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee34$(_context34) {\n      while (1) switch (_context34.prev = _context34.next) {\n        case 0:\n          _context34.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context34.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(docRef, updates);\n        case 4:\n          console.log(\"\".concat(docType, \" updated successfully.\"));\n          _context34.next = 11;\n          break;\n        case 7:\n          _context34.prev = 7;\n          _context34.t0 = _context34[\"catch\"](0);\n          console.error(\"Error updating \".concat(docType, \":\"), _context34.t0);\n          throw _context34.t0;\n        case 11:\n        case \"end\":\n          return _context34.stop();\n      }\n    }, _callee34, null, [[0, 7]]);\n  }));\n}\n// changes the ongoing status of an improvement work. if ongoing it is paused, if if paused onging.\n// user must be a manager\nfunction startOrPauseImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee35() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee35$(_context35) {\n      while (1) switch (_context35.prev = _context35.next) {\n        case 0:\n          _context35.prev = 0;\n          _context35.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context35.sent;\n          _context35.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context35.sent;\n          if (!(!user || !user.manager)) {\n            _context35.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change improvementWork status\");\n        case 11:\n          if (!improvementWork) {\n            _context35.next = 19;\n            break;\n          }\n          update = {\n            ongoing: !improvementWork.ongoing\n          };\n          _context35.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          return _context35.abrupt(\"return\", true);\n        case 19:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n          return _context35.abrupt(\"return\", false);\n        case 21:\n          _context35.next = 27;\n          break;\n        case 23:\n          _context35.prev = 23;\n          _context35.t0 = _context35[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context35.t0);\n          throw _context35.t0;\n        case 27:\n        case \"end\":\n          return _context35.stop();\n      }\n    }, _callee35, null, [[0, 23]]);\n  }));\n}\nfunction changePatientRiskLevel(userId, improvementWorkId, patientRiskLevel) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee36() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee36$(_context36) {\n      while (1) switch (_context36.prev = _context36.next) {\n        case 0:\n          _context36.prev = 0;\n          _context36.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context36.sent;\n          _context36.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context36.sent;\n          if (!(!user || !user.manager)) {\n            _context36.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change patientRiskLevel in improvement work\");\n        case 11:\n          if (!improvementWork) {\n            _context36.next = 18;\n            break;\n          }\n          update = {\n            patientRiskLevel: patientRiskLevel\n          };\n          _context36.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context36.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context36.next = 25;\n          break;\n        case 21:\n          _context36.prev = 21;\n          _context36.t0 = _context36[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context36.t0);\n          throw _context36.t0;\n        case 25:\n        case \"end\":\n          return _context36.stop();\n      }\n    }, _callee36, null, [[0, 21]]);\n  }));\n}\n// finalizes the improvement work. ongoing is set to false.\n// user must be a manager\nfunction finalizeImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee37() {\n    var user, update;\n    return _regeneratorRuntime().wrap(function _callee37$(_context37) {\n      while (1) switch (_context37.prev = _context37.next) {\n        case 0:\n          _context37.prev = 0;\n          _context37.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context37.sent;\n          if (!(!user || !user.manager)) {\n            _context37.next = 8;\n            break;\n          }\n          return _context37.abrupt(\"return\", false);\n        case 8:\n          update = {\n            completed: true,\n            ongoing: false\n          };\n          _context37.next = 11;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 11:\n          return _context37.abrupt(\"return\", true);\n        case 12:\n          _context37.next = 17;\n          break;\n        case 14:\n          _context37.prev = 14;\n          _context37.t0 = _context37[\"catch\"](0);\n          return _context37.abrupt(\"return\", false);\n        case 17:\n        case \"end\":\n          return _context37.stop();\n      }\n    }, _callee37, null, [[0, 14]]);\n  }));\n}\n\n//////////////////////////////// for later sprint\n//function add_upvotes\n//function add_notes\n//function add_intrested_users\n\n//# sourceURL=webpack://c3/./client/Database/database.js?");
 
 /***/ }),
 
@@ -156,7 +156,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
   \*****************************************/
 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   loadPage: () => (/* binding */ loadPage)\n/* harmony export */ });\nfunction loadPage() {\n  var container = document.querySelector('#container-fluid');\n  if (!container) return; // Stop if the container isn't found\n  fetch('KnowledgeBank/Nolans3.html').then(function (response) {\n    return response.text();\n  }).then(function (data) {\n    // Create a temporary container element to hold the loaded content\n    var tempContainer = document.createElement('div');\n    tempContainer.innerHTML = data;\n    // Select the specific element with the class you want\n    var specificElement = tempContainer.querySelector('.nolans-main-container');\n    if (specificElement) {\n      // Insert the specific element into the target element\n      container.insertBefore(specificElement, container.firstChild);\n    }\n  })[\"catch\"](function (error) {\n    console.error('Failed to load the external HTML file:', error);\n  });\n}\n\n//# sourceURL=webpack://c3/./client/KnowledgeBank/Nolans3.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   loadPage: () => (/* binding */ loadPage)\n/* harmony export */ });\nfunction loadPage() {\n  var container = document.querySelector(\"#container-fluid\");\n  if (!container) return; // Stop if the container isn't found\n  fetch(\"KnowledgeBank/Nolans3.html\").then(function (response) {\n    return response.text();\n  }).then(function (data) {\n    // Create a temporary container element to hold the loaded content\n    var tempContainer = document.createElement(\"div\");\n    tempContainer.innerHTML = data;\n    // Select the specific element with the class you want\n    var specificElement = tempContainer.querySelector(\".nolans-main-container\");\n    if (specificElement) {\n      // Insert the specific element into the target element\n      container.insertBefore(specificElement, container.firstChild);\n    }\n  })[\"catch\"](function (error) {\n    console.error(\"Failed to load the external HTML file:\", error);\n  });\n}\n\n//# sourceURL=webpack://c3/./client/KnowledgeBank/Nolans3.js?");
 
 /***/ }),
 
@@ -256,7 +256,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
   \***************************************************/
 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   addEventListener: () => (/* binding */ addEventListener),\n/* harmony export */   loadPage: () => (/* binding */ loadPage)\n/* harmony export */ });\n/* harmony import */ var _Database_database_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Database/database.js */ \"./client/Database/database.js\");\n/* harmony import */ var _SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../SidebarAndHeader/pageHandler.js */ \"./client/SidebarAndHeader/pageHandler.js\");\n/* harmony import */ var _ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../ideaBank/ideaBank.js */ \"./client/ideaBank/ideaBank.js\");\n\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\nvar projectCards = [];\nvar filteredImprovementWorks = [];\nvar projectCard = /*#__PURE__*/function () {\n  function projectCard(id, name, department, title, description, projectId, currentStage) {\n    _classCallCheck(this, projectCard);\n    this.name = name;\n    this.department = department;\n    this.title = title;\n    this.description = description;\n    this.id = id;\n    this.projectId = projectId;\n    this.stage = currentStage;\n  }\n  _createClass(projectCard, [{\n    key: \"showMoreInfo\",\n    value: function showMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"flex\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"^ Stäng detaljer\";\n      }\n    }\n  }, {\n    key: \"closeMoreInfo\",\n    value: function closeMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"none\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"> Mer information\";\n      }\n    }\n  }, {\n    key: \"loadInitiatePage\",\n    value: function loadInitiatePage() {\n      alert(\"The initiate project page should now be loaded\");\n    }\n  }, {\n    key: \"generateHTML\",\n    value: function generateHTML() {\n      var stageImages = {\n        Act: \"../images/Hemsida_PGSA_A.png\",\n        Study: \"../images/Hemsida_PGSA_S.png\",\n        Do: \"../images/Hemsida_PGSA_G.png\",\n        Plan: \"../images/Hemsida_PGSA_P.png\",\n        Finished: \"path/to/finished-image.jpg\"\n      };\n      var stageKey = this.stage;\n      // Check if the stage is directly a key in stageImages\n      if (!stageImages[stageKey]) {\n        // If not, try to map the Swedish stage to English using nolanStageMapping\n        stageKey = nolanStageMapping[stageKey];\n      }\n      // Now get the imageUrl using the stageKey\n      var imageUrl = stageImages[stageKey];\n      return \"\\n    <div class=\\\"totalExpandedOngoingWorkCard\\\">\\n      <div style=\\\"cursor: default;\\\" class=\\\"flex-container ongoingCard\\\" id=\\\"\".concat(this.projectId, \"\\\">\\n        <div class=\\\"ongoingCardImageContainer toSinglePage\\\">\\n          <div class = \\\"flex-box ongoingCardImage toSinglePage\\\" id=\\\"pinkFaded\\\"></div>\\n        </div>\\n        <div class=\\\"div ongoingCardInfo toSinglePage\\\">\\n          <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardManager\\\">\").concat(this.name, \"</p>\\n          <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardDepartment\\\">\").concat(this.department, \"</p>\\n          <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardIdeaTitle\\\">\").concat(this.title, \"</p>\\n        </div>\\n        <button id=\\\"project-button-\").concat(this.projectId, \"\\\" data-project-id=\\\"\").concat(this.id, \"\\\" class=\\\"projectButton\\\" role=\\\"button\\\">G\\xE5 till projektsidan</button>\\n        <div>\\n          <img class=\\\"statusImage\\\" src=\\\"\").concat(imageUrl, \"\\\" alt=\\\"Stage Image\\\">\\n        </div>\\n        <div class=\\\"container ongoingSeeCardDetails toSinglePage\\\">\\n          <div class=\\\"ongoingSeeCardDetailsInner\\\">\\n            <p id=\\\"ongoingSeeDetailsButton\").concat(this.projectId, \"\\\" class = \\\"moreInfoClass\\\">> Mer information</p>\\n          </div>\\n        </div>\\n      </div> \\n      <div class = \\\"expandedOngoingWorkCard\\\" id=\\\"expandedOngoingWorkCard\").concat(this.projectId, \"\\\" style=\\\"display: none;\\\">\\n        <div class =\\\"expandedTextOngoingWorkCard\\\">\\n          \").concat(this.description, \"\\n        </div>\\n      </div>\\n    </div> \");\n    }\n  }]);\n  return projectCard;\n}();\nfunction loadPage(listenersLoaded) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n    var container, checkedHospitalIds, checkedUnitIds, checkedNolanStages, checkedPatientRiskLevels, ascendingDates, searchBar;\n    return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n      while (1) switch (_context6.prev = _context6.next) {\n        case 0:\n          container = document.querySelector(\"#container-fluid\");\n          if (container) {\n            _context6.next = 3;\n            break;\n          }\n          return _context6.abrupt(\"return\");\n        case 3:\n          // Stop if the container isn't found\n          projectCards = [];\n          // Initialize empty lists of checked hospital and unit ids\n          checkedHospitalIds = [];\n          checkedUnitIds = [];\n          checkedNolanStages = [];\n          checkedPatientRiskLevels = [];\n          ascendingDates = false;\n          fetch(\"currentProjects/currentProjects.html\").then(function (response) {\n            return response.text();\n          }).then(function (data) {\n            // Create a temporary container element to hold the loaded content\n            var tempContainer = document.createElement(\"div\");\n            tempContainer.innerHTML = data;\n            // Select the specific element with the class you want\n            var specificElement = tempContainer.querySelector(\".filterBar\");\n            var createHospitalCheckBoxContainer = tempContainer.querySelector('#hospitalSelection');\n            var createUnitCheckBoxContainer = tempContainer.querySelector('#unitSelection');\n            var createNolanStageCheckBoxContainer = tempContainer.querySelector('#nolanStageSelection');\n            var createPatientRiskLevelCheckBoxContainer = tempContainer.querySelector('#patientRiskLevelSelection');\n            var createOrderSelectionContainer = tempContainer.querySelector('#orderSelection');\n            if (createHospitalCheckBoxContainer) {\n              createHospitalCheckBoxContainer.addEventListener('change', function (event) {\n                return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n                  var checkboxes;\n                  return _regeneratorRuntime().wrap(function _callee$(_context) {\n                    while (1) switch (_context.prev = _context.next) {\n                      case 0:\n                        checkboxes = createHospitalCheckBoxContainer.querySelectorAll('input[type=\"checkbox\"]');\n                        console.log(\"createHospitalCheckBoxContainer\");\n                        // Empty list of checked hospitals\n                        checkedHospitalIds = [];\n                        // Array to store IDs of checked checkboxes\n                        checkboxes.forEach(function (checkbox) {\n                          // Ensure the checkbox is an HTMLInputElement\n                          var inputCheckbox = checkbox;\n                          // Check if the checkbox is checked and add its ID to the array\n                          if (inputCheckbox.checked) {\n                            checkedHospitalIds.push(inputCheckbox.id);\n                          }\n                        });\n                        // Log all checked hospital IDs\n                        console.log('Checked hospitals:', checkedHospitalIds);\n                        // Future change: Only clear the unitIds for unchecked hospitals!\n                        (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.clearContent)(\"unitSelection\");\n                        (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.loadUnits)(checkedHospitalIds);\n                      case 7:\n                      case \"end\":\n                        return _context.stop();\n                    }\n                  }, _callee);\n                }));\n              });\n            }\n            if (createUnitCheckBoxContainer) {\n              createUnitCheckBoxContainer.addEventListener('change', function (event) {\n                return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n                  var checkboxes;\n                  return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n                    while (1) switch (_context2.prev = _context2.next) {\n                      case 0:\n                        checkboxes = createUnitCheckBoxContainer.querySelectorAll('input[type=\"checkbox\"]');\n                        console.log(\"createUnitCheckBoxContainer\");\n                        // Empty list of checked units\n                        checkedUnitIds = [];\n                        checkboxes.forEach(function (checkbox) {\n                          // Ensure the checkbox is an HTMLInputElement\n                          var inputCheckbox = checkbox;\n                          // Check if the checkbox is checked and add its ID to the array\n                          if (inputCheckbox.checked) {\n                            checkedUnitIds.push(inputCheckbox.id);\n                          }\n                        });\n                        _context2.next = 6;\n                        return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getFilteredImprovementWorks)({\n                          patientRiskLevels: checkedPatientRiskLevels,\n                          nolanStages: checkedNolanStages,\n                          units: checkedUnitIds\n                        });\n                      case 6:\n                        filteredImprovementWorks = _context2.sent;\n                        (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.removeCardsFromDiv)(\"div.projectCardCardDiv\");\n                        getProjects(container, listenersLoaded, filteredImprovementWorks);\n                      case 9:\n                      case \"end\":\n                        return _context2.stop();\n                    }\n                  }, _callee2);\n                }));\n              });\n            }\n            if (createNolanStageCheckBoxContainer) {\n              createNolanStageCheckBoxContainer.addEventListener('change', function (event) {\n                return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n                  var checkboxes;\n                  return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n                    while (1) switch (_context3.prev = _context3.next) {\n                      case 0:\n                        checkboxes = createNolanStageCheckBoxContainer.querySelectorAll('input[type=\"checkbox\"]'); // Empty list of checked hospitals\n                        checkedNolanStages = [];\n                        // Array to store IDs of checked checkboxes\n                        checkboxes.forEach(function (checkbox) {\n                          // Ensure the checkbox is an HTMLInputElement\n                          var inputCheckbox = checkbox;\n                          // Check if the checkbox is checked and add its ID to the array\n                          if (inputCheckbox.checked) {\n                            checkedNolanStages.push(inputCheckbox.id);\n                            checkedNolanStages.push(nolanStageMapping[inputCheckbox.id]);\n                            console.log(\"checkedNolanStages: \", checkedNolanStages);\n                          }\n                        });\n                        _context3.next = 5;\n                        return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getFilteredImprovementWorks)({\n                          patientRiskLevels: checkedPatientRiskLevels,\n                          nolanStages: checkedNolanStages,\n                          units: checkedUnitIds\n                        });\n                      case 5:\n                        filteredImprovementWorks = _context3.sent;\n                        (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.removeCardsFromDiv)(\"div.projectCardCardDiv\");\n                        getProjects(container, listenersLoaded, filteredImprovementWorks);\n                      case 8:\n                      case \"end\":\n                        return _context3.stop();\n                    }\n                  }, _callee3);\n                }));\n              });\n            }\n            if (createPatientRiskLevelCheckBoxContainer) {\n              createPatientRiskLevelCheckBoxContainer.addEventListener('change', function (event) {\n                return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n                  var checkboxes;\n                  return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n                    while (1) switch (_context4.prev = _context4.next) {\n                      case 0:\n                        checkboxes = createPatientRiskLevelCheckBoxContainer.querySelectorAll('input[type=\"checkbox\"]');\n                        console.log(\"createPatientRiskLevelCheckBoxContainer\");\n                        // Empty list of checked hospitals\n                        checkedPatientRiskLevels = [];\n                        // Array to store IDs of checked checkboxes\n                        checkboxes.forEach(function (checkbox) {\n                          // Ensure the checkbox is an HTMLInputElement\n                          var inputCheckbox = checkbox;\n                          // Check if the checkbox is checked and add its ID to the array\n                          if (inputCheckbox.checked) {\n                            checkedPatientRiskLevels.push(inputCheckbox.id);\n                            checkedPatientRiskLevels.push(patientRiskLevelMapping[inputCheckbox.id]);\n                            console.log(\"checkedPatientRiskLevels: \", checkedPatientRiskLevels);\n                          }\n                        });\n                        _context4.next = 6;\n                        return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getFilteredImprovementWorks)({\n                          patientRiskLevels: checkedPatientRiskLevels,\n                          nolanStages: checkedNolanStages,\n                          units: checkedUnitIds\n                        });\n                      case 6:\n                        filteredImprovementWorks = _context4.sent;\n                        (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.removeCardsFromDiv)(\"div.projectCardCardDiv\");\n                        getProjects(container, listenersLoaded, filteredImprovementWorks);\n                      case 9:\n                      case \"end\":\n                        return _context4.stop();\n                    }\n                  }, _callee4);\n                }));\n              });\n            }\n            if (createOrderSelectionContainer) {\n              createOrderSelectionContainer.addEventListener('change', function (event) {\n                return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n                  var inputCheckbox;\n                  return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n                    while (1) switch (_context5.prev = _context5.next) {\n                      case 0:\n                        inputCheckbox = event.target;\n                        ascendingDates = inputCheckbox.checked;\n                        (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.removeCardsFromDiv)(\"div.projectCardCardDiv\");\n                        sortProjects(container, listenersLoaded, ascendingDates);\n                      case 4:\n                      case \"end\":\n                        return _context5.stop();\n                    }\n                  }, _callee5);\n                }));\n              });\n            }\n            if (specificElement) {\n              // Insert the specific element into the target element\n              container.insertBefore(specificElement, container.firstChild);\n            }\n          })[\"catch\"](function (error) {\n            console.error(\"Failed to load the external HTML file:\", error);\n          });\n          _context6.next = 12;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getImprovementWorks)({\n            completed: false\n          });\n        case 12:\n          filteredImprovementWorks = _context6.sent;\n          console.log(\"Filtered improvementWorks: \", filteredImprovementWorks);\n          (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.removeCardsFromDiv)(\"div.projectCardCardDiv\");\n          getProjects(container, listenersLoaded, filteredImprovementWorks);\n          searchBar = document.getElementById(\"searchBarImprovement\");\n          searchBar === null || searchBar === void 0 ? void 0 : searchBar.addEventListener(\"keydown\", function (event) {\n            if (event.key === \"Enter\") {\n              performSearch(searchBar, container);\n            }\n          });\n          console.log(\"Loading hospitals\");\n          (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.clearContent)(\"hospitalSelection\");\n          (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.loadHospitals)();\n          loadNolanStages();\n          loadPatientRiskLevels();\n        case 23:\n        case \"end\":\n          return _context6.stop();\n      }\n    }, _callee6);\n  }));\n}\nfunction loadNolanStages() {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var selectStageHTML, allStages;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          selectStageHTML = $('#nolanStageSelection'); // loads the select type from html\n          allStages = [\"Planera\", \"Göra\", \"Studera\", \"Agera\"];\n          allStages.forEach(function (stage) {\n            var generatedElement = document.createRange().createContextualFragment(\"\\n    <div class=\\\"form-check\\\">\\n      <input class=\\\"form-check-input\\\" type=\\\"checkbox\\\" value=\\\"\\\" id=\\\"\" + stage + \"\\\">\\n      <label class=\\\"form-check-label\\\" for=\\\"flexCheckDefault\\\">\" + stage + \"</label>\\n    </div>\");\n            selectStageHTML.append(generatedElement);\n            console.log(\"Adding HTML for for stage \", stage);\n          });\n        case 3:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7);\n  }));\n}\nfunction loadPatientRiskLevels() {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var selectPatientRiskLevelHTML, allRiskLevels;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          selectPatientRiskLevelHTML = $('#patientRiskLevelSelection'); // loads the select type from html\n          allRiskLevels = [\"Grön\", \"Blå\", \"Gul\", \"Röd\"];\n          allRiskLevels.forEach(function (riskLevel) {\n            var generatedElement = document.createRange().createContextualFragment(\"\\n    <div class=\\\"form-check\\\">\\n      <input class=\\\"form-check-input\\\" type=\\\"checkbox\\\" value=\\\"\\\" id=\\\"\" + riskLevel + \"\\\">\\n      <label class=\\\"form-check-label\\\" for=\\\"flexCheckDefault\\\">Riskniv\\xE5 \" + riskLevel + \"</label>\\n    </div>\");\n            selectPatientRiskLevelHTML.append(generatedElement);\n            console.log(\"Adding HTML for for risk level \", riskLevel);\n          });\n        case 3:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8);\n  }));\n}\nfunction sortProjects(selectElement, listenersLoaded, ascendingDates) {\n  // Sort in reversed order if ascendingDates is true\n  var cardsToIterate = ascendingDates ? _toConsumableArray(projectCards).reverse() : projectCards;\n  // Loop through the saved array of cards and generate HTML for each card\n  var _iterator = _createForOfIteratorHelper(cardsToIterate),\n    _step;\n  try {\n    for (_iterator.s(); !(_step = _iterator.n()).done;) {\n      var card = _step.value;\n      var cardHTML = card.generateHTML();\n      var div = document.createElement(\"div\");\n      div.className = \"projectCardCardDiv\"; // Set the class name(s) here\n      div.innerHTML = cardHTML;\n      if (!selectElement) return;\n      selectElement.appendChild(div); // Stop if the container isn't found\n      addEventListener(card.projectId, card);\n    }\n  } catch (err) {\n    _iterator.e(err);\n  } finally {\n    _iterator.f();\n  }\n}\nfunction getProjects(selectElement, listenersLoaded, improvementWorks) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var _this = this;\n    var id;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          id = 0;\n          projectCards = [];\n          improvementWorks.forEach(function (improvementWork) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n              var title, department, projectLeader, card, cardHTML, div;\n              return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n                while (1) switch (_context9.prev = _context9.next) {\n                  case 0:\n                    title = improvementWork.name;\n                    _context9.next = 3;\n                    return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getObjectById)(\"unit\", improvementWork.unitId);\n                  case 3:\n                    department = _context9.sent;\n                    _context9.next = 6;\n                    return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getImprovementWorkResponsible)(improvementWork.id);\n                  case 6:\n                    projectLeader = _context9.sent;\n                    if (!department) {\n                      _context9.next = 21;\n                      break;\n                    }\n                    card = new projectCard(id, projectLeader.firstName + \" \" + projectLeader.lastName, department.name, title, improvementWork.content, improvementWork.id, improvementWork.currentStage);\n                    projectCards.push(card);\n                    cardHTML = card.generateHTML();\n                    div = document.createElement(\"div\");\n                    div.className = \"projectCardCardDiv\"; // Set the class name(s) here\n                    div.innerHTML = cardHTML;\n                    if (selectElement) {\n                      _context9.next = 16;\n                      break;\n                    }\n                    return _context9.abrupt(\"return\");\n                  case 16:\n                    selectElement.appendChild(div); // Stop if the container isn't found\n                    addEventListener(improvementWork.id, card);\n                    id++;\n                    _context9.next = 22;\n                    break;\n                  case 21:\n                    console.log(improvementWork.unitId + \" is not a unit\"); //Unit Ids on improvement work that do not exist\n                  case 22:\n                  case \"end\":\n                    return _context9.stop();\n                }\n              }, _callee9);\n            }));\n          });\n        case 3:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10);\n  }));\n}\nfunction addEventListener(projectId, card) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {\n    return _regeneratorRuntime().wrap(function _callee13$(_context13) {\n      while (1) switch (_context13.prev = _context13.next) {\n        case 0:\n          $(\"#ongoingSeeDetailsButton\" + projectId).off(\"click\").on(\"click\", function () {\n            return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {\n              var expandedDiv;\n              return _regeneratorRuntime().wrap(function _callee11$(_context11) {\n                while (1) switch (_context11.prev = _context11.next) {\n                  case 0:\n                    expandedDiv = document.getElementById(\"expandedOngoingWorkCard\" + projectId);\n                    if (expandedDiv && expandedDiv.style.display === \"none\") {\n                      card.showMoreInfo(\"expandedOngoingWorkCard\" + projectId, \"ongoingSeeDetailsButton\" + projectId);\n                    } else {\n                      card.closeMoreInfo(\"expandedOngoingWorkCard\" + projectId, \"ongoingSeeDetailsButton\" + projectId);\n                    }\n                  case 2:\n                  case \"end\":\n                    return _context11.stop();\n                }\n              }, _callee11);\n            }));\n          });\n          $(\"#project-button-\" + projectId).off(\"click\").on(\"click\", function () {\n            return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {\n              var tmp, currentStage;\n              return _regeneratorRuntime().wrap(function _callee12$(_context12) {\n                while (1) switch (_context12.prev = _context12.next) {\n                  case 0:\n                    _context12.next = 2;\n                    return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getObjectById)(\"improvementWork\", projectId);\n                  case 2:\n                    tmp = _context12.sent;\n                    currentStage = tmp.currentStage;\n                    if (currentStage === \"Act\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageA)(projectId);\n                    } else if (currentStage === \"Study\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageS)(projectId);\n                    } else if (currentStage === \"Do\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageG)(projectId);\n                    } else if (currentStage === \"Plan\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageP)(projectId);\n                    } else if (currentStage === \"Finished\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageP)(projectId);\n                    }\n                  case 5:\n                  case \"end\":\n                    return _context12.stop();\n                }\n              }, _callee12);\n            }));\n          });\n          /*$(document).on(\"click\", \"#\" + projectId, async function (event) {\n            let tmp = await getObjectById(\"improvementWork\", projectId);\n            const currentStage = tmp.currentStage;\n            const element = event.target as HTMLElement;\n            if (element.classList.contains(\"moreInfoClass\")) {\n              const expandedDiv = document.getElementById(\n                \"expandedOngoingWorkCard\" + projectId\n              );\n              if (expandedDiv && expandedDiv.style.display === \"none\") {\n                card.showMoreInfo(\n                  `expandedOngoingWorkCard` + projectId,\n                  `ongoingSeeDetailsButton` + projectId\n                );\n              } else {\n                card.closeMoreInfo(\n                  `expandedOngoingWorkCard` + projectId,\n                  `ongoingSeeDetailsButton` + projectId\n                );\n              }\n            } else if (element.classList.contains(\"projectButton\") || element.classList.contains(\"toSinglePage\")) {\n              document.removeEventListener(\"click\", event.target);\n              if (currentStage === \"Act\") {\n                loadProjectPageA(projectId);\n              } else if (currentStage === \"Study\") {\n                loadProjectPageS(projectId);\n              } else if (currentStage === \"Do\") {\n                loadProjectPageG(projectId);\n              } else if (currentStage === \"Plan\") {\n                loadProjectPageP(projectId);\n              } else if (currentStage === \"Finished\") {\n                loadProjectPageP(projectId);\n              }\n            }\n          });*/\n        case 2:\n        case \"end\":\n          return _context13.stop();\n      }\n    }, _callee13);\n  }));\n}\nvar patientRiskLevelMapping = {\n  Grön: \"Green\",\n  Blå: \"Blue\",\n  Gul: \"Yellow\",\n  Röd: \"Red\"\n};\nvar nolanStageMapping = {\n  Planera: \"Plan\",\n  Göra: \"Do\",\n  Studera: \"Study\",\n  Agera: \"Act\"\n};\nfunction performSearch(searchBar, container) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee14() {\n    var inputValue, query, matchedStage;\n    return _regeneratorRuntime().wrap(function _callee14$(_context14) {\n      while (1) switch (_context14.prev = _context14.next) {\n        case 0:\n          inputValue = searchBar.value; //make first character uppercase\n          inputValue = inputValue.toLowerCase();\n          console.log(\"Search query:\", inputValue);\n          // Remove each element\n          projectCards = [];\n          query = {};\n          query.completed = false;\n          (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.removeCardsFromDiv)(\"div.projectCardCardDiv\");\n          if (inputValue !== \"\") {\n            matchedStage = Object.keys(nolanStageMapping).find(function (stage) {\n              return stage.toLowerCase().includes(inputValue.toLowerCase());\n            });\n            if (matchedStage) {\n              query.nolanStage = nolanStageMapping[matchedStage];\n            } else {\n              query.name = inputValue;\n            }\n          }\n          _context14.next = 10;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getImprovementWorks)(query);\n        case 10:\n          filteredImprovementWorks = _context14.sent;\n          _context14.next = 13;\n          return getProjects(container, true, filteredImprovementWorks);\n        case 13:\n        case \"end\":\n          return _context14.stop();\n      }\n    }, _callee14);\n  }));\n}\n\n//# sourceURL=webpack://c3/./client/currentProjects/currentProjects.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   addEventListener: () => (/* binding */ addEventListener),\n/* harmony export */   loadPage: () => (/* binding */ loadPage)\n/* harmony export */ });\n/* harmony import */ var _Database_database_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Database/database.js */ \"./client/Database/database.js\");\n/* harmony import */ var _SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../SidebarAndHeader/pageHandler.js */ \"./client/SidebarAndHeader/pageHandler.js\");\n/* harmony import */ var _ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../ideaBank/ideaBank.js */ \"./client/ideaBank/ideaBank.js\");\n/* harmony import */ var _projectPage_projectPage_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../projectPage/projectPage.js */ \"./client/projectPage/projectPage.js\");\n\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\nvar projectCards = [];\nvar filteredImprovementWorks = [];\nvar projectCard = /*#__PURE__*/function () {\n  function projectCard(id, name, department, title, description, projectId, currentStage, dateStarted) {\n    _classCallCheck(this, projectCard);\n    this.name = name;\n    this.department = department;\n    this.title = title;\n    this.description = description;\n    this.id = id;\n    this.projectId = projectId;\n    this.stage = currentStage;\n    this.dateStarted = dateStarted;\n  }\n  _createClass(projectCard, [{\n    key: \"showMoreInfo\",\n    value: function showMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"flex\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"^ Stäng detaljer\";\n      }\n    }\n  }, {\n    key: \"closeMoreInfo\",\n    value: function closeMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"none\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"> Mer information\";\n      }\n    }\n  }, {\n    key: \"loadInitiatePage\",\n    value: function loadInitiatePage() {\n      alert(\"The initiate project page should now be loaded\");\n    }\n  }, {\n    key: \"generateHTML\",\n    value: function generateHTML() {\n      var stageImages = {\n        Act: \"../images/Hemsida_PGSA_A.png\",\n        Study: \"../images/Hemsida_PGSA_S.png\",\n        Do: \"../images/Hemsida_PGSA_G.png\",\n        Plan: \"../images/Hemsida_PGSA_P.png\",\n        Finished: \"path/to/finished-image.jpg\"\n      };\n      var stageKey = this.stage;\n      // Check if the stage is directly a key in stageImages\n      if (!stageImages[stageKey]) {\n        // If not, try to map the Swedish stage to English using nolanStageMapping\n        stageKey = nolanStageMapping[stageKey];\n      }\n      // Now get the imageUrl using the stageKey\n      var imageUrl = stageImages[stageKey];\n      return \"\\n    <div class=\\\"totalExpandedOngoingWorkCard\\\">\\n      <div style=\\\"cursor: default;\\\" class=\\\"flex-container ongoingCard\\\" id=\\\"\".concat(this.projectId, \"\\\">\\n        <div class=\\\"ongoingCardImageContainer toSinglePage\\\">\\n          <div class = \\\"flex-box ongoingCardImage toSinglePage\\\" id=\\\"pinkFaded\\\"></div>\\n        </div>\\n        <div class=\\\"div ongoingCardInfo toSinglePage\\\">\\n          <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardManager\\\">\").concat(this.name, \"</p>\\n          <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardDepartment\\\">\").concat(this.department, \"</p>\\n          <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardIdeaTitle\\\">\").concat(this.title, \"</p>\\n\\n          <p class=\\\"toSinglePage\\\" id=ongoingCardStartDate\\\" style=\\\"font-size: 12px;\\\">\").concat((0,_projectPage_projectPage_js__WEBPACK_IMPORTED_MODULE_3__.formatDate)(this.dateStarted), \"</p>\\n        </div>\\n        <button id=\\\"project-button-\").concat(this.projectId, \"\\\" data-project-id=\\\"\").concat(this.id, \"\\\" class=\\\"projectButton\\\" role=\\\"button\\\">G\\xE5 till projektsidan</button>\\n        <div>\\n          <img class=\\\"statusImage\\\" src=\\\"\").concat(imageUrl, \"\\\" alt=\\\"Stage Image\\\">\\n        </div>\\n        <div class=\\\"container ongoingSeeCardDetails toSinglePage\\\">\\n          <div class=\\\"ongoingSeeCardDetailsInner\\\">\\n            <p id=\\\"ongoingSeeDetailsButton\").concat(this.projectId, \"\\\" class = \\\"moreInfoClass\\\">> Mer information</p>\\n          </div>\\n        </div>\\n      </div> \\n      <div class = \\\"expandedOngoingWorkCard\\\" id=\\\"expandedOngoingWorkCard\").concat(this.projectId, \"\\\" style=\\\"display: none;\\\">\\n        <div class =\\\"expandedTextOngoingWorkCard\\\">\\n          \").concat(this.description, \"\\n        </div>\\n      </div>\\n    </div> \");\n    }\n  }]);\n  return projectCard;\n}();\nfunction loadPage(listenersLoaded) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n    var container, checkedHospitalIds, checkedUnitIds, checkedNolanStages, checkedPatientRiskLevels, ascendingDates, searchBar;\n    return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n      while (1) switch (_context6.prev = _context6.next) {\n        case 0:\n          container = document.querySelector(\"#container-fluid\");\n          if (container) {\n            _context6.next = 3;\n            break;\n          }\n          return _context6.abrupt(\"return\");\n        case 3:\n          // Stop if the container isn't found\n          projectCards = [];\n          // Initialize empty lists of checked hospital and unit ids\n          checkedHospitalIds = [];\n          checkedUnitIds = [];\n          checkedNolanStages = [];\n          checkedPatientRiskLevels = [];\n          ascendingDates = false;\n          fetch(\"currentProjects/currentProjects.html\").then(function (response) {\n            return response.text();\n          }).then(function (data) {\n            // Create a temporary container element to hold the loaded content\n            var tempContainer = document.createElement(\"div\");\n            tempContainer.innerHTML = data;\n            // Select the specific element with the class you want\n            var specificElement = tempContainer.querySelector(\".filterBar\");\n            var createHospitalCheckBoxContainer = tempContainer.querySelector(\"#hospitalSelection\");\n            var createUnitCheckBoxContainer = tempContainer.querySelector(\"#unitSelection\");\n            var createNolanStageCheckBoxContainer = tempContainer.querySelector(\"#nolanStageSelection\");\n            var createPatientRiskLevelCheckBoxContainer = tempContainer.querySelector(\"#patientRiskLevelSelection\");\n            var createOrderSelectionContainer = tempContainer.querySelector(\"#orderSelection\");\n            if (createHospitalCheckBoxContainer) {\n              createHospitalCheckBoxContainer.addEventListener(\"change\", function (event) {\n                return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n                  var checkboxes;\n                  return _regeneratorRuntime().wrap(function _callee$(_context) {\n                    while (1) switch (_context.prev = _context.next) {\n                      case 0:\n                        checkboxes = createHospitalCheckBoxContainer.querySelectorAll('input[type=\"checkbox\"]');\n                        console.log(\"createHospitalCheckBoxContainer\");\n                        // Empty list of checked hospitals\n                        checkedHospitalIds = [];\n                        // Array to store IDs of checked checkboxes\n                        checkboxes.forEach(function (checkbox) {\n                          // Ensure the checkbox is an HTMLInputElement\n                          var inputCheckbox = checkbox;\n                          // Check if the checkbox is checked and add its ID to the array\n                          if (inputCheckbox.checked) {\n                            checkedHospitalIds.push(inputCheckbox.id);\n                          }\n                        });\n                        // Log all checked hospital IDs\n                        console.log(\"Checked hospitals:\", checkedHospitalIds);\n                        // Future change: Only clear the unitIds for unchecked hospitals!\n                        (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.clearContent)(\"unitSelection\");\n                        (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.loadUnits)(checkedHospitalIds);\n                      case 7:\n                      case \"end\":\n                        return _context.stop();\n                    }\n                  }, _callee);\n                }));\n              });\n            }\n            if (createUnitCheckBoxContainer) {\n              createUnitCheckBoxContainer.addEventListener(\"change\", function (event) {\n                return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n                  var checkboxes;\n                  return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n                    while (1) switch (_context2.prev = _context2.next) {\n                      case 0:\n                        checkboxes = createUnitCheckBoxContainer.querySelectorAll('input[type=\"checkbox\"]');\n                        console.log(\"createUnitCheckBoxContainer\");\n                        // Empty list of checked units\n                        checkedUnitIds = [];\n                        checkboxes.forEach(function (checkbox) {\n                          // Ensure the checkbox is an HTMLInputElement\n                          var inputCheckbox = checkbox;\n                          // Check if the checkbox is checked and add its ID to the array\n                          if (inputCheckbox.checked) {\n                            checkedUnitIds.push(inputCheckbox.id);\n                          }\n                        });\n                        _context2.next = 6;\n                        return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getFilteredImprovementWorks)({\n                          patientRiskLevels: checkedPatientRiskLevels,\n                          nolanStages: checkedNolanStages,\n                          units: checkedUnitIds\n                        });\n                      case 6:\n                        filteredImprovementWorks = _context2.sent;\n                        (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.removeCardsFromDiv)(\"div.projectCardCardDiv\");\n                        getProjects(container, listenersLoaded, filteredImprovementWorks);\n                      case 9:\n                      case \"end\":\n                        return _context2.stop();\n                    }\n                  }, _callee2);\n                }));\n              });\n            }\n            if (createNolanStageCheckBoxContainer) {\n              createNolanStageCheckBoxContainer.addEventListener(\"change\", function (event) {\n                return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n                  var checkboxes;\n                  return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n                    while (1) switch (_context3.prev = _context3.next) {\n                      case 0:\n                        checkboxes = createNolanStageCheckBoxContainer.querySelectorAll('input[type=\"checkbox\"]'); // Empty list of checked hospitals\n                        checkedNolanStages = [];\n                        // Array to store IDs of checked checkboxes\n                        checkboxes.forEach(function (checkbox) {\n                          // Ensure the checkbox is an HTMLInputElement\n                          var inputCheckbox = checkbox;\n                          // Check if the checkbox is checked and add its ID to the array\n                          if (inputCheckbox.checked) {\n                            checkedNolanStages.push(inputCheckbox.id);\n                            checkedNolanStages.push(nolanStageMapping[inputCheckbox.id]);\n                            console.log(\"checkedNolanStages: \", checkedNolanStages);\n                          }\n                        });\n                        _context3.next = 5;\n                        return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getFilteredImprovementWorks)({\n                          patientRiskLevels: checkedPatientRiskLevels,\n                          nolanStages: checkedNolanStages,\n                          units: checkedUnitIds\n                        });\n                      case 5:\n                        filteredImprovementWorks = _context3.sent;\n                        (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.removeCardsFromDiv)(\"div.projectCardCardDiv\");\n                        getProjects(container, listenersLoaded, filteredImprovementWorks);\n                      case 8:\n                      case \"end\":\n                        return _context3.stop();\n                    }\n                  }, _callee3);\n                }));\n              });\n            }\n            if (createPatientRiskLevelCheckBoxContainer) {\n              createPatientRiskLevelCheckBoxContainer.addEventListener(\"change\", function (event) {\n                return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n                  var checkboxes;\n                  return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n                    while (1) switch (_context4.prev = _context4.next) {\n                      case 0:\n                        checkboxes = createPatientRiskLevelCheckBoxContainer.querySelectorAll('input[type=\"checkbox\"]');\n                        console.log(\"createPatientRiskLevelCheckBoxContainer\");\n                        // Empty list of checked hospitals\n                        checkedPatientRiskLevels = [];\n                        // Array to store IDs of checked checkboxes\n                        checkboxes.forEach(function (checkbox) {\n                          // Ensure the checkbox is an HTMLInputElement\n                          var inputCheckbox = checkbox;\n                          // Check if the checkbox is checked and add its ID to the array\n                          if (inputCheckbox.checked) {\n                            checkedPatientRiskLevels.push(inputCheckbox.id);\n                            checkedPatientRiskLevels.push(patientRiskLevelMapping[inputCheckbox.id]);\n                            console.log(\"checkedPatientRiskLevels: \", checkedPatientRiskLevels);\n                          }\n                        });\n                        _context4.next = 6;\n                        return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getFilteredImprovementWorks)({\n                          patientRiskLevels: checkedPatientRiskLevels,\n                          nolanStages: checkedNolanStages,\n                          units: checkedUnitIds\n                        });\n                      case 6:\n                        filteredImprovementWorks = _context4.sent;\n                        (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.removeCardsFromDiv)(\"div.projectCardCardDiv\");\n                        getProjects(container, listenersLoaded, filteredImprovementWorks);\n                      case 9:\n                      case \"end\":\n                        return _context4.stop();\n                    }\n                  }, _callee4);\n                }));\n              });\n            }\n            if (createOrderSelectionContainer) {\n              createOrderSelectionContainer.addEventListener(\"change\", function (event) {\n                return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n                  var inputCheckbox;\n                  return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n                    while (1) switch (_context5.prev = _context5.next) {\n                      case 0:\n                        inputCheckbox = event.target;\n                        ascendingDates = inputCheckbox.checked;\n                        (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.removeCardsFromDiv)(\"div.projectCardCardDiv\");\n                        sortProjects(container, listenersLoaded, ascendingDates);\n                      case 4:\n                      case \"end\":\n                        return _context5.stop();\n                    }\n                  }, _callee5);\n                }));\n              });\n            }\n            if (specificElement) {\n              // Insert the specific element into the target element\n              container.insertBefore(specificElement, container.firstChild);\n            }\n          })[\"catch\"](function (error) {\n            console.error(\"Failed to load the external HTML file:\", error);\n          });\n          _context6.next = 12;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getImprovementWorks)({\n            completed: false\n          });\n        case 12:\n          filteredImprovementWorks = _context6.sent;\n          console.log(\"Filtered improvementWorks: \", filteredImprovementWorks);\n          (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.removeCardsFromDiv)(\"div.projectCardCardDiv\");\n          getProjects(container, listenersLoaded, filteredImprovementWorks);\n          searchBar = document.getElementById(\"searchBarImprovement\");\n          searchBar === null || searchBar === void 0 ? void 0 : searchBar.addEventListener(\"keydown\", function (event) {\n            if (event.key === \"Enter\") {\n              performSearch(searchBar, container);\n            }\n          });\n          console.log(\"Loading hospitals\");\n          (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.clearContent)(\"hospitalSelection\");\n          (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.loadHospitals)();\n          loadNolanStages();\n          loadPatientRiskLevels();\n        case 23:\n        case \"end\":\n          return _context6.stop();\n      }\n    }, _callee6);\n  }));\n}\nfunction loadNolanStages() {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var selectStageHTML, allStages;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          selectStageHTML = $(\"#nolanStageSelection\"); // loads the select type from html\n          allStages = [\"Planera\", \"Göra\", \"Studera\", \"Agera\"];\n          allStages.forEach(function (stage) {\n            var generatedElement = document.createRange().createContextualFragment(\"\\n    <div class=\\\"form-check\\\">\\n      <input class=\\\"form-check-input\\\" type=\\\"checkbox\\\" value=\\\"\\\" id=\\\"\" + stage + \"\\\">\\n      <label class=\\\"form-check-label\\\" for=\\\"flexCheckDefault\\\">\" + stage + \"</label>\\n    </div>\");\n            selectStageHTML.append(generatedElement);\n            console.log(\"Adding HTML for for stage \", stage);\n          });\n        case 3:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7);\n  }));\n}\nfunction loadPatientRiskLevels() {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var selectPatientRiskLevelHTML, allRiskLevels;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          selectPatientRiskLevelHTML = $(\"#patientRiskLevelSelection\"); // loads the select type from html\n          allRiskLevels = [\"Grön\", \"Blå\", \"Gul\", \"Röd\"];\n          allRiskLevels.forEach(function (riskLevel) {\n            var generatedElement = document.createRange().createContextualFragment(\"\\n    <div class=\\\"form-check\\\">\\n      <input class=\\\"form-check-input\\\" type=\\\"checkbox\\\" value=\\\"\\\" id=\\\"\" + riskLevel + \"\\\">\\n      <label class=\\\"form-check-label\\\" for=\\\"flexCheckDefault\\\">Riskniv\\xE5 \" + riskLevel + \"</label>\\n    </div>\");\n            selectPatientRiskLevelHTML.append(generatedElement);\n            console.log(\"Adding HTML for for risk level \", riskLevel);\n          });\n        case 3:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8);\n  }));\n}\nfunction sortProjects(selectElement, listenersLoaded, ascendingDates) {\n  // Sort in reversed order if ascendingDates is true\n  var cardsToIterate = ascendingDates ? _toConsumableArray(projectCards).reverse() : projectCards;\n  // Loop through the saved array of cards and generate HTML for each card\n  var _iterator = _createForOfIteratorHelper(cardsToIterate),\n    _step;\n  try {\n    for (_iterator.s(); !(_step = _iterator.n()).done;) {\n      var card = _step.value;\n      var cardHTML = card.generateHTML();\n      var div = document.createElement(\"div\");\n      div.className = \"projectCardCardDiv\"; // Set the class name(s) here\n      div.innerHTML = cardHTML;\n      if (!selectElement) return;\n      selectElement.appendChild(div); // Stop if the container isn't found\n      addEventListener(card.projectId, card);\n    }\n  } catch (err) {\n    _iterator.e(err);\n  } finally {\n    _iterator.f();\n  }\n}\nfunction getProjects(selectElement, listenersLoaded, improvementWorks) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var _this = this;\n    var id;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          id = 0;\n          projectCards = [];\n          improvementWorks.forEach(function (improvementWork) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n              var title, department, projectLeader, dateStarted, card, cardHTML, div;\n              return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n                while (1) switch (_context9.prev = _context9.next) {\n                  case 0:\n                    title = improvementWork.name;\n                    _context9.next = 3;\n                    return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getObjectById)(\"unit\", improvementWork.unitId);\n                  case 3:\n                    department = _context9.sent;\n                    _context9.next = 6;\n                    return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getImprovementWorkResponsible)(improvementWork.id);\n                  case 6:\n                    projectLeader = _context9.sent;\n                    dateStarted = improvementWork.dateStarted;\n                    if (!department) {\n                      _context9.next = 22;\n                      break;\n                    }\n                    card = new projectCard(id, projectLeader.firstName + \" \" + projectLeader.lastName, department.name, title, improvementWork.content, improvementWork.id, improvementWork.currentStage, dateStarted);\n                    projectCards.push(card);\n                    cardHTML = card.generateHTML();\n                    div = document.createElement(\"div\");\n                    div.className = \"projectCardCardDiv\"; // Set the class name(s) here\n                    div.innerHTML = cardHTML;\n                    if (selectElement) {\n                      _context9.next = 17;\n                      break;\n                    }\n                    return _context9.abrupt(\"return\");\n                  case 17:\n                    selectElement.appendChild(div); // Stop if the container isn't found\n                    addEventListener(improvementWork.id, card);\n                    id++;\n                    _context9.next = 23;\n                    break;\n                  case 22:\n                    console.log(improvementWork.unitId + \" is not a unit\"); //Unit Ids on improvement work that do not exist\n                  case 23:\n                  case \"end\":\n                    return _context9.stop();\n                }\n              }, _callee9);\n            }));\n          });\n        case 3:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10);\n  }));\n}\nfunction addEventListener(projectId, card) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {\n    return _regeneratorRuntime().wrap(function _callee13$(_context13) {\n      while (1) switch (_context13.prev = _context13.next) {\n        case 0:\n          $(\"#ongoingSeeDetailsButton\" + projectId).off(\"click\").on(\"click\", function () {\n            return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {\n              var expandedDiv;\n              return _regeneratorRuntime().wrap(function _callee11$(_context11) {\n                while (1) switch (_context11.prev = _context11.next) {\n                  case 0:\n                    expandedDiv = document.getElementById(\"expandedOngoingWorkCard\" + projectId);\n                    if (expandedDiv && expandedDiv.style.display === \"none\") {\n                      card.showMoreInfo(\"expandedOngoingWorkCard\" + projectId, \"ongoingSeeDetailsButton\" + projectId);\n                    } else {\n                      card.closeMoreInfo(\"expandedOngoingWorkCard\" + projectId, \"ongoingSeeDetailsButton\" + projectId);\n                    }\n                  case 2:\n                  case \"end\":\n                    return _context11.stop();\n                }\n              }, _callee11);\n            }));\n          });\n          $(\"#project-button-\" + projectId).off(\"click\").on(\"click\", function () {\n            return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {\n              var tmp, currentStage;\n              return _regeneratorRuntime().wrap(function _callee12$(_context12) {\n                while (1) switch (_context12.prev = _context12.next) {\n                  case 0:\n                    _context12.next = 2;\n                    return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getObjectById)(\"improvementWork\", projectId);\n                  case 2:\n                    tmp = _context12.sent;\n                    currentStage = tmp.currentStage;\n                    if (currentStage === \"Act\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageA)(projectId);\n                    } else if (currentStage === \"Study\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageS)(projectId);\n                    } else if (currentStage === \"Do\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageG)(projectId);\n                    } else if (currentStage === \"Plan\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageP)(projectId);\n                    } else if (currentStage === \"Finished\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageP)(projectId);\n                    }\n                  case 5:\n                  case \"end\":\n                    return _context12.stop();\n                }\n              }, _callee12);\n            }));\n          });\n          /*$(document).on(\"click\", \"#\" + projectId, async function (event) {\n              let tmp = await getObjectById(\"improvementWork\", projectId);\n              const currentStage = tmp.currentStage;\n              const element = event.target as HTMLElement;\n              if (element.classList.contains(\"moreInfoClass\")) {\n                const expandedDiv = document.getElementById(\n                  \"expandedOngoingWorkCard\" + projectId\n                );\n                if (expandedDiv && expandedDiv.style.display === \"none\") {\n                  card.showMoreInfo(\n                    `expandedOngoingWorkCard` + projectId,\n                    `ongoingSeeDetailsButton` + projectId\n                  );\n                } else {\n                  card.closeMoreInfo(\n                    `expandedOngoingWorkCard` + projectId,\n                    `ongoingSeeDetailsButton` + projectId\n                  );\n                }\n              } else if (element.classList.contains(\"projectButton\") || element.classList.contains(\"toSinglePage\")) {\n                document.removeEventListener(\"click\", event.target);\n                if (currentStage === \"Act\") {\n                  loadProjectPageA(projectId);\n                } else if (currentStage === \"Study\") {\n                  loadProjectPageS(projectId);\n                } else if (currentStage === \"Do\") {\n                  loadProjectPageG(projectId);\n                } else if (currentStage === \"Plan\") {\n                  loadProjectPageP(projectId);\n                } else if (currentStage === \"Finished\") {\n                  loadProjectPageP(projectId);\n                }\n              }\n            });*/\n        case 2:\n        case \"end\":\n          return _context13.stop();\n      }\n    }, _callee13);\n  }));\n}\nvar patientRiskLevelMapping = {\n  Grön: \"Green\",\n  Blå: \"Blue\",\n  Gul: \"Yellow\",\n  Röd: \"Red\"\n};\nvar nolanStageMapping = {\n  Planera: \"Plan\",\n  Göra: \"Do\",\n  Studera: \"Study\",\n  Agera: \"Act\"\n};\nfunction performSearch(searchBar, container) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee14() {\n    var inputValue, query, matchedStage;\n    return _regeneratorRuntime().wrap(function _callee14$(_context14) {\n      while (1) switch (_context14.prev = _context14.next) {\n        case 0:\n          inputValue = searchBar.value; //make first character uppercase\n          inputValue = inputValue.toLowerCase();\n          console.log(\"Search query:\", inputValue);\n          // Remove each element\n          projectCards = [];\n          query = {};\n          query.completed = false;\n          (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.removeCardsFromDiv)(\"div.projectCardCardDiv\");\n          if (inputValue !== \"\") {\n            matchedStage = Object.keys(nolanStageMapping).find(function (stage) {\n              return stage.toLowerCase().includes(inputValue.toLowerCase());\n            });\n            if (matchedStage) {\n              query.nolanStage = nolanStageMapping[matchedStage];\n            } else {\n              query.name = inputValue;\n            }\n          }\n          _context14.next = 10;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getImprovementWorks)(query);\n        case 10:\n          filteredImprovementWorks = _context14.sent;\n          _context14.next = 13;\n          return getProjects(container, true, filteredImprovementWorks);\n        case 13:\n        case \"end\":\n          return _context14.stop();\n      }\n    }, _callee14);\n  }));\n}\n\n//# sourceURL=webpack://c3/./client/currentProjects/currentProjects.js?");
 
 /***/ }),
 
@@ -266,7 +266,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
   \****************************/
 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   addEventListener: () => (/* binding */ addEventListener),\n/* harmony export */   loadPage: () => (/* binding */ loadPage)\n/* harmony export */ });\n/* harmony import */ var _Database_authentication_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Database/authentication.js */ \"./client/Database/authentication.js\");\n/* harmony import */ var _SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SidebarAndHeader/pageHandler.js */ \"./client/SidebarAndHeader/pageHandler.js\");\n/* harmony import */ var _client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../client/Database/database.js */ \"./client/Database/database.js\");\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\nfunction logoutUser(event) {\n  event.preventDefault();\n  alert(\"logout\");\n  (0,_Database_authentication_js__WEBPACK_IMPORTED_MODULE_0__.logout)();\n}\nvar myIdeaCards = {};\nvar IdeaCard = /*#__PURE__*/function () {\n  function IdeaCard(id, header, department, name, description, upvoteCount, suggestionID) {\n    _classCallCheck(this, IdeaCard);\n    this.header = header;\n    this.department = department;\n    this.name = name;\n    this.description = description;\n    this.upvoteCount = upvoteCount;\n    this.id = id;\n    this.suggestionID = suggestionID;\n  }\n  _createClass(IdeaCard, [{\n    key: \"generateHTML\",\n    value: function generateHTML() {\n      return \"<div class=\\\"totalExpandedIdeaCard\\\">\\n          <div class=\\\"ideaCard\\\">\\n              <div class=\\\"ideaCardBorder\\\">\\n                  <div class=\\\"ideaCardImageHP\\\">\\n                      <img src=\\\"../images/pinkFaded.png\\\" class =\\\"pinkFadedHP\\\" alt=\\\"pinkFaded\\\">\\n                  </div>\\n                  <div class=\\\"ideaCardMiddleText\\\">\\n                      <p id=\\\"ideaCardHeader\\\" class=\\\"ideaCardFont\\\">\".concat(this.header, \"</p>\\n                      <p id=\\\"ideaCardDepartment\\\" class=\\\"ideaCardFont\\\">\").concat(this.department, \"</p>\\n                      <p id=\\\"ideaCardName\\\" class=\\\"ideaCardFont\\\">\").concat(this.name, \"</p>\\n                      <p id=\\\"ideaCardMoreInfo\").concat(this.id, \"\\\" class=\\\"ideaCardFont moreInfoClass\\\"> > Mer information</p>\\n                  </div>\\n              </div>\\n              <div class=\\\"ideaCardUpvotesHP\\\">\\n              <div class=\\\"upvoteDivHP\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"28\\\" height=\\\"28\\\" fill=\\\"currentColor\\\" class=\\\"bi bi-caret-up upvoteSymbol\\\" viewBox=\\\"0 0 16 16\\\">\\n  <path d=\\\"M3.204 11h9.592L8 5.519 3.204 11zm-.753-.659 4.796-5.48a1 1 0 0 1 1.506 0l4.796 5.48c.566.647.106 1.659-.753 1.659H3.204a1 1 0 0 1-.753-1.659z\\\"/>\\n</svg>              <div id =\\\"upvoteNumber\\\" class=\\\"ideaCardFont\\\"> \").concat(this.upvoteCount, \"</div>\\n\\n              </div>\\n          </div>\\n          </div>\\n          <div id=\\\"expandedContent\").concat(this.id, \"\\\" class= \\\"expandedIdeaContent\\\" style =\\\"display : none;\\\">\\n              <div class=\\\"expandedDescriptionText\\\">\\n                  <p class=\\\"ideaCardFont\\\" id=\\\"expandedHeader\\\">Om ideen</p>\\n                  <p id=\\\"expandedDescription\\\">\").concat(this.description, \"</p>\\n              </div>\\n              <div class=\\\"expandedCommentAndButton id = \\\"expandedCommentAndButton\").concat(this.id, \"\\\">\\n                  <div class=\\\"expandedComment\\\">\\n                      <p class=\\\"ideaCardFont\\\">Kommentarer</p>\\n                      <p class=\\\"ideaCardFont\\\">Komment 1</p>\\n                      <p class=\\\"ideaCardFont\\\">K0mment 2</p>\\n                  </div>\\n                  <div class=\\\"expandedButton\\\">\\n                      <button class=\\\"initiateProjectButton\\\" id=\\\"initiateProjectFromCard\").concat(this.suggestionID, \"\\\">Initiera Projekt</button>\\n                  </div>\\n              </div>\\n          </div>\\n      </div>\");\n    }\n  }, {\n    key: \"showMoreInfo\",\n    value: function showMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"flex\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"^ Stäng detaljer\";\n      }\n    }\n  }, {\n    key: \"closeMoreInfo\",\n    value: function closeMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"none\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"> Mer information\";\n      }\n    }\n  }, {\n    key: \"loadInitiatePage\",\n    value: function loadInitiatePage() {\n      alert(\"The initiate project page should now be loaded\");\n    }\n  }]);\n  return IdeaCard;\n}();\nfunction createNewCards(className, container, signedInUserHsaID) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var _this = this;\n    var user, userSuggestions, counter;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          _context2.next = 2;\n          return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getObjectById)(\"users\", signedInUserHsaID);\n        case 2:\n          user = _context2.sent;\n          _context2.next = 5;\n          return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getSuggestions)({\n            creatorHsaId: user.id\n          });\n        case 5:\n          userSuggestions = _context2.sent;\n          //If there exist filter use those instead to get matching suggestions rest should not need to be changed\n          counter = 0;\n          userSuggestions.forEach(function (suggestion) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n              var unit, user;\n              return _regeneratorRuntime().wrap(function _callee$(_context) {\n                while (1) switch (_context.prev = _context.next) {\n                  case 0:\n                    _context.next = 2;\n                    return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getObjectById)(\"unit\", suggestion.unitId);\n                  case 2:\n                    unit = _context.sent;\n                    _context.next = 5;\n                    return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getObjectById)(\"users\", suggestion.creatorHsaId);\n                  case 5:\n                    user = _context.sent;\n                    createNewIdeaCard(suggestion.name, unit.name, user.firstName + \" \" + user.lastName, suggestion.content, suggestion.upvotes.length, className, container, counter, suggestion.id);\n                    counter = counter + 1;\n                  case 8:\n                  case \"end\":\n                    return _context.stop();\n                }\n              }, _callee);\n            }));\n          });\n          addListner(userSuggestions, container);\n        case 9:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2);\n  }));\n}\nfunction addListner(cardArray, element) {\n  element.addEventListener(\"click\", function (event) {\n    var target = event.target;\n    //Adds an eventlistener for the more info of the card\n    if (target && target.className === \"ideaCardFont moreInfoClass\") {\n      var cardId = parseInt(target.id.replace(\"ideaCardMoreInfo\", \"\"), 10);\n      if (cardArray[cardId]) {\n        var card = cardArray[cardId];\n        var expandedDiv = document.getElementById(\"expandedContent\".concat(cardId));\n        console.log(expandedDiv);\n        if (expandedDiv) {\n          if (expandedDiv.style.display === \"none\") {\n            card.showMoreInfo(\"expandedContent\".concat(cardId), \"ideaCardMoreInfo\".concat(cardId));\n          } else {\n            card.closeMoreInfo(\"expandedContent\".concat(cardId), \"ideaCardMoreInfo\".concat(cardId));\n          }\n        } else {\n          console.error(\"Expanded div not found\");\n        }\n      }\n    }\n  });\n}\nfunction createNewIdeaCard(header, department, name, description, upvoteCount, className, container, ID, suggestionID) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var card, cardHTML, div;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          card = new IdeaCard(ID, header, department, name, description, upvoteCount, suggestionID);\n          cardHTML = card.generateHTML();\n          myIdeaCards[ID] = card;\n          div = document.createElement(\"div\");\n          div.className = className; // Set the class name(s) here\n          div.innerHTML = cardHTML;\n          container.appendChild(div);\n        case 7:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3);\n  }));\n}\nfunction loadPage(listenersLoaded) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n    var _this2 = this;\n    var container;\n    return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n      while (1) switch (_context5.prev = _context5.next) {\n        case 0:\n          container = document.querySelector(\"#container-fluid\");\n          if (container) {\n            _context5.next = 3;\n            break;\n          }\n          return _context5.abrupt(\"return\");\n        case 3:\n          // Stop if the container isn't found\n          fetch(\"homePage.html\").then(function (response) {\n            return response.text();\n          }).then(function (data) {\n            return __awaiter(_this2, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n              var tempContainer, specificElement, tmp, user, suggestionContainer, nameHeaderElement, userFullName, projectContainer, departmentContainer, departmentDiv;\n              return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n                while (1) switch (_context4.prev = _context4.next) {\n                  case 0:\n                    // Create a temporary container element to hold the loaded content\n                    tempContainer = document.createElement(\"div\");\n                    tempContainer.innerHTML = data;\n                    // Select the specific element with the class you want\n                    specificElement = tempContainer.querySelector(\".main-content\");\n                    if (specificElement) {\n                      // Insert the specific element into the target element\n                      container.insertBefore(specificElement, container.firstChild);\n                    }\n                    tmp = localStorage.getItem(\"user\");\n                    console.log(tmp);\n                    if (tmp) {\n                      _context4.next = 9;\n                      break;\n                    }\n                    console.log(\"there is not an user in localStorage\");\n                    return _context4.abrupt(\"return\");\n                  case 9:\n                    user = JSON.parse(tmp)[0];\n                    suggestionContainer = document.getElementById(\"suggestion-container\");\n                    if (!suggestionContainer) {\n                      _context4.next = 15;\n                      break;\n                    }\n                    _context4.next = 14;\n                    return createNewCards(\"HomePageIdeaCardDiv\", suggestionContainer, user.id);\n                  case 14:\n                    addListner(myIdeaCards, container);\n                  case 15:\n                    nameHeaderElement = document.getElementById(\"user-name-header\");\n                    userFullName = user.firstName + \" \" + user.lastName;\n                    if (nameHeaderElement) {\n                      nameHeaderElement.textContent = userFullName;\n                    }\n                    projectContainer = document.getElementById(\"project-container\");\n                    if (!projectContainer) {\n                      _context4.next = 22;\n                      break;\n                    }\n                    _context4.next = 22;\n                    return getProjects(projectContainer, listenersLoaded, user.id);\n                  case 22:\n                    console.log(\"innan\");\n                    departmentContainer = document.getElementById(\"department-container\");\n                    departmentDiv = document.getElementById(\"nolanAct\");\n                    if (!(departmentContainer && document.getElementById(\"nolanAct\") && departmentDiv.innerHTML.trim() === \"\")) {\n                      _context4.next = 29;\n                      break;\n                    }\n                    console.log(\"anropar funktionen\");\n                    _context4.next = 29;\n                    return improvementWorkInfo(departmentContainer, user);\n                  case 29:\n                  case \"end\":\n                    return _context4.stop();\n                }\n              }, _callee4);\n            }));\n          })[\"catch\"](function (error) {\n            console.error(\"Failed to load the external HTML file:\", error);\n          });\n        case 4:\n        case \"end\":\n          return _context5.stop();\n      }\n    }, _callee5);\n  }));\n}\nfunction addEventListener(projectId, card) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          $(\"#homepage-\" + projectId).off(\"click\").on(\"click\", function () {\n            return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n              var tmp, currentStage;\n              return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n                while (1) switch (_context6.prev = _context6.next) {\n                  case 0:\n                    _context6.next = 2;\n                    return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getObjectById)(\"improvementWork\", projectId);\n                  case 2:\n                    tmp = _context6.sent;\n                    currentStage = tmp.currentStage;\n                    if (currentStage === \"Act\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageA)(projectId);\n                    } else if (currentStage === \"Study\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageS)(projectId);\n                    } else if (currentStage === \"Do\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageG)(projectId);\n                    } else if (currentStage === \"Plan\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageP)(projectId);\n                    } else if (currentStage === \"Finished\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageP)(projectId);\n                    }\n                  case 5:\n                  case \"end\":\n                    return _context6.stop();\n                }\n              }, _callee6);\n            }));\n          });\n        case 1:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7);\n  }));\n}\nvar patientRiskLevelMapping = {\n  Grön: \"Green\",\n  Blå: \"Blue\",\n  Gul: \"Yellow\",\n  Röd: \"Red\"\n};\nvar nolanStageMapping = {\n  Planera: \"Plan\",\n  Göra: \"Do\",\n  Studera: \"Study\",\n  Agera: \"Act\"\n};\n/*\nasync function performSearch(searchBar: HTMLInputElement, container: HTMLElement) {\n  let inputValue = searchBar.value;\n  //make first character uppercase\n  inputValue = inputValue.toLowerCase();\n  console.log(\"Search query:\", inputValue);\n  // Remove each element\n  projectCards = [];\n\n  let query: { [key: string]: string } = {};\n\n  removeCardsFromDiv(\"div.projectCardCardDiv\");\n    \n  if (inputValue !== \"\") {\n    const matchedStage = Object.keys(nolanStageMapping).find((stage) =>\n      stage.toLowerCase().includes(inputValue.toLowerCase())\n    );\n\n    if (matchedStage) {\n      query.nolanStage = nolanStageMapping[matchedStage];\n    } else {\n      query.name = inputValue;\n    }\n  }\n  filteredImprovementWorks = await getImprovementWorks(query);\n  await getProjects(container, true, filteredImprovementWorks);\n}\n*/\nfunction improvementWorkInfo(departmentContainer, user) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var improvementWorks, improvementWorksPlan, improvementWorksDo, improvementWorkStudy, improvementWorksAct, _iterator, _step, improvementWork, improvementWorkContainer, improvementWorkContainerElement, nolanAct, actElement, nolanPlan, planElement, nolanDo, doElement, nolanStudy, studyElement;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          _context8.next = 2;\n          return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getImprovementWorks)({\n            unitId: user.unitId\n          });\n        case 2:\n          improvementWorks = _context8.sent;\n          console.log(\"i funktionen\");\n          //Count number of improvement works in the department in each stage\n          improvementWorksPlan = 0;\n          improvementWorksDo = 0;\n          improvementWorkStudy = 0;\n          improvementWorksAct = 0;\n          _iterator = _createForOfIteratorHelper(improvementWorks);\n          try {\n            for (_iterator.s(); !(_step = _iterator.n()).done;) {\n              improvementWork = _step.value;\n              if (improvementWork.currentStage == \"Plan\") {\n                improvementWorksPlan += 1;\n              } else if (improvementWork.currentStage == \"Do\") {\n                improvementWorksDo += 1;\n              } else if (improvementWork.currentStage == \"Study\") {\n                improvementWorkStudy += 1;\n              } else if (improvementWork.currentStage == \"Act\") {\n                improvementWorksAct += 1;\n              }\n            }\n          } catch (err) {\n            _iterator.e(err);\n          } finally {\n            _iterator.f();\n          }\n          improvementWorkContainer = document.getElementById(\"numberOfImprovementWorks\"); //Append a div displaying the number of improvement works in the user's department\n          improvementWorkContainerElement = document.createElement(\"p\");\n          improvementWorkContainerElement.innerHTML = \"Antal pågående förbättringsarbeten i din avdelning: \" + improvementWorks.length;\n          if (improvementWorkContainer && improvementWorkContainer.innerHTML.trim() === \"\") {\n            improvementWorkContainer.appendChild(improvementWorkContainerElement);\n          }\n          //Append the text displaying the number of improvement works that are in the stage act\n          nolanAct = document.getElementById(\"nolanAct\");\n          actElement = document.createElement(\"p\");\n          actElement.innerHTML = \"Agera: \" + improvementWorksAct;\n          actElement.style.margin = \"5px\";\n          if (nolanAct) {\n            nolanAct.appendChild(actElement);\n          }\n          //Append the text displaying the number of improvement works that are in the stage plan\n          nolanPlan = document.getElementById(\"nolanPlan\");\n          planElement = document.createElement(\"p\");\n          planElement.innerHTML = \"Planera: \" + improvementWorksPlan;\n          planElement.style.margin = \"5px\";\n          if (nolanPlan) {\n            nolanPlan.appendChild(planElement);\n          }\n          //Append the text displaying the number of improvement works that are in the stage do\n          nolanDo = document.getElementById(\"nolanDo\");\n          doElement = document.createElement(\"p\");\n          doElement.innerHTML = \"Göra: \" + improvementWorksDo;\n          doElement.style.margin = \"5px\";\n          if (nolanDo) {\n            nolanDo.appendChild(doElement);\n          }\n          //Append the text displaying the number of improvement works that are in the stage study\n          nolanStudy = document.getElementById(\"nolanStudy\");\n          studyElement = document.createElement(\"p\");\n          studyElement.innerHTML = \"Studera: \" + improvementWorkStudy;\n          studyElement.style.margin = \"5px\";\n          if (nolanStudy) {\n            nolanStudy.appendChild(studyElement);\n          }\n        case 34:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8);\n  }));\n}\nfunction getProjects(selectElement, listenersLoaded, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var _this3 = this;\n    var data, id;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          _context10.next = 2;\n          return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getImprovementWorksForUser)(userHsaId);\n        case 2:\n          data = _context10.sent;\n          id = 0;\n          data.forEach(function (project) {\n            return __awaiter(_this3, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n              var title, department, name, description, i, card, cardHTML, div;\n              return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n                while (1) switch (_context9.prev = _context9.next) {\n                  case 0:\n                    title = project.name;\n                    _context9.next = 3;\n                    return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getObjectById)(\"unit\", project.unitId);\n                  case 3:\n                    department = _context9.sent;\n                    if (!department) {\n                      _context9.next = 21;\n                      break;\n                    }\n                    name = \"Projektledare\"; //Waiting for backend fix\n                    description = project.content;\n                    i = id;\n                    card = new projectCard(i, name, department.name, title, description, project.id);\n                    projectCards[i] = card;\n                    cardHTML = card.generateHTML();\n                    div = document.createElement(\"div\");\n                    div.className = \"homePageProjectCardDiv\"; // Set the class name(s) here\n                    div.innerHTML = cardHTML;\n                    if (selectElement) {\n                      _context9.next = 16;\n                      break;\n                    }\n                    return _context9.abrupt(\"return\");\n                  case 16:\n                    selectElement.appendChild(div); // Stop if the container isn't found\n                    addEventListener(project.id, card);\n                    id++;\n                    _context9.next = 22;\n                    break;\n                  case 21:\n                    console.log(project.unitId + \" is not a unit\"); //Unit Ids on improvement work that do not exist\n                  case 22:\n                  case \"end\":\n                    return _context9.stop();\n                }\n              }, _callee9);\n            }));\n          });\n        case 5:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10);\n  }));\n}\nvar projectCards = {};\nvar projectCard = /*#__PURE__*/function () {\n  function projectCard(id, name, department, title, description, projectId) {\n    _classCallCheck(this, projectCard);\n    this.name = name;\n    this.department = department;\n    this.title = title;\n    this.description = description;\n    this.id = id;\n    this.projectId = projectId;\n  }\n  _createClass(projectCard, [{\n    key: \"showMoreInfo\",\n    value: function showMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"flex\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"^ Stäng detaljer\";\n      }\n    }\n  }, {\n    key: \"closeMoreInfo\",\n    value: function closeMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"none\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"> Mer information\";\n      }\n    }\n  }, {\n    key: \"loadInitiatePage\",\n    value: function loadInitiatePage() {\n      alert(\"The initiate project page should now be loaded\");\n    }\n  }, {\n    key: \"generateHTML\",\n    value: function generateHTML() {\n      return \"<div class=\\\"homeTotalExpandedOngoingWorkCard\\\">\\n        <div style=\\\"cursor: pointer;\\\" class=\\\"flex-container ongoingCard\\\" id=\\\"homepage-\".concat(this.projectId, \"\\\">\\n            <div class=\\\"ongoingCardImageContainer toSinglePage\\\">\\n                <div class = \\\"flex-box ongoingCardImage toSinglePage\\\" id=\\\"pinkFaded\\\"></div>\\n            </div>\\n            <div class=\\\"div ongoingCardInfo toSinglePage\\\">\\n                <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardManager\\\">\").concat(this.name, \"</p>\\n                <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardDepartment\\\">\").concat(this.department, \"</p>\\n                <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardIdeaTitle\\\">\").concat(this.title, \"</p>\\n            </div>\\n\\n            <!--<button id=\\\"homepage-project-button-\").concat(this.projectId, \"\\\" data-project-id=\\\"\").concat(this.id, \"\\\" class=\\\"projectButton\\\" role=\\\"button\\\">G\\xE5 till projektsidan</button>-->\\n\\n\\n            <div class=\\\"container ongoingSeeCardDetails toSinglePage\\\">\\n                <div class=\\\"ongoingSeeCardDetailsInner\\\">\\n                    \\n                </div>\\n            </div>\\n        </div> \\n        <div class = \\\"expandedOngoingWorkCard\\\" id=\\\"homepage-expandedOngoingWorkCard\").concat(this.projectId, \"\\\" style=\\\"display: none;\\\">\\n            <div class =\\\"homepage-expandedTextOngoingWorkCard\\\">\\n            \").concat(this.description, \"\\n            </div>\\n        </div>\\n        </div> \");\n    }\n  }]);\n  return projectCard;\n}(); //<p id=\"homepage-ongoingSeeDetailsButton${this.projectId}\" class = \"moreInfoClass\">> Mer information</p>\n\n//# sourceURL=webpack://c3/./client/homePage.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   addEventListener: () => (/* binding */ addEventListener),\n/* harmony export */   loadPage: () => (/* binding */ loadPage)\n/* harmony export */ });\n/* harmony import */ var _Database_authentication_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Database/authentication.js */ \"./client/Database/authentication.js\");\n/* harmony import */ var _SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SidebarAndHeader/pageHandler.js */ \"./client/SidebarAndHeader/pageHandler.js\");\n/* harmony import */ var _client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../client/Database/database.js */ \"./client/Database/database.js\");\n/* harmony import */ var _projectPage_projectPage_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./projectPage/projectPage.js */ \"./client/projectPage/projectPage.js\");\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\nfunction logoutUser(event) {\n  event.preventDefault();\n  alert(\"logout\");\n  (0,_Database_authentication_js__WEBPACK_IMPORTED_MODULE_0__.logout)();\n}\nvar myIdeaCards = {};\nvar IdeaCard = /*#__PURE__*/function () {\n  function IdeaCard(id, header, department, name, description, upvoteCount, suggestionID) {\n    _classCallCheck(this, IdeaCard);\n    this.header = header;\n    this.department = department;\n    this.name = name;\n    this.description = description;\n    this.upvoteCount = upvoteCount;\n    this.id = id;\n    this.suggestionID = suggestionID;\n  }\n  _createClass(IdeaCard, [{\n    key: \"generateHTML\",\n    value: function generateHTML() {\n      return \"<div class=\\\"totalExpandedIdeaCard\\\">\\n          <div class=\\\"ideaCard\\\">\\n              <div class=\\\"ideaCardBorder\\\">\\n                  <div class=\\\"ideaCardImageHP\\\">\\n                      <img src=\\\"../images/pinkFaded.png\\\" class =\\\"pinkFadedHP\\\" alt=\\\"pinkFaded\\\">\\n                  </div>\\n                  <div class=\\\"ideaCardMiddleText\\\">\\n                      <p id=\\\"ideaCardHeader\\\" class=\\\"ideaCardFont\\\">\".concat(this.header, \"</p>\\n                      <p id=\\\"ideaCardDepartment\\\" class=\\\"ideaCardFont\\\">\").concat(this.department, \"</p>\\n                      <p id=\\\"ideaCardName\\\" class=\\\"ideaCardFont\\\">\").concat(this.name, \"</p>\\n                      <p id=\\\"ideaCardMoreInfo\").concat(this.id, \"\\\" class=\\\"ideaCardFont moreInfoClass\\\"> > Mer information</p>\\n                  </div>\\n              </div>\\n              <div class=\\\"ideaCardUpvotesHP\\\">\\n              <div class=\\\"upvoteDivHP\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"28\\\" height=\\\"28\\\" fill=\\\"currentColor\\\" class=\\\"bi bi-caret-up upvoteSymbol\\\" viewBox=\\\"0 0 16 16\\\">\\n  <path d=\\\"M3.204 11h9.592L8 5.519 3.204 11zm-.753-.659 4.796-5.48a1 1 0 0 1 1.506 0l4.796 5.48c.566.647.106 1.659-.753 1.659H3.204a1 1 0 0 1-.753-1.659z\\\"/>\\n</svg>              <div id =\\\"upvoteNumber\\\" class=\\\"ideaCardFont\\\"> \").concat(this.upvoteCount, \"</div>\\n\\n              </div>\\n          </div>\\n          </div>\\n          <div id=\\\"expandedContent\").concat(this.id, \"\\\" class= \\\"expandedIdeaContent\\\" style =\\\"display : none;\\\">\\n              <div class=\\\"expandedDescriptionText\\\">\\n                  <p class=\\\"ideaCardFont\\\" id=\\\"expandedHeader\\\">Om ideen</p>\\n                  <p id=\\\"expandedDescription\\\">\").concat(this.description, \"</p>\\n              </div>\\n              <div class=\\\"expandedCommentAndButton id = \\\"expandedCommentAndButton\").concat(this.id, \"\\\">\\n                  <div class=\\\"expandedComment\\\">\\n                      <p class=\\\"ideaCardFont\\\">Kommentarer</p>\\n                      <p class=\\\"ideaCardFont\\\">Komment 1</p>\\n                      <p class=\\\"ideaCardFont\\\">K0mment 2</p>\\n                  </div>\\n                  <div class=\\\"expandedButton\\\">\\n                      <button class=\\\"initiateProjectButton\\\" id=\\\"initiateProjectFromCard\").concat(this.suggestionID, \"\\\">Initiera Projekt</button>\\n                  </div>\\n              </div>\\n          </div>\\n      </div>\");\n    }\n  }, {\n    key: \"showMoreInfo\",\n    value: function showMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"flex\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"^ Stäng detaljer\";\n      }\n    }\n  }, {\n    key: \"closeMoreInfo\",\n    value: function closeMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"none\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"> Mer information\";\n      }\n    }\n  }, {\n    key: \"loadInitiatePage\",\n    value: function loadInitiatePage() {\n      alert(\"The initiate project page should now be loaded\");\n    }\n  }]);\n  return IdeaCard;\n}();\nfunction createNewCards(className, container, signedInUserHsaID) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var _this = this;\n    var user, userSuggestions, counter;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          _context2.next = 2;\n          return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getObjectById)(\"users\", signedInUserHsaID);\n        case 2:\n          user = _context2.sent;\n          _context2.next = 5;\n          return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getSuggestions)({\n            creatorHsaId: user.id\n          });\n        case 5:\n          userSuggestions = _context2.sent;\n          //If there exist filter use those instead to get matching suggestions rest should not need to be changed\n          counter = 0;\n          userSuggestions.forEach(function (suggestion) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n              var unit, user;\n              return _regeneratorRuntime().wrap(function _callee$(_context) {\n                while (1) switch (_context.prev = _context.next) {\n                  case 0:\n                    _context.next = 2;\n                    return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getObjectById)(\"unit\", suggestion.unitId);\n                  case 2:\n                    unit = _context.sent;\n                    _context.next = 5;\n                    return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getObjectById)(\"users\", suggestion.creatorHsaId);\n                  case 5:\n                    user = _context.sent;\n                    createNewIdeaCard(suggestion.name, unit.name, user.firstName + \" \" + user.lastName, suggestion.content, suggestion.upvotes.length, className, container, counter, suggestion.id);\n                    counter = counter + 1;\n                  case 8:\n                  case \"end\":\n                    return _context.stop();\n                }\n              }, _callee);\n            }));\n          });\n          addListner(userSuggestions, container);\n        case 9:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2);\n  }));\n}\nfunction addListner(cardArray, element) {\n  element.addEventListener(\"click\", function (event) {\n    var target = event.target;\n    //Adds an eventlistener for the more info of the card\n    if (target && target.className === \"ideaCardFont moreInfoClass\") {\n      var cardId = parseInt(target.id.replace(\"ideaCardMoreInfo\", \"\"), 10);\n      if (cardArray[cardId]) {\n        var card = cardArray[cardId];\n        var expandedDiv = document.getElementById(\"expandedContent\".concat(cardId));\n        console.log(expandedDiv);\n        if (expandedDiv) {\n          if (expandedDiv.style.display === \"none\") {\n            card.showMoreInfo(\"expandedContent\".concat(cardId), \"ideaCardMoreInfo\".concat(cardId));\n          } else {\n            card.closeMoreInfo(\"expandedContent\".concat(cardId), \"ideaCardMoreInfo\".concat(cardId));\n          }\n        } else {\n          console.error(\"Expanded div not found\");\n        }\n      }\n    }\n  });\n}\nfunction createNewIdeaCard(header, department, name, description, upvoteCount, className, container, ID, suggestionID) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var card, cardHTML, div;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          card = new IdeaCard(ID, header, department, name, description, upvoteCount, suggestionID);\n          cardHTML = card.generateHTML();\n          myIdeaCards[ID] = card;\n          div = document.createElement(\"div\");\n          div.className = className; // Set the class name(s) here\n          div.innerHTML = cardHTML;\n          container.appendChild(div);\n        case 7:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3);\n  }));\n}\nfunction loadPage(listenersLoaded) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n    var _this2 = this;\n    var container;\n    return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n      while (1) switch (_context5.prev = _context5.next) {\n        case 0:\n          container = document.querySelector(\"#container-fluid\");\n          if (container) {\n            _context5.next = 3;\n            break;\n          }\n          return _context5.abrupt(\"return\");\n        case 3:\n          // Stop if the container isn't found\n          fetch(\"homePage.html\").then(function (response) {\n            return response.text();\n          }).then(function (data) {\n            return __awaiter(_this2, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n              var tempContainer, specificElement, tmp, user, suggestionContainer, nameHeaderElement, userFullName, projectContainer, departmentContainer, departmentDiv;\n              return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n                while (1) switch (_context4.prev = _context4.next) {\n                  case 0:\n                    // Create a temporary container element to hold the loaded content\n                    tempContainer = document.createElement(\"div\");\n                    tempContainer.innerHTML = data;\n                    // Select the specific element with the class you want\n                    specificElement = tempContainer.querySelector(\".main-content\");\n                    if (specificElement) {\n                      // Insert the specific element into the target element\n                      container.insertBefore(specificElement, container.firstChild);\n                    }\n                    tmp = localStorage.getItem(\"user\");\n                    console.log(tmp);\n                    if (tmp) {\n                      _context4.next = 9;\n                      break;\n                    }\n                    console.log(\"there is not an user in localStorage\");\n                    return _context4.abrupt(\"return\");\n                  case 9:\n                    user = JSON.parse(tmp)[0];\n                    suggestionContainer = document.getElementById(\"suggestion-container\");\n                    if (!suggestionContainer) {\n                      _context4.next = 15;\n                      break;\n                    }\n                    _context4.next = 14;\n                    return createNewCards(\"HomePageIdeaCardDiv\", suggestionContainer, user.id);\n                  case 14:\n                    addListner(myIdeaCards, container);\n                  case 15:\n                    nameHeaderElement = document.getElementById(\"user-name-header\");\n                    userFullName = user.firstName + \" \" + user.lastName;\n                    if (nameHeaderElement) {\n                      nameHeaderElement.textContent = userFullName;\n                    }\n                    projectContainer = document.getElementById(\"project-container\");\n                    if (!projectContainer) {\n                      _context4.next = 22;\n                      break;\n                    }\n                    _context4.next = 22;\n                    return getProjects(projectContainer, listenersLoaded, user.id);\n                  case 22:\n                    console.log(\"innan\");\n                    departmentContainer = document.getElementById(\"department-container\");\n                    departmentDiv = document.getElementById(\"nolanAct\");\n                    if (!(departmentContainer && document.getElementById(\"nolanAct\") && departmentDiv.innerHTML.trim() === \"\")) {\n                      _context4.next = 29;\n                      break;\n                    }\n                    console.log(\"anropar funktionen\");\n                    _context4.next = 29;\n                    return improvementWorkInfo(departmentContainer, user);\n                  case 29:\n                  case \"end\":\n                    return _context4.stop();\n                }\n              }, _callee4);\n            }));\n          })[\"catch\"](function (error) {\n            console.error(\"Failed to load the external HTML file:\", error);\n          });\n        case 4:\n        case \"end\":\n          return _context5.stop();\n      }\n    }, _callee5);\n  }));\n}\nfunction addEventListener(projectId, card) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          $(\"#homepage-\" + projectId).off(\"click\").on(\"click\", function () {\n            return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n              var tmp, currentStage;\n              return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n                while (1) switch (_context6.prev = _context6.next) {\n                  case 0:\n                    _context6.next = 2;\n                    return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getObjectById)(\"improvementWork\", projectId);\n                  case 2:\n                    tmp = _context6.sent;\n                    currentStage = tmp.currentStage;\n                    if (currentStage === \"Act\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageA)(projectId);\n                    } else if (currentStage === \"Study\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageS)(projectId);\n                    } else if (currentStage === \"Do\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageG)(projectId);\n                    } else if (currentStage === \"Plan\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageP)(projectId);\n                    } else if (currentStage === \"Finished\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageP)(projectId);\n                    }\n                  case 5:\n                  case \"end\":\n                    return _context6.stop();\n                }\n              }, _callee6);\n            }));\n          });\n        case 1:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7);\n  }));\n}\nvar patientRiskLevelMapping = {\n  Grön: \"Green\",\n  Blå: \"Blue\",\n  Gul: \"Yellow\",\n  Röd: \"Red\"\n};\nvar nolanStageMapping = {\n  Planera: \"Plan\",\n  Göra: \"Do\",\n  Studera: \"Study\",\n  Agera: \"Act\"\n};\n/*\nasync function performSearch(searchBar: HTMLInputElement, container: HTMLElement) {\n  let inputValue = searchBar.value;\n  //make first character uppercase\n  inputValue = inputValue.toLowerCase();\n  console.log(\"Search query:\", inputValue);\n  // Remove each element\n  projectCards = [];\n\n  let query: { [key: string]: string } = {};\n\n  removeCardsFromDiv(\"div.projectCardCardDiv\");\n    \n  if (inputValue !== \"\") {\n    const matchedStage = Object.keys(nolanStageMapping).find((stage) =>\n      stage.toLowerCase().includes(inputValue.toLowerCase())\n    );\n\n    if (matchedStage) {\n      query.nolanStage = nolanStageMapping[matchedStage];\n    } else {\n      query.name = inputValue;\n    }\n  }\n  filteredImprovementWorks = await getImprovementWorks(query);\n  await getProjects(container, true, filteredImprovementWorks);\n}\n*/\nfunction improvementWorkInfo(departmentContainer, user) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var improvementWorks, improvementWorksPlan, improvementWorksDo, improvementWorkStudy, improvementWorksAct, _iterator, _step, improvementWork, improvementWorkContainer, improvementWorkContainerElement, nolanAct, actElement, nolanPlan, planElement, nolanDo, doElement, nolanStudy, studyElement;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          _context8.next = 2;\n          return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getImprovementWorks)({\n            unitId: user.unitId\n          });\n        case 2:\n          improvementWorks = _context8.sent;\n          console.log(\"i funktionen\");\n          //Count number of improvement works in the department in each stage\n          improvementWorksPlan = 0;\n          improvementWorksDo = 0;\n          improvementWorkStudy = 0;\n          improvementWorksAct = 0;\n          _iterator = _createForOfIteratorHelper(improvementWorks);\n          try {\n            for (_iterator.s(); !(_step = _iterator.n()).done;) {\n              improvementWork = _step.value;\n              if (improvementWork.currentStage == \"Plan\") {\n                improvementWorksPlan += 1;\n              } else if (improvementWork.currentStage == \"Do\") {\n                improvementWorksDo += 1;\n              } else if (improvementWork.currentStage == \"Study\") {\n                improvementWorkStudy += 1;\n              } else if (improvementWork.currentStage == \"Act\") {\n                improvementWorksAct += 1;\n              }\n            }\n          } catch (err) {\n            _iterator.e(err);\n          } finally {\n            _iterator.f();\n          }\n          improvementWorkContainer = document.getElementById(\"numberOfImprovementWorks\"); //Append a div displaying the number of improvement works in the user's department\n          improvementWorkContainerElement = document.createElement(\"p\");\n          improvementWorkContainerElement.innerHTML = \"Antal pågående förbättringsarbeten i din avdelning: \" + improvementWorks.length;\n          if (improvementWorkContainer && improvementWorkContainer.innerHTML.trim() === \"\") {\n            improvementWorkContainer.appendChild(improvementWorkContainerElement);\n          }\n          //Append the text displaying the number of improvement works that are in the stage act\n          nolanAct = document.getElementById(\"nolanAct\");\n          actElement = document.createElement(\"p\");\n          actElement.innerHTML = \"Agera: \" + improvementWorksAct;\n          actElement.style.margin = \"5px\";\n          if (nolanAct) {\n            nolanAct.appendChild(actElement);\n          }\n          //Append the text displaying the number of improvement works that are in the stage plan\n          nolanPlan = document.getElementById(\"nolanPlan\");\n          planElement = document.createElement(\"p\");\n          planElement.innerHTML = \"Planera: \" + improvementWorksPlan;\n          planElement.style.margin = \"5px\";\n          if (nolanPlan) {\n            nolanPlan.appendChild(planElement);\n          }\n          //Append the text displaying the number of improvement works that are in the stage do\n          nolanDo = document.getElementById(\"nolanDo\");\n          doElement = document.createElement(\"p\");\n          doElement.innerHTML = \"Göra: \" + improvementWorksDo;\n          doElement.style.margin = \"5px\";\n          if (nolanDo) {\n            nolanDo.appendChild(doElement);\n          }\n          //Append the text displaying the number of improvement works that are in the stage study\n          nolanStudy = document.getElementById(\"nolanStudy\");\n          studyElement = document.createElement(\"p\");\n          studyElement.innerHTML = \"Studera: \" + improvementWorkStudy;\n          studyElement.style.margin = \"5px\";\n          if (nolanStudy) {\n            nolanStudy.appendChild(studyElement);\n          }\n        case 34:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8);\n  }));\n}\nfunction getProjects(selectElement, listenersLoaded, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var _this3 = this;\n    var data, id;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          _context10.next = 2;\n          return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getImprovementWorksForUser)(userHsaId);\n        case 2:\n          data = _context10.sent;\n          id = 0;\n          data.forEach(function (project) {\n            return __awaiter(_this3, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n              var title, department, name, description, i, card, cardHTML, div;\n              return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n                while (1) switch (_context9.prev = _context9.next) {\n                  case 0:\n                    title = project.name;\n                    _context9.next = 3;\n                    return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getObjectById)(\"unit\", project.unitId);\n                  case 3:\n                    department = _context9.sent;\n                    if (!department) {\n                      _context9.next = 21;\n                      break;\n                    }\n                    name = \"Projektledare\"; //Waiting for backend fix\n                    description = project.content;\n                    i = id;\n                    card = new projectCard(i, name, department.name, title, description, project.id, project.dateStarted);\n                    projectCards[i] = card;\n                    cardHTML = card.generateHTML();\n                    div = document.createElement(\"div\");\n                    div.className = \"homePageProjectCardDiv\"; // Set the class name(s) here\n                    div.innerHTML = cardHTML;\n                    if (selectElement) {\n                      _context9.next = 16;\n                      break;\n                    }\n                    return _context9.abrupt(\"return\");\n                  case 16:\n                    selectElement.appendChild(div); // Stop if the container isn't found\n                    addEventListener(project.id, card);\n                    id++;\n                    _context9.next = 22;\n                    break;\n                  case 21:\n                    console.log(project.unitId + \" is not a unit\"); //Unit Ids on improvement work that do not exist\n                  case 22:\n                  case \"end\":\n                    return _context9.stop();\n                }\n              }, _callee9);\n            }));\n          });\n        case 5:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10);\n  }));\n}\nvar projectCards = {};\nvar projectCard = /*#__PURE__*/function () {\n  function projectCard(id, name, department, title, description, projectId, dateStarted) {\n    _classCallCheck(this, projectCard);\n    this.name = name;\n    this.department = department;\n    this.title = title;\n    this.description = description;\n    this.id = id;\n    this.projectId = projectId;\n    this.dateStarted = dateStarted;\n  }\n  _createClass(projectCard, [{\n    key: \"showMoreInfo\",\n    value: function showMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"flex\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"^ Stäng detaljer\";\n      }\n    }\n  }, {\n    key: \"closeMoreInfo\",\n    value: function closeMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"none\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"> Mer information\";\n      }\n    }\n  }, {\n    key: \"loadInitiatePage\",\n    value: function loadInitiatePage() {\n      alert(\"The initiate project page should now be loaded\");\n    }\n  }, {\n    key: \"generateHTML\",\n    value: function generateHTML() {\n      return \"<div class=\\\"homeTotalExpandedOngoingWorkCard\\\">\\n        <div style=\\\"cursor: pointer;\\\" class=\\\"flex-container ongoingCard\\\" id=\\\"homepage-\".concat(this.projectId, \"\\\">\\n            <div class=\\\"ongoingCardImageContainer toSinglePage\\\">\\n                <div class = \\\"flex-box ongoingCardImage toSinglePage\\\" id=\\\"pinkFaded\\\"></div>\\n            </div>\\n            <div class=\\\"div ongoingCardInfo toSinglePage\\\">\\n                <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardManager\\\">\").concat(this.name, \"</p>\\n                <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardDepartment\\\">\").concat(this.department, \"</p>\\n                <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardIdeaTitle\\\">\").concat(this.title, \"</p>\\n                <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardStartDate\\\" style=\\\"font-size: 12px;\\\"> \").concat((0,_projectPage_projectPage_js__WEBPACK_IMPORTED_MODULE_3__.formatDate)(this.dateStarted), \"</p>\\n            </div>\\n\\n            <!--<button id=\\\"homepage-project-button-\").concat(this.projectId, \"\\\" data-project-id=\\\"\").concat(this.id, \"\\\" class=\\\"projectButton\\\" role=\\\"button\\\">G\\xE5 till projektsidan</button>-->\\n\\n\\n            <div class=\\\"container ongoingSeeCardDetails toSinglePage\\\">\\n                <div class=\\\"ongoingSeeCardDetailsInner\\\">\\n                    \\n                </div>\\n            </div>\\n        </div> \\n        <div class = \\\"expandedOngoingWorkCard\\\" id=\\\"homepage-expandedOngoingWorkCard\").concat(this.projectId, \"\\\" style=\\\"display: none;\\\">\\n            <div class =\\\"homepage-expandedTextOngoingWorkCard\\\">\\n            \").concat(this.description, \"\\n            </div>\\n        </div>\\n        </div> \");\n    }\n  }]);\n  return projectCard;\n}(); //<p id=\"homepage-ongoingSeeDetailsButton${this.projectId}\" class = \"moreInfoClass\">> Mer information</p>\n\n//# sourceURL=webpack://c3/./client/homePage.js?");
 
 /***/ }),
 
@@ -276,7 +276,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
   \*************************************/
 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   clearContent: () => (/* binding */ clearContent),\n/* harmony export */   loadHospitals: () => (/* binding */ loadHospitals),\n/* harmony export */   loadPage: () => (/* binding */ loadPage),\n/* harmony export */   loadUnits: () => (/* binding */ loadUnits),\n/* harmony export */   removeCardsFromDiv: () => (/* binding */ removeCardsFromDiv),\n/* harmony export */   testFunc: () => (/* binding */ testFunc)\n/* harmony export */ });\n/* harmony import */ var _Database_database_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Database/database.js */ \"./client/Database/database.js\");\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n//import {loadInitiatePage} from \"../SidebarAndHeader/pageHandler.js\";\nvar myIdeaCards = {};\n// Initialize filtered suggestions as empty array (potentially change to get all suggestions\nvar filteredSuggestions = [];\nvar IdeaCard = /*#__PURE__*/function () {\n  function IdeaCard(id, header, department, name, description, upvoteCount, suggestionID) {\n    _classCallCheck(this, IdeaCard);\n    this.header = header;\n    this.department = department;\n    this.name = name;\n    this.description = description;\n    this.upvoteCount = upvoteCount;\n    this.id = id;\n    this.suggestionID = suggestionID;\n  }\n  // <img src=\"images/upvoteIcon.png\" class =\"upvoteIcon\" alt=\"upvoteIcon\">\n  _createClass(IdeaCard, [{\n    key: \"addUpvote\",\n    value: function addUpvote() {\n      return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n        var tmp, user, suggestion;\n        return _regeneratorRuntime().wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              tmp = localStorage.getItem(\"user\");\n              if (tmp) {\n                _context.next = 4;\n                break;\n              }\n              console.log(\"there is not an user in localStorage\");\n              return _context.abrupt(\"return\");\n            case 4:\n              user = JSON.parse(tmp)[0];\n              _context.next = 7;\n              return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.upvoteSuggestion)(this.suggestionID, user.id);\n            case 7:\n              _context.next = 9;\n              return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({\n                id: this.suggestionID\n              });\n            case 9:\n              suggestion = _context.sent;\n              this.upvoteCount = suggestion[0].upvotes.length;\n              return _context.abrupt(\"return\", suggestion[0].upvotes.length);\n            case 12:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this);\n      }));\n    }\n  }, {\n    key: \"generateHTML\",\n    value: function generateHTML() {\n      return \"<div class=\\\"totalExpandedIdeaCard\\\">\\n          <div class=\\\"ideaCard\\\">\\n              <div class=\\\"ideaCardBorder\\\">\\n                  <div class=\\\"ideaCardImage\\\">\\n                      <img src=\\\"../images/pinkFaded.png\\\" class =\\\"pinkFaded\\\" alt=\\\"pinkFaded\\\">\\n                  </div>\\n                  <div class=\\\"ideaCardMiddleText\\\">\\n                      <p id=\\\"ideaCardHeader\\\" class=\\\"ideaCardFont\\\">\".concat(this.header, \"</p>\\n                      <p id=\\\"ideaCardDepartment\\\" class=\\\"ideaCardFont\\\">\").concat(this.department, \"</p>\\n                      <p id=\\\"ideaCardName\\\" class=\\\"ideaCardFont\\\">\").concat(this.name, \"</p>\\n                      <p id=\\\"ideaCardMoreInfo\").concat(this.id, \"\\\" class=\\\"ideaCardFont moreInfoClass\\\"> > Mer information</p>\\n                  </div>\\n                  <div class=\\\"ideaCardUpvotes\\\">\\n                  <div class=\\\"upvoteDiv\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"28\\\" id = \\\"upvoteIconPic\").concat(this.id, \"\\\" height=\\\"28\\\" fill=\\\"currentColor\\\" class=\\\"bi bi-caret-up upvoteSymbol\\\" viewBox=\\\"0 0 16 16\\\">\\n  <path d=\\\"M3.204 11h9.592L8 5.519 3.204 11zm-.753-.659 4.796-5.48a1 1 0 0 1 1.506 0l4.796 5.48c.566.647.106 1.659-.753 1.659H3.204a1 1 0 0 1-.753-1.659z\\\"/>\\n</svg>                  <div id =\\\"upvoteNumber\").concat(this.id, \"\\\" class=\\\"ideaCardFont upvoteNumber\\\" >\").concat(this.upvoteCount, \"</div>\\n\\n                  </div>\\n              </div>\\n              </div>\\n    \\n          </div>\\n          <div id=\\\"expandedContent\").concat(this.id, \"\\\" class= \\\"expandedIdeaContent\\\" style =\\\"display : none;\\\">\\n              <div class=\\\"expandedDescriptionText\\\">\\n                  <p class=\\\"ideaCardFontComments\\\" id=\\\"expandedHeader\\\">Om ideen</p>\\n                  <p class=\\\"ideaCardFont\\\" id=\\\"expandedDescription\\\">\").concat(this.description, \"</p>\\n              </div>\\n              <div class=\\\"expandedCommentAndButton id = \\\"expandedCommentAndButton\").concat(this.id, \"\\\">\\n                  <div class=\\\"expandedComment\\\">\\n                      <p  class=\\\"ideaCardFontComments\\\">Kommentarer</p>\\n                      <p  class=\\\"ideaCardFont\\\">Komment 7</p>\\n                      <p  class=\\\"ideaCardFont\\\">Komment 2</p>\\n                  </div>\\n\\n                  <div class=\\\"expandedButton\\\">\\n                      <button class=\\\"initiateProjectButton\\\" id=\\\"initiateProjectFromCard\").concat(this.suggestionID, \"\\\">Initiera f\\xF6rb\\xE4ttringsf\\xF6rslag</button>\\n                  </div>\\n              </div>\\n          </div>\\n      </div>\");\n    }\n  }, {\n    key: \"showMoreInfo\",\n    value: function showMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"flex\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"^ Stäng detaljer\";\n      }\n    }\n  }, {\n    key: \"closeMoreInfo\",\n    value: function closeMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"none\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"> Mer information\";\n      }\n    }\n  }, {\n    key: \"loadInitiatePage\",\n    value: function loadInitiatePage() {\n      alert(\"The initiate project page should now be loaded\");\n      window.location.href = '../client/projectPage/projectPageP.html';\n    }\n  }]);\n  return IdeaCard;\n}();\nfunction createNewCards(className, container, suggestions) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var _this = this;\n    var counter;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          counter = 1;\n          suggestions.forEach(function (suggestion) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n              var unit, user;\n              return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n                while (1) switch (_context2.prev = _context2.next) {\n                  case 0:\n                    _context2.next = 2;\n                    return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getObjectById)(\"unit\", suggestion.unitId);\n                  case 2:\n                    unit = _context2.sent;\n                    _context2.next = 5;\n                    return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getObjectById)(\"users\", suggestion.creatorHsaId);\n                  case 5:\n                    user = _context2.sent;\n                    console.log(suggestion);\n                    createNewIdeaCard(suggestion.name, unit.name, user.firstName + \" \" + user.lastName, suggestion.content, suggestion.upvotes.length, className, container, counter, suggestion.id);\n                    counter = counter + 1;\n                  case 9:\n                  case \"end\":\n                    return _context2.stop();\n                }\n              }, _callee2);\n            }));\n          });\n        case 2:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3);\n  }));\n}\nfunction createNewIdeaCard(header, department, name, description, upvoteCount, className, container, ID, suggestionID) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n    var card, cardHTML, div;\n    return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n      while (1) switch (_context4.prev = _context4.next) {\n        case 0:\n          card = new IdeaCard(ID, header, department, name, description, upvoteCount, suggestionID);\n          cardHTML = card.generateHTML();\n          myIdeaCards[ID] = card;\n          div = document.createElement(\"div\");\n          div.className = className; // Set the class name(s) here\n          div.innerHTML = cardHTML;\n          container.appendChild(div);\n        case 7:\n        case \"end\":\n          return _context4.stop();\n      }\n    }, _callee4);\n  }));\n}\nfunction testFunc() {\n  console.log(\"Test func works\");\n}\nfunction loadPage() {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var container, scriptElement, checkedHospitalIds, checkedUnitIds, searchBar;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          container = document.querySelector(\"#container-fluid\");\n          if (container) {\n            _context7.next = 3;\n            break;\n          }\n          return _context7.abrupt(\"return\");\n        case 3:\n          // Stop if the container isn't found\n          scriptElement = document.createElement(\"script\");\n          scriptElement.src = \"../dist/ideaBank.bundle.js\";\n          container.appendChild(scriptElement);\n          // Initialize empty lists of checked hospital and unit ids\n          checkedHospitalIds = [];\n          checkedUnitIds = [];\n          fetch(\"ideaBank/ideaBank.html\").then(function (response) {\n            return response.text();\n          }).then(function (data) {\n            // Create a temporary container element to hold the loaded content\n            var tempContainer = document.createElement(\"div\");\n            tempContainer.innerHTML = data;\n            // Select the specific element with the class you want\n            var specificElement = tempContainer.querySelector(\".filterBar\");\n            var createHospitalCheckBoxContainer = tempContainer.querySelector('#hospitalSelection');\n            var createUnitCheckBoxContainer = tempContainer.querySelector('#unitSelection');\n            if (createHospitalCheckBoxContainer) {\n              createHospitalCheckBoxContainer.addEventListener('change', function (event) {\n                return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n                  var checkboxes;\n                  return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n                    while (1) switch (_context5.prev = _context5.next) {\n                      case 0:\n                        checkboxes = createHospitalCheckBoxContainer.querySelectorAll('input[type=\"checkbox\"]'); // Empty list of checked hospitals\n                        checkedHospitalIds = [];\n                        // Array to store IDs of checked checkboxes\n                        checkboxes.forEach(function (checkbox) {\n                          // Ensure the checkbox is an HTMLInputElement\n                          var inputCheckbox = checkbox;\n                          // Check if the checkbox is checked and add its ID to the array\n                          if (inputCheckbox.checked) {\n                            checkedHospitalIds.push(inputCheckbox.id);\n                          }\n                        });\n                        // Log all checked hospital IDs\n                        console.log('Checked hospitals:', checkedHospitalIds);\n                        // Future change: Only clear the unitIds for unchecked hospitals!\n                        clearContent(\"unitSelection\");\n                        loadUnits(checkedHospitalIds);\n                      case 6:\n                      case \"end\":\n                        return _context5.stop();\n                    }\n                  }, _callee5);\n                }));\n              });\n            }\n            if (createUnitCheckBoxContainer) {\n              createUnitCheckBoxContainer.addEventListener('change', function (event) {\n                return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n                  var checkboxes;\n                  return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n                    while (1) switch (_context6.prev = _context6.next) {\n                      case 0:\n                        checkboxes = createUnitCheckBoxContainer.querySelectorAll('input[type=\"checkbox\"]'); // Empty list of checked units\n                        checkedUnitIds = [];\n                        checkboxes.forEach(function (checkbox) {\n                          // Ensure the checkbox is an HTMLInputElement\n                          var inputCheckbox = checkbox;\n                          // Check if the checkbox is checked and add its ID to the array\n                          if (inputCheckbox.checked) {\n                            checkedUnitIds.push(inputCheckbox.id);\n                          }\n                        });\n                        // Log all checked unit IDs\n                        _context6.next = 5;\n                        return getFilteredSuggestions(checkedUnitIds);\n                      case 5:\n                        filteredSuggestions = _context6.sent;\n                        removeCardsFromDiv(\"div.IdeaCardDiv\");\n                        createNewCards(\"IdeaCardDiv\", container, filteredSuggestions);\n                      case 8:\n                      case \"end\":\n                        return _context6.stop();\n                    }\n                  }, _callee6);\n                }));\n              });\n            }\n            if (specificElement) {\n              // Insert the specific element into the target element\n              container.insertBefore(specificElement, container.firstChild);\n            }\n          })[\"catch\"](function (error) {\n            console.error(\"Failed to load the external HTML file:\", error);\n          });\n          myIdeaCards = {};\n          _context7.next = 12;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({});\n        case 12:\n          filteredSuggestions = _context7.sent;\n          console.log(\"Filtered suggestions: \", filteredSuggestions);\n          removeCardsFromDiv(\"div.IdeaCardDiv\");\n          _context7.next = 17;\n          return createNewCards(\"IdeaCardDiv\", container, filteredSuggestions);\n        case 17:\n          addListner(myIdeaCards, container);\n          searchBar = document.getElementById(\"searchBarId\");\n          searchBar.addEventListener(\"keydown\", function (event) {\n            if (event.key === \"Enter\") {\n              performSearch(searchBar);\n            }\n          });\n          loadHospitals();\n        case 21:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7);\n  }));\n}\nfunction getFilteredSuggestions(checkedUnitIds) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var suggestions, _iterator, _step, checkedUnitId, allSuggestionsOfUnit;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          suggestions = [];\n          if (!checkedUnitIds) {\n            _context8.next = 24;\n            break;\n          }\n          _iterator = _createForOfIteratorHelper(checkedUnitIds);\n          _context8.prev = 3;\n          _iterator.s();\n        case 5:\n          if ((_step = _iterator.n()).done) {\n            _context8.next = 13;\n            break;\n          }\n          checkedUnitId = _step.value;\n          _context8.next = 9;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({\n            unitId: checkedUnitId\n          });\n        case 9:\n          allSuggestionsOfUnit = _context8.sent;\n          suggestions = suggestions.concat(allSuggestionsOfUnit);\n        case 11:\n          _context8.next = 5;\n          break;\n        case 13:\n          _context8.next = 18;\n          break;\n        case 15:\n          _context8.prev = 15;\n          _context8.t0 = _context8[\"catch\"](3);\n          _iterator.e(_context8.t0);\n        case 18:\n          _context8.prev = 18;\n          _iterator.f();\n          return _context8.finish(18);\n        case 21:\n          return _context8.abrupt(\"return\", suggestions);\n        case 24:\n          _context8.next = 26;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({});\n        case 26:\n          suggestions = _context8.sent;\n          return _context8.abrupt(\"return\", suggestions);\n        case 28:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8, null, [[3, 15, 18, 21]]);\n  }));\n}\nfunction loadHospitals() {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n    var selectHospitalHTML, allHospitals;\n    return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n      while (1) switch (_context9.prev = _context9.next) {\n        case 0:\n          selectHospitalHTML = $('#hospitalSelection'); // loads the select type from html\n          _context9.next = 3;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getHospitals)({});\n        case 3:\n          allHospitals = _context9.sent;\n          console.log(allHospitals);\n          allHospitals.forEach(function (hospital) {\n            var generatedElement = document.createRange().createContextualFragment(\"\\n    <div class=\\\"form-check\\\">\\n      <input class=\\\"form-check-input\\\" type=\\\"checkbox\\\" value=\\\"\\\" id=\\\"\" + hospital.id + \"\\\">\\n      <label class=\\\"form-check-label\\\" for=\\\"flexCheckDefault\\\">\" + hospital.name + \"</label>\\n    </div>\");\n            selectHospitalHTML.append(generatedElement);\n            console.log(\"Adding HTML for for hospital \", hospital.id);\n          });\n        case 6:\n        case \"end\":\n          return _context9.stop();\n      }\n    }, _callee9);\n  }));\n}\nfunction loadUnits(checkedHospitalIds) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var selectUnitHTML, allUnits, _iterator2, _step2, checkedHospitalId, allUnitsOfHospital;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          selectUnitHTML = $('#unitSelection'); // loads the select type from html\n          allUnits = [];\n          if (!(checkedHospitalIds.length != 0)) {\n            _context10.next = 22;\n            break;\n          }\n          _iterator2 = _createForOfIteratorHelper(checkedHospitalIds);\n          _context10.prev = 4;\n          _iterator2.s();\n        case 6:\n          if ((_step2 = _iterator2.n()).done) {\n            _context10.next = 14;\n            break;\n          }\n          checkedHospitalId = _step2.value;\n          _context10.next = 10;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getUnits)({\n            hospitalId: checkedHospitalId\n          });\n        case 10:\n          allUnitsOfHospital = _context10.sent;\n          allUnits = allUnits.concat(allUnitsOfHospital);\n        case 12:\n          _context10.next = 6;\n          break;\n        case 14:\n          _context10.next = 19;\n          break;\n        case 16:\n          _context10.prev = 16;\n          _context10.t0 = _context10[\"catch\"](4);\n          _iterator2.e(_context10.t0);\n        case 19:\n          _context10.prev = 19;\n          _iterator2.f();\n          return _context10.finish(19);\n        case 22:\n          allUnits.forEach(function (unit) {\n            var generatedElement = document.createRange().createContextualFragment(\"\\n    <div class=\\\"form-check\\\">\\n      <input class=\\\"form-check-input\\\" type=\\\"checkbox\\\" value=\\\"\\\" id=\\\"\" + unit.id + \"\\\">\\n      <label class=\\\"form-check-label\\\" for=\\\"flexCheckDefault\\\">\" + unit.name + \"</label>\\n    </div>\");\n            selectUnitHTML.append(generatedElement);\n            console.log(\"Adding HTML for for unit \", unit.id);\n          });\n        case 23:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10, null, [[4, 16, 19, 22]]);\n  }));\n}\nfunction clearContent(id) {\n  var container = document.getElementById(id);\n  while (container.firstChild) {\n    container.removeChild(container.firstChild);\n  }\n}\nfunction addListner(cardArray, element) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {\n    return _regeneratorRuntime().wrap(function _callee12$(_context12) {\n      while (1) switch (_context12.prev = _context12.next) {\n        case 0:\n          element.addEventListener(\"click\", function (event) {\n            return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {\n              var target, cardId, card, expandedDiv, _cardId, _card, upvoteDisplay;\n              return _regeneratorRuntime().wrap(function _callee11$(_context11) {\n                while (1) switch (_context11.prev = _context11.next) {\n                  case 0:\n                    target = event.target; //Adds an eventlistener for the more info of the card\n                    if (target && target.className === \"ideaCardFont moreInfoClass\") {\n                      console.log(\"fel Div\");\n                      cardId = parseInt(target.id.replace(\"ideaCardMoreInfo\", \"\"), 10);\n                      if (cardArray[cardId]) {\n                        card = cardArray[cardId];\n                        expandedDiv = document.getElementById(\"expandedContent\".concat(cardId));\n                        if (expandedDiv) {\n                          if (expandedDiv.style.display === \"none\") {\n                            card.showMoreInfo(\"expandedContent\".concat(cardId), \"ideaCardMoreInfo\".concat(cardId));\n                          } else {\n                            card.closeMoreInfo(\"expandedContent\".concat(cardId), \"ideaCardMoreInfo\".concat(cardId));\n                          }\n                        } else {\n                          console.error(\"Expanded div not found\");\n                        }\n                      }\n                    }\n                    if (!(target && target.className.baseVal.includes(\"bi-caret-up upvoteSymbol\"))) {\n                      _context11.next = 14;\n                      break;\n                    }\n                    _cardId = parseInt(target.id.replace(\"upvoteIconPic\", \"\"), 10);\n                    if (!myIdeaCards[_cardId]) {\n                      _context11.next = 12;\n                      break;\n                    }\n                    _card = myIdeaCards[_cardId];\n                    _context11.next = 8;\n                    return _card.addUpvote();\n                  case 8:\n                    upvoteDisplay = document.getElementById(\"upvoteNumber\" + _cardId);\n                    if (upvoteDisplay) {\n                      upvoteDisplay.textContent = _card.upvoteCount.toString();\n                    }\n                    _context11.next = 13;\n                    break;\n                  case 12:\n                    console.error(\"Card not found for ID: \" + _cardId);\n                  case 13:\n                    console.log(\"upvoteIcon clicked\");\n                  case 14:\n                  case \"end\":\n                    return _context11.stop();\n                }\n              }, _callee11);\n            }));\n          });\n        case 1:\n        case \"end\":\n          return _context12.stop();\n      }\n    }, _callee12);\n  }));\n}\nfunction removeCardsFromDiv(divName) {\n  //Remove current elements\n  var elementsToRemove = document.querySelectorAll(divName);\n  // Remove each element\n  elementsToRemove.forEach(function (element) {\n    element.remove();\n  });\n  myIdeaCards = {};\n}\nfunction performSearch(searchBar) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {\n    var inputValue, container, suggestions, suggestionName, _iterator3, _step3, suggestion, users, spaceIndex, firstName, lastName, _iterator4, _step4, user, _iterator5, _step5, _user;\n    return _regeneratorRuntime().wrap(function _callee13$(_context13) {\n      while (1) switch (_context13.prev = _context13.next) {\n        case 0:\n          inputValue = searchBar.value;\n          console.log(\"Search query:\", inputValue);\n          container = document.querySelector(\"#container-fluid\");\n          if (container) {\n            _context13.next = 5;\n            break;\n          }\n          return _context13.abrupt(\"return\");\n        case 5:\n          // Stop if the container isn't found\n          removeCardsFromDiv(\"div.IdeaCardDiv\");\n          if (!(inputValue != \"\")) {\n            _context13.next = 92;\n            break;\n          }\n          _context13.next = 9;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({});\n        case 9:\n          suggestions = _context13.sent;\n          suggestionName = false;\n          _iterator3 = _createForOfIteratorHelper(suggestions);\n          _context13.prev = 12;\n          _iterator3.s();\n        case 14:\n          if ((_step3 = _iterator3.n()).done) {\n            _context13.next = 24;\n            break;\n          }\n          suggestion = _step3.value;\n          if (!(suggestion.name.toLowerCase() >= inputValue.toLowerCase() && suggestion.name.toLowerCase() <= inputValue.toLowerCase() + \"~\")) {\n            _context13.next = 22;\n            break;\n          }\n          suggestionName = true;\n          _context13.next = 20;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({\n            name: suggestion.name\n          });\n        case 20:\n          filteredSuggestions = _context13.sent;\n          createNewCards(\"IdeaCardDiv\", container, filteredSuggestions);\n        case 22:\n          _context13.next = 14;\n          break;\n        case 24:\n          _context13.next = 29;\n          break;\n        case 26:\n          _context13.prev = 26;\n          _context13.t0 = _context13[\"catch\"](12);\n          _iterator3.e(_context13.t0);\n        case 29:\n          _context13.prev = 29;\n          _iterator3.f();\n          return _context13.finish(29);\n        case 32:\n          if (suggestionName) {\n            _context13.next = 90;\n            break;\n          }\n          _context13.next = 35;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getUsers)({});\n        case 35:\n          users = _context13.sent;\n          spaceIndex = inputValue.indexOf(\" \"); //If the search is for first and last name\n          if (!(spaceIndex !== -1)) {\n            _context13.next = 63;\n            break;\n          }\n          firstName = inputValue.substring(0, spaceIndex).toLowerCase();\n          lastName = inputValue.substring(spaceIndex + 1).toLowerCase();\n          _iterator4 = _createForOfIteratorHelper(users);\n          _context13.prev = 41;\n          _iterator4.s();\n        case 43:\n          if ((_step4 = _iterator4.n()).done) {\n            _context13.next = 53;\n            break;\n          }\n          user = _step4.value;\n          if (!(user.firstName.toLowerCase() >= firstName && user.firstName.toLowerCase() <= firstName + \"~\")) {\n            _context13.next = 51;\n            break;\n          }\n          if (!(user.lastName.toLowerCase() >= lastName && user.lastName.toLowerCase() <= lastName + \"~\")) {\n            _context13.next = 51;\n            break;\n          }\n          _context13.next = 49;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({\n            creatorHsaId: user.id\n          });\n        case 49:\n          filteredSuggestions = _context13.sent;\n          createNewCards(\"IdeaCardDiv\", container, filteredSuggestions);\n        case 51:\n          _context13.next = 43;\n          break;\n        case 53:\n          _context13.next = 58;\n          break;\n        case 55:\n          _context13.prev = 55;\n          _context13.t1 = _context13[\"catch\"](41);\n          _iterator4.e(_context13.t1);\n        case 58:\n          _context13.prev = 58;\n          _iterator4.f();\n          return _context13.finish(58);\n        case 61:\n          _context13.next = 90;\n          break;\n        case 63:\n          //If the search is for only first or last name\n          _iterator5 = _createForOfIteratorHelper(users);\n          _context13.prev = 64;\n          _iterator5.s();\n        case 66:\n          if ((_step5 = _iterator5.n()).done) {\n            _context13.next = 82;\n            break;\n          }\n          _user = _step5.value;\n          if (!(_user.firstName.toLowerCase() >= inputValue.toLowerCase() && _user.firstName.toLowerCase() <= inputValue.toLowerCase() + \"~\")) {\n            _context13.next = 75;\n            break;\n          }\n          _context13.next = 71;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({\n            creatorHsaId: _user.id\n          });\n        case 71:\n          filteredSuggestions = _context13.sent;\n          createNewCards(\"IdeaCardDiv\", container, filteredSuggestions);\n          _context13.next = 80;\n          break;\n        case 75:\n          if (!(_user.lastName.toLowerCase() >= inputValue.toLowerCase() && _user.lastName.toLowerCase() <= inputValue.toLowerCase() + \"~\")) {\n            _context13.next = 80;\n            break;\n          }\n          _context13.next = 78;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({\n            creatorHsaId: _user.id\n          });\n        case 78:\n          filteredSuggestions = _context13.sent;\n          createNewCards(\"IdeaCardDiv\", container, filteredSuggestions);\n        case 80:\n          _context13.next = 66;\n          break;\n        case 82:\n          _context13.next = 87;\n          break;\n        case 84:\n          _context13.prev = 84;\n          _context13.t2 = _context13[\"catch\"](64);\n          _iterator5.e(_context13.t2);\n        case 87:\n          _context13.prev = 87;\n          _iterator5.f();\n          return _context13.finish(87);\n        case 90:\n          _context13.next = 96;\n          break;\n        case 92:\n          _context13.next = 94;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({});\n        case 94:\n          filteredSuggestions = _context13.sent;\n          createNewCards(\"IdeaCardDiv\", container, filteredSuggestions);\n        case 96:\n          addListner(myIdeaCards, container);\n        case 97:\n        case \"end\":\n          return _context13.stop();\n      }\n    }, _callee13, null, [[12, 26, 29, 32], [41, 55, 58, 61], [64, 84, 87, 90]]);\n  }));\n}\n\n//# sourceURL=webpack://c3/./client/ideaBank/ideaBank.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   clearContent: () => (/* binding */ clearContent),\n/* harmony export */   loadHospitals: () => (/* binding */ loadHospitals),\n/* harmony export */   loadPage: () => (/* binding */ loadPage),\n/* harmony export */   loadUnits: () => (/* binding */ loadUnits),\n/* harmony export */   removeCardsFromDiv: () => (/* binding */ removeCardsFromDiv),\n/* harmony export */   testFunc: () => (/* binding */ testFunc)\n/* harmony export */ });\n/* harmony import */ var _Database_database_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Database/database.js */ \"./client/Database/database.js\");\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n//import {loadInitiatePage} from \"../SidebarAndHeader/pageHandler.js\";\nvar myIdeaCards = {};\n// Initialize filtered suggestions as empty array (potentially change to get all suggestions\nvar filteredSuggestions = [];\nvar IdeaCard = /*#__PURE__*/function () {\n  function IdeaCard(id, header, department, name, description, upvoteCount, suggestionID) {\n    _classCallCheck(this, IdeaCard);\n    this.header = header;\n    this.department = department;\n    this.name = name;\n    this.description = description;\n    this.upvoteCount = upvoteCount;\n    this.id = id;\n    this.suggestionID = suggestionID;\n  }\n  // <img src=\"images/upvoteIcon.png\" class =\"upvoteIcon\" alt=\"upvoteIcon\">\n  _createClass(IdeaCard, [{\n    key: \"addUpvote\",\n    value: function addUpvote() {\n      return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n        var tmp, user, suggestion;\n        return _regeneratorRuntime().wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              tmp = localStorage.getItem(\"user\");\n              if (tmp) {\n                _context.next = 4;\n                break;\n              }\n              console.log(\"there is not an user in localStorage\");\n              return _context.abrupt(\"return\");\n            case 4:\n              user = JSON.parse(tmp)[0];\n              _context.next = 7;\n              return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.upvoteSuggestion)(this.suggestionID, user.id);\n            case 7:\n              _context.next = 9;\n              return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({\n                id: this.suggestionID\n              });\n            case 9:\n              suggestion = _context.sent;\n              this.upvoteCount = suggestion[0].upvotes.length;\n              this.upvoteCount++;\n              return _context.abrupt(\"return\", suggestion[0].upvotes.length);\n            case 13:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this);\n      }));\n    }\n  }, {\n    key: \"generateHTML\",\n    value: function generateHTML() {\n      return \"<div class=\\\"totalExpandedIdeaCard\\\">\\n          <div class=\\\"ideaCard\\\">\\n              <div class=\\\"ideaCardBorder\\\">\\n                  <div class=\\\"ideaCardImage\\\">\\n                      <img src=\\\"../images/pinkFaded.png\\\" class =\\\"pinkFaded\\\" alt=\\\"pinkFaded\\\">\\n                  </div>\\n                  <div class=\\\"ideaCardMiddleText\\\">\\n                      <p id=\\\"ideaCardHeader\\\" class=\\\"ideaCardFont\\\">\".concat(this.header, \"</p>\\n                      <p id=\\\"ideaCardDepartment\\\" class=\\\"ideaCardFont\\\">\").concat(this.department, \"</p>\\n                      <p id=\\\"ideaCardName\\\" class=\\\"ideaCardFont\\\">\").concat(this.name, \"</p>\\n                      <p id=\\\"ideaCardMoreInfo\").concat(this.id, \"\\\" class=\\\"ideaCardFont moreInfoClass\\\"> > Mer information</p>\\n                  </div>\\n                  <div class=\\\"ideaCardUpvotes\\\">\\n                  <div class=\\\"upvoteDiv\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"28\\\" height=\\\"28\\\" fill=\\\"grey\\\" class=\\\"bi bi-caret-up upvoteSymbol\\\" viewBox=\\\"0 0 16 16\\\" id=\\\"upvoteIconPic\").concat(this.id, \"\\\">\\n  <path d=\\\"M3.204 11h9.592L8 5.519 3.204 11zm-.753-.659 4.796-5.48a1 1 0 0 1 1.506 0l4.796 5.48c.566.647.106 1.659-.753 1.659H3.204a1 1 0 0 1-.753-1.659z\\\"/>\\n</svg>\\n                  <div id =\\\"upvoteNumber\").concat(this.id, \"\\\" class=\\\"ideaCardFont upvoteNumber\\\" >\").concat(this.upvoteCount, \"</div>\\n\\n                  </div>\\n              </div>\\n              </div>\\n    \\n          </div>\\n          <div id=\\\"expandedContent\").concat(this.id, \"\\\" class= \\\"expandedIdeaContent\\\" style =\\\"display : none;\\\">\\n              <div class=\\\"expandedDescriptionText\\\">\\n                  <p class=\\\"ideaCardFontComments\\\" id=\\\"expandedHeader\\\">Om ideen</p>\\n                  <p class=\\\"ideaCardFont\\\" id=\\\"expandedDescription\\\">\").concat(this.description, \"</p>\\n              </div>\\n              <div class=\\\"expandedCommentAndButton id = \\\"expandedCommentAndButton\").concat(this.id, \"\\\">\\n                  <div class=\\\"expandedComment\\\">\\n                      <p  class=\\\"ideaCardFontComments\\\">Kommentarer</p>\\n                      <p  class=\\\"ideaCardFont\\\">Komment 7</p>\\n                      <p  class=\\\"ideaCardFont\\\">Komment 2</p>\\n                  </div>\\n\\n                  <div class=\\\"expandedButton\\\">\\n                      <button class=\\\"initiateProjectButton\\\" id=\\\"initiateProjectFromCard\").concat(this.suggestionID, \"\\\">Initiera f\\xF6rb\\xE4ttringsf\\xF6rslag</button>\\n                  </div>\\n              </div>\\n          </div>\\n      </div>\");\n    }\n  }, {\n    key: \"showMoreInfo\",\n    value: function showMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"flex\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"^ Stäng detaljer\";\n      }\n    }\n  }, {\n    key: \"closeMoreInfo\",\n    value: function closeMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"none\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"> Mer information\";\n      }\n    }\n  }, {\n    key: \"loadInitiatePage\",\n    value: function loadInitiatePage() {\n      alert(\"The initiate project page should now be loaded\");\n      window.location.href = '../client/projectPage/projectPageP.html';\n    }\n  }]);\n  return IdeaCard;\n}();\nfunction createNewCards(className, container, suggestions) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var _this = this;\n    var counter;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          counter = 1;\n          suggestions.forEach(function (suggestion) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n              var unit, user;\n              return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n                while (1) switch (_context2.prev = _context2.next) {\n                  case 0:\n                    _context2.next = 2;\n                    return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getObjectById)(\"unit\", suggestion.unitId);\n                  case 2:\n                    unit = _context2.sent;\n                    _context2.next = 5;\n                    return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getObjectById)(\"users\", suggestion.creatorHsaId);\n                  case 5:\n                    user = _context2.sent;\n                    console.log(suggestion);\n                    createNewIdeaCard(suggestion.name, unit.name, user.firstName + \" \" + user.lastName, suggestion.content, suggestion.upvotes.length, className, container, counter, suggestion.id);\n                    counter = counter + 1;\n                  case 9:\n                  case \"end\":\n                    return _context2.stop();\n                }\n              }, _callee2);\n            }));\n          });\n        case 2:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3);\n  }));\n}\nfunction createNewIdeaCard(header, department, name, description, upvoteCount, className, container, ID, suggestionID) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n    var card, cardHTML, div;\n    return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n      while (1) switch (_context4.prev = _context4.next) {\n        case 0:\n          card = new IdeaCard(ID, header, department, name, description, upvoteCount, suggestionID);\n          cardHTML = card.generateHTML();\n          myIdeaCards[ID] = card;\n          div = document.createElement(\"div\");\n          div.className = className; // Set the class name(s) here\n          div.innerHTML = cardHTML;\n          container.appendChild(div);\n        case 7:\n        case \"end\":\n          return _context4.stop();\n      }\n    }, _callee4);\n  }));\n}\nfunction testFunc() {\n  console.log(\"Test func works\");\n}\nfunction loadPage() {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var container, scriptElement, checkedHospitalIds, checkedUnitIds, searchBar;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          container = document.querySelector(\"#container-fluid\");\n          if (container) {\n            _context7.next = 3;\n            break;\n          }\n          return _context7.abrupt(\"return\");\n        case 3:\n          // Stop if the container isn't found\n          scriptElement = document.createElement(\"script\");\n          scriptElement.src = \"../dist/ideaBank.bundle.js\";\n          container.appendChild(scriptElement);\n          // Initialize empty lists of checked hospital and unit ids\n          checkedHospitalIds = [];\n          checkedUnitIds = [];\n          fetch(\"ideaBank/ideaBank.html\").then(function (response) {\n            return response.text();\n          }).then(function (data) {\n            // Create a temporary container element to hold the loaded content\n            var tempContainer = document.createElement(\"div\");\n            tempContainer.innerHTML = data;\n            // Select the specific element with the class you want\n            var specificElement = tempContainer.querySelector(\".filterBar\");\n            var createHospitalCheckBoxContainer = tempContainer.querySelector('#hospitalSelection');\n            var createUnitCheckBoxContainer = tempContainer.querySelector('#unitSelection');\n            if (createHospitalCheckBoxContainer) {\n              createHospitalCheckBoxContainer.addEventListener('change', function (event) {\n                return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n                  var checkboxes;\n                  return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n                    while (1) switch (_context5.prev = _context5.next) {\n                      case 0:\n                        checkboxes = createHospitalCheckBoxContainer.querySelectorAll('input[type=\"checkbox\"]'); // Empty list of checked hospitals\n                        checkedHospitalIds = [];\n                        // Array to store IDs of checked checkboxes\n                        checkboxes.forEach(function (checkbox) {\n                          // Ensure the checkbox is an HTMLInputElement\n                          var inputCheckbox = checkbox;\n                          // Check if the checkbox is checked and add its ID to the array\n                          if (inputCheckbox.checked) {\n                            checkedHospitalIds.push(inputCheckbox.id);\n                          }\n                        });\n                        // Log all checked hospital IDs\n                        console.log('Checked hospitals:', checkedHospitalIds);\n                        // Future change: Only clear the unitIds for unchecked hospitals!\n                        clearContent(\"unitSelection\");\n                        loadUnits(checkedHospitalIds);\n                      case 6:\n                      case \"end\":\n                        return _context5.stop();\n                    }\n                  }, _callee5);\n                }));\n              });\n            }\n            if (createUnitCheckBoxContainer) {\n              createUnitCheckBoxContainer.addEventListener('change', function (event) {\n                return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n                  var checkboxes;\n                  return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n                    while (1) switch (_context6.prev = _context6.next) {\n                      case 0:\n                        checkboxes = createUnitCheckBoxContainer.querySelectorAll('input[type=\"checkbox\"]'); // Empty list of checked units\n                        checkedUnitIds = [];\n                        checkboxes.forEach(function (checkbox) {\n                          // Ensure the checkbox is an HTMLInputElement\n                          var inputCheckbox = checkbox;\n                          // Check if the checkbox is checked and add its ID to the array\n                          if (inputCheckbox.checked) {\n                            checkedUnitIds.push(inputCheckbox.id);\n                          }\n                        });\n                        // Log all checked unit IDs\n                        _context6.next = 5;\n                        return getFilteredSuggestions(checkedUnitIds);\n                      case 5:\n                        filteredSuggestions = _context6.sent;\n                        removeCardsFromDiv(\"div.IdeaCardDiv\");\n                        createNewCards(\"IdeaCardDiv\", container, filteredSuggestions);\n                      case 8:\n                      case \"end\":\n                        return _context6.stop();\n                    }\n                  }, _callee6);\n                }));\n              });\n            }\n            if (specificElement) {\n              // Insert the specific element into the target element\n              container.insertBefore(specificElement, container.firstChild);\n            }\n          })[\"catch\"](function (error) {\n            console.error(\"Failed to load the external HTML file:\", error);\n          });\n          myIdeaCards = {};\n          _context7.next = 12;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({});\n        case 12:\n          filteredSuggestions = _context7.sent;\n          console.log(\"Filtered suggestions: \", filteredSuggestions);\n          removeCardsFromDiv(\"div.IdeaCardDiv\");\n          _context7.next = 17;\n          return createNewCards(\"IdeaCardDiv\", container, filteredSuggestions);\n        case 17:\n          addListner(myIdeaCards, container);\n          searchBar = document.getElementById(\"searchBarId\");\n          searchBar.addEventListener(\"keydown\", function (event) {\n            if (event.key === \"Enter\") {\n              performSearch(searchBar);\n            }\n          });\n          loadHospitals();\n        case 21:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7);\n  }));\n}\nfunction getFilteredSuggestions(checkedUnitIds) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var suggestions, _iterator, _step, checkedUnitId, allSuggestionsOfUnit;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          suggestions = [];\n          if (!checkedUnitIds) {\n            _context8.next = 24;\n            break;\n          }\n          _iterator = _createForOfIteratorHelper(checkedUnitIds);\n          _context8.prev = 3;\n          _iterator.s();\n        case 5:\n          if ((_step = _iterator.n()).done) {\n            _context8.next = 13;\n            break;\n          }\n          checkedUnitId = _step.value;\n          _context8.next = 9;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({\n            unitId: checkedUnitId\n          });\n        case 9:\n          allSuggestionsOfUnit = _context8.sent;\n          suggestions = suggestions.concat(allSuggestionsOfUnit);\n        case 11:\n          _context8.next = 5;\n          break;\n        case 13:\n          _context8.next = 18;\n          break;\n        case 15:\n          _context8.prev = 15;\n          _context8.t0 = _context8[\"catch\"](3);\n          _iterator.e(_context8.t0);\n        case 18:\n          _context8.prev = 18;\n          _iterator.f();\n          return _context8.finish(18);\n        case 21:\n          return _context8.abrupt(\"return\", suggestions);\n        case 24:\n          _context8.next = 26;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({});\n        case 26:\n          suggestions = _context8.sent;\n          return _context8.abrupt(\"return\", suggestions);\n        case 28:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8, null, [[3, 15, 18, 21]]);\n  }));\n}\nfunction loadHospitals() {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n    var selectHospitalHTML, allHospitals;\n    return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n      while (1) switch (_context9.prev = _context9.next) {\n        case 0:\n          selectHospitalHTML = $('#hospitalSelection'); // loads the select type from html\n          _context9.next = 3;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getHospitals)({});\n        case 3:\n          allHospitals = _context9.sent;\n          console.log(allHospitals);\n          allHospitals.forEach(function (hospital) {\n            var generatedElement = document.createRange().createContextualFragment(\"\\n    <div class=\\\"form-check\\\">\\n      <input class=\\\"form-check-input\\\" type=\\\"checkbox\\\" value=\\\"\\\" id=\\\"\" + hospital.id + \"\\\">\\n      <label class=\\\"form-check-label\\\" for=\\\"flexCheckDefault\\\">\" + hospital.name + \"</label>\\n    </div>\");\n            selectHospitalHTML.append(generatedElement);\n            console.log(\"Adding HTML for for hospital \", hospital.id);\n          });\n        case 6:\n        case \"end\":\n          return _context9.stop();\n      }\n    }, _callee9);\n  }));\n}\nfunction loadUnits(checkedHospitalIds) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var selectUnitHTML, allUnits, _iterator2, _step2, checkedHospitalId, allUnitsOfHospital;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          selectUnitHTML = $('#unitSelection'); // loads the select type from html\n          allUnits = [];\n          if (!(checkedHospitalIds.length != 0)) {\n            _context10.next = 22;\n            break;\n          }\n          _iterator2 = _createForOfIteratorHelper(checkedHospitalIds);\n          _context10.prev = 4;\n          _iterator2.s();\n        case 6:\n          if ((_step2 = _iterator2.n()).done) {\n            _context10.next = 14;\n            break;\n          }\n          checkedHospitalId = _step2.value;\n          _context10.next = 10;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getUnits)({\n            hospitalId: checkedHospitalId\n          });\n        case 10:\n          allUnitsOfHospital = _context10.sent;\n          allUnits = allUnits.concat(allUnitsOfHospital);\n        case 12:\n          _context10.next = 6;\n          break;\n        case 14:\n          _context10.next = 19;\n          break;\n        case 16:\n          _context10.prev = 16;\n          _context10.t0 = _context10[\"catch\"](4);\n          _iterator2.e(_context10.t0);\n        case 19:\n          _context10.prev = 19;\n          _iterator2.f();\n          return _context10.finish(19);\n        case 22:\n          allUnits.forEach(function (unit) {\n            var generatedElement = document.createRange().createContextualFragment(\"\\n    <div class=\\\"form-check\\\">\\n      <input class=\\\"form-check-input\\\" type=\\\"checkbox\\\" value=\\\"\\\" id=\\\"\" + unit.id + \"\\\">\\n      <label class=\\\"form-check-label\\\" for=\\\"flexCheckDefault\\\">\" + unit.name + \"</label>\\n    </div>\");\n            selectUnitHTML.append(generatedElement);\n            console.log(\"Adding HTML for for unit \", unit.id);\n          });\n        case 23:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10, null, [[4, 16, 19, 22]]);\n  }));\n}\nfunction clearContent(id) {\n  var container = document.getElementById(id);\n  while (container.firstChild) {\n    container.removeChild(container.firstChild);\n  }\n}\nfunction addListner(cardArray, element) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {\n    return _regeneratorRuntime().wrap(function _callee12$(_context12) {\n      while (1) switch (_context12.prev = _context12.next) {\n        case 0:\n          element.addEventListener(\"click\", function (event) {\n            return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {\n              var target, cardId, card, expandedDiv, _cardId, _card, upvoteDisplay;\n              return _regeneratorRuntime().wrap(function _callee11$(_context11) {\n                while (1) switch (_context11.prev = _context11.next) {\n                  case 0:\n                    target = event.target; //Adds an eventlistener for the more info of the card\n                    if (target && target.className === \"ideaCardFont moreInfoClass\") {\n                      console.log(\"fel Div\");\n                      cardId = parseInt(target.id.replace(\"ideaCardMoreInfo\", \"\"), 10);\n                      if (cardArray[cardId]) {\n                        card = cardArray[cardId];\n                        expandedDiv = document.getElementById(\"expandedContent\".concat(cardId));\n                        if (expandedDiv) {\n                          if (expandedDiv.style.display === \"none\") {\n                            card.showMoreInfo(\"expandedContent\".concat(cardId), \"ideaCardMoreInfo\".concat(cardId));\n                          } else {\n                            card.closeMoreInfo(\"expandedContent\".concat(cardId), \"ideaCardMoreInfo\".concat(cardId));\n                          }\n                        } else {\n                          console.error(\"Expanded div not found\");\n                        }\n                      }\n                    }\n                    if (!(target && target.className.baseVal.includes(\"bi-caret-up upvoteSymbol\"))) {\n                      _context11.next = 16;\n                      break;\n                    }\n                    _cardId = parseInt(target.id.replace(\"upvoteIconPic\", \"\"), 10);\n                    if (!myIdeaCards[_cardId]) {\n                      _context11.next = 14;\n                      break;\n                    }\n                    _card = myIdeaCards[_cardId];\n                    _context11.next = 8;\n                    return _card.addUpvote();\n                  case 8:\n                    if (target.getAttribute(\"fill\") === \"grey\") {\n                      target.setAttribute(\"fill\", \"red\"); // Replace 'red' with the color indicating an upvote\n                    } else {\n                      target.setAttribute(\"fill\", \"grey\"); // Revert back to default color\n                    }\n                    upvoteDisplay = document.getElementById(\"upvoteNumber\" + _cardId);\n                    console.log(_card.upvoteCount.toString());\n                    if (upvoteDisplay) {\n                      upvoteDisplay.textContent = _card.upvoteCount.toString();\n                    }\n                    _context11.next = 15;\n                    break;\n                  case 14:\n                    console.error(\"Card not found for ID: \" + _cardId);\n                  case 15:\n                    console.log(\"upvoteIcon clicked\");\n                  case 16:\n                  case \"end\":\n                    return _context11.stop();\n                }\n              }, _callee11);\n            }));\n          });\n        case 1:\n        case \"end\":\n          return _context12.stop();\n      }\n    }, _callee12);\n  }));\n}\nfunction removeCardsFromDiv(divName) {\n  //Remove current elements\n  var elementsToRemove = document.querySelectorAll(divName);\n  // Remove each element\n  elementsToRemove.forEach(function (element) {\n    element.remove();\n  });\n  myIdeaCards = {};\n}\nfunction performSearch(searchBar) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {\n    var inputValue, container, suggestions, suggestionName, _iterator3, _step3, suggestion, users, spaceIndex, firstName, lastName, _iterator4, _step4, user, _iterator5, _step5, _user;\n    return _regeneratorRuntime().wrap(function _callee13$(_context13) {\n      while (1) switch (_context13.prev = _context13.next) {\n        case 0:\n          inputValue = searchBar.value;\n          console.log(\"Search query:\", inputValue);\n          container = document.querySelector(\"#container-fluid\");\n          if (container) {\n            _context13.next = 5;\n            break;\n          }\n          return _context13.abrupt(\"return\");\n        case 5:\n          // Stop if the container isn't found\n          removeCardsFromDiv(\"div.IdeaCardDiv\");\n          if (!(inputValue != \"\")) {\n            _context13.next = 92;\n            break;\n          }\n          _context13.next = 9;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({});\n        case 9:\n          suggestions = _context13.sent;\n          suggestionName = false;\n          _iterator3 = _createForOfIteratorHelper(suggestions);\n          _context13.prev = 12;\n          _iterator3.s();\n        case 14:\n          if ((_step3 = _iterator3.n()).done) {\n            _context13.next = 24;\n            break;\n          }\n          suggestion = _step3.value;\n          if (!(suggestion.name.toLowerCase() >= inputValue.toLowerCase() && suggestion.name.toLowerCase() <= inputValue.toLowerCase() + \"~\")) {\n            _context13.next = 22;\n            break;\n          }\n          suggestionName = true;\n          _context13.next = 20;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({\n            name: suggestion.name\n          });\n        case 20:\n          filteredSuggestions = _context13.sent;\n          createNewCards(\"IdeaCardDiv\", container, filteredSuggestions);\n        case 22:\n          _context13.next = 14;\n          break;\n        case 24:\n          _context13.next = 29;\n          break;\n        case 26:\n          _context13.prev = 26;\n          _context13.t0 = _context13[\"catch\"](12);\n          _iterator3.e(_context13.t0);\n        case 29:\n          _context13.prev = 29;\n          _iterator3.f();\n          return _context13.finish(29);\n        case 32:\n          if (suggestionName) {\n            _context13.next = 90;\n            break;\n          }\n          _context13.next = 35;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getUsers)({});\n        case 35:\n          users = _context13.sent;\n          spaceIndex = inputValue.indexOf(\" \"); //If the search is for first and last name\n          if (!(spaceIndex !== -1)) {\n            _context13.next = 63;\n            break;\n          }\n          firstName = inputValue.substring(0, spaceIndex).toLowerCase();\n          lastName = inputValue.substring(spaceIndex + 1).toLowerCase();\n          _iterator4 = _createForOfIteratorHelper(users);\n          _context13.prev = 41;\n          _iterator4.s();\n        case 43:\n          if ((_step4 = _iterator4.n()).done) {\n            _context13.next = 53;\n            break;\n          }\n          user = _step4.value;\n          if (!(user.firstName.toLowerCase() >= firstName && user.firstName.toLowerCase() <= firstName + \"~\")) {\n            _context13.next = 51;\n            break;\n          }\n          if (!(user.lastName.toLowerCase() >= lastName && user.lastName.toLowerCase() <= lastName + \"~\")) {\n            _context13.next = 51;\n            break;\n          }\n          _context13.next = 49;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({\n            creatorHsaId: user.id\n          });\n        case 49:\n          filteredSuggestions = _context13.sent;\n          createNewCards(\"IdeaCardDiv\", container, filteredSuggestions);\n        case 51:\n          _context13.next = 43;\n          break;\n        case 53:\n          _context13.next = 58;\n          break;\n        case 55:\n          _context13.prev = 55;\n          _context13.t1 = _context13[\"catch\"](41);\n          _iterator4.e(_context13.t1);\n        case 58:\n          _context13.prev = 58;\n          _iterator4.f();\n          return _context13.finish(58);\n        case 61:\n          _context13.next = 90;\n          break;\n        case 63:\n          //If the search is for only first or last name\n          _iterator5 = _createForOfIteratorHelper(users);\n          _context13.prev = 64;\n          _iterator5.s();\n        case 66:\n          if ((_step5 = _iterator5.n()).done) {\n            _context13.next = 82;\n            break;\n          }\n          _user = _step5.value;\n          if (!(_user.firstName.toLowerCase() >= inputValue.toLowerCase() && _user.firstName.toLowerCase() <= inputValue.toLowerCase() + \"~\")) {\n            _context13.next = 75;\n            break;\n          }\n          _context13.next = 71;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({\n            creatorHsaId: _user.id\n          });\n        case 71:\n          filteredSuggestions = _context13.sent;\n          createNewCards(\"IdeaCardDiv\", container, filteredSuggestions);\n          _context13.next = 80;\n          break;\n        case 75:\n          if (!(_user.lastName.toLowerCase() >= inputValue.toLowerCase() && _user.lastName.toLowerCase() <= inputValue.toLowerCase() + \"~\")) {\n            _context13.next = 80;\n            break;\n          }\n          _context13.next = 78;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({\n            creatorHsaId: _user.id\n          });\n        case 78:\n          filteredSuggestions = _context13.sent;\n          createNewCards(\"IdeaCardDiv\", container, filteredSuggestions);\n        case 80:\n          _context13.next = 66;\n          break;\n        case 82:\n          _context13.next = 87;\n          break;\n        case 84:\n          _context13.prev = 84;\n          _context13.t2 = _context13[\"catch\"](64);\n          _iterator5.e(_context13.t2);\n        case 87:\n          _context13.prev = 87;\n          _iterator5.f();\n          return _context13.finish(87);\n        case 90:\n          _context13.next = 96;\n          break;\n        case 92:\n          _context13.next = 94;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({});\n        case 94:\n          filteredSuggestions = _context13.sent;\n          createNewCards(\"IdeaCardDiv\", container, filteredSuggestions);\n        case 96:\n          addListner(myIdeaCards, container);\n        case 97:\n        case \"end\":\n          return _context13.stop();\n      }\n    }, _callee13, null, [[12, 26, 29, 32], [41, 55, 58, 61], [64, 84, 87, 90]]);\n  }));\n}\n\n//# sourceURL=webpack://c3/./client/ideaBank/ideaBank.js?");
 
 /***/ }),
 
@@ -326,7 +326,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
   \*******************************************/
 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   loadImprovementWorkTasks: () => (/* binding */ loadImprovementWorkTasks),\n/* harmony export */   loadMemberModal: () => (/* binding */ loadMemberModal),\n/* harmony export */   loadPage: () => (/* binding */ loadPage),\n/* harmony export */   loadProjectHeader: () => (/* binding */ loadProjectHeader),\n/* harmony export */   openTaskModal: () => (/* binding */ openTaskModal)\n/* harmony export */ });\n/* harmony import */ var _Database_database_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Database/database.js */ \"./client/Database/database.js\");\n/* harmony import */ var firebase_firestore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! firebase/firestore */ \"./node_modules/firebase/firestore/dist/esm/index.esm.js\");\n/* harmony import */ var _initiateForbattringsarbete_initiateIdea_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../initiateForbattringsarbete/initiateIdea.js */ \"./client/initiateForbattringsarbete/initiateIdea.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\nfunction loadPage(projectId) {}\nfunction loadImprovementWorkTasks(projectId, stage, stageListClassName, taskListId, closeBtnId, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, saveBtnId, deleteBtnId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var _this = this;\n    var tasks, taskListElement;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          _context2.next = 2;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getTasks)({\n            improvementWorkId: projectId,\n            stage: stage\n          });\n        case 2:\n          tasks = _context2.sent;\n          taskListElement = $('#' + taskListId);\n          modalEventListeners(projectId, stage, stageListClassName, closeBtnId, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, taskListId, saveBtnId, deleteBtnId);\n          if (taskListElement) {\n            tasks.forEach(function (task) {\n              return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n                var taskElement, textSpan, checkbox;\n                return _regeneratorRuntime().wrap(function _callee$(_context) {\n                  while (1) switch (_context.prev = _context.next) {\n                    case 0:\n                      taskElement = $('<li>');\n                      textSpan = $('<span>').text(task.name);\n                      checkbox = $('<input>').attr('type', 'checkbox');\n                      if (task.completed) {\n                        checkbox.prop('checked', true);\n                      }\n                      taskElement.append(textSpan, checkbox);\n                      taskElement.addClass(stageListClassName);\n                      taskElement.on('click', function () {\n                        var startDateFormatted = formatDate(task.startDate);\n                        var endDateFormatted = formatDate(task.deadlineDate);\n                        openTaskModal(task.name, task.content, task.id, startDateFormatted, endDateFormatted, taskModalId, taskTitleId, taskContentId, taskStartDateId, taskEndDateId);\n                      });\n                      checkbox.on('click', function (event) {\n                        event.stopPropagation();\n                        if (checkbox.prop('checked')) {\n                          console.log('Checkbox is checked.');\n                          (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.updateInstance)('task', task.id, {\n                            completed: true\n                          });\n                        } else {\n                          console.log('Checkbox is unchecked.');\n                          (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.updateInstance)('task', task.id, {\n                            completed: false\n                          });\n                        }\n                      });\n                      taskListElement.append(taskElement); // Stop if the container isn't found\n                    case 9:\n                    case \"end\":\n                      return _context.stop();\n                  }\n                }, _callee);\n              }));\n            });\n          } else {\n            console.log(\"Task container not found\");\n          }\n        case 6:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2);\n  }));\n}\n//Opens modal for a task\nfunction openTaskModal(taskTitle, taskContent, taskId, taskStart, taskEnd, taskModalId, taskTitleId, taskContentId, taskStartDateId, taskEndDateId) {\n  var taskModal = document.getElementById(taskModalId);\n  var title = document.getElementById(taskTitleId);\n  var content = document.getElementById(taskContentId);\n  var startDate = document.getElementById(taskStartDateId);\n  var endDate = document.getElementById(taskEndDateId);\n  if (taskModal) {\n    taskModal.setAttribute('data-task-id', taskId);\n    if (title && content && startDate && endDate) {\n      title.value = \"\";\n      content.value = \"\";\n      startDate.value = \"\";\n      endDate.value = \"\";\n      if (taskTitle !== \"\" || taskContent !== \"\" || taskStart !== \"\" || taskEnd !== \"\") {\n        title.value = taskTitle;\n        content.value = taskContent;\n        startDate.value = taskStart;\n        endDate.value = taskEnd;\n      }\n    }\n    taskModal.style.display = 'block';\n  }\n}\n//Adds eventlistener to close modal\nfunction modalEventListeners(projectId, stage, stageListClassName, closeBtnId, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, taskListId, saveBtnId, deleteBtnId) {\n  var closeButton = document.getElementById(closeBtnId);\n  var taskModal = document.getElementById(taskModalId);\n  var saveButton = document.getElementById(saveBtnId);\n  var deleteButton = document.getElementById(deleteBtnId);\n  if (closeButton && taskModal) {\n    var closeBtnListener = closeButton.hasAttribute('data-has-event-listener');\n    if (!closeBtnListener) {\n      closeButton.setAttribute('data-has-event-listener', 'true');\n      closeButton.addEventListener('click', function () {\n        taskModal.style.display = 'none'; //Closes modal\n      });\n    }\n  }\n\n  if (saveButton && taskModal) {\n    var saveBtnListener = saveButton.hasAttribute('data-has-event-listener');\n    if (!saveBtnListener) {\n      saveButton.setAttribute('data-has-event-listener', 'true');\n      saveButton.addEventListener('click', function () {\n        createNewOrSaveTask(projectId, stage, stageListClassName, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, taskListId, closeBtnId, saveBtnId, deleteBtnId);\n        taskModal.style.display = 'none'; //Closes modal\n      });\n    }\n  }\n\n  if (deleteButton && taskModal) {\n    var deleteBtnListener = deleteButton.hasAttribute('data-has-event-listener');\n    if (!deleteBtnListener) {\n      deleteButton.setAttribute('data-has-event-listener', 'true');\n      deleteButton.addEventListener('click', function () {\n        deleteTask(projectId, stage, stageListClassName, taskModalId, taskListId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, saveBtnId, deleteBtnId, closeBtnId);\n        taskModal.style.display = 'none'; //Closes modal\n      });\n    }\n  }\n}\n\nfunction createNewOrSaveTask(projectId, stage, stageListClassName, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, taskListId, closeBtnId, saveBtnId, deleteBtnId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var modalElement, titleElement, deadlineElement, startElement, contentElement, taskId, improvementWork, deadline, startDate, listElement, _deadline, _startDate, _listElement;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          //title: string, deadline : Date, startDate: Date, stage: string, content: string\n          modalElement = document.getElementById(taskModalId);\n          titleElement = document.getElementById(taskTitleId);\n          deadlineElement = document.getElementById(taskEndDateId);\n          startElement = document.getElementById(taskStartDateId);\n          contentElement = document.getElementById(taskContentId);\n          taskId = modalElement.getAttribute('data-task-id');\n          if (!(taskId === '')) {\n            _context3.next = 13;\n            break;\n          }\n          _context3.next = 9;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getObjectById)('improvementWork', projectId);\n        case 9:\n          improvementWork = _context3.sent;\n          if (titleElement && contentElement && deadlineElement && startElement) {\n            if (titleElement.value !== \"\", deadlineElement.value !== \"\", startElement.value !== \"\", contentElement.value !== \"\") {\n              deadline = new Date(deadlineElement.value); //Date string to timestamp\n              startDate = new Date(startElement.value); //Date string to timestamp\n              (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.createTaskOnImprovementWork)(null, projectId, titleElement.value, deadline, startDate, improvementWork.currentStage, contentElement.value);\n              listElement = document.getElementById(taskListId);\n              listElement.innerHTML = \"\";\n              loadImprovementWorkTasks(projectId, stage, stageListClassName, taskListId, closeBtnId, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, saveBtnId, deleteBtnId);\n            } else {\n              console.log(\"All input fields for the task where not filled in\");\n            }\n          } else {\n            console.log(\"All input element where not found\");\n          }\n          _context3.next = 21;\n          break;\n        case 13:\n          if (!taskId) {\n            _context3.next = 21;\n            break;\n          }\n          _deadline = new Date(deadlineElement.value); //Date string to timestamp\n          _startDate = new Date(startElement.value); //Date string to timestamp\n          _context3.next = 18;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.updateInstance)('task', taskId, {\n            name: titleElement.value,\n            deadlineDate: _deadline,\n            startDate: _startDate,\n            content: contentElement.value\n          });\n        case 18:\n          _listElement = document.getElementById(taskListId);\n          _listElement.innerHTML = \"\";\n          loadImprovementWorkTasks(projectId, stage, stageListClassName, taskListId, closeBtnId, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, saveBtnId, deleteBtnId);\n          //loadPage(projectId); //Loads tasks since updated ASK for help\n        case 21:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3);\n  }));\n}\nfunction deleteTask(projectId, stage, stageListClassName, taskModalId, taskListId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, saveBtnId, deleteBtnId, closeBtnId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n    var modalElement, taskId, listElement;\n    return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n      while (1) switch (_context4.prev = _context4.next) {\n        case 0:\n          modalElement = document.getElementById(taskModalId);\n          taskId = modalElement.getAttribute('data-task-id');\n          if (!taskId) {\n            _context4.next = 8;\n            break;\n          }\n          _context4.next = 5;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.deleteInstance)('task', taskId);\n        case 5:\n          listElement = document.getElementById(taskListId);\n          listElement.innerHTML = \"\";\n          loadImprovementWorkTasks(projectId, stage, stageListClassName, taskListId, closeBtnId, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, saveBtnId, deleteBtnId);\n        case 8:\n        case \"end\":\n          return _context4.stop();\n      }\n    }, _callee4);\n  }));\n}\nfunction formatDate(timeStamp) {\n  var date = timeStamp.toDate();\n  var day = String(date.getDate()).toString();\n  var month = String(date.getMonth() + 1).toString(); // Adding 1 because months are zero-based\n  var year = String(date.getFullYear()).toString();\n  if (parseInt(month, 10) < 10 && parseInt(day, 10) > 9) {\n    return \"\".concat(year, \"-0\").concat(month, \"-\").concat(day);\n  } else if (parseInt(month, 10) > 9 && parseInt(day, 10) < 10) {\n    return \"\".concat(year, \"-\").concat(month, \"-0\").concat(day);\n  } else if (parseInt(month, 10) < 10 && parseInt(day, 10) < 10) {\n    return \"\".concat(year, \"-0\").concat(month, \"-0\").concat(day);\n  } else {\n    return \"\".concat(year, \"-\").concat(month, \"-\").concat(day);\n  }\n}\nfunction timestamptoDate(timestamp) {\n  if (timestamp instanceof firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.Timestamp) {\n    var date = timestamp.toDate();\n    return date;\n  } else {\n    console.error('Invalid timestamp type.');\n    return null;\n  }\n}\nfunction getDaysMonthYear(startDate) {\n  var currentTime = new Date();\n  if (startDate) {\n    var millisecondsDifference = currentTime.getTime() - startDate.getTime();\n    // Convert milliseconds to seconds\n    var secondsDifference = millisecondsDifference / 1000;\n    // Calculate years, months, and days\n    var years = Math.floor(secondsDifference / (365.25 * 24 * 60 * 60));\n    var remainingSeconds = secondsDifference % (365.25 * 24 * 60 * 60);\n    var months = Math.floor(remainingSeconds / (30 * 24 * 60 * 60)); // Assuming 30 days per month\n    var days = Math.floor(remainingSeconds % (30 * 24 * 60 * 60) / (24 * 60 * 60));\n    return \" \".concat(years, \" \\xE5r, \").concat(months, \" m\\xE5nader, \").concat(days, \" dagar.\");\n  } else {\n    return \"Det finns inget startdatum registrerat\";\n  }\n}\nfunction loadProjectHeader(improvementWork) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n    var _this2 = this;\n    var loadingIndicators, titleP, aAreaElement, resources, time, formatdateStarted, aUnitArray, projectLeader, members, aProjectLeader, aMembers, aUnit, aUnitElement, hospitalArray, aHospital, aHospitalElement;\n    return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n      while (1) switch (_context6.prev = _context6.next) {\n        case 0:\n          loadingIndicators = document.querySelectorAll(\".loadingIndicator\");\n          loadingIndicators.forEach(function (indicator) {\n            indicator.style.display = 'block';\n          });\n          titleP = document.getElementById(\"title\");\n          titleP.textContent = improvementWork.name;\n          aAreaElement = document.getElementById(\"pArea\");\n          aAreaElement.textContent = improvementWork.area;\n          resources = document.getElementById(\"pResources\");\n          resources.textContent = improvementWork.resources;\n          time = document.getElementById(\"pTime\");\n          formatdateStarted = timestamptoDate(improvementWork.dateStarted);\n          time.textContent = getDaysMonthYear(formatdateStarted);\n          _context6.next = 13;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getUnits)({\n            unitId: improvementWork.unitId\n          });\n        case 13:\n          aUnitArray = _context6.sent;\n          _context6.next = 16;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getImprovementWorkResponsible)(improvementWork.id);\n        case 16:\n          projectLeader = _context6.sent;\n          _context6.next = 19;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getUsersForImprovementWork)(improvementWork.id);\n        case 19:\n          members = _context6.sent;\n          aProjectLeader = document.getElementById(\"pLeader\");\n          aProjectLeader.textContent = projectLeader.firstName + \" \" + projectLeader.lastName + \" (\" + projectLeader.email + \")\";\n          aMembers = document.getElementById(\"pMembers\");\n          members.forEach(function (member) {\n            return __awaiter(_this2, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n              return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n                while (1) switch (_context5.prev = _context5.next) {\n                  case 0:\n                    aMembers.textContent = aMembers.textContent + member.firstName + \" \" + member.lastName + \", \";\n                  case 1:\n                  case \"end\":\n                    return _context5.stop();\n                }\n              }, _callee5);\n            }));\n          });\n          //stop loding current members\n          if (aUnitArray.length === 0) {\n            console.log(\"Error loading the units.\");\n          }\n          aUnit = aUnitArray[0];\n          aUnitElement = document.getElementById(\"pUnit\");\n          aUnitElement.textContent = aUnit.name;\n          _context6.next = 30;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getHospitals)({\n            hospitalId: aUnit.hospitalId\n          });\n        case 30:\n          hospitalArray = _context6.sent;\n          if (hospitalArray.length === 0) {\n            console.log(\"Error loading the hospitals.\");\n          }\n          aHospital = hospitalArray[0];\n          aHospitalElement = document.getElementById(\"pHospital\");\n          aHospitalElement.textContent = aHospital.name;\n          // Close loading indicators\n          loadingIndicators.forEach(function (indicator) {\n            indicator.style.display = 'none';\n          });\n        case 36:\n        case \"end\":\n          return _context6.stop();\n      }\n    }, _callee6);\n  }));\n}\nfunction getDivWithIdFromHTML(path, id) {\n  // Returning a Promise\n  return fetch(path).then(function (response) {\n    return response.text();\n  }).then(function (html) {\n    // Create a temporary container\n    var container = document.createElement('div');\n    container.innerHTML = html;\n    // Get the modal content from the container\n    var element = container.querySelector(id);\n    return element;\n  })[\"catch\"](function (error) {\n    console.error('Error loading modal content:', error);\n    return null;\n  });\n}\nfunction loadMemberModal() {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var modalContent, selectEmployeeChangeSection;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          _context7.next = 2;\n          return getDivWithIdFromHTML('../projectPage/addMemberModal.html', '#addMemberModal');\n        case 2:\n          modalContent = _context7.sent;\n          if (modalContent) {\n            $('#container-fluid').append(modalContent);\n            $(modalContent).modal('show');\n          }\n          /*     const selectMemberContent = await getDivWithIdFromHTML('../initiateForbattringsarbete/initiateIdea.html', '#selectEmployees');\n              if (selectMemberContent) {\n                  $('#modal-body').append(selectMemberContent);\n              } */\n          selectEmployeeChangeSection = document.querySelector('#selectEmployee');\n          if (selectEmployeeChangeSection) {\n            selectEmployeeChangeSection.addEventListener('change', _initiateForbattringsarbete_initiateIdea_js__WEBPACK_IMPORTED_MODULE_2__.assignedEmployer);\n          } else {\n            console.error(\"Error: 'changebutton' not found\");\n          }\n          (0,_initiateForbattringsarbete_initiateIdea_js__WEBPACK_IMPORTED_MODULE_2__.loadEmployees)();\n        case 7:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7);\n  }));\n}\n\n//# sourceURL=webpack://c3/./client/projectPage/projectPage.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   formatDate: () => (/* binding */ formatDate),\n/* harmony export */   loadImprovementWorkTasks: () => (/* binding */ loadImprovementWorkTasks),\n/* harmony export */   loadMemberModal: () => (/* binding */ loadMemberModal),\n/* harmony export */   loadPage: () => (/* binding */ loadPage),\n/* harmony export */   loadProjectHeader: () => (/* binding */ loadProjectHeader),\n/* harmony export */   openTaskModal: () => (/* binding */ openTaskModal)\n/* harmony export */ });\n/* harmony import */ var _Database_database_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Database/database.js */ \"./client/Database/database.js\");\n/* harmony import */ var firebase_firestore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! firebase/firestore */ \"./node_modules/firebase/firestore/dist/esm/index.esm.js\");\n/* harmony import */ var _initiateForbattringsarbete_initiateIdea_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../initiateForbattringsarbete/initiateIdea.js */ \"./client/initiateForbattringsarbete/initiateIdea.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\nfunction loadPage(projectId) {}\nfunction loadImprovementWorkTasks(projectId, stage, stageListClassName, taskListId, closeBtnId, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, saveBtnId, deleteBtnId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var _this = this;\n    var tasks, taskListElement;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          _context2.next = 2;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getTasks)({\n            improvementWorkId: projectId,\n            stage: stage\n          });\n        case 2:\n          tasks = _context2.sent;\n          taskListElement = $(\"#\" + taskListId);\n          modalEventListeners(projectId, stage, stageListClassName, closeBtnId, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, taskListId, saveBtnId, deleteBtnId);\n          if (taskListElement) {\n            tasks.forEach(function (task) {\n              return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n                var taskElement, textSpan, checkbox;\n                return _regeneratorRuntime().wrap(function _callee$(_context) {\n                  while (1) switch (_context.prev = _context.next) {\n                    case 0:\n                      taskElement = $(\"<li>\");\n                      textSpan = $(\"<span>\").text(task.name);\n                      checkbox = $(\"<input>\").attr(\"type\", \"checkbox\");\n                      if (task.completed) {\n                        checkbox.prop(\"checked\", true);\n                      }\n                      taskElement.append(textSpan, checkbox);\n                      taskElement.addClass(stageListClassName);\n                      taskElement.on(\"click\", function () {\n                        var startDateFormatted = formatDate(task.startDate);\n                        var endDateFormatted = formatDate(task.deadlineDate);\n                        openTaskModal(task.name, task.content, task.id, startDateFormatted, endDateFormatted, taskModalId, taskTitleId, taskContentId, taskStartDateId, taskEndDateId);\n                      });\n                      checkbox.on(\"click\", function (event) {\n                        event.stopPropagation();\n                        if (checkbox.prop(\"checked\")) {\n                          console.log(\"Checkbox is checked.\");\n                          (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.updateInstance)(\"task\", task.id, {\n                            completed: true\n                          });\n                        } else {\n                          console.log(\"Checkbox is unchecked.\");\n                          (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.updateInstance)(\"task\", task.id, {\n                            completed: false\n                          });\n                        }\n                      });\n                      taskListElement.append(taskElement); // Stop if the container isn't found\n                    case 9:\n                    case \"end\":\n                      return _context.stop();\n                  }\n                }, _callee);\n              }));\n            });\n          } else {\n            console.log(\"Task container not found\");\n          }\n        case 6:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2);\n  }));\n}\n//Opens modal for a task\nfunction openTaskModal(taskTitle, taskContent, taskId, taskStart, taskEnd, taskModalId, taskTitleId, taskContentId, taskStartDateId, taskEndDateId) {\n  var taskModal = document.getElementById(taskModalId);\n  var title = document.getElementById(taskTitleId);\n  var content = document.getElementById(taskContentId);\n  var startDate = document.getElementById(taskStartDateId);\n  var endDate = document.getElementById(taskEndDateId);\n  if (taskModal) {\n    taskModal.setAttribute(\"data-task-id\", taskId);\n    if (title && content && startDate && endDate) {\n      title.value = \"\";\n      content.value = \"\";\n      startDate.value = \"\";\n      endDate.value = \"\";\n      if (taskTitle !== \"\" || taskContent !== \"\" || taskStart !== \"\" || taskEnd !== \"\") {\n        title.value = taskTitle;\n        content.value = taskContent;\n        startDate.value = taskStart;\n        endDate.value = taskEnd;\n      }\n    }\n    taskModal.style.display = \"block\";\n  }\n}\n//Adds eventlistener to close modal\nfunction modalEventListeners(projectId, stage, stageListClassName, closeBtnId, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, taskListId, saveBtnId, deleteBtnId) {\n  var closeButton = document.getElementById(closeBtnId);\n  var taskModal = document.getElementById(taskModalId);\n  var saveButton = document.getElementById(saveBtnId);\n  var deleteButton = document.getElementById(deleteBtnId);\n  if (closeButton && taskModal) {\n    var closeBtnListener = closeButton.hasAttribute(\"data-has-event-listener\");\n    if (!closeBtnListener) {\n      closeButton.setAttribute(\"data-has-event-listener\", \"true\");\n      closeButton.addEventListener(\"click\", function () {\n        taskModal.style.display = \"none\"; //Closes modal\n      });\n    }\n  }\n\n  if (saveButton && taskModal) {\n    var saveBtnListener = saveButton.hasAttribute(\"data-has-event-listener\");\n    if (!saveBtnListener) {\n      saveButton.setAttribute(\"data-has-event-listener\", \"true\");\n      saveButton.addEventListener(\"click\", function () {\n        createNewOrSaveTask(projectId, stage, stageListClassName, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, taskListId, closeBtnId, saveBtnId, deleteBtnId);\n        taskModal.style.display = \"none\"; //Closes modal\n      });\n    }\n  }\n\n  if (deleteButton && taskModal) {\n    var deleteBtnListener = deleteButton.hasAttribute(\"data-has-event-listener\");\n    if (!deleteBtnListener) {\n      deleteButton.setAttribute(\"data-has-event-listener\", \"true\");\n      deleteButton.addEventListener(\"click\", function () {\n        deleteTask(projectId, stage, stageListClassName, taskModalId, taskListId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, saveBtnId, deleteBtnId, closeBtnId);\n        taskModal.style.display = \"none\"; //Closes modal\n      });\n    }\n  }\n}\n\nfunction createNewOrSaveTask(projectId, stage, stageListClassName, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, taskListId, closeBtnId, saveBtnId, deleteBtnId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var modalElement, titleElement, deadlineElement, startElement, contentElement, taskId, improvementWork, deadline, startDate, listElement, _deadline, _startDate, _listElement;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          //title: string, deadline : Date, startDate: Date, stage: string, content: string\n          modalElement = document.getElementById(taskModalId);\n          titleElement = document.getElementById(taskTitleId);\n          deadlineElement = document.getElementById(taskEndDateId);\n          startElement = document.getElementById(taskStartDateId);\n          contentElement = document.getElementById(taskContentId);\n          taskId = modalElement.getAttribute(\"data-task-id\");\n          if (!(taskId === \"\")) {\n            _context3.next = 13;\n            break;\n          }\n          _context3.next = 9;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getObjectById)(\"improvementWork\", projectId);\n        case 9:\n          improvementWork = _context3.sent;\n          if (titleElement && contentElement && deadlineElement && startElement) {\n            if (titleElement.value !== \"\", deadlineElement.value !== \"\", startElement.value !== \"\", contentElement.value !== \"\") {\n              deadline = new Date(deadlineElement.value); //Date string to timestamp\n              startDate = new Date(startElement.value); //Date string to timestamp\n              (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.createTaskOnImprovementWork)(null, projectId, titleElement.value, deadline, startDate, improvementWork.currentStage, contentElement.value);\n              listElement = document.getElementById(taskListId);\n              listElement.innerHTML = \"\";\n              loadImprovementWorkTasks(projectId, stage, stageListClassName, taskListId, closeBtnId, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, saveBtnId, deleteBtnId);\n            } else {\n              console.log(\"All input fields for the task where not filled in\");\n            }\n          } else {\n            console.log(\"All input element where not found\");\n          }\n          _context3.next = 21;\n          break;\n        case 13:\n          if (!taskId) {\n            _context3.next = 21;\n            break;\n          }\n          _deadline = new Date(deadlineElement.value); //Date string to timestamp\n          _startDate = new Date(startElement.value); //Date string to timestamp\n          _context3.next = 18;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.updateInstance)(\"task\", taskId, {\n            name: titleElement.value,\n            deadlineDate: _deadline,\n            startDate: _startDate,\n            content: contentElement.value\n          });\n        case 18:\n          _listElement = document.getElementById(taskListId);\n          _listElement.innerHTML = \"\";\n          loadImprovementWorkTasks(projectId, stage, stageListClassName, taskListId, closeBtnId, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, saveBtnId, deleteBtnId);\n          //loadPage(projectId); //Loads tasks since updated ASK for help\n        case 21:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3);\n  }));\n}\nfunction deleteTask(projectId, stage, stageListClassName, taskModalId, taskListId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, saveBtnId, deleteBtnId, closeBtnId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n    var modalElement, taskId, listElement;\n    return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n      while (1) switch (_context4.prev = _context4.next) {\n        case 0:\n          modalElement = document.getElementById(taskModalId);\n          taskId = modalElement.getAttribute(\"data-task-id\");\n          if (!taskId) {\n            _context4.next = 8;\n            break;\n          }\n          _context4.next = 5;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.deleteInstance)(\"task\", taskId);\n        case 5:\n          listElement = document.getElementById(taskListId);\n          listElement.innerHTML = \"\";\n          loadImprovementWorkTasks(projectId, stage, stageListClassName, taskListId, closeBtnId, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, saveBtnId, deleteBtnId);\n        case 8:\n        case \"end\":\n          return _context4.stop();\n      }\n    }, _callee4);\n  }));\n}\nfunction formatDate(timeStamp) {\n  var date = timeStamp.toDate();\n  var day = String(date.getDate()).toString();\n  var month = String(date.getMonth() + 1).toString(); // Adding 1 because months are zero-based\n  var year = String(date.getFullYear()).toString();\n  if (parseInt(month, 10) < 10 && parseInt(day, 10) > 9) {\n    return \"\".concat(year, \"-0\").concat(month, \"-\").concat(day);\n  } else if (parseInt(month, 10) > 9 && parseInt(day, 10) < 10) {\n    return \"\".concat(year, \"-\").concat(month, \"-0\").concat(day);\n  } else if (parseInt(month, 10) < 10 && parseInt(day, 10) < 10) {\n    return \"\".concat(year, \"-0\").concat(month, \"-0\").concat(day);\n  } else {\n    return \"\".concat(year, \"-\").concat(month, \"-\").concat(day);\n  }\n}\nfunction timestamptoDate(timestamp) {\n  if (timestamp instanceof firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.Timestamp) {\n    var date = timestamp.toDate();\n    return date;\n  } else {\n    console.error(\"Invalid timestamp type.\");\n    return null;\n  }\n}\nfunction getDaysMonthYear(startDate) {\n  var currentTime = new Date();\n  if (startDate) {\n    var millisecondsDifference = currentTime.getTime() - startDate.getTime();\n    // Convert milliseconds to seconds\n    var secondsDifference = millisecondsDifference / 1000;\n    // Calculate years, months, and days\n    var years = Math.floor(secondsDifference / (365.25 * 24 * 60 * 60));\n    var remainingSeconds = secondsDifference % (365.25 * 24 * 60 * 60);\n    var months = Math.floor(remainingSeconds / (30 * 24 * 60 * 60)); // Assuming 30 days per month\n    var days = Math.floor(remainingSeconds % (30 * 24 * 60 * 60) / (24 * 60 * 60));\n    return \" \".concat(years, \" \\xE5r, \").concat(months, \" m\\xE5nader, \").concat(days, \" dagar.\");\n  } else {\n    return \"Det finns inget startdatum registrerat\";\n  }\n}\nfunction loadProjectHeader(improvementWork) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n    var _this2 = this;\n    var loadingIndicators, titleP, aAreaElement, resources, time, formatdateStarted, aUnitArray, projectLeader, members, aProjectLeader, aMembers, aUnit, aUnitElement, hospitalArray, aHospital, aHospitalElement;\n    return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n      while (1) switch (_context6.prev = _context6.next) {\n        case 0:\n          // Show loading indicators\n          loadingIndicators = document.querySelectorAll(\".loadingIndicator\");\n          loadingIndicators.forEach(function (indicator) {\n            indicator.style.display = \"block\";\n          });\n          titleP = document.getElementById(\"title\");\n          titleP.textContent = improvementWork.name;\n          aAreaElement = document.getElementById(\"pArea\");\n          aAreaElement.textContent = improvementWork.area;\n          resources = document.getElementById(\"pResources\");\n          resources.textContent = improvementWork.resources;\n          time = document.getElementById(\"pTime\");\n          formatdateStarted = timestamptoDate(improvementWork.dateStarted);\n          time.textContent = getDaysMonthYear(formatdateStarted);\n          _context6.next = 13;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getUnits)({\n            unitId: improvementWork.unitId\n          });\n        case 13:\n          aUnitArray = _context6.sent;\n          _context6.next = 16;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getImprovementWorkResponsible)(improvementWork.id);\n        case 16:\n          projectLeader = _context6.sent;\n          _context6.next = 19;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getUsersForImprovementWork)(improvementWork.id);\n        case 19:\n          members = _context6.sent;\n          aProjectLeader = document.getElementById(\"pLeader\");\n          aProjectLeader.textContent = projectLeader.firstName + \" \" + projectLeader.lastName + \" (\" + projectLeader.email + \")\";\n          aMembers = document.getElementById(\"pMembers\");\n          members.forEach(function (member) {\n            return __awaiter(_this2, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n              return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n                while (1) switch (_context5.prev = _context5.next) {\n                  case 0:\n                    aMembers.textContent = aMembers.textContent + member.firstName + \" \" + member.lastName + \", \";\n                  case 1:\n                  case \"end\":\n                    return _context5.stop();\n                }\n              }, _callee5);\n            }));\n          });\n          //stop loding current members\n          if (aUnitArray.length === 0) {\n            console.log(\"Error loading the units.\");\n          }\n          aUnit = aUnitArray[0];\n          aUnitElement = document.getElementById(\"pUnit\");\n          aUnitElement.textContent = aUnit.name;\n          _context6.next = 30;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getHospitals)({\n            hospitalId: aUnit.hospitalId\n          });\n        case 30:\n          hospitalArray = _context6.sent;\n          if (hospitalArray.length === 0) {\n            console.log(\"Error loading the hospitals.\");\n          }\n          aHospital = hospitalArray[0];\n          aHospitalElement = document.getElementById(\"pHospital\");\n          aHospitalElement.textContent = aHospital.name;\n          // Close loading indicators\n          loadingIndicators.forEach(function (indicator) {\n            indicator.style.display = \"none\";\n          });\n        case 36:\n        case \"end\":\n          return _context6.stop();\n      }\n    }, _callee6);\n  }));\n}\nfunction getDivWithIdFromHTML(path, id) {\n  // Returning a Promise\n  return fetch(path).then(function (response) {\n    return response.text();\n  }).then(function (html) {\n    // Create a temporary container\n    var container = document.createElement(\"div\");\n    container.innerHTML = html;\n    // Get the modal content from the container\n    var element = container.querySelector(id);\n    return element;\n  })[\"catch\"](function (error) {\n    console.error(\"Error loading modal content:\", error);\n    return null;\n  });\n}\nfunction loadMemberModal() {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var modalContent, selectEmployeeChangeSection;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          _context7.next = 2;\n          return getDivWithIdFromHTML(\"../projectPage/addMemberModal.html\", \"#addMemberModal\");\n        case 2:\n          modalContent = _context7.sent;\n          if (modalContent) {\n            $(\"#container-fluid\").append(modalContent);\n            $(modalContent).modal(\"show\");\n          }\n          /*     const selectMemberContent = await getDivWithIdFromHTML('../initiateForbattringsarbete/initiateIdea.html', '#selectEmployees');\n            if (selectMemberContent) {\n                $('#modal-body').append(selectMemberContent);\n            } */\n          selectEmployeeChangeSection = document.querySelector(\"#selectEmployee\");\n          if (selectEmployeeChangeSection) {\n            selectEmployeeChangeSection.addEventListener(\"change\", _initiateForbattringsarbete_initiateIdea_js__WEBPACK_IMPORTED_MODULE_2__.assignedEmployer);\n          } else {\n            console.error(\"Error: 'changebutton' not found\");\n          }\n          (0,_initiateForbattringsarbete_initiateIdea_js__WEBPACK_IMPORTED_MODULE_2__.loadEmployees)();\n        case 7:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7);\n  }));\n}\n\n//# sourceURL=webpack://c3/./client/projectPage/projectPage.js?");
 
 /***/ }),
 
diff --git a/client/dist/pageHandler.bundle.js b/client/dist/pageHandler.bundle.js
index ed9f6731d8fa0a4f82f8e2f68f7e1c1b475260ab..cdb7fa4a6219cc24d767f0bdef56efc9385ba0b2 100644
--- a/client/dist/pageHandler.bundle.js
+++ b/client/dist/pageHandler.bundle.js
@@ -96,7 +96,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
   \*******************************************/
 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   login: () => (/* binding */ login),\n/* harmony export */   logout: () => (/* binding */ logout),\n/* harmony export */   register: () => (/* binding */ register)\n/* harmony export */ });\n/* harmony import */ var _database_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./database.js */ \"./client/Database/database.js\");\n/* harmony import */ var firebase_auth__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! firebase/auth */ \"./node_modules/firebase/auth/dist/esm/index.esm.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n///////////////////////////////////login functions/////////////////////////////////////////////////////////////////////\n//Log ins the user\nfunction login(email, password) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var _this = this;\n    var returnValue;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          returnValue = false;\n          _context2.next = 3;\n          return (0,firebase_auth__WEBPACK_IMPORTED_MODULE_1__.signInWithEmailAndPassword)(_database_js__WEBPACK_IMPORTED_MODULE_0__.auth, email, password).then(function (userCredential) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n              var user;\n              return _regeneratorRuntime().wrap(function _callee$(_context) {\n                while (1) switch (_context.prev = _context.next) {\n                  case 0:\n                    _context.next = 2;\n                    return (0,_database_js__WEBPACK_IMPORTED_MODULE_0__.getUsers)({\n                      uid: userCredential.user.uid\n                    });\n                  case 2:\n                    user = _context.sent;\n                    localStorage.setItem(\"user\", JSON.stringify(user));\n                    returnValue = true;\n                  case 5:\n                  case \"end\":\n                    return _context.stop();\n                }\n              }, _callee);\n            }));\n          })[\"catch\"](function (error) {\n            console.log(error);\n            returnValue = false;\n          });\n        case 3:\n          return _context2.abrupt(\"return\", returnValue);\n        case 4:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2);\n  }));\n}\n//Redirects to the login in screen and log outs the user\nfunction logout() {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          (0,firebase_auth__WEBPACK_IMPORTED_MODULE_1__.signOut)(_database_js__WEBPACK_IMPORTED_MODULE_0__.auth);\n          localStorage.removeItem(\"user\");\n        case 2:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3);\n  }));\n}\n//Registers and log ins a new user\nfunction register(hsaId, hospitalName, unitName, role, firstName, lastName, email, password, isManager) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n    var _this2 = this;\n    var hospital, unit, uid;\n    return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n      while (1) switch (_context5.prev = _context5.next) {\n        case 0:\n          _context5.next = 2;\n          return (0,_database_js__WEBPACK_IMPORTED_MODULE_0__.getHospitals)({\n            hospitalName: hospitalName\n          });\n        case 2:\n          hospital = _context5.sent;\n          if (!(hospital.length != 1)) {\n            _context5.next = 6;\n            break;\n          }\n          console.log(\"hospital does not exist\");\n          return _context5.abrupt(\"return\", false);\n        case 6:\n          _context5.next = 8;\n          return (0,_database_js__WEBPACK_IMPORTED_MODULE_0__.getUnits)({\n            name: unitName,\n            hospitalId: hospital[0].id,\n            ascendingUnitNames: false\n          });\n        case 8:\n          unit = _context5.sent;\n          if (!(unit.length != 1)) {\n            _context5.next = 12;\n            break;\n          }\n          console.log(\"that unit does not exist for this hospital\");\n          return _context5.abrupt(\"return\", false);\n        case 12:\n          uid = \"\";\n          _context5.next = 15;\n          return (0,firebase_auth__WEBPACK_IMPORTED_MODULE_1__.createUserWithEmailAndPassword)(_database_js__WEBPACK_IMPORTED_MODULE_0__.auth, email, password).then(function (userCredential) {\n            return __awaiter(_this2, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n              return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n                while (1) switch (_context4.prev = _context4.next) {\n                  case 0:\n                    uid = userCredential.user.uid;\n                  case 1:\n                  case \"end\":\n                    return _context4.stop();\n                }\n              }, _callee4);\n            }));\n          })[\"catch\"](function (error) {\n            var errorMessage = error.message;\n            console.log(errorMessage);\n            return false;\n          });\n        case 15:\n          (0,_database_js__WEBPACK_IMPORTED_MODULE_0__.createUser)(hsaId, unit[0].id, firstName, lastName, email, isManager, \"Sjuksöterska\", uid);\n          return _context5.abrupt(\"return\", login(email, password));\n        case 17:\n        case \"end\":\n          return _context5.stop();\n      }\n    }, _callee5);\n  }));\n}\n\n\n//# sourceURL=webpack://c3/./client/Database/authentication.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   login: () => (/* binding */ login),\n/* harmony export */   logout: () => (/* binding */ logout),\n/* harmony export */   register: () => (/* binding */ register)\n/* harmony export */ });\n/* harmony import */ var _database_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./database.js */ \"./client/Database/database.js\");\n/* harmony import */ var firebase_auth__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! firebase/auth */ \"./node_modules/firebase/auth/dist/esm/index.esm.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n///////////////////////////////////login functions/////////////////////////////////////////////////////////////////////\n//Log ins the user\nfunction login(email, password) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var _this = this;\n    var returnValue;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          returnValue = false;\n          _context2.next = 3;\n          return (0,firebase_auth__WEBPACK_IMPORTED_MODULE_1__.signInWithEmailAndPassword)(_database_js__WEBPACK_IMPORTED_MODULE_0__.auth, email, password).then(function (userCredential) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n              var user;\n              return _regeneratorRuntime().wrap(function _callee$(_context) {\n                while (1) switch (_context.prev = _context.next) {\n                  case 0:\n                    _context.next = 2;\n                    return (0,_database_js__WEBPACK_IMPORTED_MODULE_0__.getUsers)({\n                      uid: userCredential.user.uid\n                    });\n                  case 2:\n                    user = _context.sent;\n                    localStorage.setItem(\"user\", JSON.stringify(user));\n                    returnValue = true;\n                  case 5:\n                  case \"end\":\n                    return _context.stop();\n                }\n              }, _callee);\n            }));\n          })[\"catch\"](function (error) {\n            console.log(error);\n            alert(\"Felaktiga inloggnings-uppgifter\");\n            returnValue = false;\n          });\n        case 3:\n          return _context2.abrupt(\"return\", returnValue);\n        case 4:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2);\n  }));\n}\n//Redirects to the login in screen and log outs the user\nfunction logout() {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          (0,firebase_auth__WEBPACK_IMPORTED_MODULE_1__.signOut)(_database_js__WEBPACK_IMPORTED_MODULE_0__.auth);\n          localStorage.removeItem(\"user\");\n        case 2:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3);\n  }));\n}\n//Registers and log ins a new user\nfunction register(hsaId, hospitalName, unitName, role, firstName, lastName, email, password, isManager) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n    var _this2 = this;\n    var hospital, unit, uid;\n    return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n      while (1) switch (_context5.prev = _context5.next) {\n        case 0:\n          _context5.next = 2;\n          return (0,_database_js__WEBPACK_IMPORTED_MODULE_0__.getHospitals)({\n            hospitalName: hospitalName\n          });\n        case 2:\n          hospital = _context5.sent;\n          if (!(hospital.length != 1)) {\n            _context5.next = 6;\n            break;\n          }\n          console.log(\"hospital does not exist\");\n          return _context5.abrupt(\"return\", false);\n        case 6:\n          _context5.next = 8;\n          return (0,_database_js__WEBPACK_IMPORTED_MODULE_0__.getUnits)({\n            name: unitName,\n            hospitalId: hospital[0].id,\n            ascendingUnitNames: false\n          });\n        case 8:\n          unit = _context5.sent;\n          if (!(unit.length != 1)) {\n            _context5.next = 12;\n            break;\n          }\n          console.log(\"that unit does not exist for this hospital\");\n          return _context5.abrupt(\"return\", false);\n        case 12:\n          uid = \"\";\n          _context5.next = 15;\n          return (0,firebase_auth__WEBPACK_IMPORTED_MODULE_1__.createUserWithEmailAndPassword)(_database_js__WEBPACK_IMPORTED_MODULE_0__.auth, email, password).then(function (userCredential) {\n            return __awaiter(_this2, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n              return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n                while (1) switch (_context4.prev = _context4.next) {\n                  case 0:\n                    uid = userCredential.user.uid;\n                  case 1:\n                  case \"end\":\n                    return _context4.stop();\n                }\n              }, _callee4);\n            }));\n          })[\"catch\"](function (error) {\n            var errorMessage = error.message;\n            console.log(errorMessage);\n            return false;\n          });\n        case 15:\n          (0,_database_js__WEBPACK_IMPORTED_MODULE_0__.createUser)(hsaId, unit[0].id, firstName, lastName, email, isManager, \"Sjuksöterska\", uid);\n          return _context5.abrupt(\"return\", login(email, password));\n        case 17:\n        case \"end\":\n          return _context5.stop();\n      }\n    }, _callee5);\n  }));\n}\n\n\n//# sourceURL=webpack://c3/./client/Database/authentication.js?");
 
 /***/ }),
 
@@ -106,7 +106,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
   \*************************************/
 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   addDocumentToImprovementWork: () => (/* binding */ addDocumentToImprovementWork),\n/* harmony export */   addMemberToImprovementWork: () => (/* binding */ addMemberToImprovementWork),\n/* harmony export */   addMemberToTask: () => (/* binding */ addMemberToTask),\n/* harmony export */   addNoteToUser: () => (/* binding */ addNoteToUser),\n/* harmony export */   auth: () => (/* binding */ auth),\n/* harmony export */   changePatientRiskLevel: () => (/* binding */ changePatientRiskLevel),\n/* harmony export */   createComment: () => (/* binding */ createComment),\n/* harmony export */   createHospital: () => (/* binding */ createHospital),\n/* harmony export */   createImprovementWork: () => (/* binding */ createImprovementWork),\n/* harmony export */   createSuggestion: () => (/* binding */ createSuggestion),\n/* harmony export */   createTaskOnImprovementWork: () => (/* binding */ createTaskOnImprovementWork),\n/* harmony export */   createUnit: () => (/* binding */ createUnit),\n/* harmony export */   createUser: () => (/* binding */ createUser),\n/* harmony export */   createdDocumentInKnowledgeBank: () => (/* binding */ createdDocumentInKnowledgeBank),\n/* harmony export */   db: () => (/* binding */ db),\n/* harmony export */   deleteAllDocumentsInCollection: () => (/* binding */ deleteAllDocumentsInCollection),\n/* harmony export */   deleteInstance: () => (/* binding */ deleteInstance),\n/* harmony export */   deleteSuggestion: () => (/* binding */ deleteSuggestion),\n/* harmony export */   finalizeImprovementWork: () => (/* binding */ finalizeImprovementWork),\n/* harmony export */   getComments: () => (/* binding */ getComments),\n/* harmony export */   getDocumentsByImprovementWork: () => (/* binding */ getDocumentsByImprovementWork),\n/* harmony export */   getFilteredImprovementWorks: () => (/* binding */ getFilteredImprovementWorks),\n/* harmony export */   getHospitals: () => (/* binding */ getHospitals),\n/* harmony export */   getImprovementWorkOwner: () => (/* binding */ getImprovementWorkOwner),\n/* harmony export */   getImprovementWorkResponsible: () => (/* binding */ getImprovementWorkResponsible),\n/* harmony export */   getImprovementWorks: () => (/* binding */ getImprovementWorks),\n/* harmony export */   getImprovementWorksForUser: () => (/* binding */ getImprovementWorksForUser),\n/* harmony export */   getObject: () => (/* binding */ getObject),\n/* harmony export */   getObjectById: () => (/* binding */ getObjectById),\n/* harmony export */   getSuggestions: () => (/* binding */ getSuggestions),\n/* harmony export */   getTasks: () => (/* binding */ getTasks),\n/* harmony export */   getUnits: () => (/* binding */ getUnits),\n/* harmony export */   getUsers: () => (/* binding */ getUsers),\n/* harmony export */   getUsersForImprovementWork: () => (/* binding */ getUsersForImprovementWork),\n/* harmony export */   startOrPauseImprovementWork: () => (/* binding */ startOrPauseImprovementWork),\n/* harmony export */   updateInstance: () => (/* binding */ updateInstance),\n/* harmony export */   upvoteComment: () => (/* binding */ upvoteComment),\n/* harmony export */   upvoteSuggestion: () => (/* binding */ upvoteSuggestion)\n/* harmony export */ });\n/* harmony import */ var firebase_app__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! firebase/app */ \"./node_modules/firebase/app/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_firestore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! firebase/firestore */ \"./node_modules/firebase/firestore/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_auth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! firebase/auth */ \"./node_modules/firebase/auth/dist/esm/index.esm.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n// C3 solutions databasen - ska användas för P&S\nvar firebaseConfig = {\n  apiKey: \"AIzaSyB7n9YIDCmeyzeZzteFnXqOUBijzEO59ls\",\n  authDomain: \"backup-277c3.firebaseapp.com\",\n  projectId: \"backup-277c3\",\n  storageBucket: \"backup-277c3.appspot.com\",\n  messagingSenderId: \"296015398098\",\n  appId: \"1:296015398098:web:71e1d1ec2b0c370e5a590b\",\n  measurementId: \"G-E933CXWWCG\"\n};\n//Backup databas - ska användas av R&D\n/*  const firebaseConfig = {\n   apiKey: \"AIzaSyAMfD8V0belL6GxbuoehL__6YTFZH4pyoc\",\n   authDomain: \"company3-backup.firebaseapp.com\",\n   projectId: \"company3-backup\",\n   storageBucket: \"company3-backup.appspot.com\",\n   messagingSenderId: \"820650717800\",\n   appId: \"1:820650717800:web:7557c7734ed59d3f7281dd\"\n };\n */\n//Bens egna reserv #nödfall\n/* const firebaseConfig = {\n  apiKey: \"AIzaSyBIsZq_yOsJljp1woIxndJO1GkW6soh-g4\",\n  authDomain: \"company3-456bb.firebaseapp.com\",\n  projectId: \"company3-456bb\",\n  storageBucket: \"company3-456bb.appspot.com\",\n  messagingSenderId: \"310033686522\",\n  appId: \"1:310033686522:web:63198bb0db679c98ee4e43\",\n  measurementId: \"G-PFLDQY00DB\"\n}; */\nvar app = (0,firebase_app__WEBPACK_IMPORTED_MODULE_0__.initializeApp)(firebaseConfig);\nvar auth = (0,firebase_auth__WEBPACK_IMPORTED_MODULE_2__.getAuth)();\nvar db = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getFirestore)(app);\nvar userCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\nvar unitCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\nvar improvementWorkCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\nvar taskCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\nvar hospitalCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\nvar suggestionCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\nvar knowledgeDocumentCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"knowledgeDocument\");\nvar userImprovementWorkCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"userImprovementWork\");\nvar userTaskCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"userTask\");\n////////////////////////////////////////Setters///////////////////////////////////////////////////////////////////\n// Function to create user a new user in database\n// takes in userId, unitId, firstname, lastname, email and password as string\n// throws error if transaction failed\nfunction createUser(hsaId, unitId, firstName, lastName, email, manager, role, uid) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n    var userRef;\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          _context.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, hsaId);\n          _context.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(userRef, {\n            id: userRef.id,\n            uid: uid,\n            unitId: unitId,\n            firstName: firstName,\n            lastName: lastName,\n            email: email,\n            role: role,\n            // TODO Replace with userImprovementWork collection\n            improvementWorks: [],\n            tasks: [],\n            manager: manager\n          });\n        case 4:\n          _context.next = 9;\n          break;\n        case 6:\n          _context.prev = 6;\n          _context.t0 = _context[\"catch\"](0);\n          console.log(_context.t0);\n        case 9:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee, null, [[0, 6]]);\n  }));\n}\nfunction createImprovementWork(id, name, currentStage, content,\n// Är detta description bör detta förtydligas. JA\nunitId, purpose,\n//Bör tas bort motsvaras av p2- mål med projektet\npatientRiskLevel, area, projectLeader,\n//Adding projectleader & members to the project\nmembers) {\n  var resources = arguments.length > 10 && arguments[10] !== undefined ? arguments[10] : \"Inte definerat ännu\";\n  var p1 = arguments.length > 11 && arguments[11] !== undefined ? arguments[11] : \"\";\n  var p2 = arguments.length > 12 && arguments[12] !== undefined ? arguments[12] : \"\";\n  var p3 = arguments.length > 13 && arguments[13] !== undefined ? arguments[13] : \"\";\n  var p4 = arguments.length > 14 && arguments[14] !== undefined ? arguments[14] : \"\";\n  var p5 = arguments.length > 15 && arguments[15] !== undefined ? arguments[15] : \"\";\n  var p6 = arguments.length > 16 && arguments[16] !== undefined ? arguments[16] : \"\";\n  var p7 = arguments.length > 17 && arguments[17] !== undefined ? arguments[17] : \"\";\n  var g1 = arguments.length > 18 && arguments[18] !== undefined ? arguments[18] : \"\";\n  var g2 = arguments.length > 19 && arguments[19] !== undefined ? arguments[19] : \"\";\n  var g3 = arguments.length > 20 && arguments[20] !== undefined ? arguments[20] : \"\";\n  var g4 = arguments.length > 21 && arguments[21] !== undefined ? arguments[21] : \"\";\n  var g5 = arguments.length > 22 && arguments[22] !== undefined ? arguments[22] : \"\";\n  var s1 = arguments.length > 23 && arguments[23] !== undefined ? arguments[23] : \"\";\n  var s2 = arguments.length > 24 && arguments[24] !== undefined ? arguments[24] : \"\";\n  var s3 = arguments.length > 25 && arguments[25] !== undefined ? arguments[25] : \"\";\n  var a1 = arguments.length > 26 && arguments[26] !== undefined ? arguments[26] : \"\";\n  var a2 = arguments.length > 27 && arguments[27] !== undefined ? arguments[27] : \"\";\n  var a3 = arguments.length > 28 && arguments[28] !== undefined ? arguments[28] : \"\";\n  var a4 = arguments.length > 29 && arguments[29] !== undefined ? arguments[29] : \"\";\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var improvementWorkData, improvementWorkRef, _improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          _context2.prev = 0;\n          improvementWorkData = {\n            name: name,\n            lowerCaseName: name.toLowerCase(),\n            currentStage: currentStage,\n            content: content,\n            purpose: purpose,\n            dateStarted: new Date(),\n            unitId: unitId,\n            completed: false,\n            ongoing: false,\n            tasks: [],\n            patientRiskLevel: patientRiskLevel,\n            area: area,\n            p1: p1,\n            p2: p2,\n            p3: p3,\n            p4: p4,\n            p5: p5,\n            p6: p6,\n            p7: p7,\n            g1: g1,\n            g2: g2,\n            g3: g3,\n            g4: g4,\n            g5: g5,\n            s1: s1,\n            s2: s2,\n            s3: s3,\n            a1: a1,\n            a2: a2,\n            a3: a3,\n            a4: a4,\n            resources: resources\n          };\n          if (!id) {\n            _context2.next = 8;\n            break;\n          }\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, id);\n          _context2.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(improvementWorkRef, Object.assign({\n            id: improvementWorkRef.id\n          }, improvementWorkData));\n        case 6:\n          _context2.next = 12;\n          break;\n        case 8:\n          _improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection);\n          _context2.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(_improvementWorkRef, improvementWorkData);\n        case 11:\n          id = _improvementWorkRef.id;\n        case 12:\n          //adding the projectleader and users to the project\n          addMemberToImprovementWork(projectLeader, id, false, true);\n          members.forEach(function (member) {\n            addMemberToImprovementWork(member, id, false, false);\n          });\n          _context2.next = 20;\n          break;\n        case 16:\n          _context2.prev = 16;\n          _context2.t0 = _context2[\"catch\"](0);\n          console.log(\"Error creating improvementWork: \", _context2.t0);\n          throw _context2.t0;\n        case 20:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2, null, [[0, 16]]);\n  }));\n}\nfunction addMemberToTask(userHsaId, taskId, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var relationRef;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          _context3.prev = 0;\n          relationRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userTaskCollection);\n          _context3.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(relationRef, {\n            id: relationRef.id,\n            userHsaId: userHsaId,\n            taskId: taskId,\n            isResponsibleFor: isResponsibleFor\n          });\n        case 4:\n          _context3.next = 10;\n          break;\n        case 6:\n          _context3.prev = 6;\n          _context3.t0 = _context3[\"catch\"](0);\n          console.log(\"Error adding member to task: \", _context3.t0);\n          throw _context3.t0;\n        case 10:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3, null, [[0, 6]]);\n  }));\n}\nfunction addMemberToImprovementWork(userHsaId, improvementWorkId, isOwner, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n    var relationRef;\n    return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n      while (1) switch (_context4.prev = _context4.next) {\n        case 0:\n          _context4.prev = 0;\n          relationRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userImprovementWorkCollection);\n          _context4.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(relationRef, {\n            id: relationRef.id,\n            userHsaId: userHsaId,\n            improvementWorkId: improvementWorkId,\n            isOwner: isOwner,\n            isResponsibleFor: isResponsibleFor\n          });\n        case 4:\n          _context4.next = 10;\n          break;\n        case 6:\n          _context4.prev = 6;\n          _context4.t0 = _context4[\"catch\"](0);\n          console.log(\"Error adding member to improvementWork: \", _context4.t0);\n          throw _context4.t0;\n        case 10:\n        case \"end\":\n          return _context4.stop();\n      }\n    }, _callee4, null, [[0, 6]]);\n  }));\n}\nfunction createTaskOnImprovementWork(taskId, improvementWorkId, name, deadlineDate, startDate, stage, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n    var taskData, taskRef, _taskRef;\n    return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n      while (1) switch (_context5.prev = _context5.next) {\n        case 0:\n          _context5.prev = 0;\n          taskData = {\n            improvementWorkId: improvementWorkId,\n            name: name,\n            deadlineDate: deadlineDate,\n            startDate: startDate,\n            stage: stage,\n            content: content,\n            completed: false\n          };\n          if (!taskId) {\n            _context5.next = 8;\n            break;\n          }\n          taskRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context5.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(taskRef, Object.assign({\n            id: taskRef.id\n          }, taskData));\n        case 6:\n          _context5.next = 11;\n          break;\n        case 8:\n          _taskRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection);\n          _context5.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(_taskRef, taskData);\n        case 11:\n          _context5.next = 17;\n          break;\n        case 13:\n          _context5.prev = 13;\n          _context5.t0 = _context5[\"catch\"](0);\n          console.log(\"Error creating task: \", _context5.t0);\n          throw _context5.t0;\n        case 17:\n        case \"end\":\n          return _context5.stop();\n      }\n    }, _callee5, null, [[0, 13]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction createdDocumentInKnowledgeBank(documentUrl, name, projectId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n      while (1) switch (_context6.prev = _context6.next) {\n        case 0:\n          _context6.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(knowledgeDocumentCollection);\n          _context6.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            name: name,\n            projectId: projectId\n          });\n        case 4:\n          _context6.next = 10;\n          break;\n        case 6:\n          _context6.prev = 6;\n          _context6.t0 = _context6[\"catch\"](0);\n          console.log(\"Error adding document: \", _context6.t0);\n          throw _context6.t0;\n        case 10:\n        case \"end\":\n          return _context6.stop();\n      }\n    }, _callee6, null, [[0, 6]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction addDocumentToImprovementWork(documentUrl, name, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var improvementWorkRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          _context7.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkRef, \"documents\");\n          _context7.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            timestamp: new Date(),\n            name: name\n          });\n        case 5:\n          _context7.next = 11;\n          break;\n        case 7:\n          _context7.prev = 7;\n          _context7.t0 = _context7[\"catch\"](0);\n          console.log(\"Error adding document: \", _context7.t0);\n          throw _context7.t0;\n        case 11:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7, null, [[0, 7]]);\n  }));\n}\nfunction getDocumentsByImprovementWork(improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var q, querySnapshot, documents, _iterator, _step, _doc, documentId, documentDoc;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          _context8.prev = 0;\n          console.log(\"Getting documents for improvementwork: \", improvementWorkId);\n          // Query the userImprovementWork collection for relations involving this user\n          q = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)(knowledgeDocumentCollection, (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"projectId\", \"==\", improvementWorkId));\n          _context8.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 5:\n          querySnapshot = _context8.sent;\n          // Fetch each related improvementWork document\n          documents = [];\n          _iterator = _createForOfIteratorHelper(querySnapshot.docs);\n          _context8.prev = 8;\n          _iterator.s();\n        case 10:\n          if ((_step = _iterator.n()).done) {\n            _context8.next = 19;\n            break;\n          }\n          _doc = _step.value;\n          documentId = _doc.data().id;\n          _context8.next = 15;\n          return getObjectById(\"knowledgeDocument\", documentId);\n        case 15:\n          documentDoc = _context8.sent;\n          documents.push(documentDoc);\n        case 17:\n          _context8.next = 10;\n          break;\n        case 19:\n          _context8.next = 24;\n          break;\n        case 21:\n          _context8.prev = 21;\n          _context8.t0 = _context8[\"catch\"](8);\n          _iterator.e(_context8.t0);\n        case 24:\n          _context8.prev = 24;\n          _iterator.f();\n          return _context8.finish(24);\n        case 27:\n          return _context8.abrupt(\"return\", documents);\n        case 30:\n          _context8.prev = 30;\n          _context8.t1 = _context8[\"catch\"](0);\n          console.error(\"Error getting documents for improvmentwork: \", _context8.t1);\n          throw _context8.t1;\n        case 34:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8, null, [[0, 30], [8, 21, 24, 27]]);\n  }));\n}\nfunction createHospital(hospitalId,\n// should be auto?\nname) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n    var hospitalData, hospitalRef, _hospitalRef;\n    return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n      while (1) switch (_context9.prev = _context9.next) {\n        case 0:\n          _context9.prev = 0;\n          hospitalData = {\n            name: name,\n            units: []\n          };\n          if (!hospitalId) {\n            _context9.next = 8;\n            break;\n          }\n          hospitalRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context9.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(hospitalRef, Object.assign({\n            id: hospitalRef.id\n          }, hospitalData));\n        case 6:\n          _context9.next = 11;\n          break;\n        case 8:\n          _hospitalRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection);\n          _context9.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(_hospitalRef, hospitalData);\n        case 11:\n          _context9.next = 17;\n          break;\n        case 13:\n          _context9.prev = 13;\n          _context9.t0 = _context9[\"catch\"](0);\n          console.log(\"Error creating hospital: \", _context9.t0);\n          throw _context9.t0;\n        case 17:\n        case \"end\":\n          return _context9.stop();\n      }\n    }, _callee9, null, [[0, 13]]);\n  }));\n}\nfunction createUnit(unitId,\n//should be auto?\nhospitalId, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var unitData, unitRef, _unitRef;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          _context10.prev = 0;\n          unitData = {\n            hospitalId: hospitalId,\n            name: name\n          };\n          if (!unitId) {\n            _context10.next = 8;\n            break;\n          }\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context10.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(unitRef, Object.assign({\n            id: unitRef.id\n          }, unitData));\n        case 6:\n          _context10.next = 11;\n          break;\n        case 8:\n          _unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection);\n          _context10.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(_unitRef, unitData);\n        case 11:\n          _context10.next = 17;\n          break;\n        case 13:\n          _context10.prev = 13;\n          _context10.t0 = _context10[\"catch\"](0);\n          console.log(\"Error creating unit: \", _context10.t0);\n          throw _context10.t0;\n        case 17:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10, null, [[0, 13]]);\n  }));\n}\nfunction createSuggestion(id, creatorHsaId, name, area, content, purpose, measure, ideas,\n//need: boolean,\nunitId, departmentId, isPublic) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {\n    var suggestionData, suggestionRef, _suggestionRef;\n    return _regeneratorRuntime().wrap(function _callee11$(_context11) {\n      while (1) switch (_context11.prev = _context11.next) {\n        case 0:\n          _context11.prev = 0;\n          suggestionData = {\n            creatorHsaId: creatorHsaId,\n            name: name,\n            area: area,\n            content: content,\n            purpose: purpose,\n            measure: measure,\n            ideas: ideas,\n            //need,\n            unitId: unitId,\n            departmentId: departmentId,\n            \"public\": isPublic,\n            upvotes: [],\n            comments: [],\n            dateCreated: new Date()\n          };\n          if (!id) {\n            _context11.next = 8;\n            break;\n          }\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, id);\n          _context11.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(suggestionRef, Object.assign({\n            id: suggestionRef.id\n          }, suggestionData));\n        case 6:\n          _context11.next = 11;\n          break;\n        case 8:\n          _suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection);\n          _context11.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(_suggestionRef, suggestionData);\n        case 11:\n          _context11.next = 17;\n          break;\n        case 13:\n          _context11.prev = 13;\n          _context11.t0 = _context11[\"catch\"](0);\n          console.log(\"Error creating suggestion: \", _context11.t0);\n          throw _context11.t0;\n        case 17:\n        case \"end\":\n          return _context11.stop();\n      }\n    }, _callee11, null, [[0, 13]]);\n  }));\n}\nfunction deleteSuggestion(suggestionId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {\n    var suggestionRef;\n    return _regeneratorRuntime().wrap(function _callee12$(_context12) {\n      while (1) switch (_context12.prev = _context12.next) {\n        case 0:\n          _context12.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          _context12.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(suggestionRef);\n        case 4:\n          _context12.next = 10;\n          break;\n        case 6:\n          _context12.prev = 6;\n          _context12.t0 = _context12[\"catch\"](0);\n          console.log(\"Error deleting suggestion: \", _context12.t0);\n          throw _context12.t0;\n        case 10:\n        case \"end\":\n          return _context12.stop();\n      }\n    }, _callee12, null, [[0, 6]]);\n  }));\n}\n// Upvote a suggestion for a user\n// takes in suggestion id, user HSAid\n// returns error if transaction failed\nfunction upvoteSuggestion(suggestionId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {\n    var suggestionRef;\n    return _regeneratorRuntime().wrap(function _callee13$(_context13) {\n      while (1) switch (_context13.prev = _context13.next) {\n        case 0:\n          _context13.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId); // Atomically add a update to the upvote array field.\n          _context13.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(suggestionRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 4:\n          _context13.next = 10;\n          break;\n        case 6:\n          _context13.prev = 6;\n          _context13.t0 = _context13[\"catch\"](0);\n          console.log(\"Error upvoting suggestion: \", _context13.t0);\n          throw _context13.t0;\n        case 10:\n        case \"end\":\n          return _context13.stop();\n      }\n    }, _callee13, null, [[0, 6]]);\n  }));\n}\n//creates a comment\n// takes in commenters id, suggestion id and content as string\n// throws error if transaction failed\nfunction createComment(\n// change to subcollection\ncommenterHsaId, suggestionId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee14() {\n    var suggestionRef, commentCollection, commentRef;\n    return _regeneratorRuntime().wrap(function _callee14$(_context14) {\n      while (1) switch (_context14.prev = _context14.next) {\n        case 0:\n          _context14.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          _context14.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 4:\n          commentCollection = _context14.sent;\n          _context14.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 7:\n          commentRef = _context14.sent;\n          _context14.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(commentRef, {\n            id: commentRef.id,\n            commenterHsaId: commenterHsaId,\n            content: content,\n            dateCreated: new Date(),\n            upvotes: []\n          });\n        case 10:\n          _context14.next = 16;\n          break;\n        case 12:\n          _context14.prev = 12;\n          _context14.t0 = _context14[\"catch\"](0);\n          console.log(\"Error creating comment: \", _context14.t0);\n          throw _context14.t0;\n        case 16:\n        case \"end\":\n          return _context14.stop();\n      }\n    }, _callee14, null, [[0, 12]]);\n  }));\n}\n// Upvote a comment for a user\n// takes in suggestionId, commentId and userId as strings\n// return error if transaction failed\nfunction upvoteComment(suggestionId, commentId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee15() {\n    var suggestionRef, commentRef;\n    return _regeneratorRuntime().wrap(function _callee15$(_context15) {\n      while (1) switch (_context15.prev = _context15.next) {\n        case 0:\n          _context15.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          commentRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionRef, \"comment\", commentId); // Atomically add a update to the upvote array field.\n          _context15.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(commentRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 5:\n          _context15.next = 11;\n          break;\n        case 7:\n          _context15.prev = 7;\n          _context15.t0 = _context15[\"catch\"](0);\n          console.log(\"Error upvoting comment: \", _context15.t0);\n          throw _context15.t0;\n        case 11:\n        case \"end\":\n          return _context15.stop();\n      }\n    }, _callee15, null, [[0, 7]]);\n  }));\n}\n//add a note to a user\n// takes in userHsaId and content as string\n// throws error if transaction failed\nfunction addNoteToUser(userHsaId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee16() {\n    var userRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee16$(_context16) {\n      while (1) switch (_context16.prev = _context16.next) {\n        case 0:\n          _context16.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userRef, \"notes\");\n          _context16.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            content: content,\n            dateCreated: new Date()\n          });\n        case 5:\n          _context16.next = 11;\n          break;\n        case 7:\n          _context16.prev = 7;\n          _context16.t0 = _context16[\"catch\"](0);\n          console.log(\"Error adding document: \", _context16.t0);\n          throw _context16.t0;\n        case 11:\n        case \"end\":\n          return _context16.stop();\n      }\n    }, _callee16, null, [[0, 7]]);\n  }));\n}\n// export to setters to be able to use in other files\n\n//////////////////////////////////////////////GETTERS/////////////////////////////////////////////////////////////////////\n// Get any object\n// input is the database type as a string.\n// output is the whole collection of that type.\nfunction getObject(collectionPath) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee17() {\n    var collectionRef, querySnapshot, result;\n    return _regeneratorRuntime().wrap(function _callee17$(_context17) {\n      while (1) switch (_context17.prev = _context17.next) {\n        case 0:\n          _context17.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionPath);\n          _context17.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          querySnapshot = _context17.sent;\n          result = [];\n          querySnapshot.forEach(function (doc) {\n            result.push(doc.data());\n          });\n          return _context17.abrupt(\"return\", result);\n        case 10:\n          _context17.prev = 10;\n          _context17.t0 = _context17[\"catch\"](0);\n          console.error(\"Error getting collection data\", _context17.t0);\n          throw _context17.t0;\n        case 14:\n        case \"end\":\n          return _context17.stop();\n      }\n    }, _callee17, null, [[0, 10]]);\n  }));\n}\n/**\n * Asynchronously retrieves a single document object from the specified collection path and document ID.\n * If the document does not exist, logs a warning and returns null.\n *\n * @param {string} collectionPath - The path to the collection in the database (\"improvementWork\", \"hospital\", \"suggestion\", \"task\", \"unit\", \"users\")\n * @param {string} documentId - The ID of the document to retrieve.\n * @returns {Promise<any|null>} A promise that resolves to the document object if found, or null if not.\n *\n * @throws Will throw an error if there is an issue during retrieval from the database.\n */\nfunction getObjectById(collectionPath, documentId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee18() {\n    var docRef, docSnapshot;\n    return _regeneratorRuntime().wrap(function _callee18$(_context18) {\n      while (1) switch (_context18.prev = _context18.next) {\n        case 0:\n          _context18.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, collectionPath, documentId);\n          _context18.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDoc)(docRef);\n        case 4:\n          docSnapshot = _context18.sent;\n          if (!docSnapshot.exists()) {\n            _context18.next = 9;\n            break;\n          }\n          return _context18.abrupt(\"return\", Object.assign({\n            id: docSnapshot.id\n          }, docSnapshot.data()));\n        case 9:\n          console.warn(\"No such document! \".concat(collectionPath, \"/\").concat(documentId));\n          return _context18.abrupt(\"return\", null);\n        case 11:\n          _context18.next = 17;\n          break;\n        case 13:\n          _context18.prev = 13;\n          _context18.t0 = _context18[\"catch\"](0);\n          console.error(\"Error getting object\", _context18.t0);\n          throw _context18.t0;\n        case 17:\n        case \"end\":\n          return _context18.stop();\n      }\n    }, _callee18, null, [[0, 13]]);\n  }));\n}\n/**\n * Asynchronously retrieves comments for a given suggestion.\n *\n * @param {Object} params - The parameters for fetching comments.\n * @param {string} params.suggestionId - The ID of the suggestion to fetch comments for.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - The criterion to sort the comments by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Determines if the sorting should be in ascending order. Defaults to false (descending).\n * @returns {Promise<any[]>} A promise that resolves to an array of comment objects.\n *\n * @throws Will throw an error if the comments cannot be retrieved.\n */\nfunction getComments(_ref) {\n  var suggestionId = _ref.suggestionId,\n    _ref$sortBy = _ref.sortBy,\n    sortBy = _ref$sortBy === void 0 ? \"dateCreated\" : _ref$sortBy,\n    _ref$ascending = _ref.ascending,\n    ascending = _ref$ascending === void 0 ? false : _ref$ascending;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee19() {\n    var suggestionRef, commentsQuery, commentsSnapshot, comments;\n    return _regeneratorRuntime().wrap(function _callee19$(_context19) {\n      while (1) switch (_context19.prev = _context19.next) {\n        case 0:\n          _context19.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, \"suggestionCollection\", suggestionId);\n          commentsQuery = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\"), (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          _context19.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(commentsQuery);\n        case 5:\n          commentsSnapshot = _context19.sent;\n          comments = [];\n          commentsSnapshot.forEach(function (doc) {\n            comments.push(doc.data());\n          });\n          return _context19.abrupt(\"return\", comments);\n        case 11:\n          _context19.prev = 11;\n          _context19.t0 = _context19[\"catch\"](0);\n          console.error(\"Error getting comments for suggestion: \", _context19.t0);\n          throw _context19.t0;\n        case 15:\n        case \"end\":\n          return _context19.stop();\n      }\n    }, _callee19, null, [[0, 11]]);\n  }));\n}\n//Filtering suggestions on unitId AND creatorHsaId\n//Sort suggestions on dateCreated OR upvotes\n/**\n * Asynchronously retrieves an array of suggestions from the database, with various filters and sorting options.\n *\n * @param {Object} params - The parameters for filtering and sorting suggestions.\n * @param {string} [params.id] - Optional ID to filter suggestions by a specific identifier.\n * @param {string} [params.creatorHsaId] - Optional HSA ID to filter suggestions by the creator's HSA ID.\n * @param {string} [params.unitId] - Optional unit ID to filter suggestions by a specific unit.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - Criterion to sort the suggestions by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Flag indicating if sorting should be ascending. Defaults to false (descending order).\n * @param {boolean} [params.isPublic=true] - Flag indicating whether to filter for public suggestions. Defaults to true.\n * @returns {Promise<any[]>} A promise that resolves to an array of suggestion objects.\n *\n * @throws Will throw an error if there is an issue retrieving suggestions.\n */\nfunction getSuggestions(_ref2) {\n  var id = _ref2.id,\n    creatorHsaId = _ref2.creatorHsaId,\n    name = _ref2.name,\n    unitId = _ref2.unitId,\n    _ref2$sortBy = _ref2.sortBy,\n    sortBy = _ref2$sortBy === void 0 ? \"dateCreated\" : _ref2$sortBy,\n    _ref2$ascending = _ref2.ascending,\n    ascending = _ref2$ascending === void 0 ? false : _ref2$ascending,\n    _ref2$isPublic = _ref2.isPublic,\n    isPublic = _ref2$isPublic === void 0 ? true : _ref2$isPublic;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee20() {\n    var collectionRef, constraints, q, querySnapshot, suggestions;\n    return _regeneratorRuntime().wrap(function _callee20$(_context20) {\n      while (1) switch (_context20.prev = _context20.next) {\n        case 0:\n          _context20.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (creatorHsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"creatorHsaId\", \"==\", creatorHsaId));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", name));\n            sortBy = \"name\";\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"public\", \"==\", isPublic));\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context20.next = 12;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 12:\n          querySnapshot = _context20.sent;\n          suggestions = [];\n          querySnapshot.forEach(function (doc) {\n            suggestions.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context20.abrupt(\"return\", suggestions);\n        case 18:\n          _context20.prev = 18;\n          _context20.t0 = _context20[\"catch\"](0);\n          console.log(\"Error retrieving suggestions by department: \", _context20.t0);\n          throw _context20.t0;\n        case 22:\n        case \"end\":\n          return _context20.stop();\n      }\n    }, _callee20, null, [[0, 18]]);\n  }));\n}\n/**\n * Asynchronously searches for hospital documents in the database.\n * It can filter the results by the hospital's name, ID, or both.\n * If no parameters are provided, it retrieves all hospitals.\n *\n * @param {Object} params - An object containing the search parameters.\n * @param {string} [params.hospitalName] - Optional name of the hospital to filter the search.\n * @param {string} [params.hospitalId] - Optional unique identifier of the hospital to filter the search.\n * @returns {Promise<any[]>} A promise that resolves to an array of hospital objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getHospitals(_ref3) {\n  var hospitalName = _ref3.hospitalName,\n    hospitalId = _ref3.hospitalId;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee21() {\n    var collectionRef, constraints, q, querySnapshot, hospitals;\n    return _regeneratorRuntime().wrap(function _callee21$(_context21) {\n      while (1) switch (_context21.prev = _context21.next) {\n        case 0:\n          _context21.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\n          constraints = [];\n          if (hospitalName) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", hospitalName));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hospitalId));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context21.next = 8;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 8:\n          querySnapshot = _context21.sent;\n          hospitals = [];\n          querySnapshot.forEach(function (doc) {\n            hospitals.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context21.abrupt(\"return\", hospitals);\n        case 14:\n          _context21.prev = 14;\n          _context21.t0 = _context21[\"catch\"](0);\n          console.log(\"Error retrieving Hospitals\", _context21.t0);\n          throw _context21.t0;\n        case 18:\n        case \"end\":\n          return _context21.stop();\n      }\n    }, _callee21, null, [[0, 14]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of improvement work documents based on various filter criteria.\n * It supports filtering by ID, Nolan stage, unit ID, completion status, ongoing status, and patient risk level.\n * It also supports sorting by the start date of the improvement work in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.id] - Optional identifier to filter the improvement works.\n * @param {string} [params.nolanStage] - Optional Nolan stage to filter the improvement works.\n * @param {string} [params.unitId] - Optional unit ID to filter the improvement works.\n * @param {boolean} [params.completed] - Optional flag to filter the improvement works by their completion status.\n * @param {boolean} [params.ongoing] - Optional flag to filter the improvement works by their ongoing status.\n * @param {string} [params.patientRiskLevel] - Optional patient risk level to filter the improvement works.\n * @param {boolean} [params.ascendingDates=false] - Optional flag for sorting by date in ascending order. Defaults to false.\n * @returns {Promise<any[]>} A promise that resolves to an array of improvement work objects that match the criteria.\n *\n * @throws Will throw an error if there is a problem retrieving the improvement works.\n */\nfunction getImprovementWorks(_ref4) {\n  var id = _ref4.id,\n    name = _ref4.name,\n    nolanStage = _ref4.nolanStage,\n    unitId = _ref4.unitId,\n    completed = _ref4.completed,\n    ongoing = _ref4.ongoing,\n    patientRiskLevel = _ref4.patientRiskLevel,\n    _ref4$ascendingDates = _ref4.ascendingDates,\n    ascendingDates = _ref4$ascendingDates === void 0 ? false : _ref4$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee22() {\n    var collectionRef, constraints, q, querySnapshot, improvementWorks;\n    return _regeneratorRuntime().wrap(function _callee22$(_context22) {\n      while (1) switch (_context22.prev = _context22.next) {\n        case 0:\n          _context22.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            console.log(\"inne i ifsatsen i databasen\");\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (nolanStage) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"currentStage\", \"==\", nolanStage));\n          }\n          if (completed != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"completed\", \"==\", completed));\n          }\n          if (ongoing !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"ongoing\", \"==\", ongoing));\n          }\n          if (patientRiskLevel) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"patientRiskLevel\", \"==\", patientRiskLevel));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"lowerCaseName\", \">=\", name.toLowerCase()));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"lowerCaseName\", \"<=\", name.toLowerCase() + \"~\"));\n          } else {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"dateStarted\", ascendingDates ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context22.next = 13;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 13:\n          querySnapshot = _context22.sent;\n          improvementWorks = [];\n          querySnapshot.forEach(function (doc) {\n            improvementWorks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context22.abrupt(\"return\", improvementWorks);\n        case 19:\n          _context22.prev = 19;\n          _context22.t0 = _context22[\"catch\"](0);\n          console.log(\"Error retrieving improvementWorks: \", _context22.t0);\n          throw _context22.t0;\n        case 23:\n        case \"end\":\n          return _context22.stop();\n      }\n    }, _callee22, null, [[0, 19]]);\n  }));\n}\n// Gets improvementWorks where each field matches the union of elements in the input array for each fo the fields\nfunction getFilteredImprovementWorks(_ref5) {\n  var patientRiskLevels = _ref5.patientRiskLevels,\n    nolanStages = _ref5.nolanStages,\n    units = _ref5.units,\n    _ref5$ascendingDates = _ref5.ascendingDates,\n    ascendingDates = _ref5$ascendingDates === void 0 ? false : _ref5$ascendingDates,\n    completed = _ref5.completed;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee23() {\n    var collectionRef, constraints, q, querySnapshot, improvementWorks;\n    return _regeneratorRuntime().wrap(function _callee23$(_context23) {\n      while (1) switch (_context23.prev = _context23.next) {\n        case 0:\n          _context23.prev = 0;\n          console.log(\"Getting improvement works with the following constraints\", patientRiskLevels, nolanStages, units, ascendingDates);\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\n          constraints = [];\n          if (patientRiskLevels && patientRiskLevels.length) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"patientRiskLevel\", \"in\", patientRiskLevels));\n          }\n          if (nolanStages && nolanStages.length) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"currentStage\", \"in\", nolanStages));\n          }\n          if (units && units.length) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"in\", units));\n          }\n          // If none of the array filters are provided, default to ordering by date.\n          if (!patientRiskLevels.length && !nolanStages.length && !units.length) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"dateStarted\", ascendingDates ? \"asc\" : \"desc\"));\n          }\n          if (completed) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"completed\", \"==\", completed));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context23.next = 12;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 12:\n          querySnapshot = _context23.sent;\n          improvementWorks = [];\n          querySnapshot.forEach(function (doc) {\n            improvementWorks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context23.abrupt(\"return\", improvementWorks);\n        case 18:\n          _context23.prev = 18;\n          _context23.t0 = _context23[\"catch\"](0);\n          console.error(\"Error retrieving filtered improvementWorks: \", _context23.t0);\n          throw _context23.t0;\n        case 22:\n        case \"end\":\n          return _context23.stop();\n      }\n    }, _callee23, null, [[0, 18]]);\n  }));\n}\nfunction getImprovementWorkOwner(improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee24() {\n    var constraints, q, querySnapshot, owner;\n    return _regeneratorRuntime().wrap(function _callee24$(_context24) {\n      while (1) switch (_context24.prev = _context24.next) {\n        case 0:\n          _context24.prev = 0;\n          constraints = [];\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"isOwner\", \"==\", true));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [userImprovementWorkCollection].concat(constraints));\n          _context24.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 7:\n          querySnapshot = _context24.sent;\n          if (!querySnapshot.empty) {\n            _context24.next = 13;\n            break;\n          }\n          console.log(\"Improvement work \", improvementWorkId, \" has no owner\");\n          return _context24.abrupt(\"return\", null);\n        case 13:\n          owner = querySnapshot.docs[0].data().userHsaId;\n          return _context24.abrupt(\"return\", owner);\n        case 15:\n          _context24.next = 20;\n          break;\n        case 17:\n          _context24.prev = 17;\n          _context24.t0 = _context24[\"catch\"](0);\n          console.log(_context24.t0);\n        case 20:\n        case \"end\":\n          return _context24.stop();\n      }\n    }, _callee24, null, [[0, 17]]);\n  }));\n}\nfunction getImprovementWorkResponsible(improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee25() {\n    var constraints, q, querySnapshot, responsibleId, responsible;\n    return _regeneratorRuntime().wrap(function _callee25$(_context25) {\n      while (1) switch (_context25.prev = _context25.next) {\n        case 0:\n          _context25.prev = 0;\n          constraints = [];\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"isResponsibleFor\", \"==\", true));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [userImprovementWorkCollection].concat(constraints));\n          _context25.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 7:\n          querySnapshot = _context25.sent;\n          if (!querySnapshot.empty) {\n            _context25.next = 13;\n            break;\n          }\n          console.log(\"Improvement work \", improvementWorkId, \" has no responsible\");\n          return _context25.abrupt(\"return\", null);\n        case 13:\n          responsibleId = querySnapshot.docs[0].data().userHsaId;\n          _context25.next = 16;\n          return getObjectById(\"users\", responsibleId);\n        case 16:\n          responsible = _context25.sent;\n          return _context25.abrupt(\"return\", responsible);\n        case 18:\n          _context25.next = 23;\n          break;\n        case 20:\n          _context25.prev = 20;\n          _context25.t0 = _context25[\"catch\"](0);\n          console.log(_context25.t0);\n        case 23:\n        case \"end\":\n          return _context25.stop();\n      }\n    }, _callee25, null, [[0, 20]]);\n  }));\n}\n// TODO getUsersForTask!\n/**\n * Asynchronously retrieves user documents from the database based on various filter criteria.\n * It can filter by the Health Savings Account ID (hsaId), unit ID, and unique identifier (uid).\n * Additionally, it can sort the results by first name in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.hsaId] - Optional HSA ID to filter the users.\n * @param {string} [params.unitId] - Optional unit ID to filter the users.\n * @param {boolean} [params.ascendingFirstNames=false] - Optional flag to sort by first names in ascending order. Defaults to false (descending order).\n * @param {string} [params.uid] - Optional unique identifier to filter the users.\n * @returns {Promise<any[]>} A promise that resolves to an array of user objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUsers(_ref6) {\n  var hsaId = _ref6.hsaId,\n    name = _ref6.name,\n    unitId = _ref6.unitId,\n    _ref6$ascendingFirstN = _ref6.ascendingFirstNames,\n    ascendingFirstNames = _ref6$ascendingFirstN === void 0 ? false : _ref6$ascendingFirstN,\n    uid = _ref6.uid;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee26() {\n    var collectionRef, constraints, q, querySnapshot, users;\n    return _regeneratorRuntime().wrap(function _callee26$(_context26) {\n      while (1) switch (_context26.prev = _context26.next) {\n        case 0:\n          _context26.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\n          constraints = [];\n          if (hsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hsaId));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (uid) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"uid\", \"==\", uid));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", name));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"firstName\", ascendingFirstNames ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context26.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 11:\n          querySnapshot = _context26.sent;\n          users = [];\n          querySnapshot.forEach(function (doc) {\n            users.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context26.abrupt(\"return\", users);\n        case 17:\n          _context26.prev = 17;\n          _context26.t0 = _context26[\"catch\"](0);\n          console.log(\"Error retrieving users by department: \", _context26.t0);\n          throw _context26.t0;\n        case 21:\n        case \"end\":\n          return _context26.stop();\n      }\n    }, _callee26, null, [[0, 17]]);\n  }));\n}\n// TODO getTasksForUser!\n/**\n * Asynchronously retrieves an array of task documents from the database based on several filter and sorting criteria.\n * Filters include task ID, user ID and their responsibility status, and related improvement work ID.\n * Results can be sorted by date either in ascending or descending order.\n *\n * @param {Object} params - Parameters to filter and sort the task results.\n * @param {string} [params.taskId] - Optional task ID to filter the tasks.\n * @param {string} [params.userId] - Optional user ID to identify tasks related to a user.\n * @param {boolean} [params.isResponsibleFor] - Optional flag to filter tasks where the user is marked as responsible.\n * @param {string} [params.improvementWorkId] - Optional improvement work ID to filter tasks related to a specific improvement work.\n * @param {boolean} [params.ascendingDates=false] - Optional flag to sort tasks by date in ascending order; defaults to descending order.\n * @returns {Promise<any[]>} A promise that resolves to an array of task objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getTasks(_ref7) {\n  var improvementWorkId = _ref7.improvementWorkId,\n    stage = _ref7.stage,\n    _ref7$ascendingDates = _ref7.ascendingDates,\n    ascendingDates = _ref7$ascendingDates === void 0 ? false : _ref7$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee27() {\n    var collectionRef, constraints, q, querySnapshot, tasks;\n    return _regeneratorRuntime().wrap(function _callee27$(_context27) {\n      while (1) switch (_context27.prev = _context27.next) {\n        case 0:\n          _context27.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\n          constraints = [];\n          if (stage) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"stage\", \"==\", stage));\n          }\n          if (improvementWorkId != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"startDate\", ascendingDates ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context27.next = 8;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 8:\n          querySnapshot = _context27.sent;\n          tasks = [];\n          querySnapshot.forEach(function (doc) {\n            tasks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context27.abrupt(\"return\", tasks);\n        case 14:\n          _context27.prev = 14;\n          _context27.t0 = _context27[\"catch\"](0);\n          console.log(\"Error retrieving task by department: \", _context27.t0);\n          throw _context27.t0;\n        case 18:\n        case \"end\":\n          return _context27.stop();\n      }\n    }, _callee27, null, [[0, 14]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of unit documents from the database based on various filter criteria.\n * Filters can be applied based on unit ID, hospital ID, and unit name.\n * Additionally, results can be sorted by unit names in ascending or descending order.\n *\n * @param {Object} params - The parameters object containing filter and sorting options.\n * @param {string} [params.unitId] - Optional unit ID to filter the units.\n * @param {string} [params.hospitalId] - Optional hospital ID to filter units within a specific hospital.\n * @param {string} [params.name] - Optional name to filter units by a specific name.\n * @param {boolean} [params.ascendingUnitNames=false] - Optional flag to sort units by name in ascending order, defaults to descending.\n * @returns {Promise<any[]>} A promise that resolves to an array of unit objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUnits(_ref8) {\n  var unitId = _ref8.unitId,\n    hospitalId = _ref8.hospitalId,\n    name = _ref8.name,\n    _ref8$ascendingUnitNa = _ref8.ascendingUnitNames,\n    ascendingUnitNames = _ref8$ascendingUnitNa === void 0 ? false : _ref8$ascendingUnitNa;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee28() {\n    var collectionRef, constraints, q, querySnapshot, units;\n    return _regeneratorRuntime().wrap(function _callee28$(_context28) {\n      while (1) switch (_context28.prev = _context28.next) {\n        case 0:\n          _context28.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\n          constraints = [];\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", unitId));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", name));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"hospitalId\", \"==\", hospitalId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"name\", ascendingUnitNames ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context28.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context28.sent;\n          units = [];\n          querySnapshot.forEach(function (doc) {\n            units.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context28.abrupt(\"return\", units);\n        case 15:\n          _context28.prev = 15;\n          _context28.t0 = _context28[\"catch\"](0);\n          console.log(\"Error retrieving units by hospitalId: \", _context28.t0);\n          throw _context28.t0;\n        case 19:\n        case \"end\":\n          return _context28.stop();\n      }\n    }, _callee28, null, [[0, 15]]);\n  }));\n}\nfunction getImprovementWorksForUser(userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee29() {\n    var q, querySnapshot, improvementWorks, _iterator2, _step2, _doc2, improvementWorkId, improvementWorkDoc;\n    return _regeneratorRuntime().wrap(function _callee29$(_context29) {\n      while (1) switch (_context29.prev = _context29.next) {\n        case 0:\n          _context29.prev = 0;\n          console.log(\"Getting improvementworks for user: \", userHsaId);\n          // Query the userImprovementWork collection for relations involving this user\n          q = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)(userImprovementWorkCollection, (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"userHsaId\", \"==\", userHsaId));\n          _context29.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 5:\n          querySnapshot = _context29.sent;\n          // Fetch each related improvementWork document\n          improvementWorks = [];\n          _iterator2 = _createForOfIteratorHelper(querySnapshot.docs);\n          _context29.prev = 8;\n          _iterator2.s();\n        case 10:\n          if ((_step2 = _iterator2.n()).done) {\n            _context29.next = 19;\n            break;\n          }\n          _doc2 = _step2.value;\n          improvementWorkId = _doc2.data().improvementWorkId;\n          _context29.next = 15;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 15:\n          improvementWorkDoc = _context29.sent;\n          improvementWorks.push(improvementWorkDoc);\n        case 17:\n          _context29.next = 10;\n          break;\n        case 19:\n          _context29.next = 24;\n          break;\n        case 21:\n          _context29.prev = 21;\n          _context29.t0 = _context29[\"catch\"](8);\n          _iterator2.e(_context29.t0);\n        case 24:\n          _context29.prev = 24;\n          _iterator2.f();\n          return _context29.finish(24);\n        case 27:\n          return _context29.abrupt(\"return\", improvementWorks);\n        case 30:\n          _context29.prev = 30;\n          _context29.t1 = _context29[\"catch\"](0);\n          console.error(\"Error getting improvement works for user: \", _context29.t1);\n          throw _context29.t1;\n        case 34:\n        case \"end\":\n          return _context29.stop();\n      }\n    }, _callee29, null, [[0, 30], [8, 21, 24, 27]]);\n  }));\n}\nfunction getUsersForImprovementWork(improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee30() {\n    var q, querySnapshot, users, _iterator3, _step3, _doc3, userHsaId, userDoc;\n    return _regeneratorRuntime().wrap(function _callee30$(_context30) {\n      while (1) switch (_context30.prev = _context30.next) {\n        case 0:\n          _context30.prev = 0;\n          // Query the userImprovementWork collection for relations involving this improvementWork\n          q = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)(userImprovementWorkCollection, (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n          _context30.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 4:\n          querySnapshot = _context30.sent;\n          // Fetch each related user document\n          users = [];\n          _iterator3 = _createForOfIteratorHelper(querySnapshot.docs);\n          _context30.prev = 7;\n          _iterator3.s();\n        case 9:\n          if ((_step3 = _iterator3.n()).done) {\n            _context30.next = 18;\n            break;\n          }\n          _doc3 = _step3.value;\n          userHsaId = _doc3.data().userHsaId;\n          _context30.next = 14;\n          return getObjectById(\"users\", userHsaId);\n        case 14:\n          userDoc = _context30.sent;\n          users.push(userDoc);\n        case 16:\n          _context30.next = 9;\n          break;\n        case 18:\n          _context30.next = 23;\n          break;\n        case 20:\n          _context30.prev = 20;\n          _context30.t0 = _context30[\"catch\"](7);\n          _iterator3.e(_context30.t0);\n        case 23:\n          _context30.prev = 23;\n          _iterator3.f();\n          return _context30.finish(23);\n        case 26:\n          return _context30.abrupt(\"return\", users);\n        case 29:\n          _context30.prev = 29;\n          _context30.t1 = _context30[\"catch\"](0);\n          console.error(\"Error getting users for improvementWork: \", _context30.t1);\n          throw _context30.t1;\n        case 33:\n        case \"end\":\n          return _context30.stop();\n      }\n    }, _callee30, null, [[0, 29], [7, 20, 23, 26]]);\n  }));\n}\n// export getters to be able to use in other files\n\n////////////////////////////////////DELETING/////////////////////////////////////////////\n// delete an instance of a type\nfunction deleteInstance(docType, docId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee31() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee31$(_context31) {\n      while (1) switch (_context31.prev = _context31.next) {\n        case 0:\n          _context31.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context31.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(docRef);\n        case 4:\n          console.log(\"\".concat(docType, \" deleted successfully.\"));\n          _context31.next = 11;\n          break;\n        case 7:\n          _context31.prev = 7;\n          _context31.t0 = _context31[\"catch\"](0);\n          console.error(\"Error deleting \".concat(docType, \":\"), _context31.t0);\n          throw _context31.t0;\n        case 11:\n        case \"end\":\n          return _context31.stop();\n      }\n    }, _callee31, null, [[0, 7]]);\n  }));\n}\n// delete all instances of a type\nfunction deleteAllDocumentsInCollection(collectionName) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee33() {\n    var _this = this;\n    var collectionRef, snapshot, deletePromises;\n    return _regeneratorRuntime().wrap(function _callee33$(_context33) {\n      while (1) switch (_context33.prev = _context33.next) {\n        case 0:\n          _context33.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionName);\n          _context33.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          snapshot = _context33.sent;\n          // Delete all documents in the collection\n          deletePromises = snapshot.docs.map(function (doc) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee32() {\n              return _regeneratorRuntime().wrap(function _callee32$(_context32) {\n                while (1) switch (_context32.prev = _context32.next) {\n                  case 0:\n                    _context32.next = 2;\n                    return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(doc.ref);\n                  case 2:\n                  case \"end\":\n                    return _context32.stop();\n                }\n              }, _callee32);\n            }));\n          });\n          _context33.next = 8;\n          return Promise.all(deletePromises);\n        case 8:\n          console.log(\"All documents in the \".concat(collectionName, \" collection deleted successfully.\"));\n          _context33.next = 15;\n          break;\n        case 11:\n          _context33.prev = 11;\n          _context33.t0 = _context33[\"catch\"](0);\n          console.error(\"Error deleting all documents in \".concat(collectionName, \":\"), _context33.t0);\n          throw _context33.t0;\n        case 15:\n        case \"end\":\n          return _context33.stop();\n      }\n    }, _callee33, null, [[0, 11]]);\n  }));\n}\n////////////////////////////////////UPDATING/////////////////////////////////////////////\n// update a field in an instance\nfunction updateInstance(docType, docId, updates) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee34() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee34$(_context34) {\n      while (1) switch (_context34.prev = _context34.next) {\n        case 0:\n          _context34.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context34.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(docRef, updates);\n        case 4:\n          console.log(\"\".concat(docType, \" updated successfully.\"));\n          _context34.next = 11;\n          break;\n        case 7:\n          _context34.prev = 7;\n          _context34.t0 = _context34[\"catch\"](0);\n          console.error(\"Error updating \".concat(docType, \":\"), _context34.t0);\n          throw _context34.t0;\n        case 11:\n        case \"end\":\n          return _context34.stop();\n      }\n    }, _callee34, null, [[0, 7]]);\n  }));\n}\n// changes the ongoing status of an improvement work. if ongoing it is paused, if if paused onging.\n// user must be a manager\nfunction startOrPauseImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee35() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee35$(_context35) {\n      while (1) switch (_context35.prev = _context35.next) {\n        case 0:\n          _context35.prev = 0;\n          _context35.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context35.sent;\n          _context35.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context35.sent;\n          if (!(!user || !user.manager)) {\n            _context35.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change improvementWork status\");\n        case 11:\n          if (!improvementWork) {\n            _context35.next = 19;\n            break;\n          }\n          update = {\n            ongoing: !improvementWork.ongoing\n          };\n          _context35.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          return _context35.abrupt(\"return\", true);\n        case 19:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n          return _context35.abrupt(\"return\", false);\n        case 21:\n          _context35.next = 27;\n          break;\n        case 23:\n          _context35.prev = 23;\n          _context35.t0 = _context35[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context35.t0);\n          throw _context35.t0;\n        case 27:\n        case \"end\":\n          return _context35.stop();\n      }\n    }, _callee35, null, [[0, 23]]);\n  }));\n}\nfunction changePatientRiskLevel(userId, improvementWorkId, patientRiskLevel) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee36() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee36$(_context36) {\n      while (1) switch (_context36.prev = _context36.next) {\n        case 0:\n          _context36.prev = 0;\n          _context36.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context36.sent;\n          _context36.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context36.sent;\n          if (!(!user || !user.manager)) {\n            _context36.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change patientRiskLevel in improvement work\");\n        case 11:\n          if (!improvementWork) {\n            _context36.next = 18;\n            break;\n          }\n          update = {\n            patientRiskLevel: patientRiskLevel\n          };\n          _context36.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context36.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context36.next = 25;\n          break;\n        case 21:\n          _context36.prev = 21;\n          _context36.t0 = _context36[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context36.t0);\n          throw _context36.t0;\n        case 25:\n        case \"end\":\n          return _context36.stop();\n      }\n    }, _callee36, null, [[0, 21]]);\n  }));\n}\n// finalizes the improvement work. ongoing is set to false.\n// user must be a manager\nfunction finalizeImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee37() {\n    var user, update;\n    return _regeneratorRuntime().wrap(function _callee37$(_context37) {\n      while (1) switch (_context37.prev = _context37.next) {\n        case 0:\n          _context37.prev = 0;\n          _context37.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context37.sent;\n          if (!(!user || !user.manager)) {\n            _context37.next = 8;\n            break;\n          }\n          return _context37.abrupt(\"return\", false);\n        case 8:\n          update = {\n            completed: true,\n            ongoing: false\n          };\n          _context37.next = 11;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 11:\n          return _context37.abrupt(\"return\", true);\n        case 12:\n          _context37.next = 17;\n          break;\n        case 14:\n          _context37.prev = 14;\n          _context37.t0 = _context37[\"catch\"](0);\n          return _context37.abrupt(\"return\", false);\n        case 17:\n        case \"end\":\n          return _context37.stop();\n      }\n    }, _callee37, null, [[0, 14]]);\n  }));\n}\n\n//////////////////////////////// for later sprint\n//function add_upvotes\n//function add_notes\n//function add_intrested_users\n\n//# sourceURL=webpack://c3/./client/Database/database.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   addDocumentToImprovementWork: () => (/* binding */ addDocumentToImprovementWork),\n/* harmony export */   addMemberToImprovementWork: () => (/* binding */ addMemberToImprovementWork),\n/* harmony export */   addMemberToTask: () => (/* binding */ addMemberToTask),\n/* harmony export */   addNoteToUser: () => (/* binding */ addNoteToUser),\n/* harmony export */   auth: () => (/* binding */ auth),\n/* harmony export */   changePatientRiskLevel: () => (/* binding */ changePatientRiskLevel),\n/* harmony export */   createComment: () => (/* binding */ createComment),\n/* harmony export */   createHospital: () => (/* binding */ createHospital),\n/* harmony export */   createImprovementWork: () => (/* binding */ createImprovementWork),\n/* harmony export */   createSuggestion: () => (/* binding */ createSuggestion),\n/* harmony export */   createTaskOnImprovementWork: () => (/* binding */ createTaskOnImprovementWork),\n/* harmony export */   createUnit: () => (/* binding */ createUnit),\n/* harmony export */   createUser: () => (/* binding */ createUser),\n/* harmony export */   createdDocumentInKnowledgeBank: () => (/* binding */ createdDocumentInKnowledgeBank),\n/* harmony export */   db: () => (/* binding */ db),\n/* harmony export */   deleteAllDocumentsInCollection: () => (/* binding */ deleteAllDocumentsInCollection),\n/* harmony export */   deleteInstance: () => (/* binding */ deleteInstance),\n/* harmony export */   deleteSuggestion: () => (/* binding */ deleteSuggestion),\n/* harmony export */   finalizeImprovementWork: () => (/* binding */ finalizeImprovementWork),\n/* harmony export */   getComments: () => (/* binding */ getComments),\n/* harmony export */   getDocumentsByImprovementWork: () => (/* binding */ getDocumentsByImprovementWork),\n/* harmony export */   getFilteredImprovementWorks: () => (/* binding */ getFilteredImprovementWorks),\n/* harmony export */   getHospitals: () => (/* binding */ getHospitals),\n/* harmony export */   getImprovementWorkOwner: () => (/* binding */ getImprovementWorkOwner),\n/* harmony export */   getImprovementWorkResponsible: () => (/* binding */ getImprovementWorkResponsible),\n/* harmony export */   getImprovementWorks: () => (/* binding */ getImprovementWorks),\n/* harmony export */   getImprovementWorksForUser: () => (/* binding */ getImprovementWorksForUser),\n/* harmony export */   getObject: () => (/* binding */ getObject),\n/* harmony export */   getObjectById: () => (/* binding */ getObjectById),\n/* harmony export */   getSuggestions: () => (/* binding */ getSuggestions),\n/* harmony export */   getTasks: () => (/* binding */ getTasks),\n/* harmony export */   getUnits: () => (/* binding */ getUnits),\n/* harmony export */   getUsers: () => (/* binding */ getUsers),\n/* harmony export */   getUsersForImprovementWork: () => (/* binding */ getUsersForImprovementWork),\n/* harmony export */   startOrPauseImprovementWork: () => (/* binding */ startOrPauseImprovementWork),\n/* harmony export */   updateInstance: () => (/* binding */ updateInstance),\n/* harmony export */   upvoteComment: () => (/* binding */ upvoteComment),\n/* harmony export */   upvoteSuggestion: () => (/* binding */ upvoteSuggestion)\n/* harmony export */ });\n/* harmony import */ var firebase_app__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! firebase/app */ \"./node_modules/firebase/app/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_firestore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! firebase/firestore */ \"./node_modules/firebase/firestore/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_auth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! firebase/auth */ \"./node_modules/firebase/auth/dist/esm/index.esm.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n// C3 solutions databasen - ska användas för P&S\nvar firebaseConfig = {\n  apiKey: \"AIzaSyDqkaVZMr11J4mfnR0auqoQilZyPfyD-x4\",\n  authDomain: \"c3solutions-dc109.firebaseapp.com\",\n  projectId: \"c3solutions-dc109\",\n  storageBucket: \"c3solutions-dc109.appspot.com\",\n  messagingSenderId: \"902143402555\",\n  appId: \"1:902143402555:web:29213e81de0a0cba38b21e\"\n};\n//Backup databas - ska användas av R&D\n/*  const firebaseConfig = {\n   apiKey: \"AIzaSyAMfD8V0belL6GxbuoehL__6YTFZH4pyoc\",\n   authDomain: \"company3-backup.firebaseapp.com\",\n   projectId: \"company3-backup\",\n   storageBucket: \"company3-backup.appspot.com\",\n   messagingSenderId: \"820650717800\",\n   appId: \"1:820650717800:web:7557c7734ed59d3f7281dd\"\n };\n */\n//Bens egna reserv #nödfall\n/* const firebaseConfig = {\n  apiKey: \"AIzaSyBIsZq_yOsJljp1woIxndJO1GkW6soh-g4\",\n  authDomain: \"company3-456bb.firebaseapp.com\",\n  projectId: \"company3-456bb\",\n  storageBucket: \"company3-456bb.appspot.com\",\n  messagingSenderId: \"310033686522\",\n  appId: \"1:310033686522:web:63198bb0db679c98ee4e43\",\n  measurementId: \"G-PFLDQY00DB\"\n}; */\nvar app = (0,firebase_app__WEBPACK_IMPORTED_MODULE_0__.initializeApp)(firebaseConfig);\nvar auth = (0,firebase_auth__WEBPACK_IMPORTED_MODULE_2__.getAuth)();\nvar db = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getFirestore)(app);\nvar userCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\nvar unitCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\nvar improvementWorkCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\nvar taskCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\nvar hospitalCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\nvar suggestionCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\nvar knowledgeDocumentCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"knowledgeDocument\");\nvar userImprovementWorkCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"userImprovementWork\");\nvar userTaskCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"userTask\");\n////////////////////////////////////////Setters///////////////////////////////////////////////////////////////////\n// Function to create user a new user in database\n// takes in userId, unitId, firstname, lastname, email and password as string\n// throws error if transaction failed\nfunction createUser(hsaId, unitId, firstName, lastName, email, manager, role, uid) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n    var userRef;\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          _context.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, hsaId);\n          _context.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(userRef, {\n            id: userRef.id,\n            uid: uid,\n            unitId: unitId,\n            firstName: firstName,\n            lastName: lastName,\n            email: email,\n            role: role,\n            // TODO Replace with userImprovementWork collection\n            improvementWorks: [],\n            tasks: [],\n            manager: manager\n          });\n        case 4:\n          _context.next = 9;\n          break;\n        case 6:\n          _context.prev = 6;\n          _context.t0 = _context[\"catch\"](0);\n          console.log(_context.t0);\n        case 9:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee, null, [[0, 6]]);\n  }));\n}\nfunction createImprovementWork(id, name, currentStage, content,\n// Är detta description bör detta förtydligas. JA\nunitId, purpose,\n//Bör tas bort motsvaras av p2- mål med projektet\npatientRiskLevel, area, projectLeader,\n//Adding projectleader & members to the project\nmembers) {\n  var resources = arguments.length > 10 && arguments[10] !== undefined ? arguments[10] : \"Inte definerat ännu\";\n  var p1 = arguments.length > 11 && arguments[11] !== undefined ? arguments[11] : \"\";\n  var p2 = arguments.length > 12 && arguments[12] !== undefined ? arguments[12] : \"\";\n  var p3 = arguments.length > 13 && arguments[13] !== undefined ? arguments[13] : \"\";\n  var p4 = arguments.length > 14 && arguments[14] !== undefined ? arguments[14] : \"\";\n  var p5 = arguments.length > 15 && arguments[15] !== undefined ? arguments[15] : \"\";\n  var p6 = arguments.length > 16 && arguments[16] !== undefined ? arguments[16] : \"\";\n  var p7 = arguments.length > 17 && arguments[17] !== undefined ? arguments[17] : \"\";\n  var g1 = arguments.length > 18 && arguments[18] !== undefined ? arguments[18] : \"\";\n  var g2 = arguments.length > 19 && arguments[19] !== undefined ? arguments[19] : \"\";\n  var g3 = arguments.length > 20 && arguments[20] !== undefined ? arguments[20] : \"\";\n  var g4 = arguments.length > 21 && arguments[21] !== undefined ? arguments[21] : \"\";\n  var g5 = arguments.length > 22 && arguments[22] !== undefined ? arguments[22] : \"\";\n  var s1 = arguments.length > 23 && arguments[23] !== undefined ? arguments[23] : \"\";\n  var s2 = arguments.length > 24 && arguments[24] !== undefined ? arguments[24] : \"\";\n  var s3 = arguments.length > 25 && arguments[25] !== undefined ? arguments[25] : \"\";\n  var a1 = arguments.length > 26 && arguments[26] !== undefined ? arguments[26] : \"\";\n  var a2 = arguments.length > 27 && arguments[27] !== undefined ? arguments[27] : \"\";\n  var a3 = arguments.length > 28 && arguments[28] !== undefined ? arguments[28] : \"\";\n  var a4 = arguments.length > 29 && arguments[29] !== undefined ? arguments[29] : \"\";\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var improvementWorkData, improvementWorkRef, _improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          _context2.prev = 0;\n          improvementWorkData = {\n            name: name,\n            lowerCaseName: name.toLowerCase(),\n            currentStage: currentStage,\n            content: content,\n            purpose: purpose,\n            dateStarted: new Date(),\n            unitId: unitId,\n            completed: false,\n            ongoing: false,\n            tasks: [],\n            patientRiskLevel: patientRiskLevel,\n            area: area,\n            p1: p1,\n            p2: p2,\n            p3: p3,\n            p4: p4,\n            p5: p5,\n            p6: p6,\n            p7: p7,\n            g1: g1,\n            g2: g2,\n            g3: g3,\n            g4: g4,\n            g5: g5,\n            s1: s1,\n            s2: s2,\n            s3: s3,\n            a1: a1,\n            a2: a2,\n            a3: a3,\n            a4: a4,\n            resources: resources\n          };\n          if (!id) {\n            _context2.next = 8;\n            break;\n          }\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, id);\n          _context2.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(improvementWorkRef, Object.assign({\n            id: improvementWorkRef.id\n          }, improvementWorkData));\n        case 6:\n          _context2.next = 12;\n          break;\n        case 8:\n          _improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection);\n          _context2.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(_improvementWorkRef, improvementWorkData);\n        case 11:\n          id = _improvementWorkRef.id;\n        case 12:\n          //adding the projectleader and users to the project\n          addMemberToImprovementWork(projectLeader, id, false, true);\n          members.forEach(function (member) {\n            addMemberToImprovementWork(member, id, false, false);\n          });\n          _context2.next = 20;\n          break;\n        case 16:\n          _context2.prev = 16;\n          _context2.t0 = _context2[\"catch\"](0);\n          console.log(\"Error creating improvementWork: \", _context2.t0);\n          throw _context2.t0;\n        case 20:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2, null, [[0, 16]]);\n  }));\n}\nfunction addMemberToTask(userHsaId, taskId, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var relationRef;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          _context3.prev = 0;\n          relationRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userTaskCollection);\n          _context3.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(relationRef, {\n            id: relationRef.id,\n            userHsaId: userHsaId,\n            taskId: taskId,\n            isResponsibleFor: isResponsibleFor\n          });\n        case 4:\n          _context3.next = 10;\n          break;\n        case 6:\n          _context3.prev = 6;\n          _context3.t0 = _context3[\"catch\"](0);\n          console.log(\"Error adding member to task: \", _context3.t0);\n          throw _context3.t0;\n        case 10:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3, null, [[0, 6]]);\n  }));\n}\nfunction addMemberToImprovementWork(userHsaId, improvementWorkId, isOwner, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n    var relationRef;\n    return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n      while (1) switch (_context4.prev = _context4.next) {\n        case 0:\n          _context4.prev = 0;\n          relationRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userImprovementWorkCollection);\n          _context4.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(relationRef, {\n            id: relationRef.id,\n            userHsaId: userHsaId,\n            improvementWorkId: improvementWorkId,\n            isOwner: isOwner,\n            isResponsibleFor: isResponsibleFor\n          });\n        case 4:\n          _context4.next = 10;\n          break;\n        case 6:\n          _context4.prev = 6;\n          _context4.t0 = _context4[\"catch\"](0);\n          console.log(\"Error adding member to improvementWork: \", _context4.t0);\n          throw _context4.t0;\n        case 10:\n        case \"end\":\n          return _context4.stop();\n      }\n    }, _callee4, null, [[0, 6]]);\n  }));\n}\nfunction createTaskOnImprovementWork(taskId, improvementWorkId, name, deadlineDate, startDate, stage, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n    var taskData, taskRef, _taskRef;\n    return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n      while (1) switch (_context5.prev = _context5.next) {\n        case 0:\n          _context5.prev = 0;\n          taskData = {\n            improvementWorkId: improvementWorkId,\n            name: name,\n            deadlineDate: deadlineDate,\n            startDate: startDate,\n            stage: stage,\n            content: content,\n            completed: false\n          };\n          if (!taskId) {\n            _context5.next = 8;\n            break;\n          }\n          taskRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context5.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(taskRef, Object.assign({\n            id: taskRef.id\n          }, taskData));\n        case 6:\n          _context5.next = 11;\n          break;\n        case 8:\n          _taskRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection);\n          _context5.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(_taskRef, taskData);\n        case 11:\n          _context5.next = 17;\n          break;\n        case 13:\n          _context5.prev = 13;\n          _context5.t0 = _context5[\"catch\"](0);\n          console.log(\"Error creating task: \", _context5.t0);\n          throw _context5.t0;\n        case 17:\n        case \"end\":\n          return _context5.stop();\n      }\n    }, _callee5, null, [[0, 13]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction createdDocumentInKnowledgeBank(documentUrl, name, projectId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n      while (1) switch (_context6.prev = _context6.next) {\n        case 0:\n          _context6.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(knowledgeDocumentCollection);\n          _context6.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            name: name,\n            projectId: projectId\n          });\n        case 4:\n          _context6.next = 10;\n          break;\n        case 6:\n          _context6.prev = 6;\n          _context6.t0 = _context6[\"catch\"](0);\n          console.log(\"Error adding document: \", _context6.t0);\n          throw _context6.t0;\n        case 10:\n        case \"end\":\n          return _context6.stop();\n      }\n    }, _callee6, null, [[0, 6]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction addDocumentToImprovementWork(documentUrl, name, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var improvementWorkRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          _context7.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkRef, \"documents\");\n          _context7.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            timestamp: new Date(),\n            name: name\n          });\n        case 5:\n          _context7.next = 11;\n          break;\n        case 7:\n          _context7.prev = 7;\n          _context7.t0 = _context7[\"catch\"](0);\n          console.log(\"Error adding document: \", _context7.t0);\n          throw _context7.t0;\n        case 11:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7, null, [[0, 7]]);\n  }));\n}\nfunction getDocumentsByImprovementWork(improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var q, querySnapshot, documents, _iterator, _step, _doc, documentId, documentDoc;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          _context8.prev = 0;\n          console.log(\"Getting documents for improvementwork: \", improvementWorkId);\n          // Query the userImprovementWork collection for relations involving this user\n          q = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)(knowledgeDocumentCollection, (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"projectId\", \"==\", improvementWorkId));\n          _context8.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 5:\n          querySnapshot = _context8.sent;\n          // Fetch each related improvementWork document\n          documents = [];\n          _iterator = _createForOfIteratorHelper(querySnapshot.docs);\n          _context8.prev = 8;\n          _iterator.s();\n        case 10:\n          if ((_step = _iterator.n()).done) {\n            _context8.next = 19;\n            break;\n          }\n          _doc = _step.value;\n          documentId = _doc.data().id;\n          _context8.next = 15;\n          return getObjectById(\"knowledgeDocument\", documentId);\n        case 15:\n          documentDoc = _context8.sent;\n          documents.push(documentDoc);\n        case 17:\n          _context8.next = 10;\n          break;\n        case 19:\n          _context8.next = 24;\n          break;\n        case 21:\n          _context8.prev = 21;\n          _context8.t0 = _context8[\"catch\"](8);\n          _iterator.e(_context8.t0);\n        case 24:\n          _context8.prev = 24;\n          _iterator.f();\n          return _context8.finish(24);\n        case 27:\n          return _context8.abrupt(\"return\", documents);\n        case 30:\n          _context8.prev = 30;\n          _context8.t1 = _context8[\"catch\"](0);\n          console.error(\"Error getting documents for improvmentwork: \", _context8.t1);\n          throw _context8.t1;\n        case 34:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8, null, [[0, 30], [8, 21, 24, 27]]);\n  }));\n}\nfunction createHospital(hospitalId,\n// should be auto?\nname) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n    var hospitalData, hospitalRef, _hospitalRef;\n    return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n      while (1) switch (_context9.prev = _context9.next) {\n        case 0:\n          _context9.prev = 0;\n          hospitalData = {\n            name: name,\n            units: []\n          };\n          if (!hospitalId) {\n            _context9.next = 8;\n            break;\n          }\n          hospitalRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context9.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(hospitalRef, Object.assign({\n            id: hospitalRef.id\n          }, hospitalData));\n        case 6:\n          _context9.next = 11;\n          break;\n        case 8:\n          _hospitalRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection);\n          _context9.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(_hospitalRef, hospitalData);\n        case 11:\n          _context9.next = 17;\n          break;\n        case 13:\n          _context9.prev = 13;\n          _context9.t0 = _context9[\"catch\"](0);\n          console.log(\"Error creating hospital: \", _context9.t0);\n          throw _context9.t0;\n        case 17:\n        case \"end\":\n          return _context9.stop();\n      }\n    }, _callee9, null, [[0, 13]]);\n  }));\n}\nfunction createUnit(unitId,\n//should be auto?\nhospitalId, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var unitData, unitRef, _unitRef;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          _context10.prev = 0;\n          unitData = {\n            hospitalId: hospitalId,\n            name: name\n          };\n          if (!unitId) {\n            _context10.next = 8;\n            break;\n          }\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context10.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(unitRef, Object.assign({\n            id: unitRef.id\n          }, unitData));\n        case 6:\n          _context10.next = 11;\n          break;\n        case 8:\n          _unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection);\n          _context10.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(_unitRef, unitData);\n        case 11:\n          _context10.next = 17;\n          break;\n        case 13:\n          _context10.prev = 13;\n          _context10.t0 = _context10[\"catch\"](0);\n          console.log(\"Error creating unit: \", _context10.t0);\n          throw _context10.t0;\n        case 17:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10, null, [[0, 13]]);\n  }));\n}\nfunction createSuggestion(id, creatorHsaId, name, area, content, purpose, measure, ideas,\n//need: boolean,\nunitId, departmentId, isPublic) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {\n    var suggestionData, suggestionRef, _suggestionRef;\n    return _regeneratorRuntime().wrap(function _callee11$(_context11) {\n      while (1) switch (_context11.prev = _context11.next) {\n        case 0:\n          _context11.prev = 0;\n          suggestionData = {\n            creatorHsaId: creatorHsaId,\n            name: name,\n            area: area,\n            content: content,\n            purpose: purpose,\n            measure: measure,\n            ideas: ideas,\n            //need,\n            unitId: unitId,\n            departmentId: departmentId,\n            \"public\": isPublic,\n            upvotes: [],\n            comments: [],\n            dateCreated: new Date()\n          };\n          if (!id) {\n            _context11.next = 8;\n            break;\n          }\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, id);\n          _context11.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(suggestionRef, Object.assign({\n            id: suggestionRef.id\n          }, suggestionData));\n        case 6:\n          _context11.next = 11;\n          break;\n        case 8:\n          _suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection);\n          _context11.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(_suggestionRef, suggestionData);\n        case 11:\n          _context11.next = 17;\n          break;\n        case 13:\n          _context11.prev = 13;\n          _context11.t0 = _context11[\"catch\"](0);\n          console.log(\"Error creating suggestion: \", _context11.t0);\n          throw _context11.t0;\n        case 17:\n        case \"end\":\n          return _context11.stop();\n      }\n    }, _callee11, null, [[0, 13]]);\n  }));\n}\nfunction deleteSuggestion(suggestionId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {\n    var suggestionRef;\n    return _regeneratorRuntime().wrap(function _callee12$(_context12) {\n      while (1) switch (_context12.prev = _context12.next) {\n        case 0:\n          _context12.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          _context12.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(suggestionRef);\n        case 4:\n          _context12.next = 10;\n          break;\n        case 6:\n          _context12.prev = 6;\n          _context12.t0 = _context12[\"catch\"](0);\n          console.log(\"Error deleting suggestion: \", _context12.t0);\n          throw _context12.t0;\n        case 10:\n        case \"end\":\n          return _context12.stop();\n      }\n    }, _callee12, null, [[0, 6]]);\n  }));\n}\n// Upvote a suggestion for a user\n// takes in suggestion id, user HSAid\n// returns error if transaction failed\nfunction upvoteSuggestion(suggestionId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {\n    var suggestionRef;\n    return _regeneratorRuntime().wrap(function _callee13$(_context13) {\n      while (1) switch (_context13.prev = _context13.next) {\n        case 0:\n          _context13.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId); // Atomically add a update to the upvote array field.\n          _context13.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(suggestionRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 4:\n          _context13.next = 10;\n          break;\n        case 6:\n          _context13.prev = 6;\n          _context13.t0 = _context13[\"catch\"](0);\n          console.log(\"Error upvoting suggestion: \", _context13.t0);\n          throw _context13.t0;\n        case 10:\n        case \"end\":\n          return _context13.stop();\n      }\n    }, _callee13, null, [[0, 6]]);\n  }));\n}\n//creates a comment\n// takes in commenters id, suggestion id and content as string\n// throws error if transaction failed\nfunction createComment(\n// change to subcollection\ncommenterHsaId, suggestionId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee14() {\n    var suggestionRef, commentCollection, commentRef;\n    return _regeneratorRuntime().wrap(function _callee14$(_context14) {\n      while (1) switch (_context14.prev = _context14.next) {\n        case 0:\n          _context14.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          _context14.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 4:\n          commentCollection = _context14.sent;\n          _context14.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 7:\n          commentRef = _context14.sent;\n          _context14.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(commentRef, {\n            id: commentRef.id,\n            commenterHsaId: commenterHsaId,\n            content: content,\n            dateCreated: new Date(),\n            upvotes: []\n          });\n        case 10:\n          _context14.next = 16;\n          break;\n        case 12:\n          _context14.prev = 12;\n          _context14.t0 = _context14[\"catch\"](0);\n          console.log(\"Error creating comment: \", _context14.t0);\n          throw _context14.t0;\n        case 16:\n        case \"end\":\n          return _context14.stop();\n      }\n    }, _callee14, null, [[0, 12]]);\n  }));\n}\n// Upvote a comment for a user\n// takes in suggestionId, commentId and userId as strings\n// return error if transaction failed\nfunction upvoteComment(suggestionId, commentId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee15() {\n    var suggestionRef, commentRef;\n    return _regeneratorRuntime().wrap(function _callee15$(_context15) {\n      while (1) switch (_context15.prev = _context15.next) {\n        case 0:\n          _context15.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          commentRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionRef, \"comment\", commentId); // Atomically add a update to the upvote array field.\n          _context15.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(commentRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 5:\n          _context15.next = 11;\n          break;\n        case 7:\n          _context15.prev = 7;\n          _context15.t0 = _context15[\"catch\"](0);\n          console.log(\"Error upvoting comment: \", _context15.t0);\n          throw _context15.t0;\n        case 11:\n        case \"end\":\n          return _context15.stop();\n      }\n    }, _callee15, null, [[0, 7]]);\n  }));\n}\n//add a note to a user\n// takes in userHsaId and content as string\n// throws error if transaction failed\nfunction addNoteToUser(userHsaId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee16() {\n    var userRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee16$(_context16) {\n      while (1) switch (_context16.prev = _context16.next) {\n        case 0:\n          _context16.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userRef, \"notes\");\n          _context16.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            content: content,\n            dateCreated: new Date()\n          });\n        case 5:\n          _context16.next = 11;\n          break;\n        case 7:\n          _context16.prev = 7;\n          _context16.t0 = _context16[\"catch\"](0);\n          console.log(\"Error adding document: \", _context16.t0);\n          throw _context16.t0;\n        case 11:\n        case \"end\":\n          return _context16.stop();\n      }\n    }, _callee16, null, [[0, 7]]);\n  }));\n}\n// export to setters to be able to use in other files\n\n//////////////////////////////////////////////GETTERS/////////////////////////////////////////////////////////////////////\n// Get any object\n// input is the database type as a string.\n// output is the whole collection of that type.\nfunction getObject(collectionPath) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee17() {\n    var collectionRef, querySnapshot, result;\n    return _regeneratorRuntime().wrap(function _callee17$(_context17) {\n      while (1) switch (_context17.prev = _context17.next) {\n        case 0:\n          _context17.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionPath);\n          _context17.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          querySnapshot = _context17.sent;\n          result = [];\n          querySnapshot.forEach(function (doc) {\n            result.push(doc.data());\n          });\n          return _context17.abrupt(\"return\", result);\n        case 10:\n          _context17.prev = 10;\n          _context17.t0 = _context17[\"catch\"](0);\n          console.error(\"Error getting collection data\", _context17.t0);\n          throw _context17.t0;\n        case 14:\n        case \"end\":\n          return _context17.stop();\n      }\n    }, _callee17, null, [[0, 10]]);\n  }));\n}\n/**\n * Asynchronously retrieves a single document object from the specified collection path and document ID.\n * If the document does not exist, logs a warning and returns null.\n *\n * @param {string} collectionPath - The path to the collection in the database (\"improvementWork\", \"hospital\", \"suggestion\", \"task\", \"unit\", \"users\")\n * @param {string} documentId - The ID of the document to retrieve.\n * @returns {Promise<any|null>} A promise that resolves to the document object if found, or null if not.\n *\n * @throws Will throw an error if there is an issue during retrieval from the database.\n */\nfunction getObjectById(collectionPath, documentId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee18() {\n    var docRef, docSnapshot;\n    return _regeneratorRuntime().wrap(function _callee18$(_context18) {\n      while (1) switch (_context18.prev = _context18.next) {\n        case 0:\n          _context18.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, collectionPath, documentId);\n          _context18.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDoc)(docRef);\n        case 4:\n          docSnapshot = _context18.sent;\n          if (!docSnapshot.exists()) {\n            _context18.next = 9;\n            break;\n          }\n          return _context18.abrupt(\"return\", Object.assign({\n            id: docSnapshot.id\n          }, docSnapshot.data()));\n        case 9:\n          console.warn(\"No such document! \".concat(collectionPath, \"/\").concat(documentId));\n          return _context18.abrupt(\"return\", null);\n        case 11:\n          _context18.next = 17;\n          break;\n        case 13:\n          _context18.prev = 13;\n          _context18.t0 = _context18[\"catch\"](0);\n          console.error(\"Error getting object\", _context18.t0);\n          throw _context18.t0;\n        case 17:\n        case \"end\":\n          return _context18.stop();\n      }\n    }, _callee18, null, [[0, 13]]);\n  }));\n}\n/**\n * Asynchronously retrieves comments for a given suggestion.\n *\n * @param {Object} params - The parameters for fetching comments.\n * @param {string} params.suggestionId - The ID of the suggestion to fetch comments for.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - The criterion to sort the comments by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Determines if the sorting should be in ascending order. Defaults to false (descending).\n * @returns {Promise<any[]>} A promise that resolves to an array of comment objects.\n *\n * @throws Will throw an error if the comments cannot be retrieved.\n */\nfunction getComments(_ref) {\n  var suggestionId = _ref.suggestionId,\n    _ref$sortBy = _ref.sortBy,\n    sortBy = _ref$sortBy === void 0 ? \"dateCreated\" : _ref$sortBy,\n    _ref$ascending = _ref.ascending,\n    ascending = _ref$ascending === void 0 ? false : _ref$ascending;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee19() {\n    var suggestionRef, commentsQuery, commentsSnapshot, comments;\n    return _regeneratorRuntime().wrap(function _callee19$(_context19) {\n      while (1) switch (_context19.prev = _context19.next) {\n        case 0:\n          _context19.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, \"suggestionCollection\", suggestionId);\n          commentsQuery = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\"), (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          _context19.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(commentsQuery);\n        case 5:\n          commentsSnapshot = _context19.sent;\n          comments = [];\n          commentsSnapshot.forEach(function (doc) {\n            comments.push(doc.data());\n          });\n          return _context19.abrupt(\"return\", comments);\n        case 11:\n          _context19.prev = 11;\n          _context19.t0 = _context19[\"catch\"](0);\n          console.error(\"Error getting comments for suggestion: \", _context19.t0);\n          throw _context19.t0;\n        case 15:\n        case \"end\":\n          return _context19.stop();\n      }\n    }, _callee19, null, [[0, 11]]);\n  }));\n}\n//Filtering suggestions on unitId AND creatorHsaId\n//Sort suggestions on dateCreated OR upvotes\n/**\n * Asynchronously retrieves an array of suggestions from the database, with various filters and sorting options.\n *\n * @param {Object} params - The parameters for filtering and sorting suggestions.\n * @param {string} [params.id] - Optional ID to filter suggestions by a specific identifier.\n * @param {string} [params.creatorHsaId] - Optional HSA ID to filter suggestions by the creator's HSA ID.\n * @param {string} [params.unitId] - Optional unit ID to filter suggestions by a specific unit.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - Criterion to sort the suggestions by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Flag indicating if sorting should be ascending. Defaults to false (descending order).\n * @param {boolean} [params.isPublic=true] - Flag indicating whether to filter for public suggestions. Defaults to true.\n * @returns {Promise<any[]>} A promise that resolves to an array of suggestion objects.\n *\n * @throws Will throw an error if there is an issue retrieving suggestions.\n */\nfunction getSuggestions(_ref2) {\n  var id = _ref2.id,\n    creatorHsaId = _ref2.creatorHsaId,\n    name = _ref2.name,\n    unitId = _ref2.unitId,\n    _ref2$sortBy = _ref2.sortBy,\n    sortBy = _ref2$sortBy === void 0 ? \"dateCreated\" : _ref2$sortBy,\n    _ref2$ascending = _ref2.ascending,\n    ascending = _ref2$ascending === void 0 ? false : _ref2$ascending,\n    _ref2$isPublic = _ref2.isPublic,\n    isPublic = _ref2$isPublic === void 0 ? true : _ref2$isPublic;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee20() {\n    var collectionRef, constraints, q, querySnapshot, suggestions;\n    return _regeneratorRuntime().wrap(function _callee20$(_context20) {\n      while (1) switch (_context20.prev = _context20.next) {\n        case 0:\n          _context20.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (creatorHsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"creatorHsaId\", \"==\", creatorHsaId));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", name));\n            sortBy = \"name\";\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"public\", \"==\", isPublic));\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context20.next = 12;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 12:\n          querySnapshot = _context20.sent;\n          suggestions = [];\n          querySnapshot.forEach(function (doc) {\n            suggestions.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context20.abrupt(\"return\", suggestions);\n        case 18:\n          _context20.prev = 18;\n          _context20.t0 = _context20[\"catch\"](0);\n          console.log(\"Error retrieving suggestions by department: \", _context20.t0);\n          throw _context20.t0;\n        case 22:\n        case \"end\":\n          return _context20.stop();\n      }\n    }, _callee20, null, [[0, 18]]);\n  }));\n}\n/**\n * Asynchronously searches for hospital documents in the database.\n * It can filter the results by the hospital's name, ID, or both.\n * If no parameters are provided, it retrieves all hospitals.\n *\n * @param {Object} params - An object containing the search parameters.\n * @param {string} [params.hospitalName] - Optional name of the hospital to filter the search.\n * @param {string} [params.hospitalId] - Optional unique identifier of the hospital to filter the search.\n * @returns {Promise<any[]>} A promise that resolves to an array of hospital objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getHospitals(_ref3) {\n  var hospitalName = _ref3.hospitalName,\n    hospitalId = _ref3.hospitalId;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee21() {\n    var collectionRef, constraints, q, querySnapshot, hospitals;\n    return _regeneratorRuntime().wrap(function _callee21$(_context21) {\n      while (1) switch (_context21.prev = _context21.next) {\n        case 0:\n          _context21.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\n          constraints = [];\n          if (hospitalName) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", hospitalName));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hospitalId));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context21.next = 8;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 8:\n          querySnapshot = _context21.sent;\n          hospitals = [];\n          querySnapshot.forEach(function (doc) {\n            hospitals.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context21.abrupt(\"return\", hospitals);\n        case 14:\n          _context21.prev = 14;\n          _context21.t0 = _context21[\"catch\"](0);\n          console.log(\"Error retrieving Hospitals\", _context21.t0);\n          throw _context21.t0;\n        case 18:\n        case \"end\":\n          return _context21.stop();\n      }\n    }, _callee21, null, [[0, 14]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of improvement work documents based on various filter criteria.\n * It supports filtering by ID, Nolan stage, unit ID, completion status, ongoing status, and patient risk level.\n * It also supports sorting by the start date of the improvement work in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.id] - Optional identifier to filter the improvement works.\n * @param {string} [params.nolanStage] - Optional Nolan stage to filter the improvement works.\n * @param {string} [params.unitId] - Optional unit ID to filter the improvement works.\n * @param {boolean} [params.completed] - Optional flag to filter the improvement works by their completion status.\n * @param {boolean} [params.ongoing] - Optional flag to filter the improvement works by their ongoing status.\n * @param {string} [params.patientRiskLevel] - Optional patient risk level to filter the improvement works.\n * @param {boolean} [params.ascendingDates=false] - Optional flag for sorting by date in ascending order. Defaults to false.\n * @returns {Promise<any[]>} A promise that resolves to an array of improvement work objects that match the criteria.\n *\n * @throws Will throw an error if there is a problem retrieving the improvement works.\n */\nfunction getImprovementWorks(_ref4) {\n  var id = _ref4.id,\n    name = _ref4.name,\n    nolanStage = _ref4.nolanStage,\n    unitId = _ref4.unitId,\n    completed = _ref4.completed,\n    ongoing = _ref4.ongoing,\n    patientRiskLevel = _ref4.patientRiskLevel,\n    _ref4$ascendingDates = _ref4.ascendingDates,\n    ascendingDates = _ref4$ascendingDates === void 0 ? false : _ref4$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee22() {\n    var collectionRef, constraints, q, querySnapshot, improvementWorks;\n    return _regeneratorRuntime().wrap(function _callee22$(_context22) {\n      while (1) switch (_context22.prev = _context22.next) {\n        case 0:\n          _context22.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            console.log(\"inne i ifsatsen i databasen\");\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (nolanStage) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"currentStage\", \"==\", nolanStage));\n          }\n          if (completed != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"completed\", \"==\", completed));\n          }\n          if (ongoing !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"ongoing\", \"==\", ongoing));\n          }\n          if (patientRiskLevel) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"patientRiskLevel\", \"==\", patientRiskLevel));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"lowerCaseName\", \">=\", name.toLowerCase()));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"lowerCaseName\", \"<=\", name.toLowerCase() + \"~\"));\n          } else {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"dateStarted\", ascendingDates ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context22.next = 13;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 13:\n          querySnapshot = _context22.sent;\n          improvementWorks = [];\n          querySnapshot.forEach(function (doc) {\n            improvementWorks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context22.abrupt(\"return\", improvementWorks);\n        case 19:\n          _context22.prev = 19;\n          _context22.t0 = _context22[\"catch\"](0);\n          console.log(\"Error retrieving improvementWorks: \", _context22.t0);\n          throw _context22.t0;\n        case 23:\n        case \"end\":\n          return _context22.stop();\n      }\n    }, _callee22, null, [[0, 19]]);\n  }));\n}\n// Gets improvementWorks where each field matches the union of elements in the input array for each fo the fields\nfunction getFilteredImprovementWorks(_ref5) {\n  var patientRiskLevels = _ref5.patientRiskLevels,\n    nolanStages = _ref5.nolanStages,\n    units = _ref5.units,\n    _ref5$ascendingDates = _ref5.ascendingDates,\n    ascendingDates = _ref5$ascendingDates === void 0 ? false : _ref5$ascendingDates,\n    completed = _ref5.completed;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee23() {\n    var collectionRef, constraints, q, querySnapshot, improvementWorks;\n    return _regeneratorRuntime().wrap(function _callee23$(_context23) {\n      while (1) switch (_context23.prev = _context23.next) {\n        case 0:\n          _context23.prev = 0;\n          console.log(\"Getting improvement works with the following constraints\", patientRiskLevels, nolanStages, units, ascendingDates);\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\n          constraints = [];\n          if (patientRiskLevels && patientRiskLevels.length) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"patientRiskLevel\", \"in\", patientRiskLevels));\n          }\n          if (nolanStages && nolanStages.length) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"currentStage\", \"in\", nolanStages));\n          }\n          if (units && units.length) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"in\", units));\n          }\n          // If none of the array filters are provided, default to ordering by date.\n          if (!patientRiskLevels.length && !nolanStages.length && !units.length) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"dateStarted\", ascendingDates ? \"asc\" : \"desc\"));\n          }\n          if (completed) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"completed\", \"==\", completed));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context23.next = 12;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 12:\n          querySnapshot = _context23.sent;\n          improvementWorks = [];\n          querySnapshot.forEach(function (doc) {\n            improvementWorks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context23.abrupt(\"return\", improvementWorks);\n        case 18:\n          _context23.prev = 18;\n          _context23.t0 = _context23[\"catch\"](0);\n          console.error(\"Error retrieving filtered improvementWorks: \", _context23.t0);\n          throw _context23.t0;\n        case 22:\n        case \"end\":\n          return _context23.stop();\n      }\n    }, _callee23, null, [[0, 18]]);\n  }));\n}\nfunction getImprovementWorkOwner(improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee24() {\n    var constraints, q, querySnapshot, owner;\n    return _regeneratorRuntime().wrap(function _callee24$(_context24) {\n      while (1) switch (_context24.prev = _context24.next) {\n        case 0:\n          _context24.prev = 0;\n          constraints = [];\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"isOwner\", \"==\", true));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [userImprovementWorkCollection].concat(constraints));\n          _context24.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 7:\n          querySnapshot = _context24.sent;\n          if (!querySnapshot.empty) {\n            _context24.next = 13;\n            break;\n          }\n          console.log(\"Improvement work \", improvementWorkId, \" has no owner\");\n          return _context24.abrupt(\"return\", null);\n        case 13:\n          owner = querySnapshot.docs[0].data().userHsaId;\n          return _context24.abrupt(\"return\", owner);\n        case 15:\n          _context24.next = 20;\n          break;\n        case 17:\n          _context24.prev = 17;\n          _context24.t0 = _context24[\"catch\"](0);\n          console.log(_context24.t0);\n        case 20:\n        case \"end\":\n          return _context24.stop();\n      }\n    }, _callee24, null, [[0, 17]]);\n  }));\n}\nfunction getImprovementWorkResponsible(improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee25() {\n    var constraints, q, querySnapshot, responsibleId, responsible;\n    return _regeneratorRuntime().wrap(function _callee25$(_context25) {\n      while (1) switch (_context25.prev = _context25.next) {\n        case 0:\n          _context25.prev = 0;\n          constraints = [];\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"isResponsibleFor\", \"==\", true));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [userImprovementWorkCollection].concat(constraints));\n          _context25.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 7:\n          querySnapshot = _context25.sent;\n          if (!querySnapshot.empty) {\n            _context25.next = 13;\n            break;\n          }\n          console.log(\"Improvement work \", improvementWorkId, \" has no responsible\");\n          return _context25.abrupt(\"return\", null);\n        case 13:\n          responsibleId = querySnapshot.docs[0].data().userHsaId;\n          _context25.next = 16;\n          return getObjectById(\"users\", responsibleId);\n        case 16:\n          responsible = _context25.sent;\n          return _context25.abrupt(\"return\", responsible);\n        case 18:\n          _context25.next = 23;\n          break;\n        case 20:\n          _context25.prev = 20;\n          _context25.t0 = _context25[\"catch\"](0);\n          console.log(_context25.t0);\n        case 23:\n        case \"end\":\n          return _context25.stop();\n      }\n    }, _callee25, null, [[0, 20]]);\n  }));\n}\n// TODO getUsersForTask!\n/**\n * Asynchronously retrieves user documents from the database based on various filter criteria.\n * It can filter by the Health Savings Account ID (hsaId), unit ID, and unique identifier (uid).\n * Additionally, it can sort the results by first name in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.hsaId] - Optional HSA ID to filter the users.\n * @param {string} [params.unitId] - Optional unit ID to filter the users.\n * @param {boolean} [params.ascendingFirstNames=false] - Optional flag to sort by first names in ascending order. Defaults to false (descending order).\n * @param {string} [params.uid] - Optional unique identifier to filter the users.\n * @returns {Promise<any[]>} A promise that resolves to an array of user objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUsers(_ref6) {\n  var hsaId = _ref6.hsaId,\n    name = _ref6.name,\n    unitId = _ref6.unitId,\n    _ref6$ascendingFirstN = _ref6.ascendingFirstNames,\n    ascendingFirstNames = _ref6$ascendingFirstN === void 0 ? false : _ref6$ascendingFirstN,\n    uid = _ref6.uid;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee26() {\n    var collectionRef, constraints, q, querySnapshot, users;\n    return _regeneratorRuntime().wrap(function _callee26$(_context26) {\n      while (1) switch (_context26.prev = _context26.next) {\n        case 0:\n          _context26.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\n          constraints = [];\n          if (hsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hsaId));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (uid) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"uid\", \"==\", uid));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", name));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"firstName\", ascendingFirstNames ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context26.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 11:\n          querySnapshot = _context26.sent;\n          users = [];\n          querySnapshot.forEach(function (doc) {\n            users.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context26.abrupt(\"return\", users);\n        case 17:\n          _context26.prev = 17;\n          _context26.t0 = _context26[\"catch\"](0);\n          console.log(\"Error retrieving users by department: \", _context26.t0);\n          throw _context26.t0;\n        case 21:\n        case \"end\":\n          return _context26.stop();\n      }\n    }, _callee26, null, [[0, 17]]);\n  }));\n}\n// TODO getTasksForUser!\n/**\n * Asynchronously retrieves an array of task documents from the database based on several filter and sorting criteria.\n * Filters include task ID, user ID and their responsibility status, and related improvement work ID.\n * Results can be sorted by date either in ascending or descending order.\n *\n * @param {Object} params - Parameters to filter and sort the task results.\n * @param {string} [params.taskId] - Optional task ID to filter the tasks.\n * @param {string} [params.userId] - Optional user ID to identify tasks related to a user.\n * @param {boolean} [params.isResponsibleFor] - Optional flag to filter tasks where the user is marked as responsible.\n * @param {string} [params.improvementWorkId] - Optional improvement work ID to filter tasks related to a specific improvement work.\n * @param {boolean} [params.ascendingDates=false] - Optional flag to sort tasks by date in ascending order; defaults to descending order.\n * @returns {Promise<any[]>} A promise that resolves to an array of task objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getTasks(_ref7) {\n  var improvementWorkId = _ref7.improvementWorkId,\n    stage = _ref7.stage,\n    _ref7$ascendingDates = _ref7.ascendingDates,\n    ascendingDates = _ref7$ascendingDates === void 0 ? false : _ref7$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee27() {\n    var collectionRef, constraints, q, querySnapshot, tasks;\n    return _regeneratorRuntime().wrap(function _callee27$(_context27) {\n      while (1) switch (_context27.prev = _context27.next) {\n        case 0:\n          _context27.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\n          constraints = [];\n          if (stage) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"stage\", \"==\", stage));\n          }\n          if (improvementWorkId != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"startDate\", ascendingDates ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context27.next = 8;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 8:\n          querySnapshot = _context27.sent;\n          tasks = [];\n          querySnapshot.forEach(function (doc) {\n            tasks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context27.abrupt(\"return\", tasks);\n        case 14:\n          _context27.prev = 14;\n          _context27.t0 = _context27[\"catch\"](0);\n          console.log(\"Error retrieving task by department: \", _context27.t0);\n          throw _context27.t0;\n        case 18:\n        case \"end\":\n          return _context27.stop();\n      }\n    }, _callee27, null, [[0, 14]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of unit documents from the database based on various filter criteria.\n * Filters can be applied based on unit ID, hospital ID, and unit name.\n * Additionally, results can be sorted by unit names in ascending or descending order.\n *\n * @param {Object} params - The parameters object containing filter and sorting options.\n * @param {string} [params.unitId] - Optional unit ID to filter the units.\n * @param {string} [params.hospitalId] - Optional hospital ID to filter units within a specific hospital.\n * @param {string} [params.name] - Optional name to filter units by a specific name.\n * @param {boolean} [params.ascendingUnitNames=false] - Optional flag to sort units by name in ascending order, defaults to descending.\n * @returns {Promise<any[]>} A promise that resolves to an array of unit objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUnits(_ref8) {\n  var unitId = _ref8.unitId,\n    hospitalId = _ref8.hospitalId,\n    name = _ref8.name,\n    _ref8$ascendingUnitNa = _ref8.ascendingUnitNames,\n    ascendingUnitNames = _ref8$ascendingUnitNa === void 0 ? false : _ref8$ascendingUnitNa;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee28() {\n    var collectionRef, constraints, q, querySnapshot, units;\n    return _regeneratorRuntime().wrap(function _callee28$(_context28) {\n      while (1) switch (_context28.prev = _context28.next) {\n        case 0:\n          _context28.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\n          constraints = [];\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", unitId));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", name));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"hospitalId\", \"==\", hospitalId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"name\", ascendingUnitNames ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context28.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context28.sent;\n          units = [];\n          querySnapshot.forEach(function (doc) {\n            units.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context28.abrupt(\"return\", units);\n        case 15:\n          _context28.prev = 15;\n          _context28.t0 = _context28[\"catch\"](0);\n          console.log(\"Error retrieving units by hospitalId: \", _context28.t0);\n          throw _context28.t0;\n        case 19:\n        case \"end\":\n          return _context28.stop();\n      }\n    }, _callee28, null, [[0, 15]]);\n  }));\n}\nfunction getImprovementWorksForUser(userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee29() {\n    var q, querySnapshot, improvementWorks, _iterator2, _step2, _doc2, improvementWorkId, improvementWorkDoc;\n    return _regeneratorRuntime().wrap(function _callee29$(_context29) {\n      while (1) switch (_context29.prev = _context29.next) {\n        case 0:\n          _context29.prev = 0;\n          console.log(\"Getting improvementworks for user: \", userHsaId);\n          // Query the userImprovementWork collection for relations involving this user\n          q = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)(userImprovementWorkCollection, (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"userHsaId\", \"==\", userHsaId));\n          _context29.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 5:\n          querySnapshot = _context29.sent;\n          // Fetch each related improvementWork document\n          improvementWorks = [];\n          _iterator2 = _createForOfIteratorHelper(querySnapshot.docs);\n          _context29.prev = 8;\n          _iterator2.s();\n        case 10:\n          if ((_step2 = _iterator2.n()).done) {\n            _context29.next = 19;\n            break;\n          }\n          _doc2 = _step2.value;\n          improvementWorkId = _doc2.data().improvementWorkId;\n          _context29.next = 15;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 15:\n          improvementWorkDoc = _context29.sent;\n          improvementWorks.push(improvementWorkDoc);\n        case 17:\n          _context29.next = 10;\n          break;\n        case 19:\n          _context29.next = 24;\n          break;\n        case 21:\n          _context29.prev = 21;\n          _context29.t0 = _context29[\"catch\"](8);\n          _iterator2.e(_context29.t0);\n        case 24:\n          _context29.prev = 24;\n          _iterator2.f();\n          return _context29.finish(24);\n        case 27:\n          return _context29.abrupt(\"return\", improvementWorks);\n        case 30:\n          _context29.prev = 30;\n          _context29.t1 = _context29[\"catch\"](0);\n          console.error(\"Error getting improvement works for user: \", _context29.t1);\n          throw _context29.t1;\n        case 34:\n        case \"end\":\n          return _context29.stop();\n      }\n    }, _callee29, null, [[0, 30], [8, 21, 24, 27]]);\n  }));\n}\nfunction getUsersForImprovementWork(improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee30() {\n    var q, querySnapshot, users, _iterator3, _step3, _doc3, userHsaId, userDoc;\n    return _regeneratorRuntime().wrap(function _callee30$(_context30) {\n      while (1) switch (_context30.prev = _context30.next) {\n        case 0:\n          _context30.prev = 0;\n          // Query the userImprovementWork collection for relations involving this improvementWork\n          q = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)(userImprovementWorkCollection, (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n          _context30.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 4:\n          querySnapshot = _context30.sent;\n          // Fetch each related user document\n          users = [];\n          _iterator3 = _createForOfIteratorHelper(querySnapshot.docs);\n          _context30.prev = 7;\n          _iterator3.s();\n        case 9:\n          if ((_step3 = _iterator3.n()).done) {\n            _context30.next = 18;\n            break;\n          }\n          _doc3 = _step3.value;\n          userHsaId = _doc3.data().userHsaId;\n          _context30.next = 14;\n          return getObjectById(\"users\", userHsaId);\n        case 14:\n          userDoc = _context30.sent;\n          users.push(userDoc);\n        case 16:\n          _context30.next = 9;\n          break;\n        case 18:\n          _context30.next = 23;\n          break;\n        case 20:\n          _context30.prev = 20;\n          _context30.t0 = _context30[\"catch\"](7);\n          _iterator3.e(_context30.t0);\n        case 23:\n          _context30.prev = 23;\n          _iterator3.f();\n          return _context30.finish(23);\n        case 26:\n          return _context30.abrupt(\"return\", users);\n        case 29:\n          _context30.prev = 29;\n          _context30.t1 = _context30[\"catch\"](0);\n          console.error(\"Error getting users for improvementWork: \", _context30.t1);\n          throw _context30.t1;\n        case 33:\n        case \"end\":\n          return _context30.stop();\n      }\n    }, _callee30, null, [[0, 29], [7, 20, 23, 26]]);\n  }));\n}\n// export getters to be able to use in other files\n\n////////////////////////////////////DELETING/////////////////////////////////////////////\n// delete an instance of a type\nfunction deleteInstance(docType, docId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee31() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee31$(_context31) {\n      while (1) switch (_context31.prev = _context31.next) {\n        case 0:\n          _context31.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context31.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(docRef);\n        case 4:\n          console.log(\"\".concat(docType, \" deleted successfully.\"));\n          _context31.next = 11;\n          break;\n        case 7:\n          _context31.prev = 7;\n          _context31.t0 = _context31[\"catch\"](0);\n          console.error(\"Error deleting \".concat(docType, \":\"), _context31.t0);\n          throw _context31.t0;\n        case 11:\n        case \"end\":\n          return _context31.stop();\n      }\n    }, _callee31, null, [[0, 7]]);\n  }));\n}\n// delete all instances of a type\nfunction deleteAllDocumentsInCollection(collectionName) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee33() {\n    var _this = this;\n    var collectionRef, snapshot, deletePromises;\n    return _regeneratorRuntime().wrap(function _callee33$(_context33) {\n      while (1) switch (_context33.prev = _context33.next) {\n        case 0:\n          _context33.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionName);\n          _context33.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          snapshot = _context33.sent;\n          // Delete all documents in the collection\n          deletePromises = snapshot.docs.map(function (doc) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee32() {\n              return _regeneratorRuntime().wrap(function _callee32$(_context32) {\n                while (1) switch (_context32.prev = _context32.next) {\n                  case 0:\n                    _context32.next = 2;\n                    return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(doc.ref);\n                  case 2:\n                  case \"end\":\n                    return _context32.stop();\n                }\n              }, _callee32);\n            }));\n          });\n          _context33.next = 8;\n          return Promise.all(deletePromises);\n        case 8:\n          console.log(\"All documents in the \".concat(collectionName, \" collection deleted successfully.\"));\n          _context33.next = 15;\n          break;\n        case 11:\n          _context33.prev = 11;\n          _context33.t0 = _context33[\"catch\"](0);\n          console.error(\"Error deleting all documents in \".concat(collectionName, \":\"), _context33.t0);\n          throw _context33.t0;\n        case 15:\n        case \"end\":\n          return _context33.stop();\n      }\n    }, _callee33, null, [[0, 11]]);\n  }));\n}\n////////////////////////////////////UPDATING/////////////////////////////////////////////\n// update a field in an instance\nfunction updateInstance(docType, docId, updates) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee34() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee34$(_context34) {\n      while (1) switch (_context34.prev = _context34.next) {\n        case 0:\n          _context34.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context34.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(docRef, updates);\n        case 4:\n          console.log(\"\".concat(docType, \" updated successfully.\"));\n          _context34.next = 11;\n          break;\n        case 7:\n          _context34.prev = 7;\n          _context34.t0 = _context34[\"catch\"](0);\n          console.error(\"Error updating \".concat(docType, \":\"), _context34.t0);\n          throw _context34.t0;\n        case 11:\n        case \"end\":\n          return _context34.stop();\n      }\n    }, _callee34, null, [[0, 7]]);\n  }));\n}\n// changes the ongoing status of an improvement work. if ongoing it is paused, if if paused onging.\n// user must be a manager\nfunction startOrPauseImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee35() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee35$(_context35) {\n      while (1) switch (_context35.prev = _context35.next) {\n        case 0:\n          _context35.prev = 0;\n          _context35.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context35.sent;\n          _context35.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context35.sent;\n          if (!(!user || !user.manager)) {\n            _context35.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change improvementWork status\");\n        case 11:\n          if (!improvementWork) {\n            _context35.next = 19;\n            break;\n          }\n          update = {\n            ongoing: !improvementWork.ongoing\n          };\n          _context35.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          return _context35.abrupt(\"return\", true);\n        case 19:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n          return _context35.abrupt(\"return\", false);\n        case 21:\n          _context35.next = 27;\n          break;\n        case 23:\n          _context35.prev = 23;\n          _context35.t0 = _context35[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context35.t0);\n          throw _context35.t0;\n        case 27:\n        case \"end\":\n          return _context35.stop();\n      }\n    }, _callee35, null, [[0, 23]]);\n  }));\n}\nfunction changePatientRiskLevel(userId, improvementWorkId, patientRiskLevel) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee36() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee36$(_context36) {\n      while (1) switch (_context36.prev = _context36.next) {\n        case 0:\n          _context36.prev = 0;\n          _context36.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context36.sent;\n          _context36.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context36.sent;\n          if (!(!user || !user.manager)) {\n            _context36.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change patientRiskLevel in improvement work\");\n        case 11:\n          if (!improvementWork) {\n            _context36.next = 18;\n            break;\n          }\n          update = {\n            patientRiskLevel: patientRiskLevel\n          };\n          _context36.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context36.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context36.next = 25;\n          break;\n        case 21:\n          _context36.prev = 21;\n          _context36.t0 = _context36[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context36.t0);\n          throw _context36.t0;\n        case 25:\n        case \"end\":\n          return _context36.stop();\n      }\n    }, _callee36, null, [[0, 21]]);\n  }));\n}\n// finalizes the improvement work. ongoing is set to false.\n// user must be a manager\nfunction finalizeImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee37() {\n    var user, update;\n    return _regeneratorRuntime().wrap(function _callee37$(_context37) {\n      while (1) switch (_context37.prev = _context37.next) {\n        case 0:\n          _context37.prev = 0;\n          _context37.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context37.sent;\n          if (!(!user || !user.manager)) {\n            _context37.next = 8;\n            break;\n          }\n          return _context37.abrupt(\"return\", false);\n        case 8:\n          update = {\n            completed: true,\n            ongoing: false\n          };\n          _context37.next = 11;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 11:\n          return _context37.abrupt(\"return\", true);\n        case 12:\n          _context37.next = 17;\n          break;\n        case 14:\n          _context37.prev = 14;\n          _context37.t0 = _context37[\"catch\"](0);\n          return _context37.abrupt(\"return\", false);\n        case 17:\n        case \"end\":\n          return _context37.stop();\n      }\n    }, _callee37, null, [[0, 14]]);\n  }));\n}\n\n//////////////////////////////// for later sprint\n//function add_upvotes\n//function add_notes\n//function add_intrested_users\n\n//# sourceURL=webpack://c3/./client/Database/database.js?");
 
 /***/ }),
 
@@ -156,7 +156,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
   \*****************************************/
 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   loadPage: () => (/* binding */ loadPage)\n/* harmony export */ });\nfunction loadPage() {\n  var container = document.querySelector('#container-fluid');\n  if (!container) return; // Stop if the container isn't found\n  fetch('KnowledgeBank/Nolans3.html').then(function (response) {\n    return response.text();\n  }).then(function (data) {\n    // Create a temporary container element to hold the loaded content\n    var tempContainer = document.createElement('div');\n    tempContainer.innerHTML = data;\n    // Select the specific element with the class you want\n    var specificElement = tempContainer.querySelector('.nolans-main-container');\n    if (specificElement) {\n      // Insert the specific element into the target element\n      container.insertBefore(specificElement, container.firstChild);\n    }\n  })[\"catch\"](function (error) {\n    console.error('Failed to load the external HTML file:', error);\n  });\n}\n\n//# sourceURL=webpack://c3/./client/KnowledgeBank/Nolans3.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   loadPage: () => (/* binding */ loadPage)\n/* harmony export */ });\nfunction loadPage() {\n  var container = document.querySelector(\"#container-fluid\");\n  if (!container) return; // Stop if the container isn't found\n  fetch(\"KnowledgeBank/Nolans3.html\").then(function (response) {\n    return response.text();\n  }).then(function (data) {\n    // Create a temporary container element to hold the loaded content\n    var tempContainer = document.createElement(\"div\");\n    tempContainer.innerHTML = data;\n    // Select the specific element with the class you want\n    var specificElement = tempContainer.querySelector(\".nolans-main-container\");\n    if (specificElement) {\n      // Insert the specific element into the target element\n      container.insertBefore(specificElement, container.firstChild);\n    }\n  })[\"catch\"](function (error) {\n    console.error(\"Failed to load the external HTML file:\", error);\n  });\n}\n\n//# sourceURL=webpack://c3/./client/KnowledgeBank/Nolans3.js?");
 
 /***/ }),
 
@@ -256,7 +256,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
   \***************************************************/
 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   addEventListener: () => (/* binding */ addEventListener),\n/* harmony export */   loadPage: () => (/* binding */ loadPage)\n/* harmony export */ });\n/* harmony import */ var _Database_database_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Database/database.js */ \"./client/Database/database.js\");\n/* harmony import */ var _SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../SidebarAndHeader/pageHandler.js */ \"./client/SidebarAndHeader/pageHandler.js\");\n/* harmony import */ var _ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../ideaBank/ideaBank.js */ \"./client/ideaBank/ideaBank.js\");\n\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\nvar projectCards = [];\nvar filteredImprovementWorks = [];\nvar projectCard = /*#__PURE__*/function () {\n  function projectCard(id, name, department, title, description, projectId, currentStage) {\n    _classCallCheck(this, projectCard);\n    this.name = name;\n    this.department = department;\n    this.title = title;\n    this.description = description;\n    this.id = id;\n    this.projectId = projectId;\n    this.stage = currentStage;\n  }\n  _createClass(projectCard, [{\n    key: \"showMoreInfo\",\n    value: function showMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"flex\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"^ Stäng detaljer\";\n      }\n    }\n  }, {\n    key: \"closeMoreInfo\",\n    value: function closeMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"none\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"> Mer information\";\n      }\n    }\n  }, {\n    key: \"loadInitiatePage\",\n    value: function loadInitiatePage() {\n      alert(\"The initiate project page should now be loaded\");\n    }\n  }, {\n    key: \"generateHTML\",\n    value: function generateHTML() {\n      var stageImages = {\n        Act: \"../images/Hemsida_PGSA_A.png\",\n        Study: \"../images/Hemsida_PGSA_S.png\",\n        Do: \"../images/Hemsida_PGSA_G.png\",\n        Plan: \"../images/Hemsida_PGSA_P.png\",\n        Finished: \"path/to/finished-image.jpg\"\n      };\n      var stageKey = this.stage;\n      // Check if the stage is directly a key in stageImages\n      if (!stageImages[stageKey]) {\n        // If not, try to map the Swedish stage to English using nolanStageMapping\n        stageKey = nolanStageMapping[stageKey];\n      }\n      // Now get the imageUrl using the stageKey\n      var imageUrl = stageImages[stageKey];\n      return \"\\n    <div class=\\\"totalExpandedOngoingWorkCard\\\">\\n      <div style=\\\"cursor: default;\\\" class=\\\"flex-container ongoingCard\\\" id=\\\"\".concat(this.projectId, \"\\\">\\n        <div class=\\\"ongoingCardImageContainer toSinglePage\\\">\\n          <div class = \\\"flex-box ongoingCardImage toSinglePage\\\" id=\\\"pinkFaded\\\"></div>\\n        </div>\\n        <div class=\\\"div ongoingCardInfo toSinglePage\\\">\\n          <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardManager\\\">\").concat(this.name, \"</p>\\n          <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardDepartment\\\">\").concat(this.department, \"</p>\\n          <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardIdeaTitle\\\">\").concat(this.title, \"</p>\\n        </div>\\n        <button id=\\\"project-button-\").concat(this.projectId, \"\\\" data-project-id=\\\"\").concat(this.id, \"\\\" class=\\\"projectButton\\\" role=\\\"button\\\">G\\xE5 till projektsidan</button>\\n        <div>\\n          <img class=\\\"statusImage\\\" src=\\\"\").concat(imageUrl, \"\\\" alt=\\\"Stage Image\\\">\\n        </div>\\n        <div class=\\\"container ongoingSeeCardDetails toSinglePage\\\">\\n          <div class=\\\"ongoingSeeCardDetailsInner\\\">\\n            <p id=\\\"ongoingSeeDetailsButton\").concat(this.projectId, \"\\\" class = \\\"moreInfoClass\\\">> Mer information</p>\\n          </div>\\n        </div>\\n      </div> \\n      <div class = \\\"expandedOngoingWorkCard\\\" id=\\\"expandedOngoingWorkCard\").concat(this.projectId, \"\\\" style=\\\"display: none;\\\">\\n        <div class =\\\"expandedTextOngoingWorkCard\\\">\\n          \").concat(this.description, \"\\n        </div>\\n      </div>\\n    </div> \");\n    }\n  }]);\n  return projectCard;\n}();\nfunction loadPage(listenersLoaded) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n    var container, checkedHospitalIds, checkedUnitIds, checkedNolanStages, checkedPatientRiskLevels, ascendingDates, searchBar;\n    return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n      while (1) switch (_context6.prev = _context6.next) {\n        case 0:\n          container = document.querySelector(\"#container-fluid\");\n          if (container) {\n            _context6.next = 3;\n            break;\n          }\n          return _context6.abrupt(\"return\");\n        case 3:\n          // Stop if the container isn't found\n          projectCards = [];\n          // Initialize empty lists of checked hospital and unit ids\n          checkedHospitalIds = [];\n          checkedUnitIds = [];\n          checkedNolanStages = [];\n          checkedPatientRiskLevels = [];\n          ascendingDates = false;\n          fetch(\"currentProjects/currentProjects.html\").then(function (response) {\n            return response.text();\n          }).then(function (data) {\n            // Create a temporary container element to hold the loaded content\n            var tempContainer = document.createElement(\"div\");\n            tempContainer.innerHTML = data;\n            // Select the specific element with the class you want\n            var specificElement = tempContainer.querySelector(\".filterBar\");\n            var createHospitalCheckBoxContainer = tempContainer.querySelector('#hospitalSelection');\n            var createUnitCheckBoxContainer = tempContainer.querySelector('#unitSelection');\n            var createNolanStageCheckBoxContainer = tempContainer.querySelector('#nolanStageSelection');\n            var createPatientRiskLevelCheckBoxContainer = tempContainer.querySelector('#patientRiskLevelSelection');\n            var createOrderSelectionContainer = tempContainer.querySelector('#orderSelection');\n            if (createHospitalCheckBoxContainer) {\n              createHospitalCheckBoxContainer.addEventListener('change', function (event) {\n                return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n                  var checkboxes;\n                  return _regeneratorRuntime().wrap(function _callee$(_context) {\n                    while (1) switch (_context.prev = _context.next) {\n                      case 0:\n                        checkboxes = createHospitalCheckBoxContainer.querySelectorAll('input[type=\"checkbox\"]');\n                        console.log(\"createHospitalCheckBoxContainer\");\n                        // Empty list of checked hospitals\n                        checkedHospitalIds = [];\n                        // Array to store IDs of checked checkboxes\n                        checkboxes.forEach(function (checkbox) {\n                          // Ensure the checkbox is an HTMLInputElement\n                          var inputCheckbox = checkbox;\n                          // Check if the checkbox is checked and add its ID to the array\n                          if (inputCheckbox.checked) {\n                            checkedHospitalIds.push(inputCheckbox.id);\n                          }\n                        });\n                        // Log all checked hospital IDs\n                        console.log('Checked hospitals:', checkedHospitalIds);\n                        // Future change: Only clear the unitIds for unchecked hospitals!\n                        (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.clearContent)(\"unitSelection\");\n                        (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.loadUnits)(checkedHospitalIds);\n                      case 7:\n                      case \"end\":\n                        return _context.stop();\n                    }\n                  }, _callee);\n                }));\n              });\n            }\n            if (createUnitCheckBoxContainer) {\n              createUnitCheckBoxContainer.addEventListener('change', function (event) {\n                return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n                  var checkboxes;\n                  return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n                    while (1) switch (_context2.prev = _context2.next) {\n                      case 0:\n                        checkboxes = createUnitCheckBoxContainer.querySelectorAll('input[type=\"checkbox\"]');\n                        console.log(\"createUnitCheckBoxContainer\");\n                        // Empty list of checked units\n                        checkedUnitIds = [];\n                        checkboxes.forEach(function (checkbox) {\n                          // Ensure the checkbox is an HTMLInputElement\n                          var inputCheckbox = checkbox;\n                          // Check if the checkbox is checked and add its ID to the array\n                          if (inputCheckbox.checked) {\n                            checkedUnitIds.push(inputCheckbox.id);\n                          }\n                        });\n                        _context2.next = 6;\n                        return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getFilteredImprovementWorks)({\n                          patientRiskLevels: checkedPatientRiskLevels,\n                          nolanStages: checkedNolanStages,\n                          units: checkedUnitIds\n                        });\n                      case 6:\n                        filteredImprovementWorks = _context2.sent;\n                        (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.removeCardsFromDiv)(\"div.projectCardCardDiv\");\n                        getProjects(container, listenersLoaded, filteredImprovementWorks);\n                      case 9:\n                      case \"end\":\n                        return _context2.stop();\n                    }\n                  }, _callee2);\n                }));\n              });\n            }\n            if (createNolanStageCheckBoxContainer) {\n              createNolanStageCheckBoxContainer.addEventListener('change', function (event) {\n                return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n                  var checkboxes;\n                  return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n                    while (1) switch (_context3.prev = _context3.next) {\n                      case 0:\n                        checkboxes = createNolanStageCheckBoxContainer.querySelectorAll('input[type=\"checkbox\"]'); // Empty list of checked hospitals\n                        checkedNolanStages = [];\n                        // Array to store IDs of checked checkboxes\n                        checkboxes.forEach(function (checkbox) {\n                          // Ensure the checkbox is an HTMLInputElement\n                          var inputCheckbox = checkbox;\n                          // Check if the checkbox is checked and add its ID to the array\n                          if (inputCheckbox.checked) {\n                            checkedNolanStages.push(inputCheckbox.id);\n                            checkedNolanStages.push(nolanStageMapping[inputCheckbox.id]);\n                            console.log(\"checkedNolanStages: \", checkedNolanStages);\n                          }\n                        });\n                        _context3.next = 5;\n                        return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getFilteredImprovementWorks)({\n                          patientRiskLevels: checkedPatientRiskLevels,\n                          nolanStages: checkedNolanStages,\n                          units: checkedUnitIds\n                        });\n                      case 5:\n                        filteredImprovementWorks = _context3.sent;\n                        (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.removeCardsFromDiv)(\"div.projectCardCardDiv\");\n                        getProjects(container, listenersLoaded, filteredImprovementWorks);\n                      case 8:\n                      case \"end\":\n                        return _context3.stop();\n                    }\n                  }, _callee3);\n                }));\n              });\n            }\n            if (createPatientRiskLevelCheckBoxContainer) {\n              createPatientRiskLevelCheckBoxContainer.addEventListener('change', function (event) {\n                return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n                  var checkboxes;\n                  return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n                    while (1) switch (_context4.prev = _context4.next) {\n                      case 0:\n                        checkboxes = createPatientRiskLevelCheckBoxContainer.querySelectorAll('input[type=\"checkbox\"]');\n                        console.log(\"createPatientRiskLevelCheckBoxContainer\");\n                        // Empty list of checked hospitals\n                        checkedPatientRiskLevels = [];\n                        // Array to store IDs of checked checkboxes\n                        checkboxes.forEach(function (checkbox) {\n                          // Ensure the checkbox is an HTMLInputElement\n                          var inputCheckbox = checkbox;\n                          // Check if the checkbox is checked and add its ID to the array\n                          if (inputCheckbox.checked) {\n                            checkedPatientRiskLevels.push(inputCheckbox.id);\n                            checkedPatientRiskLevels.push(patientRiskLevelMapping[inputCheckbox.id]);\n                            console.log(\"checkedPatientRiskLevels: \", checkedPatientRiskLevels);\n                          }\n                        });\n                        _context4.next = 6;\n                        return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getFilteredImprovementWorks)({\n                          patientRiskLevels: checkedPatientRiskLevels,\n                          nolanStages: checkedNolanStages,\n                          units: checkedUnitIds\n                        });\n                      case 6:\n                        filteredImprovementWorks = _context4.sent;\n                        (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.removeCardsFromDiv)(\"div.projectCardCardDiv\");\n                        getProjects(container, listenersLoaded, filteredImprovementWorks);\n                      case 9:\n                      case \"end\":\n                        return _context4.stop();\n                    }\n                  }, _callee4);\n                }));\n              });\n            }\n            if (createOrderSelectionContainer) {\n              createOrderSelectionContainer.addEventListener('change', function (event) {\n                return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n                  var inputCheckbox;\n                  return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n                    while (1) switch (_context5.prev = _context5.next) {\n                      case 0:\n                        inputCheckbox = event.target;\n                        ascendingDates = inputCheckbox.checked;\n                        (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.removeCardsFromDiv)(\"div.projectCardCardDiv\");\n                        sortProjects(container, listenersLoaded, ascendingDates);\n                      case 4:\n                      case \"end\":\n                        return _context5.stop();\n                    }\n                  }, _callee5);\n                }));\n              });\n            }\n            if (specificElement) {\n              // Insert the specific element into the target element\n              container.insertBefore(specificElement, container.firstChild);\n            }\n          })[\"catch\"](function (error) {\n            console.error(\"Failed to load the external HTML file:\", error);\n          });\n          _context6.next = 12;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getImprovementWorks)({\n            completed: false\n          });\n        case 12:\n          filteredImprovementWorks = _context6.sent;\n          console.log(\"Filtered improvementWorks: \", filteredImprovementWorks);\n          (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.removeCardsFromDiv)(\"div.projectCardCardDiv\");\n          getProjects(container, listenersLoaded, filteredImprovementWorks);\n          searchBar = document.getElementById(\"searchBarImprovement\");\n          searchBar === null || searchBar === void 0 ? void 0 : searchBar.addEventListener(\"keydown\", function (event) {\n            if (event.key === \"Enter\") {\n              performSearch(searchBar, container);\n            }\n          });\n          console.log(\"Loading hospitals\");\n          (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.clearContent)(\"hospitalSelection\");\n          (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.loadHospitals)();\n          loadNolanStages();\n          loadPatientRiskLevels();\n        case 23:\n        case \"end\":\n          return _context6.stop();\n      }\n    }, _callee6);\n  }));\n}\nfunction loadNolanStages() {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var selectStageHTML, allStages;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          selectStageHTML = $('#nolanStageSelection'); // loads the select type from html\n          allStages = [\"Planera\", \"Göra\", \"Studera\", \"Agera\"];\n          allStages.forEach(function (stage) {\n            var generatedElement = document.createRange().createContextualFragment(\"\\n    <div class=\\\"form-check\\\">\\n      <input class=\\\"form-check-input\\\" type=\\\"checkbox\\\" value=\\\"\\\" id=\\\"\" + stage + \"\\\">\\n      <label class=\\\"form-check-label\\\" for=\\\"flexCheckDefault\\\">\" + stage + \"</label>\\n    </div>\");\n            selectStageHTML.append(generatedElement);\n            console.log(\"Adding HTML for for stage \", stage);\n          });\n        case 3:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7);\n  }));\n}\nfunction loadPatientRiskLevels() {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var selectPatientRiskLevelHTML, allRiskLevels;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          selectPatientRiskLevelHTML = $('#patientRiskLevelSelection'); // loads the select type from html\n          allRiskLevels = [\"Grön\", \"Blå\", \"Gul\", \"Röd\"];\n          allRiskLevels.forEach(function (riskLevel) {\n            var generatedElement = document.createRange().createContextualFragment(\"\\n    <div class=\\\"form-check\\\">\\n      <input class=\\\"form-check-input\\\" type=\\\"checkbox\\\" value=\\\"\\\" id=\\\"\" + riskLevel + \"\\\">\\n      <label class=\\\"form-check-label\\\" for=\\\"flexCheckDefault\\\">Riskniv\\xE5 \" + riskLevel + \"</label>\\n    </div>\");\n            selectPatientRiskLevelHTML.append(generatedElement);\n            console.log(\"Adding HTML for for risk level \", riskLevel);\n          });\n        case 3:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8);\n  }));\n}\nfunction sortProjects(selectElement, listenersLoaded, ascendingDates) {\n  // Sort in reversed order if ascendingDates is true\n  var cardsToIterate = ascendingDates ? _toConsumableArray(projectCards).reverse() : projectCards;\n  // Loop through the saved array of cards and generate HTML for each card\n  var _iterator = _createForOfIteratorHelper(cardsToIterate),\n    _step;\n  try {\n    for (_iterator.s(); !(_step = _iterator.n()).done;) {\n      var card = _step.value;\n      var cardHTML = card.generateHTML();\n      var div = document.createElement(\"div\");\n      div.className = \"projectCardCardDiv\"; // Set the class name(s) here\n      div.innerHTML = cardHTML;\n      if (!selectElement) return;\n      selectElement.appendChild(div); // Stop if the container isn't found\n      addEventListener(card.projectId, card);\n    }\n  } catch (err) {\n    _iterator.e(err);\n  } finally {\n    _iterator.f();\n  }\n}\nfunction getProjects(selectElement, listenersLoaded, improvementWorks) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var _this = this;\n    var id;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          id = 0;\n          projectCards = [];\n          improvementWorks.forEach(function (improvementWork) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n              var title, department, projectLeader, card, cardHTML, div;\n              return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n                while (1) switch (_context9.prev = _context9.next) {\n                  case 0:\n                    title = improvementWork.name;\n                    _context9.next = 3;\n                    return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getObjectById)(\"unit\", improvementWork.unitId);\n                  case 3:\n                    department = _context9.sent;\n                    _context9.next = 6;\n                    return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getImprovementWorkResponsible)(improvementWork.id);\n                  case 6:\n                    projectLeader = _context9.sent;\n                    if (!department) {\n                      _context9.next = 21;\n                      break;\n                    }\n                    card = new projectCard(id, projectLeader.firstName + \" \" + projectLeader.lastName, department.name, title, improvementWork.content, improvementWork.id, improvementWork.currentStage);\n                    projectCards.push(card);\n                    cardHTML = card.generateHTML();\n                    div = document.createElement(\"div\");\n                    div.className = \"projectCardCardDiv\"; // Set the class name(s) here\n                    div.innerHTML = cardHTML;\n                    if (selectElement) {\n                      _context9.next = 16;\n                      break;\n                    }\n                    return _context9.abrupt(\"return\");\n                  case 16:\n                    selectElement.appendChild(div); // Stop if the container isn't found\n                    addEventListener(improvementWork.id, card);\n                    id++;\n                    _context9.next = 22;\n                    break;\n                  case 21:\n                    console.log(improvementWork.unitId + \" is not a unit\"); //Unit Ids on improvement work that do not exist\n                  case 22:\n                  case \"end\":\n                    return _context9.stop();\n                }\n              }, _callee9);\n            }));\n          });\n        case 3:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10);\n  }));\n}\nfunction addEventListener(projectId, card) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {\n    return _regeneratorRuntime().wrap(function _callee13$(_context13) {\n      while (1) switch (_context13.prev = _context13.next) {\n        case 0:\n          $(\"#ongoingSeeDetailsButton\" + projectId).off(\"click\").on(\"click\", function () {\n            return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {\n              var expandedDiv;\n              return _regeneratorRuntime().wrap(function _callee11$(_context11) {\n                while (1) switch (_context11.prev = _context11.next) {\n                  case 0:\n                    expandedDiv = document.getElementById(\"expandedOngoingWorkCard\" + projectId);\n                    if (expandedDiv && expandedDiv.style.display === \"none\") {\n                      card.showMoreInfo(\"expandedOngoingWorkCard\" + projectId, \"ongoingSeeDetailsButton\" + projectId);\n                    } else {\n                      card.closeMoreInfo(\"expandedOngoingWorkCard\" + projectId, \"ongoingSeeDetailsButton\" + projectId);\n                    }\n                  case 2:\n                  case \"end\":\n                    return _context11.stop();\n                }\n              }, _callee11);\n            }));\n          });\n          $(\"#project-button-\" + projectId).off(\"click\").on(\"click\", function () {\n            return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {\n              var tmp, currentStage;\n              return _regeneratorRuntime().wrap(function _callee12$(_context12) {\n                while (1) switch (_context12.prev = _context12.next) {\n                  case 0:\n                    _context12.next = 2;\n                    return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getObjectById)(\"improvementWork\", projectId);\n                  case 2:\n                    tmp = _context12.sent;\n                    currentStage = tmp.currentStage;\n                    if (currentStage === \"Act\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageA)(projectId);\n                    } else if (currentStage === \"Study\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageS)(projectId);\n                    } else if (currentStage === \"Do\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageG)(projectId);\n                    } else if (currentStage === \"Plan\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageP)(projectId);\n                    } else if (currentStage === \"Finished\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageP)(projectId);\n                    }\n                  case 5:\n                  case \"end\":\n                    return _context12.stop();\n                }\n              }, _callee12);\n            }));\n          });\n          /*$(document).on(\"click\", \"#\" + projectId, async function (event) {\n            let tmp = await getObjectById(\"improvementWork\", projectId);\n            const currentStage = tmp.currentStage;\n            const element = event.target as HTMLElement;\n            if (element.classList.contains(\"moreInfoClass\")) {\n              const expandedDiv = document.getElementById(\n                \"expandedOngoingWorkCard\" + projectId\n              );\n              if (expandedDiv && expandedDiv.style.display === \"none\") {\n                card.showMoreInfo(\n                  `expandedOngoingWorkCard` + projectId,\n                  `ongoingSeeDetailsButton` + projectId\n                );\n              } else {\n                card.closeMoreInfo(\n                  `expandedOngoingWorkCard` + projectId,\n                  `ongoingSeeDetailsButton` + projectId\n                );\n              }\n            } else if (element.classList.contains(\"projectButton\") || element.classList.contains(\"toSinglePage\")) {\n              document.removeEventListener(\"click\", event.target);\n              if (currentStage === \"Act\") {\n                loadProjectPageA(projectId);\n              } else if (currentStage === \"Study\") {\n                loadProjectPageS(projectId);\n              } else if (currentStage === \"Do\") {\n                loadProjectPageG(projectId);\n              } else if (currentStage === \"Plan\") {\n                loadProjectPageP(projectId);\n              } else if (currentStage === \"Finished\") {\n                loadProjectPageP(projectId);\n              }\n            }\n          });*/\n        case 2:\n        case \"end\":\n          return _context13.stop();\n      }\n    }, _callee13);\n  }));\n}\nvar patientRiskLevelMapping = {\n  Grön: \"Green\",\n  Blå: \"Blue\",\n  Gul: \"Yellow\",\n  Röd: \"Red\"\n};\nvar nolanStageMapping = {\n  Planera: \"Plan\",\n  Göra: \"Do\",\n  Studera: \"Study\",\n  Agera: \"Act\"\n};\nfunction performSearch(searchBar, container) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee14() {\n    var inputValue, query, matchedStage;\n    return _regeneratorRuntime().wrap(function _callee14$(_context14) {\n      while (1) switch (_context14.prev = _context14.next) {\n        case 0:\n          inputValue = searchBar.value; //make first character uppercase\n          inputValue = inputValue.toLowerCase();\n          console.log(\"Search query:\", inputValue);\n          // Remove each element\n          projectCards = [];\n          query = {};\n          query.completed = false;\n          (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.removeCardsFromDiv)(\"div.projectCardCardDiv\");\n          if (inputValue !== \"\") {\n            matchedStage = Object.keys(nolanStageMapping).find(function (stage) {\n              return stage.toLowerCase().includes(inputValue.toLowerCase());\n            });\n            if (matchedStage) {\n              query.nolanStage = nolanStageMapping[matchedStage];\n            } else {\n              query.name = inputValue;\n            }\n          }\n          _context14.next = 10;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getImprovementWorks)(query);\n        case 10:\n          filteredImprovementWorks = _context14.sent;\n          _context14.next = 13;\n          return getProjects(container, true, filteredImprovementWorks);\n        case 13:\n        case \"end\":\n          return _context14.stop();\n      }\n    }, _callee14);\n  }));\n}\n\n//# sourceURL=webpack://c3/./client/currentProjects/currentProjects.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   addEventListener: () => (/* binding */ addEventListener),\n/* harmony export */   loadPage: () => (/* binding */ loadPage)\n/* harmony export */ });\n/* harmony import */ var _Database_database_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Database/database.js */ \"./client/Database/database.js\");\n/* harmony import */ var _SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../SidebarAndHeader/pageHandler.js */ \"./client/SidebarAndHeader/pageHandler.js\");\n/* harmony import */ var _ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../ideaBank/ideaBank.js */ \"./client/ideaBank/ideaBank.js\");\n/* harmony import */ var _projectPage_projectPage_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../projectPage/projectPage.js */ \"./client/projectPage/projectPage.js\");\n\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter); }\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\nvar projectCards = [];\nvar filteredImprovementWorks = [];\nvar projectCard = /*#__PURE__*/function () {\n  function projectCard(id, name, department, title, description, projectId, currentStage, dateStarted) {\n    _classCallCheck(this, projectCard);\n    this.name = name;\n    this.department = department;\n    this.title = title;\n    this.description = description;\n    this.id = id;\n    this.projectId = projectId;\n    this.stage = currentStage;\n    this.dateStarted = dateStarted;\n  }\n  _createClass(projectCard, [{\n    key: \"showMoreInfo\",\n    value: function showMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"flex\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"^ Stäng detaljer\";\n      }\n    }\n  }, {\n    key: \"closeMoreInfo\",\n    value: function closeMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"none\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"> Mer information\";\n      }\n    }\n  }, {\n    key: \"loadInitiatePage\",\n    value: function loadInitiatePage() {\n      alert(\"The initiate project page should now be loaded\");\n    }\n  }, {\n    key: \"generateHTML\",\n    value: function generateHTML() {\n      var stageImages = {\n        Act: \"../images/Hemsida_PGSA_A.png\",\n        Study: \"../images/Hemsida_PGSA_S.png\",\n        Do: \"../images/Hemsida_PGSA_G.png\",\n        Plan: \"../images/Hemsida_PGSA_P.png\",\n        Finished: \"path/to/finished-image.jpg\"\n      };\n      var stageKey = this.stage;\n      // Check if the stage is directly a key in stageImages\n      if (!stageImages[stageKey]) {\n        // If not, try to map the Swedish stage to English using nolanStageMapping\n        stageKey = nolanStageMapping[stageKey];\n      }\n      // Now get the imageUrl using the stageKey\n      var imageUrl = stageImages[stageKey];\n      return \"\\n    <div class=\\\"totalExpandedOngoingWorkCard\\\">\\n      <div style=\\\"cursor: default;\\\" class=\\\"flex-container ongoingCard\\\" id=\\\"\".concat(this.projectId, \"\\\">\\n        <div class=\\\"ongoingCardImageContainer toSinglePage\\\">\\n          <div class = \\\"flex-box ongoingCardImage toSinglePage\\\" id=\\\"pinkFaded\\\"></div>\\n        </div>\\n        <div class=\\\"div ongoingCardInfo toSinglePage\\\">\\n          <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardManager\\\">\").concat(this.name, \"</p>\\n          <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardDepartment\\\">\").concat(this.department, \"</p>\\n          <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardIdeaTitle\\\">\").concat(this.title, \"</p>\\n\\n          <p class=\\\"toSinglePage\\\" id=ongoingCardStartDate\\\" style=\\\"font-size: 12px;\\\">\").concat((0,_projectPage_projectPage_js__WEBPACK_IMPORTED_MODULE_3__.formatDate)(this.dateStarted), \"</p>\\n        </div>\\n        <button id=\\\"project-button-\").concat(this.projectId, \"\\\" data-project-id=\\\"\").concat(this.id, \"\\\" class=\\\"projectButton\\\" role=\\\"button\\\">G\\xE5 till projektsidan</button>\\n        <div>\\n          <img class=\\\"statusImage\\\" src=\\\"\").concat(imageUrl, \"\\\" alt=\\\"Stage Image\\\">\\n        </div>\\n        <div class=\\\"container ongoingSeeCardDetails toSinglePage\\\">\\n          <div class=\\\"ongoingSeeCardDetailsInner\\\">\\n            <p id=\\\"ongoingSeeDetailsButton\").concat(this.projectId, \"\\\" class = \\\"moreInfoClass\\\">> Mer information</p>\\n          </div>\\n        </div>\\n      </div> \\n      <div class = \\\"expandedOngoingWorkCard\\\" id=\\\"expandedOngoingWorkCard\").concat(this.projectId, \"\\\" style=\\\"display: none;\\\">\\n        <div class =\\\"expandedTextOngoingWorkCard\\\">\\n          \").concat(this.description, \"\\n        </div>\\n      </div>\\n    </div> \");\n    }\n  }]);\n  return projectCard;\n}();\nfunction loadPage(listenersLoaded) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n    var container, checkedHospitalIds, checkedUnitIds, checkedNolanStages, checkedPatientRiskLevels, ascendingDates, searchBar;\n    return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n      while (1) switch (_context6.prev = _context6.next) {\n        case 0:\n          container = document.querySelector(\"#container-fluid\");\n          if (container) {\n            _context6.next = 3;\n            break;\n          }\n          return _context6.abrupt(\"return\");\n        case 3:\n          // Stop if the container isn't found\n          projectCards = [];\n          // Initialize empty lists of checked hospital and unit ids\n          checkedHospitalIds = [];\n          checkedUnitIds = [];\n          checkedNolanStages = [];\n          checkedPatientRiskLevels = [];\n          ascendingDates = false;\n          fetch(\"currentProjects/currentProjects.html\").then(function (response) {\n            return response.text();\n          }).then(function (data) {\n            // Create a temporary container element to hold the loaded content\n            var tempContainer = document.createElement(\"div\");\n            tempContainer.innerHTML = data;\n            // Select the specific element with the class you want\n            var specificElement = tempContainer.querySelector(\".filterBar\");\n            var createHospitalCheckBoxContainer = tempContainer.querySelector(\"#hospitalSelection\");\n            var createUnitCheckBoxContainer = tempContainer.querySelector(\"#unitSelection\");\n            var createNolanStageCheckBoxContainer = tempContainer.querySelector(\"#nolanStageSelection\");\n            var createPatientRiskLevelCheckBoxContainer = tempContainer.querySelector(\"#patientRiskLevelSelection\");\n            var createOrderSelectionContainer = tempContainer.querySelector(\"#orderSelection\");\n            if (createHospitalCheckBoxContainer) {\n              createHospitalCheckBoxContainer.addEventListener(\"change\", function (event) {\n                return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n                  var checkboxes;\n                  return _regeneratorRuntime().wrap(function _callee$(_context) {\n                    while (1) switch (_context.prev = _context.next) {\n                      case 0:\n                        checkboxes = createHospitalCheckBoxContainer.querySelectorAll('input[type=\"checkbox\"]');\n                        console.log(\"createHospitalCheckBoxContainer\");\n                        // Empty list of checked hospitals\n                        checkedHospitalIds = [];\n                        // Array to store IDs of checked checkboxes\n                        checkboxes.forEach(function (checkbox) {\n                          // Ensure the checkbox is an HTMLInputElement\n                          var inputCheckbox = checkbox;\n                          // Check if the checkbox is checked and add its ID to the array\n                          if (inputCheckbox.checked) {\n                            checkedHospitalIds.push(inputCheckbox.id);\n                          }\n                        });\n                        // Log all checked hospital IDs\n                        console.log(\"Checked hospitals:\", checkedHospitalIds);\n                        // Future change: Only clear the unitIds for unchecked hospitals!\n                        (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.clearContent)(\"unitSelection\");\n                        (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.loadUnits)(checkedHospitalIds);\n                      case 7:\n                      case \"end\":\n                        return _context.stop();\n                    }\n                  }, _callee);\n                }));\n              });\n            }\n            if (createUnitCheckBoxContainer) {\n              createUnitCheckBoxContainer.addEventListener(\"change\", function (event) {\n                return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n                  var checkboxes;\n                  return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n                    while (1) switch (_context2.prev = _context2.next) {\n                      case 0:\n                        checkboxes = createUnitCheckBoxContainer.querySelectorAll('input[type=\"checkbox\"]');\n                        console.log(\"createUnitCheckBoxContainer\");\n                        // Empty list of checked units\n                        checkedUnitIds = [];\n                        checkboxes.forEach(function (checkbox) {\n                          // Ensure the checkbox is an HTMLInputElement\n                          var inputCheckbox = checkbox;\n                          // Check if the checkbox is checked and add its ID to the array\n                          if (inputCheckbox.checked) {\n                            checkedUnitIds.push(inputCheckbox.id);\n                          }\n                        });\n                        _context2.next = 6;\n                        return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getFilteredImprovementWorks)({\n                          patientRiskLevels: checkedPatientRiskLevels,\n                          nolanStages: checkedNolanStages,\n                          units: checkedUnitIds\n                        });\n                      case 6:\n                        filteredImprovementWorks = _context2.sent;\n                        (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.removeCardsFromDiv)(\"div.projectCardCardDiv\");\n                        getProjects(container, listenersLoaded, filteredImprovementWorks);\n                      case 9:\n                      case \"end\":\n                        return _context2.stop();\n                    }\n                  }, _callee2);\n                }));\n              });\n            }\n            if (createNolanStageCheckBoxContainer) {\n              createNolanStageCheckBoxContainer.addEventListener(\"change\", function (event) {\n                return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n                  var checkboxes;\n                  return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n                    while (1) switch (_context3.prev = _context3.next) {\n                      case 0:\n                        checkboxes = createNolanStageCheckBoxContainer.querySelectorAll('input[type=\"checkbox\"]'); // Empty list of checked hospitals\n                        checkedNolanStages = [];\n                        // Array to store IDs of checked checkboxes\n                        checkboxes.forEach(function (checkbox) {\n                          // Ensure the checkbox is an HTMLInputElement\n                          var inputCheckbox = checkbox;\n                          // Check if the checkbox is checked and add its ID to the array\n                          if (inputCheckbox.checked) {\n                            checkedNolanStages.push(inputCheckbox.id);\n                            checkedNolanStages.push(nolanStageMapping[inputCheckbox.id]);\n                            console.log(\"checkedNolanStages: \", checkedNolanStages);\n                          }\n                        });\n                        _context3.next = 5;\n                        return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getFilteredImprovementWorks)({\n                          patientRiskLevels: checkedPatientRiskLevels,\n                          nolanStages: checkedNolanStages,\n                          units: checkedUnitIds\n                        });\n                      case 5:\n                        filteredImprovementWorks = _context3.sent;\n                        (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.removeCardsFromDiv)(\"div.projectCardCardDiv\");\n                        getProjects(container, listenersLoaded, filteredImprovementWorks);\n                      case 8:\n                      case \"end\":\n                        return _context3.stop();\n                    }\n                  }, _callee3);\n                }));\n              });\n            }\n            if (createPatientRiskLevelCheckBoxContainer) {\n              createPatientRiskLevelCheckBoxContainer.addEventListener(\"change\", function (event) {\n                return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n                  var checkboxes;\n                  return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n                    while (1) switch (_context4.prev = _context4.next) {\n                      case 0:\n                        checkboxes = createPatientRiskLevelCheckBoxContainer.querySelectorAll('input[type=\"checkbox\"]');\n                        console.log(\"createPatientRiskLevelCheckBoxContainer\");\n                        // Empty list of checked hospitals\n                        checkedPatientRiskLevels = [];\n                        // Array to store IDs of checked checkboxes\n                        checkboxes.forEach(function (checkbox) {\n                          // Ensure the checkbox is an HTMLInputElement\n                          var inputCheckbox = checkbox;\n                          // Check if the checkbox is checked and add its ID to the array\n                          if (inputCheckbox.checked) {\n                            checkedPatientRiskLevels.push(inputCheckbox.id);\n                            checkedPatientRiskLevels.push(patientRiskLevelMapping[inputCheckbox.id]);\n                            console.log(\"checkedPatientRiskLevels: \", checkedPatientRiskLevels);\n                          }\n                        });\n                        _context4.next = 6;\n                        return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getFilteredImprovementWorks)({\n                          patientRiskLevels: checkedPatientRiskLevels,\n                          nolanStages: checkedNolanStages,\n                          units: checkedUnitIds\n                        });\n                      case 6:\n                        filteredImprovementWorks = _context4.sent;\n                        (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.removeCardsFromDiv)(\"div.projectCardCardDiv\");\n                        getProjects(container, listenersLoaded, filteredImprovementWorks);\n                      case 9:\n                      case \"end\":\n                        return _context4.stop();\n                    }\n                  }, _callee4);\n                }));\n              });\n            }\n            if (createOrderSelectionContainer) {\n              createOrderSelectionContainer.addEventListener(\"change\", function (event) {\n                return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n                  var inputCheckbox;\n                  return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n                    while (1) switch (_context5.prev = _context5.next) {\n                      case 0:\n                        inputCheckbox = event.target;\n                        ascendingDates = inputCheckbox.checked;\n                        (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.removeCardsFromDiv)(\"div.projectCardCardDiv\");\n                        sortProjects(container, listenersLoaded, ascendingDates);\n                      case 4:\n                      case \"end\":\n                        return _context5.stop();\n                    }\n                  }, _callee5);\n                }));\n              });\n            }\n            if (specificElement) {\n              // Insert the specific element into the target element\n              container.insertBefore(specificElement, container.firstChild);\n            }\n          })[\"catch\"](function (error) {\n            console.error(\"Failed to load the external HTML file:\", error);\n          });\n          _context6.next = 12;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getImprovementWorks)({\n            completed: false\n          });\n        case 12:\n          filteredImprovementWorks = _context6.sent;\n          console.log(\"Filtered improvementWorks: \", filteredImprovementWorks);\n          (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.removeCardsFromDiv)(\"div.projectCardCardDiv\");\n          getProjects(container, listenersLoaded, filteredImprovementWorks);\n          searchBar = document.getElementById(\"searchBarImprovement\");\n          searchBar === null || searchBar === void 0 ? void 0 : searchBar.addEventListener(\"keydown\", function (event) {\n            if (event.key === \"Enter\") {\n              performSearch(searchBar, container);\n            }\n          });\n          console.log(\"Loading hospitals\");\n          (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.clearContent)(\"hospitalSelection\");\n          (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.loadHospitals)();\n          loadNolanStages();\n          loadPatientRiskLevels();\n        case 23:\n        case \"end\":\n          return _context6.stop();\n      }\n    }, _callee6);\n  }));\n}\nfunction loadNolanStages() {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var selectStageHTML, allStages;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          selectStageHTML = $(\"#nolanStageSelection\"); // loads the select type from html\n          allStages = [\"Planera\", \"Göra\", \"Studera\", \"Agera\"];\n          allStages.forEach(function (stage) {\n            var generatedElement = document.createRange().createContextualFragment(\"\\n    <div class=\\\"form-check\\\">\\n      <input class=\\\"form-check-input\\\" type=\\\"checkbox\\\" value=\\\"\\\" id=\\\"\" + stage + \"\\\">\\n      <label class=\\\"form-check-label\\\" for=\\\"flexCheckDefault\\\">\" + stage + \"</label>\\n    </div>\");\n            selectStageHTML.append(generatedElement);\n            console.log(\"Adding HTML for for stage \", stage);\n          });\n        case 3:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7);\n  }));\n}\nfunction loadPatientRiskLevels() {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var selectPatientRiskLevelHTML, allRiskLevels;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          selectPatientRiskLevelHTML = $(\"#patientRiskLevelSelection\"); // loads the select type from html\n          allRiskLevels = [\"Grön\", \"Blå\", \"Gul\", \"Röd\"];\n          allRiskLevels.forEach(function (riskLevel) {\n            var generatedElement = document.createRange().createContextualFragment(\"\\n    <div class=\\\"form-check\\\">\\n      <input class=\\\"form-check-input\\\" type=\\\"checkbox\\\" value=\\\"\\\" id=\\\"\" + riskLevel + \"\\\">\\n      <label class=\\\"form-check-label\\\" for=\\\"flexCheckDefault\\\">Riskniv\\xE5 \" + riskLevel + \"</label>\\n    </div>\");\n            selectPatientRiskLevelHTML.append(generatedElement);\n            console.log(\"Adding HTML for for risk level \", riskLevel);\n          });\n        case 3:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8);\n  }));\n}\nfunction sortProjects(selectElement, listenersLoaded, ascendingDates) {\n  // Sort in reversed order if ascendingDates is true\n  var cardsToIterate = ascendingDates ? _toConsumableArray(projectCards).reverse() : projectCards;\n  // Loop through the saved array of cards and generate HTML for each card\n  var _iterator = _createForOfIteratorHelper(cardsToIterate),\n    _step;\n  try {\n    for (_iterator.s(); !(_step = _iterator.n()).done;) {\n      var card = _step.value;\n      var cardHTML = card.generateHTML();\n      var div = document.createElement(\"div\");\n      div.className = \"projectCardCardDiv\"; // Set the class name(s) here\n      div.innerHTML = cardHTML;\n      if (!selectElement) return;\n      selectElement.appendChild(div); // Stop if the container isn't found\n      addEventListener(card.projectId, card);\n    }\n  } catch (err) {\n    _iterator.e(err);\n  } finally {\n    _iterator.f();\n  }\n}\nfunction getProjects(selectElement, listenersLoaded, improvementWorks) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var _this = this;\n    var id;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          id = 0;\n          projectCards = [];\n          improvementWorks.forEach(function (improvementWork) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n              var title, department, projectLeader, dateStarted, card, cardHTML, div;\n              return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n                while (1) switch (_context9.prev = _context9.next) {\n                  case 0:\n                    title = improvementWork.name;\n                    _context9.next = 3;\n                    return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getObjectById)(\"unit\", improvementWork.unitId);\n                  case 3:\n                    department = _context9.sent;\n                    _context9.next = 6;\n                    return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getImprovementWorkResponsible)(improvementWork.id);\n                  case 6:\n                    projectLeader = _context9.sent;\n                    dateStarted = improvementWork.dateStarted;\n                    if (!department) {\n                      _context9.next = 22;\n                      break;\n                    }\n                    card = new projectCard(id, projectLeader.firstName + \" \" + projectLeader.lastName, department.name, title, improvementWork.content, improvementWork.id, improvementWork.currentStage, dateStarted);\n                    projectCards.push(card);\n                    cardHTML = card.generateHTML();\n                    div = document.createElement(\"div\");\n                    div.className = \"projectCardCardDiv\"; // Set the class name(s) here\n                    div.innerHTML = cardHTML;\n                    if (selectElement) {\n                      _context9.next = 17;\n                      break;\n                    }\n                    return _context9.abrupt(\"return\");\n                  case 17:\n                    selectElement.appendChild(div); // Stop if the container isn't found\n                    addEventListener(improvementWork.id, card);\n                    id++;\n                    _context9.next = 23;\n                    break;\n                  case 22:\n                    console.log(improvementWork.unitId + \" is not a unit\"); //Unit Ids on improvement work that do not exist\n                  case 23:\n                  case \"end\":\n                    return _context9.stop();\n                }\n              }, _callee9);\n            }));\n          });\n        case 3:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10);\n  }));\n}\nfunction addEventListener(projectId, card) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {\n    return _regeneratorRuntime().wrap(function _callee13$(_context13) {\n      while (1) switch (_context13.prev = _context13.next) {\n        case 0:\n          $(\"#ongoingSeeDetailsButton\" + projectId).off(\"click\").on(\"click\", function () {\n            return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {\n              var expandedDiv;\n              return _regeneratorRuntime().wrap(function _callee11$(_context11) {\n                while (1) switch (_context11.prev = _context11.next) {\n                  case 0:\n                    expandedDiv = document.getElementById(\"expandedOngoingWorkCard\" + projectId);\n                    if (expandedDiv && expandedDiv.style.display === \"none\") {\n                      card.showMoreInfo(\"expandedOngoingWorkCard\" + projectId, \"ongoingSeeDetailsButton\" + projectId);\n                    } else {\n                      card.closeMoreInfo(\"expandedOngoingWorkCard\" + projectId, \"ongoingSeeDetailsButton\" + projectId);\n                    }\n                  case 2:\n                  case \"end\":\n                    return _context11.stop();\n                }\n              }, _callee11);\n            }));\n          });\n          $(\"#project-button-\" + projectId).off(\"click\").on(\"click\", function () {\n            return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {\n              var tmp, currentStage;\n              return _regeneratorRuntime().wrap(function _callee12$(_context12) {\n                while (1) switch (_context12.prev = _context12.next) {\n                  case 0:\n                    _context12.next = 2;\n                    return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getObjectById)(\"improvementWork\", projectId);\n                  case 2:\n                    tmp = _context12.sent;\n                    currentStage = tmp.currentStage;\n                    if (currentStage === \"Act\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageA)(projectId);\n                    } else if (currentStage === \"Study\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageS)(projectId);\n                    } else if (currentStage === \"Do\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageG)(projectId);\n                    } else if (currentStage === \"Plan\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageP)(projectId);\n                    } else if (currentStage === \"Finished\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageP)(projectId);\n                    }\n                  case 5:\n                  case \"end\":\n                    return _context12.stop();\n                }\n              }, _callee12);\n            }));\n          });\n          /*$(document).on(\"click\", \"#\" + projectId, async function (event) {\n              let tmp = await getObjectById(\"improvementWork\", projectId);\n              const currentStage = tmp.currentStage;\n              const element = event.target as HTMLElement;\n              if (element.classList.contains(\"moreInfoClass\")) {\n                const expandedDiv = document.getElementById(\n                  \"expandedOngoingWorkCard\" + projectId\n                );\n                if (expandedDiv && expandedDiv.style.display === \"none\") {\n                  card.showMoreInfo(\n                    `expandedOngoingWorkCard` + projectId,\n                    `ongoingSeeDetailsButton` + projectId\n                  );\n                } else {\n                  card.closeMoreInfo(\n                    `expandedOngoingWorkCard` + projectId,\n                    `ongoingSeeDetailsButton` + projectId\n                  );\n                }\n              } else if (element.classList.contains(\"projectButton\") || element.classList.contains(\"toSinglePage\")) {\n                document.removeEventListener(\"click\", event.target);\n                if (currentStage === \"Act\") {\n                  loadProjectPageA(projectId);\n                } else if (currentStage === \"Study\") {\n                  loadProjectPageS(projectId);\n                } else if (currentStage === \"Do\") {\n                  loadProjectPageG(projectId);\n                } else if (currentStage === \"Plan\") {\n                  loadProjectPageP(projectId);\n                } else if (currentStage === \"Finished\") {\n                  loadProjectPageP(projectId);\n                }\n              }\n            });*/\n        case 2:\n        case \"end\":\n          return _context13.stop();\n      }\n    }, _callee13);\n  }));\n}\nvar patientRiskLevelMapping = {\n  Grön: \"Green\",\n  Blå: \"Blue\",\n  Gul: \"Yellow\",\n  Röd: \"Red\"\n};\nvar nolanStageMapping = {\n  Planera: \"Plan\",\n  Göra: \"Do\",\n  Studera: \"Study\",\n  Agera: \"Act\"\n};\nfunction performSearch(searchBar, container) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee14() {\n    var inputValue, query, matchedStage;\n    return _regeneratorRuntime().wrap(function _callee14$(_context14) {\n      while (1) switch (_context14.prev = _context14.next) {\n        case 0:\n          inputValue = searchBar.value; //make first character uppercase\n          inputValue = inputValue.toLowerCase();\n          console.log(\"Search query:\", inputValue);\n          // Remove each element\n          projectCards = [];\n          query = {};\n          query.completed = false;\n          (0,_ideaBank_ideaBank_js__WEBPACK_IMPORTED_MODULE_2__.removeCardsFromDiv)(\"div.projectCardCardDiv\");\n          if (inputValue !== \"\") {\n            matchedStage = Object.keys(nolanStageMapping).find(function (stage) {\n              return stage.toLowerCase().includes(inputValue.toLowerCase());\n            });\n            if (matchedStage) {\n              query.nolanStage = nolanStageMapping[matchedStage];\n            } else {\n              query.name = inputValue;\n            }\n          }\n          _context14.next = 10;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getImprovementWorks)(query);\n        case 10:\n          filteredImprovementWorks = _context14.sent;\n          _context14.next = 13;\n          return getProjects(container, true, filteredImprovementWorks);\n        case 13:\n        case \"end\":\n          return _context14.stop();\n      }\n    }, _callee14);\n  }));\n}\n\n//# sourceURL=webpack://c3/./client/currentProjects/currentProjects.js?");
 
 /***/ }),
 
@@ -266,7 +266,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
   \****************************/
 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   addEventListener: () => (/* binding */ addEventListener),\n/* harmony export */   loadPage: () => (/* binding */ loadPage)\n/* harmony export */ });\n/* harmony import */ var _Database_authentication_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Database/authentication.js */ \"./client/Database/authentication.js\");\n/* harmony import */ var _SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SidebarAndHeader/pageHandler.js */ \"./client/SidebarAndHeader/pageHandler.js\");\n/* harmony import */ var _client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../client/Database/database.js */ \"./client/Database/database.js\");\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\nfunction logoutUser(event) {\n  event.preventDefault();\n  alert(\"logout\");\n  (0,_Database_authentication_js__WEBPACK_IMPORTED_MODULE_0__.logout)();\n}\nvar myIdeaCards = {};\nvar IdeaCard = /*#__PURE__*/function () {\n  function IdeaCard(id, header, department, name, description, upvoteCount, suggestionID) {\n    _classCallCheck(this, IdeaCard);\n    this.header = header;\n    this.department = department;\n    this.name = name;\n    this.description = description;\n    this.upvoteCount = upvoteCount;\n    this.id = id;\n    this.suggestionID = suggestionID;\n  }\n  _createClass(IdeaCard, [{\n    key: \"generateHTML\",\n    value: function generateHTML() {\n      return \"<div class=\\\"totalExpandedIdeaCard\\\">\\n          <div class=\\\"ideaCard\\\">\\n              <div class=\\\"ideaCardBorder\\\">\\n                  <div class=\\\"ideaCardImageHP\\\">\\n                      <img src=\\\"../images/pinkFaded.png\\\" class =\\\"pinkFadedHP\\\" alt=\\\"pinkFaded\\\">\\n                  </div>\\n                  <div class=\\\"ideaCardMiddleText\\\">\\n                      <p id=\\\"ideaCardHeader\\\" class=\\\"ideaCardFont\\\">\".concat(this.header, \"</p>\\n                      <p id=\\\"ideaCardDepartment\\\" class=\\\"ideaCardFont\\\">\").concat(this.department, \"</p>\\n                      <p id=\\\"ideaCardName\\\" class=\\\"ideaCardFont\\\">\").concat(this.name, \"</p>\\n                      <p id=\\\"ideaCardMoreInfo\").concat(this.id, \"\\\" class=\\\"ideaCardFont moreInfoClass\\\"> > Mer information</p>\\n                  </div>\\n              </div>\\n              <div class=\\\"ideaCardUpvotesHP\\\">\\n              <div class=\\\"upvoteDivHP\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"28\\\" height=\\\"28\\\" fill=\\\"currentColor\\\" class=\\\"bi bi-caret-up upvoteSymbol\\\" viewBox=\\\"0 0 16 16\\\">\\n  <path d=\\\"M3.204 11h9.592L8 5.519 3.204 11zm-.753-.659 4.796-5.48a1 1 0 0 1 1.506 0l4.796 5.48c.566.647.106 1.659-.753 1.659H3.204a1 1 0 0 1-.753-1.659z\\\"/>\\n</svg>              <div id =\\\"upvoteNumber\\\" class=\\\"ideaCardFont\\\"> \").concat(this.upvoteCount, \"</div>\\n\\n              </div>\\n          </div>\\n          </div>\\n          <div id=\\\"expandedContent\").concat(this.id, \"\\\" class= \\\"expandedIdeaContent\\\" style =\\\"display : none;\\\">\\n              <div class=\\\"expandedDescriptionText\\\">\\n                  <p class=\\\"ideaCardFont\\\" id=\\\"expandedHeader\\\">Om ideen</p>\\n                  <p id=\\\"expandedDescription\\\">\").concat(this.description, \"</p>\\n              </div>\\n              <div class=\\\"expandedCommentAndButton id = \\\"expandedCommentAndButton\").concat(this.id, \"\\\">\\n                  <div class=\\\"expandedComment\\\">\\n                      <p class=\\\"ideaCardFont\\\">Kommentarer</p>\\n                      <p class=\\\"ideaCardFont\\\">Komment 1</p>\\n                      <p class=\\\"ideaCardFont\\\">K0mment 2</p>\\n                  </div>\\n                  <div class=\\\"expandedButton\\\">\\n                      <button class=\\\"initiateProjectButton\\\" id=\\\"initiateProjectFromCard\").concat(this.suggestionID, \"\\\">Initiera Projekt</button>\\n                  </div>\\n              </div>\\n          </div>\\n      </div>\");\n    }\n  }, {\n    key: \"showMoreInfo\",\n    value: function showMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"flex\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"^ Stäng detaljer\";\n      }\n    }\n  }, {\n    key: \"closeMoreInfo\",\n    value: function closeMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"none\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"> Mer information\";\n      }\n    }\n  }, {\n    key: \"loadInitiatePage\",\n    value: function loadInitiatePage() {\n      alert(\"The initiate project page should now be loaded\");\n    }\n  }]);\n  return IdeaCard;\n}();\nfunction createNewCards(className, container, signedInUserHsaID) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var _this = this;\n    var user, userSuggestions, counter;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          _context2.next = 2;\n          return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getObjectById)(\"users\", signedInUserHsaID);\n        case 2:\n          user = _context2.sent;\n          _context2.next = 5;\n          return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getSuggestions)({\n            creatorHsaId: user.id\n          });\n        case 5:\n          userSuggestions = _context2.sent;\n          //If there exist filter use those instead to get matching suggestions rest should not need to be changed\n          counter = 0;\n          userSuggestions.forEach(function (suggestion) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n              var unit, user;\n              return _regeneratorRuntime().wrap(function _callee$(_context) {\n                while (1) switch (_context.prev = _context.next) {\n                  case 0:\n                    _context.next = 2;\n                    return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getObjectById)(\"unit\", suggestion.unitId);\n                  case 2:\n                    unit = _context.sent;\n                    _context.next = 5;\n                    return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getObjectById)(\"users\", suggestion.creatorHsaId);\n                  case 5:\n                    user = _context.sent;\n                    createNewIdeaCard(suggestion.name, unit.name, user.firstName + \" \" + user.lastName, suggestion.content, suggestion.upvotes.length, className, container, counter, suggestion.id);\n                    counter = counter + 1;\n                  case 8:\n                  case \"end\":\n                    return _context.stop();\n                }\n              }, _callee);\n            }));\n          });\n          addListner(userSuggestions, container);\n        case 9:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2);\n  }));\n}\nfunction addListner(cardArray, element) {\n  element.addEventListener(\"click\", function (event) {\n    var target = event.target;\n    //Adds an eventlistener for the more info of the card\n    if (target && target.className === \"ideaCardFont moreInfoClass\") {\n      var cardId = parseInt(target.id.replace(\"ideaCardMoreInfo\", \"\"), 10);\n      if (cardArray[cardId]) {\n        var card = cardArray[cardId];\n        var expandedDiv = document.getElementById(\"expandedContent\".concat(cardId));\n        console.log(expandedDiv);\n        if (expandedDiv) {\n          if (expandedDiv.style.display === \"none\") {\n            card.showMoreInfo(\"expandedContent\".concat(cardId), \"ideaCardMoreInfo\".concat(cardId));\n          } else {\n            card.closeMoreInfo(\"expandedContent\".concat(cardId), \"ideaCardMoreInfo\".concat(cardId));\n          }\n        } else {\n          console.error(\"Expanded div not found\");\n        }\n      }\n    }\n  });\n}\nfunction createNewIdeaCard(header, department, name, description, upvoteCount, className, container, ID, suggestionID) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var card, cardHTML, div;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          card = new IdeaCard(ID, header, department, name, description, upvoteCount, suggestionID);\n          cardHTML = card.generateHTML();\n          myIdeaCards[ID] = card;\n          div = document.createElement(\"div\");\n          div.className = className; // Set the class name(s) here\n          div.innerHTML = cardHTML;\n          container.appendChild(div);\n        case 7:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3);\n  }));\n}\nfunction loadPage(listenersLoaded) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n    var _this2 = this;\n    var container;\n    return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n      while (1) switch (_context5.prev = _context5.next) {\n        case 0:\n          container = document.querySelector(\"#container-fluid\");\n          if (container) {\n            _context5.next = 3;\n            break;\n          }\n          return _context5.abrupt(\"return\");\n        case 3:\n          // Stop if the container isn't found\n          fetch(\"homePage.html\").then(function (response) {\n            return response.text();\n          }).then(function (data) {\n            return __awaiter(_this2, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n              var tempContainer, specificElement, tmp, user, suggestionContainer, nameHeaderElement, userFullName, projectContainer, departmentContainer, departmentDiv;\n              return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n                while (1) switch (_context4.prev = _context4.next) {\n                  case 0:\n                    // Create a temporary container element to hold the loaded content\n                    tempContainer = document.createElement(\"div\");\n                    tempContainer.innerHTML = data;\n                    // Select the specific element with the class you want\n                    specificElement = tempContainer.querySelector(\".main-content\");\n                    if (specificElement) {\n                      // Insert the specific element into the target element\n                      container.insertBefore(specificElement, container.firstChild);\n                    }\n                    tmp = localStorage.getItem(\"user\");\n                    console.log(tmp);\n                    if (tmp) {\n                      _context4.next = 9;\n                      break;\n                    }\n                    console.log(\"there is not an user in localStorage\");\n                    return _context4.abrupt(\"return\");\n                  case 9:\n                    user = JSON.parse(tmp)[0];\n                    suggestionContainer = document.getElementById(\"suggestion-container\");\n                    if (!suggestionContainer) {\n                      _context4.next = 15;\n                      break;\n                    }\n                    _context4.next = 14;\n                    return createNewCards(\"HomePageIdeaCardDiv\", suggestionContainer, user.id);\n                  case 14:\n                    addListner(myIdeaCards, container);\n                  case 15:\n                    nameHeaderElement = document.getElementById(\"user-name-header\");\n                    userFullName = user.firstName + \" \" + user.lastName;\n                    if (nameHeaderElement) {\n                      nameHeaderElement.textContent = userFullName;\n                    }\n                    projectContainer = document.getElementById(\"project-container\");\n                    if (!projectContainer) {\n                      _context4.next = 22;\n                      break;\n                    }\n                    _context4.next = 22;\n                    return getProjects(projectContainer, listenersLoaded, user.id);\n                  case 22:\n                    console.log(\"innan\");\n                    departmentContainer = document.getElementById(\"department-container\");\n                    departmentDiv = document.getElementById(\"nolanAct\");\n                    if (!(departmentContainer && document.getElementById(\"nolanAct\") && departmentDiv.innerHTML.trim() === \"\")) {\n                      _context4.next = 29;\n                      break;\n                    }\n                    console.log(\"anropar funktionen\");\n                    _context4.next = 29;\n                    return improvementWorkInfo(departmentContainer, user);\n                  case 29:\n                  case \"end\":\n                    return _context4.stop();\n                }\n              }, _callee4);\n            }));\n          })[\"catch\"](function (error) {\n            console.error(\"Failed to load the external HTML file:\", error);\n          });\n        case 4:\n        case \"end\":\n          return _context5.stop();\n      }\n    }, _callee5);\n  }));\n}\nfunction addEventListener(projectId, card) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          $(\"#homepage-\" + projectId).off(\"click\").on(\"click\", function () {\n            return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n              var tmp, currentStage;\n              return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n                while (1) switch (_context6.prev = _context6.next) {\n                  case 0:\n                    _context6.next = 2;\n                    return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getObjectById)(\"improvementWork\", projectId);\n                  case 2:\n                    tmp = _context6.sent;\n                    currentStage = tmp.currentStage;\n                    if (currentStage === \"Act\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageA)(projectId);\n                    } else if (currentStage === \"Study\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageS)(projectId);\n                    } else if (currentStage === \"Do\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageG)(projectId);\n                    } else if (currentStage === \"Plan\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageP)(projectId);\n                    } else if (currentStage === \"Finished\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageP)(projectId);\n                    }\n                  case 5:\n                  case \"end\":\n                    return _context6.stop();\n                }\n              }, _callee6);\n            }));\n          });\n        case 1:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7);\n  }));\n}\nvar patientRiskLevelMapping = {\n  Grön: \"Green\",\n  Blå: \"Blue\",\n  Gul: \"Yellow\",\n  Röd: \"Red\"\n};\nvar nolanStageMapping = {\n  Planera: \"Plan\",\n  Göra: \"Do\",\n  Studera: \"Study\",\n  Agera: \"Act\"\n};\n/*\nasync function performSearch(searchBar: HTMLInputElement, container: HTMLElement) {\n  let inputValue = searchBar.value;\n  //make first character uppercase\n  inputValue = inputValue.toLowerCase();\n  console.log(\"Search query:\", inputValue);\n  // Remove each element\n  projectCards = [];\n\n  let query: { [key: string]: string } = {};\n\n  removeCardsFromDiv(\"div.projectCardCardDiv\");\n    \n  if (inputValue !== \"\") {\n    const matchedStage = Object.keys(nolanStageMapping).find((stage) =>\n      stage.toLowerCase().includes(inputValue.toLowerCase())\n    );\n\n    if (matchedStage) {\n      query.nolanStage = nolanStageMapping[matchedStage];\n    } else {\n      query.name = inputValue;\n    }\n  }\n  filteredImprovementWorks = await getImprovementWorks(query);\n  await getProjects(container, true, filteredImprovementWorks);\n}\n*/\nfunction improvementWorkInfo(departmentContainer, user) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var improvementWorks, improvementWorksPlan, improvementWorksDo, improvementWorkStudy, improvementWorksAct, _iterator, _step, improvementWork, improvementWorkContainer, improvementWorkContainerElement, nolanAct, actElement, nolanPlan, planElement, nolanDo, doElement, nolanStudy, studyElement;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          _context8.next = 2;\n          return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getImprovementWorks)({\n            unitId: user.unitId\n          });\n        case 2:\n          improvementWorks = _context8.sent;\n          console.log(\"i funktionen\");\n          //Count number of improvement works in the department in each stage\n          improvementWorksPlan = 0;\n          improvementWorksDo = 0;\n          improvementWorkStudy = 0;\n          improvementWorksAct = 0;\n          _iterator = _createForOfIteratorHelper(improvementWorks);\n          try {\n            for (_iterator.s(); !(_step = _iterator.n()).done;) {\n              improvementWork = _step.value;\n              if (improvementWork.currentStage == \"Plan\") {\n                improvementWorksPlan += 1;\n              } else if (improvementWork.currentStage == \"Do\") {\n                improvementWorksDo += 1;\n              } else if (improvementWork.currentStage == \"Study\") {\n                improvementWorkStudy += 1;\n              } else if (improvementWork.currentStage == \"Act\") {\n                improvementWorksAct += 1;\n              }\n            }\n          } catch (err) {\n            _iterator.e(err);\n          } finally {\n            _iterator.f();\n          }\n          improvementWorkContainer = document.getElementById(\"numberOfImprovementWorks\"); //Append a div displaying the number of improvement works in the user's department\n          improvementWorkContainerElement = document.createElement(\"p\");\n          improvementWorkContainerElement.innerHTML = \"Antal pågående förbättringsarbeten i din avdelning: \" + improvementWorks.length;\n          if (improvementWorkContainer && improvementWorkContainer.innerHTML.trim() === \"\") {\n            improvementWorkContainer.appendChild(improvementWorkContainerElement);\n          }\n          //Append the text displaying the number of improvement works that are in the stage act\n          nolanAct = document.getElementById(\"nolanAct\");\n          actElement = document.createElement(\"p\");\n          actElement.innerHTML = \"Agera: \" + improvementWorksAct;\n          actElement.style.margin = \"5px\";\n          if (nolanAct) {\n            nolanAct.appendChild(actElement);\n          }\n          //Append the text displaying the number of improvement works that are in the stage plan\n          nolanPlan = document.getElementById(\"nolanPlan\");\n          planElement = document.createElement(\"p\");\n          planElement.innerHTML = \"Planera: \" + improvementWorksPlan;\n          planElement.style.margin = \"5px\";\n          if (nolanPlan) {\n            nolanPlan.appendChild(planElement);\n          }\n          //Append the text displaying the number of improvement works that are in the stage do\n          nolanDo = document.getElementById(\"nolanDo\");\n          doElement = document.createElement(\"p\");\n          doElement.innerHTML = \"Göra: \" + improvementWorksDo;\n          doElement.style.margin = \"5px\";\n          if (nolanDo) {\n            nolanDo.appendChild(doElement);\n          }\n          //Append the text displaying the number of improvement works that are in the stage study\n          nolanStudy = document.getElementById(\"nolanStudy\");\n          studyElement = document.createElement(\"p\");\n          studyElement.innerHTML = \"Studera: \" + improvementWorkStudy;\n          studyElement.style.margin = \"5px\";\n          if (nolanStudy) {\n            nolanStudy.appendChild(studyElement);\n          }\n        case 34:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8);\n  }));\n}\nfunction getProjects(selectElement, listenersLoaded, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var _this3 = this;\n    var data, id;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          _context10.next = 2;\n          return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getImprovementWorksForUser)(userHsaId);\n        case 2:\n          data = _context10.sent;\n          id = 0;\n          data.forEach(function (project) {\n            return __awaiter(_this3, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n              var title, department, name, description, i, card, cardHTML, div;\n              return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n                while (1) switch (_context9.prev = _context9.next) {\n                  case 0:\n                    title = project.name;\n                    _context9.next = 3;\n                    return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getObjectById)(\"unit\", project.unitId);\n                  case 3:\n                    department = _context9.sent;\n                    if (!department) {\n                      _context9.next = 21;\n                      break;\n                    }\n                    name = \"Projektledare\"; //Waiting for backend fix\n                    description = project.content;\n                    i = id;\n                    card = new projectCard(i, name, department.name, title, description, project.id);\n                    projectCards[i] = card;\n                    cardHTML = card.generateHTML();\n                    div = document.createElement(\"div\");\n                    div.className = \"homePageProjectCardDiv\"; // Set the class name(s) here\n                    div.innerHTML = cardHTML;\n                    if (selectElement) {\n                      _context9.next = 16;\n                      break;\n                    }\n                    return _context9.abrupt(\"return\");\n                  case 16:\n                    selectElement.appendChild(div); // Stop if the container isn't found\n                    addEventListener(project.id, card);\n                    id++;\n                    _context9.next = 22;\n                    break;\n                  case 21:\n                    console.log(project.unitId + \" is not a unit\"); //Unit Ids on improvement work that do not exist\n                  case 22:\n                  case \"end\":\n                    return _context9.stop();\n                }\n              }, _callee9);\n            }));\n          });\n        case 5:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10);\n  }));\n}\nvar projectCards = {};\nvar projectCard = /*#__PURE__*/function () {\n  function projectCard(id, name, department, title, description, projectId) {\n    _classCallCheck(this, projectCard);\n    this.name = name;\n    this.department = department;\n    this.title = title;\n    this.description = description;\n    this.id = id;\n    this.projectId = projectId;\n  }\n  _createClass(projectCard, [{\n    key: \"showMoreInfo\",\n    value: function showMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"flex\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"^ Stäng detaljer\";\n      }\n    }\n  }, {\n    key: \"closeMoreInfo\",\n    value: function closeMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"none\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"> Mer information\";\n      }\n    }\n  }, {\n    key: \"loadInitiatePage\",\n    value: function loadInitiatePage() {\n      alert(\"The initiate project page should now be loaded\");\n    }\n  }, {\n    key: \"generateHTML\",\n    value: function generateHTML() {\n      return \"<div class=\\\"homeTotalExpandedOngoingWorkCard\\\">\\n        <div style=\\\"cursor: pointer;\\\" class=\\\"flex-container ongoingCard\\\" id=\\\"homepage-\".concat(this.projectId, \"\\\">\\n            <div class=\\\"ongoingCardImageContainer toSinglePage\\\">\\n                <div class = \\\"flex-box ongoingCardImage toSinglePage\\\" id=\\\"pinkFaded\\\"></div>\\n            </div>\\n            <div class=\\\"div ongoingCardInfo toSinglePage\\\">\\n                <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardManager\\\">\").concat(this.name, \"</p>\\n                <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardDepartment\\\">\").concat(this.department, \"</p>\\n                <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardIdeaTitle\\\">\").concat(this.title, \"</p>\\n            </div>\\n\\n            <!--<button id=\\\"homepage-project-button-\").concat(this.projectId, \"\\\" data-project-id=\\\"\").concat(this.id, \"\\\" class=\\\"projectButton\\\" role=\\\"button\\\">G\\xE5 till projektsidan</button>-->\\n\\n\\n            <div class=\\\"container ongoingSeeCardDetails toSinglePage\\\">\\n                <div class=\\\"ongoingSeeCardDetailsInner\\\">\\n                    \\n                </div>\\n            </div>\\n        </div> \\n        <div class = \\\"expandedOngoingWorkCard\\\" id=\\\"homepage-expandedOngoingWorkCard\").concat(this.projectId, \"\\\" style=\\\"display: none;\\\">\\n            <div class =\\\"homepage-expandedTextOngoingWorkCard\\\">\\n            \").concat(this.description, \"\\n            </div>\\n        </div>\\n        </div> \");\n    }\n  }]);\n  return projectCard;\n}(); //<p id=\"homepage-ongoingSeeDetailsButton${this.projectId}\" class = \"moreInfoClass\">> Mer information</p>\n\n//# sourceURL=webpack://c3/./client/homePage.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   addEventListener: () => (/* binding */ addEventListener),\n/* harmony export */   loadPage: () => (/* binding */ loadPage)\n/* harmony export */ });\n/* harmony import */ var _Database_authentication_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Database/authentication.js */ \"./client/Database/authentication.js\");\n/* harmony import */ var _SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SidebarAndHeader/pageHandler.js */ \"./client/SidebarAndHeader/pageHandler.js\");\n/* harmony import */ var _client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../client/Database/database.js */ \"./client/Database/database.js\");\n/* harmony import */ var _projectPage_projectPage_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./projectPage/projectPage.js */ \"./client/projectPage/projectPage.js\");\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n\nfunction logoutUser(event) {\n  event.preventDefault();\n  alert(\"logout\");\n  (0,_Database_authentication_js__WEBPACK_IMPORTED_MODULE_0__.logout)();\n}\nvar myIdeaCards = {};\nvar IdeaCard = /*#__PURE__*/function () {\n  function IdeaCard(id, header, department, name, description, upvoteCount, suggestionID) {\n    _classCallCheck(this, IdeaCard);\n    this.header = header;\n    this.department = department;\n    this.name = name;\n    this.description = description;\n    this.upvoteCount = upvoteCount;\n    this.id = id;\n    this.suggestionID = suggestionID;\n  }\n  _createClass(IdeaCard, [{\n    key: \"generateHTML\",\n    value: function generateHTML() {\n      return \"<div class=\\\"totalExpandedIdeaCard\\\">\\n          <div class=\\\"ideaCard\\\">\\n              <div class=\\\"ideaCardBorder\\\">\\n                  <div class=\\\"ideaCardImageHP\\\">\\n                      <img src=\\\"../images/pinkFaded.png\\\" class =\\\"pinkFadedHP\\\" alt=\\\"pinkFaded\\\">\\n                  </div>\\n                  <div class=\\\"ideaCardMiddleText\\\">\\n                      <p id=\\\"ideaCardHeader\\\" class=\\\"ideaCardFont\\\">\".concat(this.header, \"</p>\\n                      <p id=\\\"ideaCardDepartment\\\" class=\\\"ideaCardFont\\\">\").concat(this.department, \"</p>\\n                      <p id=\\\"ideaCardName\\\" class=\\\"ideaCardFont\\\">\").concat(this.name, \"</p>\\n                      <p id=\\\"ideaCardMoreInfo\").concat(this.id, \"\\\" class=\\\"ideaCardFont moreInfoClass\\\"> > Mer information</p>\\n                  </div>\\n              </div>\\n              <div class=\\\"ideaCardUpvotesHP\\\">\\n              <div class=\\\"upvoteDivHP\\\">\\n              <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"28\\\" height=\\\"28\\\" fill=\\\"currentColor\\\" class=\\\"bi bi-caret-up upvoteSymbol\\\" viewBox=\\\"0 0 16 16\\\">\\n  <path d=\\\"M3.204 11h9.592L8 5.519 3.204 11zm-.753-.659 4.796-5.48a1 1 0 0 1 1.506 0l4.796 5.48c.566.647.106 1.659-.753 1.659H3.204a1 1 0 0 1-.753-1.659z\\\"/>\\n</svg>              <div id =\\\"upvoteNumber\\\" class=\\\"ideaCardFont\\\"> \").concat(this.upvoteCount, \"</div>\\n\\n              </div>\\n          </div>\\n          </div>\\n          <div id=\\\"expandedContent\").concat(this.id, \"\\\" class= \\\"expandedIdeaContent\\\" style =\\\"display : none;\\\">\\n              <div class=\\\"expandedDescriptionText\\\">\\n                  <p class=\\\"ideaCardFont\\\" id=\\\"expandedHeader\\\">Om ideen</p>\\n                  <p id=\\\"expandedDescription\\\">\").concat(this.description, \"</p>\\n              </div>\\n              <div class=\\\"expandedCommentAndButton id = \\\"expandedCommentAndButton\").concat(this.id, \"\\\">\\n                  <div class=\\\"expandedComment\\\">\\n                      <p class=\\\"ideaCardFont\\\">Kommentarer</p>\\n                      <p class=\\\"ideaCardFont\\\">Komment 1</p>\\n                      <p class=\\\"ideaCardFont\\\">K0mment 2</p>\\n                  </div>\\n                  <div class=\\\"expandedButton\\\">\\n                      <button class=\\\"initiateProjectButton\\\" id=\\\"initiateProjectFromCard\").concat(this.suggestionID, \"\\\">Initiera Projekt</button>\\n                  </div>\\n              </div>\\n          </div>\\n      </div>\");\n    }\n  }, {\n    key: \"showMoreInfo\",\n    value: function showMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"flex\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"^ Stäng detaljer\";\n      }\n    }\n  }, {\n    key: \"closeMoreInfo\",\n    value: function closeMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"none\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"> Mer information\";\n      }\n    }\n  }, {\n    key: \"loadInitiatePage\",\n    value: function loadInitiatePage() {\n      alert(\"The initiate project page should now be loaded\");\n    }\n  }]);\n  return IdeaCard;\n}();\nfunction createNewCards(className, container, signedInUserHsaID) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var _this = this;\n    var user, userSuggestions, counter;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          _context2.next = 2;\n          return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getObjectById)(\"users\", signedInUserHsaID);\n        case 2:\n          user = _context2.sent;\n          _context2.next = 5;\n          return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getSuggestions)({\n            creatorHsaId: user.id\n          });\n        case 5:\n          userSuggestions = _context2.sent;\n          //If there exist filter use those instead to get matching suggestions rest should not need to be changed\n          counter = 0;\n          userSuggestions.forEach(function (suggestion) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n              var unit, user;\n              return _regeneratorRuntime().wrap(function _callee$(_context) {\n                while (1) switch (_context.prev = _context.next) {\n                  case 0:\n                    _context.next = 2;\n                    return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getObjectById)(\"unit\", suggestion.unitId);\n                  case 2:\n                    unit = _context.sent;\n                    _context.next = 5;\n                    return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getObjectById)(\"users\", suggestion.creatorHsaId);\n                  case 5:\n                    user = _context.sent;\n                    createNewIdeaCard(suggestion.name, unit.name, user.firstName + \" \" + user.lastName, suggestion.content, suggestion.upvotes.length, className, container, counter, suggestion.id);\n                    counter = counter + 1;\n                  case 8:\n                  case \"end\":\n                    return _context.stop();\n                }\n              }, _callee);\n            }));\n          });\n          addListner(userSuggestions, container);\n        case 9:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2);\n  }));\n}\nfunction addListner(cardArray, element) {\n  element.addEventListener(\"click\", function (event) {\n    var target = event.target;\n    //Adds an eventlistener for the more info of the card\n    if (target && target.className === \"ideaCardFont moreInfoClass\") {\n      var cardId = parseInt(target.id.replace(\"ideaCardMoreInfo\", \"\"), 10);\n      if (cardArray[cardId]) {\n        var card = cardArray[cardId];\n        var expandedDiv = document.getElementById(\"expandedContent\".concat(cardId));\n        console.log(expandedDiv);\n        if (expandedDiv) {\n          if (expandedDiv.style.display === \"none\") {\n            card.showMoreInfo(\"expandedContent\".concat(cardId), \"ideaCardMoreInfo\".concat(cardId));\n          } else {\n            card.closeMoreInfo(\"expandedContent\".concat(cardId), \"ideaCardMoreInfo\".concat(cardId));\n          }\n        } else {\n          console.error(\"Expanded div not found\");\n        }\n      }\n    }\n  });\n}\nfunction createNewIdeaCard(header, department, name, description, upvoteCount, className, container, ID, suggestionID) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var card, cardHTML, div;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          card = new IdeaCard(ID, header, department, name, description, upvoteCount, suggestionID);\n          cardHTML = card.generateHTML();\n          myIdeaCards[ID] = card;\n          div = document.createElement(\"div\");\n          div.className = className; // Set the class name(s) here\n          div.innerHTML = cardHTML;\n          container.appendChild(div);\n        case 7:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3);\n  }));\n}\nfunction loadPage(listenersLoaded) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n    var _this2 = this;\n    var container;\n    return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n      while (1) switch (_context5.prev = _context5.next) {\n        case 0:\n          container = document.querySelector(\"#container-fluid\");\n          if (container) {\n            _context5.next = 3;\n            break;\n          }\n          return _context5.abrupt(\"return\");\n        case 3:\n          // Stop if the container isn't found\n          fetch(\"homePage.html\").then(function (response) {\n            return response.text();\n          }).then(function (data) {\n            return __awaiter(_this2, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n              var tempContainer, specificElement, tmp, user, suggestionContainer, nameHeaderElement, userFullName, projectContainer, departmentContainer, departmentDiv;\n              return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n                while (1) switch (_context4.prev = _context4.next) {\n                  case 0:\n                    // Create a temporary container element to hold the loaded content\n                    tempContainer = document.createElement(\"div\");\n                    tempContainer.innerHTML = data;\n                    // Select the specific element with the class you want\n                    specificElement = tempContainer.querySelector(\".main-content\");\n                    if (specificElement) {\n                      // Insert the specific element into the target element\n                      container.insertBefore(specificElement, container.firstChild);\n                    }\n                    tmp = localStorage.getItem(\"user\");\n                    console.log(tmp);\n                    if (tmp) {\n                      _context4.next = 9;\n                      break;\n                    }\n                    console.log(\"there is not an user in localStorage\");\n                    return _context4.abrupt(\"return\");\n                  case 9:\n                    user = JSON.parse(tmp)[0];\n                    suggestionContainer = document.getElementById(\"suggestion-container\");\n                    if (!suggestionContainer) {\n                      _context4.next = 15;\n                      break;\n                    }\n                    _context4.next = 14;\n                    return createNewCards(\"HomePageIdeaCardDiv\", suggestionContainer, user.id);\n                  case 14:\n                    addListner(myIdeaCards, container);\n                  case 15:\n                    nameHeaderElement = document.getElementById(\"user-name-header\");\n                    userFullName = user.firstName + \" \" + user.lastName;\n                    if (nameHeaderElement) {\n                      nameHeaderElement.textContent = userFullName;\n                    }\n                    projectContainer = document.getElementById(\"project-container\");\n                    if (!projectContainer) {\n                      _context4.next = 22;\n                      break;\n                    }\n                    _context4.next = 22;\n                    return getProjects(projectContainer, listenersLoaded, user.id);\n                  case 22:\n                    console.log(\"innan\");\n                    departmentContainer = document.getElementById(\"department-container\");\n                    departmentDiv = document.getElementById(\"nolanAct\");\n                    if (!(departmentContainer && document.getElementById(\"nolanAct\") && departmentDiv.innerHTML.trim() === \"\")) {\n                      _context4.next = 29;\n                      break;\n                    }\n                    console.log(\"anropar funktionen\");\n                    _context4.next = 29;\n                    return improvementWorkInfo(departmentContainer, user);\n                  case 29:\n                  case \"end\":\n                    return _context4.stop();\n                }\n              }, _callee4);\n            }));\n          })[\"catch\"](function (error) {\n            console.error(\"Failed to load the external HTML file:\", error);\n          });\n        case 4:\n        case \"end\":\n          return _context5.stop();\n      }\n    }, _callee5);\n  }));\n}\nfunction addEventListener(projectId, card) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          $(\"#homepage-\" + projectId).off(\"click\").on(\"click\", function () {\n            return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n              var tmp, currentStage;\n              return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n                while (1) switch (_context6.prev = _context6.next) {\n                  case 0:\n                    _context6.next = 2;\n                    return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getObjectById)(\"improvementWork\", projectId);\n                  case 2:\n                    tmp = _context6.sent;\n                    currentStage = tmp.currentStage;\n                    if (currentStage === \"Act\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageA)(projectId);\n                    } else if (currentStage === \"Study\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageS)(projectId);\n                    } else if (currentStage === \"Do\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageG)(projectId);\n                    } else if (currentStage === \"Plan\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageP)(projectId);\n                    } else if (currentStage === \"Finished\") {\n                      (0,_SidebarAndHeader_pageHandler_js__WEBPACK_IMPORTED_MODULE_1__.loadProjectPageP)(projectId);\n                    }\n                  case 5:\n                  case \"end\":\n                    return _context6.stop();\n                }\n              }, _callee6);\n            }));\n          });\n        case 1:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7);\n  }));\n}\nvar patientRiskLevelMapping = {\n  Grön: \"Green\",\n  Blå: \"Blue\",\n  Gul: \"Yellow\",\n  Röd: \"Red\"\n};\nvar nolanStageMapping = {\n  Planera: \"Plan\",\n  Göra: \"Do\",\n  Studera: \"Study\",\n  Agera: \"Act\"\n};\n/*\nasync function performSearch(searchBar: HTMLInputElement, container: HTMLElement) {\n  let inputValue = searchBar.value;\n  //make first character uppercase\n  inputValue = inputValue.toLowerCase();\n  console.log(\"Search query:\", inputValue);\n  // Remove each element\n  projectCards = [];\n\n  let query: { [key: string]: string } = {};\n\n  removeCardsFromDiv(\"div.projectCardCardDiv\");\n    \n  if (inputValue !== \"\") {\n    const matchedStage = Object.keys(nolanStageMapping).find((stage) =>\n      stage.toLowerCase().includes(inputValue.toLowerCase())\n    );\n\n    if (matchedStage) {\n      query.nolanStage = nolanStageMapping[matchedStage];\n    } else {\n      query.name = inputValue;\n    }\n  }\n  filteredImprovementWorks = await getImprovementWorks(query);\n  await getProjects(container, true, filteredImprovementWorks);\n}\n*/\nfunction improvementWorkInfo(departmentContainer, user) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var improvementWorks, improvementWorksPlan, improvementWorksDo, improvementWorkStudy, improvementWorksAct, _iterator, _step, improvementWork, improvementWorkContainer, improvementWorkContainerElement, nolanAct, actElement, nolanPlan, planElement, nolanDo, doElement, nolanStudy, studyElement;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          _context8.next = 2;\n          return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getImprovementWorks)({\n            unitId: user.unitId\n          });\n        case 2:\n          improvementWorks = _context8.sent;\n          console.log(\"i funktionen\");\n          //Count number of improvement works in the department in each stage\n          improvementWorksPlan = 0;\n          improvementWorksDo = 0;\n          improvementWorkStudy = 0;\n          improvementWorksAct = 0;\n          _iterator = _createForOfIteratorHelper(improvementWorks);\n          try {\n            for (_iterator.s(); !(_step = _iterator.n()).done;) {\n              improvementWork = _step.value;\n              if (improvementWork.currentStage == \"Plan\") {\n                improvementWorksPlan += 1;\n              } else if (improvementWork.currentStage == \"Do\") {\n                improvementWorksDo += 1;\n              } else if (improvementWork.currentStage == \"Study\") {\n                improvementWorkStudy += 1;\n              } else if (improvementWork.currentStage == \"Act\") {\n                improvementWorksAct += 1;\n              }\n            }\n          } catch (err) {\n            _iterator.e(err);\n          } finally {\n            _iterator.f();\n          }\n          improvementWorkContainer = document.getElementById(\"numberOfImprovementWorks\"); //Append a div displaying the number of improvement works in the user's department\n          improvementWorkContainerElement = document.createElement(\"p\");\n          improvementWorkContainerElement.innerHTML = \"Antal pågående förbättringsarbeten i din avdelning: \" + improvementWorks.length;\n          if (improvementWorkContainer && improvementWorkContainer.innerHTML.trim() === \"\") {\n            improvementWorkContainer.appendChild(improvementWorkContainerElement);\n          }\n          //Append the text displaying the number of improvement works that are in the stage act\n          nolanAct = document.getElementById(\"nolanAct\");\n          actElement = document.createElement(\"p\");\n          actElement.innerHTML = \"Agera: \" + improvementWorksAct;\n          actElement.style.margin = \"5px\";\n          if (nolanAct) {\n            nolanAct.appendChild(actElement);\n          }\n          //Append the text displaying the number of improvement works that are in the stage plan\n          nolanPlan = document.getElementById(\"nolanPlan\");\n          planElement = document.createElement(\"p\");\n          planElement.innerHTML = \"Planera: \" + improvementWorksPlan;\n          planElement.style.margin = \"5px\";\n          if (nolanPlan) {\n            nolanPlan.appendChild(planElement);\n          }\n          //Append the text displaying the number of improvement works that are in the stage do\n          nolanDo = document.getElementById(\"nolanDo\");\n          doElement = document.createElement(\"p\");\n          doElement.innerHTML = \"Göra: \" + improvementWorksDo;\n          doElement.style.margin = \"5px\";\n          if (nolanDo) {\n            nolanDo.appendChild(doElement);\n          }\n          //Append the text displaying the number of improvement works that are in the stage study\n          nolanStudy = document.getElementById(\"nolanStudy\");\n          studyElement = document.createElement(\"p\");\n          studyElement.innerHTML = \"Studera: \" + improvementWorkStudy;\n          studyElement.style.margin = \"5px\";\n          if (nolanStudy) {\n            nolanStudy.appendChild(studyElement);\n          }\n        case 34:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8);\n  }));\n}\nfunction getProjects(selectElement, listenersLoaded, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var _this3 = this;\n    var data, id;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          _context10.next = 2;\n          return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getImprovementWorksForUser)(userHsaId);\n        case 2:\n          data = _context10.sent;\n          id = 0;\n          data.forEach(function (project) {\n            return __awaiter(_this3, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n              var title, department, name, description, i, card, cardHTML, div;\n              return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n                while (1) switch (_context9.prev = _context9.next) {\n                  case 0:\n                    title = project.name;\n                    _context9.next = 3;\n                    return (0,_client_Database_database_js__WEBPACK_IMPORTED_MODULE_2__.getObjectById)(\"unit\", project.unitId);\n                  case 3:\n                    department = _context9.sent;\n                    if (!department) {\n                      _context9.next = 21;\n                      break;\n                    }\n                    name = \"Projektledare\"; //Waiting for backend fix\n                    description = project.content;\n                    i = id;\n                    card = new projectCard(i, name, department.name, title, description, project.id, project.dateStarted);\n                    projectCards[i] = card;\n                    cardHTML = card.generateHTML();\n                    div = document.createElement(\"div\");\n                    div.className = \"homePageProjectCardDiv\"; // Set the class name(s) here\n                    div.innerHTML = cardHTML;\n                    if (selectElement) {\n                      _context9.next = 16;\n                      break;\n                    }\n                    return _context9.abrupt(\"return\");\n                  case 16:\n                    selectElement.appendChild(div); // Stop if the container isn't found\n                    addEventListener(project.id, card);\n                    id++;\n                    _context9.next = 22;\n                    break;\n                  case 21:\n                    console.log(project.unitId + \" is not a unit\"); //Unit Ids on improvement work that do not exist\n                  case 22:\n                  case \"end\":\n                    return _context9.stop();\n                }\n              }, _callee9);\n            }));\n          });\n        case 5:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10);\n  }));\n}\nvar projectCards = {};\nvar projectCard = /*#__PURE__*/function () {\n  function projectCard(id, name, department, title, description, projectId, dateStarted) {\n    _classCallCheck(this, projectCard);\n    this.name = name;\n    this.department = department;\n    this.title = title;\n    this.description = description;\n    this.id = id;\n    this.projectId = projectId;\n    this.dateStarted = dateStarted;\n  }\n  _createClass(projectCard, [{\n    key: \"showMoreInfo\",\n    value: function showMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"flex\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"^ Stäng detaljer\";\n      }\n    }\n  }, {\n    key: \"closeMoreInfo\",\n    value: function closeMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"none\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"> Mer information\";\n      }\n    }\n  }, {\n    key: \"loadInitiatePage\",\n    value: function loadInitiatePage() {\n      alert(\"The initiate project page should now be loaded\");\n    }\n  }, {\n    key: \"generateHTML\",\n    value: function generateHTML() {\n      return \"<div class=\\\"homeTotalExpandedOngoingWorkCard\\\">\\n        <div style=\\\"cursor: pointer;\\\" class=\\\"flex-container ongoingCard\\\" id=\\\"homepage-\".concat(this.projectId, \"\\\">\\n            <div class=\\\"ongoingCardImageContainer toSinglePage\\\">\\n                <div class = \\\"flex-box ongoingCardImage toSinglePage\\\" id=\\\"pinkFaded\\\"></div>\\n            </div>\\n            <div class=\\\"div ongoingCardInfo toSinglePage\\\">\\n                <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardManager\\\">\").concat(this.name, \"</p>\\n                <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardDepartment\\\">\").concat(this.department, \"</p>\\n                <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardIdeaTitle\\\">\").concat(this.title, \"</p>\\n                <p class=\\\"toSinglePage\\\" id=\\\"ongoingCardStartDate\\\" style=\\\"font-size: 12px;\\\"> \").concat((0,_projectPage_projectPage_js__WEBPACK_IMPORTED_MODULE_3__.formatDate)(this.dateStarted), \"</p>\\n            </div>\\n\\n            <!--<button id=\\\"homepage-project-button-\").concat(this.projectId, \"\\\" data-project-id=\\\"\").concat(this.id, \"\\\" class=\\\"projectButton\\\" role=\\\"button\\\">G\\xE5 till projektsidan</button>-->\\n\\n\\n            <div class=\\\"container ongoingSeeCardDetails toSinglePage\\\">\\n                <div class=\\\"ongoingSeeCardDetailsInner\\\">\\n                    \\n                </div>\\n            </div>\\n        </div> \\n        <div class = \\\"expandedOngoingWorkCard\\\" id=\\\"homepage-expandedOngoingWorkCard\").concat(this.projectId, \"\\\" style=\\\"display: none;\\\">\\n            <div class =\\\"homepage-expandedTextOngoingWorkCard\\\">\\n            \").concat(this.description, \"\\n            </div>\\n        </div>\\n        </div> \");\n    }\n  }]);\n  return projectCard;\n}(); //<p id=\"homepage-ongoingSeeDetailsButton${this.projectId}\" class = \"moreInfoClass\">> Mer information</p>\n\n//# sourceURL=webpack://c3/./client/homePage.js?");
 
 /***/ }),
 
@@ -276,7 +276,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
   \*************************************/
 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   clearContent: () => (/* binding */ clearContent),\n/* harmony export */   loadHospitals: () => (/* binding */ loadHospitals),\n/* harmony export */   loadPage: () => (/* binding */ loadPage),\n/* harmony export */   loadUnits: () => (/* binding */ loadUnits),\n/* harmony export */   removeCardsFromDiv: () => (/* binding */ removeCardsFromDiv),\n/* harmony export */   testFunc: () => (/* binding */ testFunc)\n/* harmony export */ });\n/* harmony import */ var _Database_database_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Database/database.js */ \"./client/Database/database.js\");\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n//import {loadInitiatePage} from \"../SidebarAndHeader/pageHandler.js\";\nvar myIdeaCards = {};\n// Initialize filtered suggestions as empty array (potentially change to get all suggestions\nvar filteredSuggestions = [];\nvar IdeaCard = /*#__PURE__*/function () {\n  function IdeaCard(id, header, department, name, description, upvoteCount, suggestionID) {\n    _classCallCheck(this, IdeaCard);\n    this.header = header;\n    this.department = department;\n    this.name = name;\n    this.description = description;\n    this.upvoteCount = upvoteCount;\n    this.id = id;\n    this.suggestionID = suggestionID;\n  }\n  // <img src=\"images/upvoteIcon.png\" class =\"upvoteIcon\" alt=\"upvoteIcon\">\n  _createClass(IdeaCard, [{\n    key: \"addUpvote\",\n    value: function addUpvote() {\n      return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n        var tmp, user, suggestion;\n        return _regeneratorRuntime().wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              tmp = localStorage.getItem(\"user\");\n              if (tmp) {\n                _context.next = 4;\n                break;\n              }\n              console.log(\"there is not an user in localStorage\");\n              return _context.abrupt(\"return\");\n            case 4:\n              user = JSON.parse(tmp)[0];\n              _context.next = 7;\n              return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.upvoteSuggestion)(this.suggestionID, user.id);\n            case 7:\n              _context.next = 9;\n              return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({\n                id: this.suggestionID\n              });\n            case 9:\n              suggestion = _context.sent;\n              this.upvoteCount = suggestion[0].upvotes.length;\n              return _context.abrupt(\"return\", suggestion[0].upvotes.length);\n            case 12:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this);\n      }));\n    }\n  }, {\n    key: \"generateHTML\",\n    value: function generateHTML() {\n      return \"<div class=\\\"totalExpandedIdeaCard\\\">\\n          <div class=\\\"ideaCard\\\">\\n              <div class=\\\"ideaCardBorder\\\">\\n                  <div class=\\\"ideaCardImage\\\">\\n                      <img src=\\\"../images/pinkFaded.png\\\" class =\\\"pinkFaded\\\" alt=\\\"pinkFaded\\\">\\n                  </div>\\n                  <div class=\\\"ideaCardMiddleText\\\">\\n                      <p id=\\\"ideaCardHeader\\\" class=\\\"ideaCardFont\\\">\".concat(this.header, \"</p>\\n                      <p id=\\\"ideaCardDepartment\\\" class=\\\"ideaCardFont\\\">\").concat(this.department, \"</p>\\n                      <p id=\\\"ideaCardName\\\" class=\\\"ideaCardFont\\\">\").concat(this.name, \"</p>\\n                      <p id=\\\"ideaCardMoreInfo\").concat(this.id, \"\\\" class=\\\"ideaCardFont moreInfoClass\\\"> > Mer information</p>\\n                  </div>\\n                  <div class=\\\"ideaCardUpvotes\\\">\\n                  <div class=\\\"upvoteDiv\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"28\\\" id = \\\"upvoteIconPic\").concat(this.id, \"\\\" height=\\\"28\\\" fill=\\\"currentColor\\\" class=\\\"bi bi-caret-up upvoteSymbol\\\" viewBox=\\\"0 0 16 16\\\">\\n  <path d=\\\"M3.204 11h9.592L8 5.519 3.204 11zm-.753-.659 4.796-5.48a1 1 0 0 1 1.506 0l4.796 5.48c.566.647.106 1.659-.753 1.659H3.204a1 1 0 0 1-.753-1.659z\\\"/>\\n</svg>                  <div id =\\\"upvoteNumber\").concat(this.id, \"\\\" class=\\\"ideaCardFont upvoteNumber\\\" >\").concat(this.upvoteCount, \"</div>\\n\\n                  </div>\\n              </div>\\n              </div>\\n    \\n          </div>\\n          <div id=\\\"expandedContent\").concat(this.id, \"\\\" class= \\\"expandedIdeaContent\\\" style =\\\"display : none;\\\">\\n              <div class=\\\"expandedDescriptionText\\\">\\n                  <p class=\\\"ideaCardFontComments\\\" id=\\\"expandedHeader\\\">Om ideen</p>\\n                  <p class=\\\"ideaCardFont\\\" id=\\\"expandedDescription\\\">\").concat(this.description, \"</p>\\n              </div>\\n              <div class=\\\"expandedCommentAndButton id = \\\"expandedCommentAndButton\").concat(this.id, \"\\\">\\n                  <div class=\\\"expandedComment\\\">\\n                      <p  class=\\\"ideaCardFontComments\\\">Kommentarer</p>\\n                      <p  class=\\\"ideaCardFont\\\">Komment 7</p>\\n                      <p  class=\\\"ideaCardFont\\\">Komment 2</p>\\n                  </div>\\n\\n                  <div class=\\\"expandedButton\\\">\\n                      <button class=\\\"initiateProjectButton\\\" id=\\\"initiateProjectFromCard\").concat(this.suggestionID, \"\\\">Initiera f\\xF6rb\\xE4ttringsf\\xF6rslag</button>\\n                  </div>\\n              </div>\\n          </div>\\n      </div>\");\n    }\n  }, {\n    key: \"showMoreInfo\",\n    value: function showMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"flex\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"^ Stäng detaljer\";\n      }\n    }\n  }, {\n    key: \"closeMoreInfo\",\n    value: function closeMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"none\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"> Mer information\";\n      }\n    }\n  }, {\n    key: \"loadInitiatePage\",\n    value: function loadInitiatePage() {\n      alert(\"The initiate project page should now be loaded\");\n      window.location.href = '../client/projectPage/projectPageP.html';\n    }\n  }]);\n  return IdeaCard;\n}();\nfunction createNewCards(className, container, suggestions) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var _this = this;\n    var counter;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          counter = 1;\n          suggestions.forEach(function (suggestion) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n              var unit, user;\n              return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n                while (1) switch (_context2.prev = _context2.next) {\n                  case 0:\n                    _context2.next = 2;\n                    return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getObjectById)(\"unit\", suggestion.unitId);\n                  case 2:\n                    unit = _context2.sent;\n                    _context2.next = 5;\n                    return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getObjectById)(\"users\", suggestion.creatorHsaId);\n                  case 5:\n                    user = _context2.sent;\n                    console.log(suggestion);\n                    createNewIdeaCard(suggestion.name, unit.name, user.firstName + \" \" + user.lastName, suggestion.content, suggestion.upvotes.length, className, container, counter, suggestion.id);\n                    counter = counter + 1;\n                  case 9:\n                  case \"end\":\n                    return _context2.stop();\n                }\n              }, _callee2);\n            }));\n          });\n        case 2:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3);\n  }));\n}\nfunction createNewIdeaCard(header, department, name, description, upvoteCount, className, container, ID, suggestionID) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n    var card, cardHTML, div;\n    return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n      while (1) switch (_context4.prev = _context4.next) {\n        case 0:\n          card = new IdeaCard(ID, header, department, name, description, upvoteCount, suggestionID);\n          cardHTML = card.generateHTML();\n          myIdeaCards[ID] = card;\n          div = document.createElement(\"div\");\n          div.className = className; // Set the class name(s) here\n          div.innerHTML = cardHTML;\n          container.appendChild(div);\n        case 7:\n        case \"end\":\n          return _context4.stop();\n      }\n    }, _callee4);\n  }));\n}\nfunction testFunc() {\n  console.log(\"Test func works\");\n}\nfunction loadPage() {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var container, scriptElement, checkedHospitalIds, checkedUnitIds, searchBar;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          container = document.querySelector(\"#container-fluid\");\n          if (container) {\n            _context7.next = 3;\n            break;\n          }\n          return _context7.abrupt(\"return\");\n        case 3:\n          // Stop if the container isn't found\n          scriptElement = document.createElement(\"script\");\n          scriptElement.src = \"../dist/ideaBank.bundle.js\";\n          container.appendChild(scriptElement);\n          // Initialize empty lists of checked hospital and unit ids\n          checkedHospitalIds = [];\n          checkedUnitIds = [];\n          fetch(\"ideaBank/ideaBank.html\").then(function (response) {\n            return response.text();\n          }).then(function (data) {\n            // Create a temporary container element to hold the loaded content\n            var tempContainer = document.createElement(\"div\");\n            tempContainer.innerHTML = data;\n            // Select the specific element with the class you want\n            var specificElement = tempContainer.querySelector(\".filterBar\");\n            var createHospitalCheckBoxContainer = tempContainer.querySelector('#hospitalSelection');\n            var createUnitCheckBoxContainer = tempContainer.querySelector('#unitSelection');\n            if (createHospitalCheckBoxContainer) {\n              createHospitalCheckBoxContainer.addEventListener('change', function (event) {\n                return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n                  var checkboxes;\n                  return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n                    while (1) switch (_context5.prev = _context5.next) {\n                      case 0:\n                        checkboxes = createHospitalCheckBoxContainer.querySelectorAll('input[type=\"checkbox\"]'); // Empty list of checked hospitals\n                        checkedHospitalIds = [];\n                        // Array to store IDs of checked checkboxes\n                        checkboxes.forEach(function (checkbox) {\n                          // Ensure the checkbox is an HTMLInputElement\n                          var inputCheckbox = checkbox;\n                          // Check if the checkbox is checked and add its ID to the array\n                          if (inputCheckbox.checked) {\n                            checkedHospitalIds.push(inputCheckbox.id);\n                          }\n                        });\n                        // Log all checked hospital IDs\n                        console.log('Checked hospitals:', checkedHospitalIds);\n                        // Future change: Only clear the unitIds for unchecked hospitals!\n                        clearContent(\"unitSelection\");\n                        loadUnits(checkedHospitalIds);\n                      case 6:\n                      case \"end\":\n                        return _context5.stop();\n                    }\n                  }, _callee5);\n                }));\n              });\n            }\n            if (createUnitCheckBoxContainer) {\n              createUnitCheckBoxContainer.addEventListener('change', function (event) {\n                return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n                  var checkboxes;\n                  return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n                    while (1) switch (_context6.prev = _context6.next) {\n                      case 0:\n                        checkboxes = createUnitCheckBoxContainer.querySelectorAll('input[type=\"checkbox\"]'); // Empty list of checked units\n                        checkedUnitIds = [];\n                        checkboxes.forEach(function (checkbox) {\n                          // Ensure the checkbox is an HTMLInputElement\n                          var inputCheckbox = checkbox;\n                          // Check if the checkbox is checked and add its ID to the array\n                          if (inputCheckbox.checked) {\n                            checkedUnitIds.push(inputCheckbox.id);\n                          }\n                        });\n                        // Log all checked unit IDs\n                        _context6.next = 5;\n                        return getFilteredSuggestions(checkedUnitIds);\n                      case 5:\n                        filteredSuggestions = _context6.sent;\n                        removeCardsFromDiv(\"div.IdeaCardDiv\");\n                        createNewCards(\"IdeaCardDiv\", container, filteredSuggestions);\n                      case 8:\n                      case \"end\":\n                        return _context6.stop();\n                    }\n                  }, _callee6);\n                }));\n              });\n            }\n            if (specificElement) {\n              // Insert the specific element into the target element\n              container.insertBefore(specificElement, container.firstChild);\n            }\n          })[\"catch\"](function (error) {\n            console.error(\"Failed to load the external HTML file:\", error);\n          });\n          myIdeaCards = {};\n          _context7.next = 12;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({});\n        case 12:\n          filteredSuggestions = _context7.sent;\n          console.log(\"Filtered suggestions: \", filteredSuggestions);\n          removeCardsFromDiv(\"div.IdeaCardDiv\");\n          _context7.next = 17;\n          return createNewCards(\"IdeaCardDiv\", container, filteredSuggestions);\n        case 17:\n          addListner(myIdeaCards, container);\n          searchBar = document.getElementById(\"searchBarId\");\n          searchBar.addEventListener(\"keydown\", function (event) {\n            if (event.key === \"Enter\") {\n              performSearch(searchBar);\n            }\n          });\n          loadHospitals();\n        case 21:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7);\n  }));\n}\nfunction getFilteredSuggestions(checkedUnitIds) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var suggestions, _iterator, _step, checkedUnitId, allSuggestionsOfUnit;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          suggestions = [];\n          if (!checkedUnitIds) {\n            _context8.next = 24;\n            break;\n          }\n          _iterator = _createForOfIteratorHelper(checkedUnitIds);\n          _context8.prev = 3;\n          _iterator.s();\n        case 5:\n          if ((_step = _iterator.n()).done) {\n            _context8.next = 13;\n            break;\n          }\n          checkedUnitId = _step.value;\n          _context8.next = 9;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({\n            unitId: checkedUnitId\n          });\n        case 9:\n          allSuggestionsOfUnit = _context8.sent;\n          suggestions = suggestions.concat(allSuggestionsOfUnit);\n        case 11:\n          _context8.next = 5;\n          break;\n        case 13:\n          _context8.next = 18;\n          break;\n        case 15:\n          _context8.prev = 15;\n          _context8.t0 = _context8[\"catch\"](3);\n          _iterator.e(_context8.t0);\n        case 18:\n          _context8.prev = 18;\n          _iterator.f();\n          return _context8.finish(18);\n        case 21:\n          return _context8.abrupt(\"return\", suggestions);\n        case 24:\n          _context8.next = 26;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({});\n        case 26:\n          suggestions = _context8.sent;\n          return _context8.abrupt(\"return\", suggestions);\n        case 28:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8, null, [[3, 15, 18, 21]]);\n  }));\n}\nfunction loadHospitals() {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n    var selectHospitalHTML, allHospitals;\n    return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n      while (1) switch (_context9.prev = _context9.next) {\n        case 0:\n          selectHospitalHTML = $('#hospitalSelection'); // loads the select type from html\n          _context9.next = 3;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getHospitals)({});\n        case 3:\n          allHospitals = _context9.sent;\n          console.log(allHospitals);\n          allHospitals.forEach(function (hospital) {\n            var generatedElement = document.createRange().createContextualFragment(\"\\n    <div class=\\\"form-check\\\">\\n      <input class=\\\"form-check-input\\\" type=\\\"checkbox\\\" value=\\\"\\\" id=\\\"\" + hospital.id + \"\\\">\\n      <label class=\\\"form-check-label\\\" for=\\\"flexCheckDefault\\\">\" + hospital.name + \"</label>\\n    </div>\");\n            selectHospitalHTML.append(generatedElement);\n            console.log(\"Adding HTML for for hospital \", hospital.id);\n          });\n        case 6:\n        case \"end\":\n          return _context9.stop();\n      }\n    }, _callee9);\n  }));\n}\nfunction loadUnits(checkedHospitalIds) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var selectUnitHTML, allUnits, _iterator2, _step2, checkedHospitalId, allUnitsOfHospital;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          selectUnitHTML = $('#unitSelection'); // loads the select type from html\n          allUnits = [];\n          if (!(checkedHospitalIds.length != 0)) {\n            _context10.next = 22;\n            break;\n          }\n          _iterator2 = _createForOfIteratorHelper(checkedHospitalIds);\n          _context10.prev = 4;\n          _iterator2.s();\n        case 6:\n          if ((_step2 = _iterator2.n()).done) {\n            _context10.next = 14;\n            break;\n          }\n          checkedHospitalId = _step2.value;\n          _context10.next = 10;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getUnits)({\n            hospitalId: checkedHospitalId\n          });\n        case 10:\n          allUnitsOfHospital = _context10.sent;\n          allUnits = allUnits.concat(allUnitsOfHospital);\n        case 12:\n          _context10.next = 6;\n          break;\n        case 14:\n          _context10.next = 19;\n          break;\n        case 16:\n          _context10.prev = 16;\n          _context10.t0 = _context10[\"catch\"](4);\n          _iterator2.e(_context10.t0);\n        case 19:\n          _context10.prev = 19;\n          _iterator2.f();\n          return _context10.finish(19);\n        case 22:\n          allUnits.forEach(function (unit) {\n            var generatedElement = document.createRange().createContextualFragment(\"\\n    <div class=\\\"form-check\\\">\\n      <input class=\\\"form-check-input\\\" type=\\\"checkbox\\\" value=\\\"\\\" id=\\\"\" + unit.id + \"\\\">\\n      <label class=\\\"form-check-label\\\" for=\\\"flexCheckDefault\\\">\" + unit.name + \"</label>\\n    </div>\");\n            selectUnitHTML.append(generatedElement);\n            console.log(\"Adding HTML for for unit \", unit.id);\n          });\n        case 23:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10, null, [[4, 16, 19, 22]]);\n  }));\n}\nfunction clearContent(id) {\n  var container = document.getElementById(id);\n  while (container.firstChild) {\n    container.removeChild(container.firstChild);\n  }\n}\nfunction addListner(cardArray, element) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {\n    return _regeneratorRuntime().wrap(function _callee12$(_context12) {\n      while (1) switch (_context12.prev = _context12.next) {\n        case 0:\n          element.addEventListener(\"click\", function (event) {\n            return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {\n              var target, cardId, card, expandedDiv, _cardId, _card, upvoteDisplay;\n              return _regeneratorRuntime().wrap(function _callee11$(_context11) {\n                while (1) switch (_context11.prev = _context11.next) {\n                  case 0:\n                    target = event.target; //Adds an eventlistener for the more info of the card\n                    if (target && target.className === \"ideaCardFont moreInfoClass\") {\n                      console.log(\"fel Div\");\n                      cardId = parseInt(target.id.replace(\"ideaCardMoreInfo\", \"\"), 10);\n                      if (cardArray[cardId]) {\n                        card = cardArray[cardId];\n                        expandedDiv = document.getElementById(\"expandedContent\".concat(cardId));\n                        if (expandedDiv) {\n                          if (expandedDiv.style.display === \"none\") {\n                            card.showMoreInfo(\"expandedContent\".concat(cardId), \"ideaCardMoreInfo\".concat(cardId));\n                          } else {\n                            card.closeMoreInfo(\"expandedContent\".concat(cardId), \"ideaCardMoreInfo\".concat(cardId));\n                          }\n                        } else {\n                          console.error(\"Expanded div not found\");\n                        }\n                      }\n                    }\n                    if (!(target && target.className.baseVal.includes(\"bi-caret-up upvoteSymbol\"))) {\n                      _context11.next = 14;\n                      break;\n                    }\n                    _cardId = parseInt(target.id.replace(\"upvoteIconPic\", \"\"), 10);\n                    if (!myIdeaCards[_cardId]) {\n                      _context11.next = 12;\n                      break;\n                    }\n                    _card = myIdeaCards[_cardId];\n                    _context11.next = 8;\n                    return _card.addUpvote();\n                  case 8:\n                    upvoteDisplay = document.getElementById(\"upvoteNumber\" + _cardId);\n                    if (upvoteDisplay) {\n                      upvoteDisplay.textContent = _card.upvoteCount.toString();\n                    }\n                    _context11.next = 13;\n                    break;\n                  case 12:\n                    console.error(\"Card not found for ID: \" + _cardId);\n                  case 13:\n                    console.log(\"upvoteIcon clicked\");\n                  case 14:\n                  case \"end\":\n                    return _context11.stop();\n                }\n              }, _callee11);\n            }));\n          });\n        case 1:\n        case \"end\":\n          return _context12.stop();\n      }\n    }, _callee12);\n  }));\n}\nfunction removeCardsFromDiv(divName) {\n  //Remove current elements\n  var elementsToRemove = document.querySelectorAll(divName);\n  // Remove each element\n  elementsToRemove.forEach(function (element) {\n    element.remove();\n  });\n  myIdeaCards = {};\n}\nfunction performSearch(searchBar) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {\n    var inputValue, container, suggestions, suggestionName, _iterator3, _step3, suggestion, users, spaceIndex, firstName, lastName, _iterator4, _step4, user, _iterator5, _step5, _user;\n    return _regeneratorRuntime().wrap(function _callee13$(_context13) {\n      while (1) switch (_context13.prev = _context13.next) {\n        case 0:\n          inputValue = searchBar.value;\n          console.log(\"Search query:\", inputValue);\n          container = document.querySelector(\"#container-fluid\");\n          if (container) {\n            _context13.next = 5;\n            break;\n          }\n          return _context13.abrupt(\"return\");\n        case 5:\n          // Stop if the container isn't found\n          removeCardsFromDiv(\"div.IdeaCardDiv\");\n          if (!(inputValue != \"\")) {\n            _context13.next = 92;\n            break;\n          }\n          _context13.next = 9;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({});\n        case 9:\n          suggestions = _context13.sent;\n          suggestionName = false;\n          _iterator3 = _createForOfIteratorHelper(suggestions);\n          _context13.prev = 12;\n          _iterator3.s();\n        case 14:\n          if ((_step3 = _iterator3.n()).done) {\n            _context13.next = 24;\n            break;\n          }\n          suggestion = _step3.value;\n          if (!(suggestion.name.toLowerCase() >= inputValue.toLowerCase() && suggestion.name.toLowerCase() <= inputValue.toLowerCase() + \"~\")) {\n            _context13.next = 22;\n            break;\n          }\n          suggestionName = true;\n          _context13.next = 20;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({\n            name: suggestion.name\n          });\n        case 20:\n          filteredSuggestions = _context13.sent;\n          createNewCards(\"IdeaCardDiv\", container, filteredSuggestions);\n        case 22:\n          _context13.next = 14;\n          break;\n        case 24:\n          _context13.next = 29;\n          break;\n        case 26:\n          _context13.prev = 26;\n          _context13.t0 = _context13[\"catch\"](12);\n          _iterator3.e(_context13.t0);\n        case 29:\n          _context13.prev = 29;\n          _iterator3.f();\n          return _context13.finish(29);\n        case 32:\n          if (suggestionName) {\n            _context13.next = 90;\n            break;\n          }\n          _context13.next = 35;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getUsers)({});\n        case 35:\n          users = _context13.sent;\n          spaceIndex = inputValue.indexOf(\" \"); //If the search is for first and last name\n          if (!(spaceIndex !== -1)) {\n            _context13.next = 63;\n            break;\n          }\n          firstName = inputValue.substring(0, spaceIndex).toLowerCase();\n          lastName = inputValue.substring(spaceIndex + 1).toLowerCase();\n          _iterator4 = _createForOfIteratorHelper(users);\n          _context13.prev = 41;\n          _iterator4.s();\n        case 43:\n          if ((_step4 = _iterator4.n()).done) {\n            _context13.next = 53;\n            break;\n          }\n          user = _step4.value;\n          if (!(user.firstName.toLowerCase() >= firstName && user.firstName.toLowerCase() <= firstName + \"~\")) {\n            _context13.next = 51;\n            break;\n          }\n          if (!(user.lastName.toLowerCase() >= lastName && user.lastName.toLowerCase() <= lastName + \"~\")) {\n            _context13.next = 51;\n            break;\n          }\n          _context13.next = 49;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({\n            creatorHsaId: user.id\n          });\n        case 49:\n          filteredSuggestions = _context13.sent;\n          createNewCards(\"IdeaCardDiv\", container, filteredSuggestions);\n        case 51:\n          _context13.next = 43;\n          break;\n        case 53:\n          _context13.next = 58;\n          break;\n        case 55:\n          _context13.prev = 55;\n          _context13.t1 = _context13[\"catch\"](41);\n          _iterator4.e(_context13.t1);\n        case 58:\n          _context13.prev = 58;\n          _iterator4.f();\n          return _context13.finish(58);\n        case 61:\n          _context13.next = 90;\n          break;\n        case 63:\n          //If the search is for only first or last name\n          _iterator5 = _createForOfIteratorHelper(users);\n          _context13.prev = 64;\n          _iterator5.s();\n        case 66:\n          if ((_step5 = _iterator5.n()).done) {\n            _context13.next = 82;\n            break;\n          }\n          _user = _step5.value;\n          if (!(_user.firstName.toLowerCase() >= inputValue.toLowerCase() && _user.firstName.toLowerCase() <= inputValue.toLowerCase() + \"~\")) {\n            _context13.next = 75;\n            break;\n          }\n          _context13.next = 71;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({\n            creatorHsaId: _user.id\n          });\n        case 71:\n          filteredSuggestions = _context13.sent;\n          createNewCards(\"IdeaCardDiv\", container, filteredSuggestions);\n          _context13.next = 80;\n          break;\n        case 75:\n          if (!(_user.lastName.toLowerCase() >= inputValue.toLowerCase() && _user.lastName.toLowerCase() <= inputValue.toLowerCase() + \"~\")) {\n            _context13.next = 80;\n            break;\n          }\n          _context13.next = 78;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({\n            creatorHsaId: _user.id\n          });\n        case 78:\n          filteredSuggestions = _context13.sent;\n          createNewCards(\"IdeaCardDiv\", container, filteredSuggestions);\n        case 80:\n          _context13.next = 66;\n          break;\n        case 82:\n          _context13.next = 87;\n          break;\n        case 84:\n          _context13.prev = 84;\n          _context13.t2 = _context13[\"catch\"](64);\n          _iterator5.e(_context13.t2);\n        case 87:\n          _context13.prev = 87;\n          _iterator5.f();\n          return _context13.finish(87);\n        case 90:\n          _context13.next = 96;\n          break;\n        case 92:\n          _context13.next = 94;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({});\n        case 94:\n          filteredSuggestions = _context13.sent;\n          createNewCards(\"IdeaCardDiv\", container, filteredSuggestions);\n        case 96:\n          addListner(myIdeaCards, container);\n        case 97:\n        case \"end\":\n          return _context13.stop();\n      }\n    }, _callee13, null, [[12, 26, 29, 32], [41, 55, 58, 61], [64, 84, 87, 90]]);\n  }));\n}\n\n//# sourceURL=webpack://c3/./client/ideaBank/ideaBank.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   clearContent: () => (/* binding */ clearContent),\n/* harmony export */   loadHospitals: () => (/* binding */ loadHospitals),\n/* harmony export */   loadPage: () => (/* binding */ loadPage),\n/* harmony export */   loadUnits: () => (/* binding */ loadUnits),\n/* harmony export */   removeCardsFromDiv: () => (/* binding */ removeCardsFromDiv),\n/* harmony export */   testFunc: () => (/* binding */ testFunc)\n/* harmony export */ });\n/* harmony import */ var _Database_database_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Database/database.js */ \"./client/Database/database.js\");\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, \"prototype\", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n//import {loadInitiatePage} from \"../SidebarAndHeader/pageHandler.js\";\nvar myIdeaCards = {};\n// Initialize filtered suggestions as empty array (potentially change to get all suggestions\nvar filteredSuggestions = [];\nvar IdeaCard = /*#__PURE__*/function () {\n  function IdeaCard(id, header, department, name, description, upvoteCount, suggestionID) {\n    _classCallCheck(this, IdeaCard);\n    this.header = header;\n    this.department = department;\n    this.name = name;\n    this.description = description;\n    this.upvoteCount = upvoteCount;\n    this.id = id;\n    this.suggestionID = suggestionID;\n  }\n  // <img src=\"images/upvoteIcon.png\" class =\"upvoteIcon\" alt=\"upvoteIcon\">\n  _createClass(IdeaCard, [{\n    key: \"addUpvote\",\n    value: function addUpvote() {\n      return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n        var tmp, user, suggestion;\n        return _regeneratorRuntime().wrap(function _callee$(_context) {\n          while (1) switch (_context.prev = _context.next) {\n            case 0:\n              tmp = localStorage.getItem(\"user\");\n              if (tmp) {\n                _context.next = 4;\n                break;\n              }\n              console.log(\"there is not an user in localStorage\");\n              return _context.abrupt(\"return\");\n            case 4:\n              user = JSON.parse(tmp)[0];\n              _context.next = 7;\n              return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.upvoteSuggestion)(this.suggestionID, user.id);\n            case 7:\n              _context.next = 9;\n              return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({\n                id: this.suggestionID\n              });\n            case 9:\n              suggestion = _context.sent;\n              this.upvoteCount = suggestion[0].upvotes.length;\n              this.upvoteCount++;\n              return _context.abrupt(\"return\", suggestion[0].upvotes.length);\n            case 13:\n            case \"end\":\n              return _context.stop();\n          }\n        }, _callee, this);\n      }));\n    }\n  }, {\n    key: \"generateHTML\",\n    value: function generateHTML() {\n      return \"<div class=\\\"totalExpandedIdeaCard\\\">\\n          <div class=\\\"ideaCard\\\">\\n              <div class=\\\"ideaCardBorder\\\">\\n                  <div class=\\\"ideaCardImage\\\">\\n                      <img src=\\\"../images/pinkFaded.png\\\" class =\\\"pinkFaded\\\" alt=\\\"pinkFaded\\\">\\n                  </div>\\n                  <div class=\\\"ideaCardMiddleText\\\">\\n                      <p id=\\\"ideaCardHeader\\\" class=\\\"ideaCardFont\\\">\".concat(this.header, \"</p>\\n                      <p id=\\\"ideaCardDepartment\\\" class=\\\"ideaCardFont\\\">\").concat(this.department, \"</p>\\n                      <p id=\\\"ideaCardName\\\" class=\\\"ideaCardFont\\\">\").concat(this.name, \"</p>\\n                      <p id=\\\"ideaCardMoreInfo\").concat(this.id, \"\\\" class=\\\"ideaCardFont moreInfoClass\\\"> > Mer information</p>\\n                  </div>\\n                  <div class=\\\"ideaCardUpvotes\\\">\\n                  <div class=\\\"upvoteDiv\\\">\\n                  <svg xmlns=\\\"http://www.w3.org/2000/svg\\\" width=\\\"28\\\" height=\\\"28\\\" fill=\\\"grey\\\" class=\\\"bi bi-caret-up upvoteSymbol\\\" viewBox=\\\"0 0 16 16\\\" id=\\\"upvoteIconPic\").concat(this.id, \"\\\">\\n  <path d=\\\"M3.204 11h9.592L8 5.519 3.204 11zm-.753-.659 4.796-5.48a1 1 0 0 1 1.506 0l4.796 5.48c.566.647.106 1.659-.753 1.659H3.204a1 1 0 0 1-.753-1.659z\\\"/>\\n</svg>\\n                  <div id =\\\"upvoteNumber\").concat(this.id, \"\\\" class=\\\"ideaCardFont upvoteNumber\\\" >\").concat(this.upvoteCount, \"</div>\\n\\n                  </div>\\n              </div>\\n              </div>\\n    \\n          </div>\\n          <div id=\\\"expandedContent\").concat(this.id, \"\\\" class= \\\"expandedIdeaContent\\\" style =\\\"display : none;\\\">\\n              <div class=\\\"expandedDescriptionText\\\">\\n                  <p class=\\\"ideaCardFontComments\\\" id=\\\"expandedHeader\\\">Om ideen</p>\\n                  <p class=\\\"ideaCardFont\\\" id=\\\"expandedDescription\\\">\").concat(this.description, \"</p>\\n              </div>\\n              <div class=\\\"expandedCommentAndButton id = \\\"expandedCommentAndButton\").concat(this.id, \"\\\">\\n                  <div class=\\\"expandedComment\\\">\\n                      <p  class=\\\"ideaCardFontComments\\\">Kommentarer</p>\\n                      <p  class=\\\"ideaCardFont\\\">Komment 7</p>\\n                      <p  class=\\\"ideaCardFont\\\">Komment 2</p>\\n                  </div>\\n\\n                  <div class=\\\"expandedButton\\\">\\n                      <button class=\\\"initiateProjectButton\\\" id=\\\"initiateProjectFromCard\").concat(this.suggestionID, \"\\\">Initiera f\\xF6rb\\xE4ttringsf\\xF6rslag</button>\\n                  </div>\\n              </div>\\n          </div>\\n      </div>\");\n    }\n  }, {\n    key: \"showMoreInfo\",\n    value: function showMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"flex\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"^ Stäng detaljer\";\n      }\n    }\n  }, {\n    key: \"closeMoreInfo\",\n    value: function closeMoreInfo(blockId, thisTextId) {\n      var blockElement = document.getElementById(blockId);\n      if (blockElement) {\n        blockElement.style.display = \"none\";\n      }\n      var textElement = document.getElementById(thisTextId);\n      if (textElement) {\n        textElement.innerText = \"> Mer information\";\n      }\n    }\n  }, {\n    key: \"loadInitiatePage\",\n    value: function loadInitiatePage() {\n      alert(\"The initiate project page should now be loaded\");\n      window.location.href = '../client/projectPage/projectPageP.html';\n    }\n  }]);\n  return IdeaCard;\n}();\nfunction createNewCards(className, container, suggestions) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var _this = this;\n    var counter;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          counter = 1;\n          suggestions.forEach(function (suggestion) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n              var unit, user;\n              return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n                while (1) switch (_context2.prev = _context2.next) {\n                  case 0:\n                    _context2.next = 2;\n                    return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getObjectById)(\"unit\", suggestion.unitId);\n                  case 2:\n                    unit = _context2.sent;\n                    _context2.next = 5;\n                    return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getObjectById)(\"users\", suggestion.creatorHsaId);\n                  case 5:\n                    user = _context2.sent;\n                    console.log(suggestion);\n                    createNewIdeaCard(suggestion.name, unit.name, user.firstName + \" \" + user.lastName, suggestion.content, suggestion.upvotes.length, className, container, counter, suggestion.id);\n                    counter = counter + 1;\n                  case 9:\n                  case \"end\":\n                    return _context2.stop();\n                }\n              }, _callee2);\n            }));\n          });\n        case 2:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3);\n  }));\n}\nfunction createNewIdeaCard(header, department, name, description, upvoteCount, className, container, ID, suggestionID) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n    var card, cardHTML, div;\n    return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n      while (1) switch (_context4.prev = _context4.next) {\n        case 0:\n          card = new IdeaCard(ID, header, department, name, description, upvoteCount, suggestionID);\n          cardHTML = card.generateHTML();\n          myIdeaCards[ID] = card;\n          div = document.createElement(\"div\");\n          div.className = className; // Set the class name(s) here\n          div.innerHTML = cardHTML;\n          container.appendChild(div);\n        case 7:\n        case \"end\":\n          return _context4.stop();\n      }\n    }, _callee4);\n  }));\n}\nfunction testFunc() {\n  console.log(\"Test func works\");\n}\nfunction loadPage() {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var container, scriptElement, checkedHospitalIds, checkedUnitIds, searchBar;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          container = document.querySelector(\"#container-fluid\");\n          if (container) {\n            _context7.next = 3;\n            break;\n          }\n          return _context7.abrupt(\"return\");\n        case 3:\n          // Stop if the container isn't found\n          scriptElement = document.createElement(\"script\");\n          scriptElement.src = \"../dist/ideaBank.bundle.js\";\n          container.appendChild(scriptElement);\n          // Initialize empty lists of checked hospital and unit ids\n          checkedHospitalIds = [];\n          checkedUnitIds = [];\n          fetch(\"ideaBank/ideaBank.html\").then(function (response) {\n            return response.text();\n          }).then(function (data) {\n            // Create a temporary container element to hold the loaded content\n            var tempContainer = document.createElement(\"div\");\n            tempContainer.innerHTML = data;\n            // Select the specific element with the class you want\n            var specificElement = tempContainer.querySelector(\".filterBar\");\n            var createHospitalCheckBoxContainer = tempContainer.querySelector('#hospitalSelection');\n            var createUnitCheckBoxContainer = tempContainer.querySelector('#unitSelection');\n            if (createHospitalCheckBoxContainer) {\n              createHospitalCheckBoxContainer.addEventListener('change', function (event) {\n                return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n                  var checkboxes;\n                  return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n                    while (1) switch (_context5.prev = _context5.next) {\n                      case 0:\n                        checkboxes = createHospitalCheckBoxContainer.querySelectorAll('input[type=\"checkbox\"]'); // Empty list of checked hospitals\n                        checkedHospitalIds = [];\n                        // Array to store IDs of checked checkboxes\n                        checkboxes.forEach(function (checkbox) {\n                          // Ensure the checkbox is an HTMLInputElement\n                          var inputCheckbox = checkbox;\n                          // Check if the checkbox is checked and add its ID to the array\n                          if (inputCheckbox.checked) {\n                            checkedHospitalIds.push(inputCheckbox.id);\n                          }\n                        });\n                        // Log all checked hospital IDs\n                        console.log('Checked hospitals:', checkedHospitalIds);\n                        // Future change: Only clear the unitIds for unchecked hospitals!\n                        clearContent(\"unitSelection\");\n                        loadUnits(checkedHospitalIds);\n                      case 6:\n                      case \"end\":\n                        return _context5.stop();\n                    }\n                  }, _callee5);\n                }));\n              });\n            }\n            if (createUnitCheckBoxContainer) {\n              createUnitCheckBoxContainer.addEventListener('change', function (event) {\n                return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n                  var checkboxes;\n                  return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n                    while (1) switch (_context6.prev = _context6.next) {\n                      case 0:\n                        checkboxes = createUnitCheckBoxContainer.querySelectorAll('input[type=\"checkbox\"]'); // Empty list of checked units\n                        checkedUnitIds = [];\n                        checkboxes.forEach(function (checkbox) {\n                          // Ensure the checkbox is an HTMLInputElement\n                          var inputCheckbox = checkbox;\n                          // Check if the checkbox is checked and add its ID to the array\n                          if (inputCheckbox.checked) {\n                            checkedUnitIds.push(inputCheckbox.id);\n                          }\n                        });\n                        // Log all checked unit IDs\n                        _context6.next = 5;\n                        return getFilteredSuggestions(checkedUnitIds);\n                      case 5:\n                        filteredSuggestions = _context6.sent;\n                        removeCardsFromDiv(\"div.IdeaCardDiv\");\n                        createNewCards(\"IdeaCardDiv\", container, filteredSuggestions);\n                      case 8:\n                      case \"end\":\n                        return _context6.stop();\n                    }\n                  }, _callee6);\n                }));\n              });\n            }\n            if (specificElement) {\n              // Insert the specific element into the target element\n              container.insertBefore(specificElement, container.firstChild);\n            }\n          })[\"catch\"](function (error) {\n            console.error(\"Failed to load the external HTML file:\", error);\n          });\n          myIdeaCards = {};\n          _context7.next = 12;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({});\n        case 12:\n          filteredSuggestions = _context7.sent;\n          console.log(\"Filtered suggestions: \", filteredSuggestions);\n          removeCardsFromDiv(\"div.IdeaCardDiv\");\n          _context7.next = 17;\n          return createNewCards(\"IdeaCardDiv\", container, filteredSuggestions);\n        case 17:\n          addListner(myIdeaCards, container);\n          searchBar = document.getElementById(\"searchBarId\");\n          searchBar.addEventListener(\"keydown\", function (event) {\n            if (event.key === \"Enter\") {\n              performSearch(searchBar);\n            }\n          });\n          loadHospitals();\n        case 21:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7);\n  }));\n}\nfunction getFilteredSuggestions(checkedUnitIds) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var suggestions, _iterator, _step, checkedUnitId, allSuggestionsOfUnit;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          suggestions = [];\n          if (!checkedUnitIds) {\n            _context8.next = 24;\n            break;\n          }\n          _iterator = _createForOfIteratorHelper(checkedUnitIds);\n          _context8.prev = 3;\n          _iterator.s();\n        case 5:\n          if ((_step = _iterator.n()).done) {\n            _context8.next = 13;\n            break;\n          }\n          checkedUnitId = _step.value;\n          _context8.next = 9;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({\n            unitId: checkedUnitId\n          });\n        case 9:\n          allSuggestionsOfUnit = _context8.sent;\n          suggestions = suggestions.concat(allSuggestionsOfUnit);\n        case 11:\n          _context8.next = 5;\n          break;\n        case 13:\n          _context8.next = 18;\n          break;\n        case 15:\n          _context8.prev = 15;\n          _context8.t0 = _context8[\"catch\"](3);\n          _iterator.e(_context8.t0);\n        case 18:\n          _context8.prev = 18;\n          _iterator.f();\n          return _context8.finish(18);\n        case 21:\n          return _context8.abrupt(\"return\", suggestions);\n        case 24:\n          _context8.next = 26;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({});\n        case 26:\n          suggestions = _context8.sent;\n          return _context8.abrupt(\"return\", suggestions);\n        case 28:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8, null, [[3, 15, 18, 21]]);\n  }));\n}\nfunction loadHospitals() {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n    var selectHospitalHTML, allHospitals;\n    return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n      while (1) switch (_context9.prev = _context9.next) {\n        case 0:\n          selectHospitalHTML = $('#hospitalSelection'); // loads the select type from html\n          _context9.next = 3;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getHospitals)({});\n        case 3:\n          allHospitals = _context9.sent;\n          console.log(allHospitals);\n          allHospitals.forEach(function (hospital) {\n            var generatedElement = document.createRange().createContextualFragment(\"\\n    <div class=\\\"form-check\\\">\\n      <input class=\\\"form-check-input\\\" type=\\\"checkbox\\\" value=\\\"\\\" id=\\\"\" + hospital.id + \"\\\">\\n      <label class=\\\"form-check-label\\\" for=\\\"flexCheckDefault\\\">\" + hospital.name + \"</label>\\n    </div>\");\n            selectHospitalHTML.append(generatedElement);\n            console.log(\"Adding HTML for for hospital \", hospital.id);\n          });\n        case 6:\n        case \"end\":\n          return _context9.stop();\n      }\n    }, _callee9);\n  }));\n}\nfunction loadUnits(checkedHospitalIds) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var selectUnitHTML, allUnits, _iterator2, _step2, checkedHospitalId, allUnitsOfHospital;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          selectUnitHTML = $('#unitSelection'); // loads the select type from html\n          allUnits = [];\n          if (!(checkedHospitalIds.length != 0)) {\n            _context10.next = 22;\n            break;\n          }\n          _iterator2 = _createForOfIteratorHelper(checkedHospitalIds);\n          _context10.prev = 4;\n          _iterator2.s();\n        case 6:\n          if ((_step2 = _iterator2.n()).done) {\n            _context10.next = 14;\n            break;\n          }\n          checkedHospitalId = _step2.value;\n          _context10.next = 10;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getUnits)({\n            hospitalId: checkedHospitalId\n          });\n        case 10:\n          allUnitsOfHospital = _context10.sent;\n          allUnits = allUnits.concat(allUnitsOfHospital);\n        case 12:\n          _context10.next = 6;\n          break;\n        case 14:\n          _context10.next = 19;\n          break;\n        case 16:\n          _context10.prev = 16;\n          _context10.t0 = _context10[\"catch\"](4);\n          _iterator2.e(_context10.t0);\n        case 19:\n          _context10.prev = 19;\n          _iterator2.f();\n          return _context10.finish(19);\n        case 22:\n          allUnits.forEach(function (unit) {\n            var generatedElement = document.createRange().createContextualFragment(\"\\n    <div class=\\\"form-check\\\">\\n      <input class=\\\"form-check-input\\\" type=\\\"checkbox\\\" value=\\\"\\\" id=\\\"\" + unit.id + \"\\\">\\n      <label class=\\\"form-check-label\\\" for=\\\"flexCheckDefault\\\">\" + unit.name + \"</label>\\n    </div>\");\n            selectUnitHTML.append(generatedElement);\n            console.log(\"Adding HTML for for unit \", unit.id);\n          });\n        case 23:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10, null, [[4, 16, 19, 22]]);\n  }));\n}\nfunction clearContent(id) {\n  var container = document.getElementById(id);\n  while (container.firstChild) {\n    container.removeChild(container.firstChild);\n  }\n}\nfunction addListner(cardArray, element) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {\n    return _regeneratorRuntime().wrap(function _callee12$(_context12) {\n      while (1) switch (_context12.prev = _context12.next) {\n        case 0:\n          element.addEventListener(\"click\", function (event) {\n            return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {\n              var target, cardId, card, expandedDiv, _cardId, _card, upvoteDisplay;\n              return _regeneratorRuntime().wrap(function _callee11$(_context11) {\n                while (1) switch (_context11.prev = _context11.next) {\n                  case 0:\n                    target = event.target; //Adds an eventlistener for the more info of the card\n                    if (target && target.className === \"ideaCardFont moreInfoClass\") {\n                      console.log(\"fel Div\");\n                      cardId = parseInt(target.id.replace(\"ideaCardMoreInfo\", \"\"), 10);\n                      if (cardArray[cardId]) {\n                        card = cardArray[cardId];\n                        expandedDiv = document.getElementById(\"expandedContent\".concat(cardId));\n                        if (expandedDiv) {\n                          if (expandedDiv.style.display === \"none\") {\n                            card.showMoreInfo(\"expandedContent\".concat(cardId), \"ideaCardMoreInfo\".concat(cardId));\n                          } else {\n                            card.closeMoreInfo(\"expandedContent\".concat(cardId), \"ideaCardMoreInfo\".concat(cardId));\n                          }\n                        } else {\n                          console.error(\"Expanded div not found\");\n                        }\n                      }\n                    }\n                    if (!(target && target.className.baseVal.includes(\"bi-caret-up upvoteSymbol\"))) {\n                      _context11.next = 16;\n                      break;\n                    }\n                    _cardId = parseInt(target.id.replace(\"upvoteIconPic\", \"\"), 10);\n                    if (!myIdeaCards[_cardId]) {\n                      _context11.next = 14;\n                      break;\n                    }\n                    _card = myIdeaCards[_cardId];\n                    _context11.next = 8;\n                    return _card.addUpvote();\n                  case 8:\n                    if (target.getAttribute(\"fill\") === \"grey\") {\n                      target.setAttribute(\"fill\", \"red\"); // Replace 'red' with the color indicating an upvote\n                    } else {\n                      target.setAttribute(\"fill\", \"grey\"); // Revert back to default color\n                    }\n                    upvoteDisplay = document.getElementById(\"upvoteNumber\" + _cardId);\n                    console.log(_card.upvoteCount.toString());\n                    if (upvoteDisplay) {\n                      upvoteDisplay.textContent = _card.upvoteCount.toString();\n                    }\n                    _context11.next = 15;\n                    break;\n                  case 14:\n                    console.error(\"Card not found for ID: \" + _cardId);\n                  case 15:\n                    console.log(\"upvoteIcon clicked\");\n                  case 16:\n                  case \"end\":\n                    return _context11.stop();\n                }\n              }, _callee11);\n            }));\n          });\n        case 1:\n        case \"end\":\n          return _context12.stop();\n      }\n    }, _callee12);\n  }));\n}\nfunction removeCardsFromDiv(divName) {\n  //Remove current elements\n  var elementsToRemove = document.querySelectorAll(divName);\n  // Remove each element\n  elementsToRemove.forEach(function (element) {\n    element.remove();\n  });\n  myIdeaCards = {};\n}\nfunction performSearch(searchBar) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {\n    var inputValue, container, suggestions, suggestionName, _iterator3, _step3, suggestion, users, spaceIndex, firstName, lastName, _iterator4, _step4, user, _iterator5, _step5, _user;\n    return _regeneratorRuntime().wrap(function _callee13$(_context13) {\n      while (1) switch (_context13.prev = _context13.next) {\n        case 0:\n          inputValue = searchBar.value;\n          console.log(\"Search query:\", inputValue);\n          container = document.querySelector(\"#container-fluid\");\n          if (container) {\n            _context13.next = 5;\n            break;\n          }\n          return _context13.abrupt(\"return\");\n        case 5:\n          // Stop if the container isn't found\n          removeCardsFromDiv(\"div.IdeaCardDiv\");\n          if (!(inputValue != \"\")) {\n            _context13.next = 92;\n            break;\n          }\n          _context13.next = 9;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({});\n        case 9:\n          suggestions = _context13.sent;\n          suggestionName = false;\n          _iterator3 = _createForOfIteratorHelper(suggestions);\n          _context13.prev = 12;\n          _iterator3.s();\n        case 14:\n          if ((_step3 = _iterator3.n()).done) {\n            _context13.next = 24;\n            break;\n          }\n          suggestion = _step3.value;\n          if (!(suggestion.name.toLowerCase() >= inputValue.toLowerCase() && suggestion.name.toLowerCase() <= inputValue.toLowerCase() + \"~\")) {\n            _context13.next = 22;\n            break;\n          }\n          suggestionName = true;\n          _context13.next = 20;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({\n            name: suggestion.name\n          });\n        case 20:\n          filteredSuggestions = _context13.sent;\n          createNewCards(\"IdeaCardDiv\", container, filteredSuggestions);\n        case 22:\n          _context13.next = 14;\n          break;\n        case 24:\n          _context13.next = 29;\n          break;\n        case 26:\n          _context13.prev = 26;\n          _context13.t0 = _context13[\"catch\"](12);\n          _iterator3.e(_context13.t0);\n        case 29:\n          _context13.prev = 29;\n          _iterator3.f();\n          return _context13.finish(29);\n        case 32:\n          if (suggestionName) {\n            _context13.next = 90;\n            break;\n          }\n          _context13.next = 35;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getUsers)({});\n        case 35:\n          users = _context13.sent;\n          spaceIndex = inputValue.indexOf(\" \"); //If the search is for first and last name\n          if (!(spaceIndex !== -1)) {\n            _context13.next = 63;\n            break;\n          }\n          firstName = inputValue.substring(0, spaceIndex).toLowerCase();\n          lastName = inputValue.substring(spaceIndex + 1).toLowerCase();\n          _iterator4 = _createForOfIteratorHelper(users);\n          _context13.prev = 41;\n          _iterator4.s();\n        case 43:\n          if ((_step4 = _iterator4.n()).done) {\n            _context13.next = 53;\n            break;\n          }\n          user = _step4.value;\n          if (!(user.firstName.toLowerCase() >= firstName && user.firstName.toLowerCase() <= firstName + \"~\")) {\n            _context13.next = 51;\n            break;\n          }\n          if (!(user.lastName.toLowerCase() >= lastName && user.lastName.toLowerCase() <= lastName + \"~\")) {\n            _context13.next = 51;\n            break;\n          }\n          _context13.next = 49;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({\n            creatorHsaId: user.id\n          });\n        case 49:\n          filteredSuggestions = _context13.sent;\n          createNewCards(\"IdeaCardDiv\", container, filteredSuggestions);\n        case 51:\n          _context13.next = 43;\n          break;\n        case 53:\n          _context13.next = 58;\n          break;\n        case 55:\n          _context13.prev = 55;\n          _context13.t1 = _context13[\"catch\"](41);\n          _iterator4.e(_context13.t1);\n        case 58:\n          _context13.prev = 58;\n          _iterator4.f();\n          return _context13.finish(58);\n        case 61:\n          _context13.next = 90;\n          break;\n        case 63:\n          //If the search is for only first or last name\n          _iterator5 = _createForOfIteratorHelper(users);\n          _context13.prev = 64;\n          _iterator5.s();\n        case 66:\n          if ((_step5 = _iterator5.n()).done) {\n            _context13.next = 82;\n            break;\n          }\n          _user = _step5.value;\n          if (!(_user.firstName.toLowerCase() >= inputValue.toLowerCase() && _user.firstName.toLowerCase() <= inputValue.toLowerCase() + \"~\")) {\n            _context13.next = 75;\n            break;\n          }\n          _context13.next = 71;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({\n            creatorHsaId: _user.id\n          });\n        case 71:\n          filteredSuggestions = _context13.sent;\n          createNewCards(\"IdeaCardDiv\", container, filteredSuggestions);\n          _context13.next = 80;\n          break;\n        case 75:\n          if (!(_user.lastName.toLowerCase() >= inputValue.toLowerCase() && _user.lastName.toLowerCase() <= inputValue.toLowerCase() + \"~\")) {\n            _context13.next = 80;\n            break;\n          }\n          _context13.next = 78;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({\n            creatorHsaId: _user.id\n          });\n        case 78:\n          filteredSuggestions = _context13.sent;\n          createNewCards(\"IdeaCardDiv\", container, filteredSuggestions);\n        case 80:\n          _context13.next = 66;\n          break;\n        case 82:\n          _context13.next = 87;\n          break;\n        case 84:\n          _context13.prev = 84;\n          _context13.t2 = _context13[\"catch\"](64);\n          _iterator5.e(_context13.t2);\n        case 87:\n          _context13.prev = 87;\n          _iterator5.f();\n          return _context13.finish(87);\n        case 90:\n          _context13.next = 96;\n          break;\n        case 92:\n          _context13.next = 94;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getSuggestions)({});\n        case 94:\n          filteredSuggestions = _context13.sent;\n          createNewCards(\"IdeaCardDiv\", container, filteredSuggestions);\n        case 96:\n          addListner(myIdeaCards, container);\n        case 97:\n        case \"end\":\n          return _context13.stop();\n      }\n    }, _callee13, null, [[12, 26, 29, 32], [41, 55, 58, 61], [64, 84, 87, 90]]);\n  }));\n}\n\n//# sourceURL=webpack://c3/./client/ideaBank/ideaBank.js?");
 
 /***/ }),
 
@@ -326,7 +326,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
   \*******************************************/
 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   loadImprovementWorkTasks: () => (/* binding */ loadImprovementWorkTasks),\n/* harmony export */   loadMemberModal: () => (/* binding */ loadMemberModal),\n/* harmony export */   loadPage: () => (/* binding */ loadPage),\n/* harmony export */   loadProjectHeader: () => (/* binding */ loadProjectHeader),\n/* harmony export */   openTaskModal: () => (/* binding */ openTaskModal)\n/* harmony export */ });\n/* harmony import */ var _Database_database_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Database/database.js */ \"./client/Database/database.js\");\n/* harmony import */ var firebase_firestore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! firebase/firestore */ \"./node_modules/firebase/firestore/dist/esm/index.esm.js\");\n/* harmony import */ var _initiateForbattringsarbete_initiateIdea_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../initiateForbattringsarbete/initiateIdea.js */ \"./client/initiateForbattringsarbete/initiateIdea.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\nfunction loadPage(projectId) {}\nfunction loadImprovementWorkTasks(projectId, stage, stageListClassName, taskListId, closeBtnId, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, saveBtnId, deleteBtnId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var _this = this;\n    var tasks, taskListElement;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          _context2.next = 2;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getTasks)({\n            improvementWorkId: projectId,\n            stage: stage\n          });\n        case 2:\n          tasks = _context2.sent;\n          taskListElement = $('#' + taskListId);\n          modalEventListeners(projectId, stage, stageListClassName, closeBtnId, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, taskListId, saveBtnId, deleteBtnId);\n          if (taskListElement) {\n            tasks.forEach(function (task) {\n              return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n                var taskElement, textSpan, checkbox;\n                return _regeneratorRuntime().wrap(function _callee$(_context) {\n                  while (1) switch (_context.prev = _context.next) {\n                    case 0:\n                      taskElement = $('<li>');\n                      textSpan = $('<span>').text(task.name);\n                      checkbox = $('<input>').attr('type', 'checkbox');\n                      if (task.completed) {\n                        checkbox.prop('checked', true);\n                      }\n                      taskElement.append(textSpan, checkbox);\n                      taskElement.addClass(stageListClassName);\n                      taskElement.on('click', function () {\n                        var startDateFormatted = formatDate(task.startDate);\n                        var endDateFormatted = formatDate(task.deadlineDate);\n                        openTaskModal(task.name, task.content, task.id, startDateFormatted, endDateFormatted, taskModalId, taskTitleId, taskContentId, taskStartDateId, taskEndDateId);\n                      });\n                      checkbox.on('click', function (event) {\n                        event.stopPropagation();\n                        if (checkbox.prop('checked')) {\n                          console.log('Checkbox is checked.');\n                          (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.updateInstance)('task', task.id, {\n                            completed: true\n                          });\n                        } else {\n                          console.log('Checkbox is unchecked.');\n                          (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.updateInstance)('task', task.id, {\n                            completed: false\n                          });\n                        }\n                      });\n                      taskListElement.append(taskElement); // Stop if the container isn't found\n                    case 9:\n                    case \"end\":\n                      return _context.stop();\n                  }\n                }, _callee);\n              }));\n            });\n          } else {\n            console.log(\"Task container not found\");\n          }\n        case 6:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2);\n  }));\n}\n//Opens modal for a task\nfunction openTaskModal(taskTitle, taskContent, taskId, taskStart, taskEnd, taskModalId, taskTitleId, taskContentId, taskStartDateId, taskEndDateId) {\n  var taskModal = document.getElementById(taskModalId);\n  var title = document.getElementById(taskTitleId);\n  var content = document.getElementById(taskContentId);\n  var startDate = document.getElementById(taskStartDateId);\n  var endDate = document.getElementById(taskEndDateId);\n  if (taskModal) {\n    taskModal.setAttribute('data-task-id', taskId);\n    if (title && content && startDate && endDate) {\n      title.value = \"\";\n      content.value = \"\";\n      startDate.value = \"\";\n      endDate.value = \"\";\n      if (taskTitle !== \"\" || taskContent !== \"\" || taskStart !== \"\" || taskEnd !== \"\") {\n        title.value = taskTitle;\n        content.value = taskContent;\n        startDate.value = taskStart;\n        endDate.value = taskEnd;\n      }\n    }\n    taskModal.style.display = 'block';\n  }\n}\n//Adds eventlistener to close modal\nfunction modalEventListeners(projectId, stage, stageListClassName, closeBtnId, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, taskListId, saveBtnId, deleteBtnId) {\n  var closeButton = document.getElementById(closeBtnId);\n  var taskModal = document.getElementById(taskModalId);\n  var saveButton = document.getElementById(saveBtnId);\n  var deleteButton = document.getElementById(deleteBtnId);\n  if (closeButton && taskModal) {\n    var closeBtnListener = closeButton.hasAttribute('data-has-event-listener');\n    if (!closeBtnListener) {\n      closeButton.setAttribute('data-has-event-listener', 'true');\n      closeButton.addEventListener('click', function () {\n        taskModal.style.display = 'none'; //Closes modal\n      });\n    }\n  }\n\n  if (saveButton && taskModal) {\n    var saveBtnListener = saveButton.hasAttribute('data-has-event-listener');\n    if (!saveBtnListener) {\n      saveButton.setAttribute('data-has-event-listener', 'true');\n      saveButton.addEventListener('click', function () {\n        createNewOrSaveTask(projectId, stage, stageListClassName, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, taskListId, closeBtnId, saveBtnId, deleteBtnId);\n        taskModal.style.display = 'none'; //Closes modal\n      });\n    }\n  }\n\n  if (deleteButton && taskModal) {\n    var deleteBtnListener = deleteButton.hasAttribute('data-has-event-listener');\n    if (!deleteBtnListener) {\n      deleteButton.setAttribute('data-has-event-listener', 'true');\n      deleteButton.addEventListener('click', function () {\n        deleteTask(projectId, stage, stageListClassName, taskModalId, taskListId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, saveBtnId, deleteBtnId, closeBtnId);\n        taskModal.style.display = 'none'; //Closes modal\n      });\n    }\n  }\n}\n\nfunction createNewOrSaveTask(projectId, stage, stageListClassName, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, taskListId, closeBtnId, saveBtnId, deleteBtnId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var modalElement, titleElement, deadlineElement, startElement, contentElement, taskId, improvementWork, deadline, startDate, listElement, _deadline, _startDate, _listElement;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          //title: string, deadline : Date, startDate: Date, stage: string, content: string\n          modalElement = document.getElementById(taskModalId);\n          titleElement = document.getElementById(taskTitleId);\n          deadlineElement = document.getElementById(taskEndDateId);\n          startElement = document.getElementById(taskStartDateId);\n          contentElement = document.getElementById(taskContentId);\n          taskId = modalElement.getAttribute('data-task-id');\n          if (!(taskId === '')) {\n            _context3.next = 13;\n            break;\n          }\n          _context3.next = 9;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getObjectById)('improvementWork', projectId);\n        case 9:\n          improvementWork = _context3.sent;\n          if (titleElement && contentElement && deadlineElement && startElement) {\n            if (titleElement.value !== \"\", deadlineElement.value !== \"\", startElement.value !== \"\", contentElement.value !== \"\") {\n              deadline = new Date(deadlineElement.value); //Date string to timestamp\n              startDate = new Date(startElement.value); //Date string to timestamp\n              (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.createTaskOnImprovementWork)(null, projectId, titleElement.value, deadline, startDate, improvementWork.currentStage, contentElement.value);\n              listElement = document.getElementById(taskListId);\n              listElement.innerHTML = \"\";\n              loadImprovementWorkTasks(projectId, stage, stageListClassName, taskListId, closeBtnId, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, saveBtnId, deleteBtnId);\n            } else {\n              console.log(\"All input fields for the task where not filled in\");\n            }\n          } else {\n            console.log(\"All input element where not found\");\n          }\n          _context3.next = 21;\n          break;\n        case 13:\n          if (!taskId) {\n            _context3.next = 21;\n            break;\n          }\n          _deadline = new Date(deadlineElement.value); //Date string to timestamp\n          _startDate = new Date(startElement.value); //Date string to timestamp\n          _context3.next = 18;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.updateInstance)('task', taskId, {\n            name: titleElement.value,\n            deadlineDate: _deadline,\n            startDate: _startDate,\n            content: contentElement.value\n          });\n        case 18:\n          _listElement = document.getElementById(taskListId);\n          _listElement.innerHTML = \"\";\n          loadImprovementWorkTasks(projectId, stage, stageListClassName, taskListId, closeBtnId, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, saveBtnId, deleteBtnId);\n          //loadPage(projectId); //Loads tasks since updated ASK for help\n        case 21:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3);\n  }));\n}\nfunction deleteTask(projectId, stage, stageListClassName, taskModalId, taskListId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, saveBtnId, deleteBtnId, closeBtnId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n    var modalElement, taskId, listElement;\n    return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n      while (1) switch (_context4.prev = _context4.next) {\n        case 0:\n          modalElement = document.getElementById(taskModalId);\n          taskId = modalElement.getAttribute('data-task-id');\n          if (!taskId) {\n            _context4.next = 8;\n            break;\n          }\n          _context4.next = 5;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.deleteInstance)('task', taskId);\n        case 5:\n          listElement = document.getElementById(taskListId);\n          listElement.innerHTML = \"\";\n          loadImprovementWorkTasks(projectId, stage, stageListClassName, taskListId, closeBtnId, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, saveBtnId, deleteBtnId);\n        case 8:\n        case \"end\":\n          return _context4.stop();\n      }\n    }, _callee4);\n  }));\n}\nfunction formatDate(timeStamp) {\n  var date = timeStamp.toDate();\n  var day = String(date.getDate()).toString();\n  var month = String(date.getMonth() + 1).toString(); // Adding 1 because months are zero-based\n  var year = String(date.getFullYear()).toString();\n  if (parseInt(month, 10) < 10 && parseInt(day, 10) > 9) {\n    return \"\".concat(year, \"-0\").concat(month, \"-\").concat(day);\n  } else if (parseInt(month, 10) > 9 && parseInt(day, 10) < 10) {\n    return \"\".concat(year, \"-\").concat(month, \"-0\").concat(day);\n  } else if (parseInt(month, 10) < 10 && parseInt(day, 10) < 10) {\n    return \"\".concat(year, \"-0\").concat(month, \"-0\").concat(day);\n  } else {\n    return \"\".concat(year, \"-\").concat(month, \"-\").concat(day);\n  }\n}\nfunction timestamptoDate(timestamp) {\n  if (timestamp instanceof firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.Timestamp) {\n    var date = timestamp.toDate();\n    return date;\n  } else {\n    console.error('Invalid timestamp type.');\n    return null;\n  }\n}\nfunction getDaysMonthYear(startDate) {\n  var currentTime = new Date();\n  if (startDate) {\n    var millisecondsDifference = currentTime.getTime() - startDate.getTime();\n    // Convert milliseconds to seconds\n    var secondsDifference = millisecondsDifference / 1000;\n    // Calculate years, months, and days\n    var years = Math.floor(secondsDifference / (365.25 * 24 * 60 * 60));\n    var remainingSeconds = secondsDifference % (365.25 * 24 * 60 * 60);\n    var months = Math.floor(remainingSeconds / (30 * 24 * 60 * 60)); // Assuming 30 days per month\n    var days = Math.floor(remainingSeconds % (30 * 24 * 60 * 60) / (24 * 60 * 60));\n    return \" \".concat(years, \" \\xE5r, \").concat(months, \" m\\xE5nader, \").concat(days, \" dagar.\");\n  } else {\n    return \"Det finns inget startdatum registrerat\";\n  }\n}\nfunction loadProjectHeader(improvementWork) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n    var _this2 = this;\n    var loadingIndicators, titleP, aAreaElement, resources, time, formatdateStarted, aUnitArray, projectLeader, members, aProjectLeader, aMembers, aUnit, aUnitElement, hospitalArray, aHospital, aHospitalElement;\n    return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n      while (1) switch (_context6.prev = _context6.next) {\n        case 0:\n          loadingIndicators = document.querySelectorAll(\".loadingIndicator\");\n          loadingIndicators.forEach(function (indicator) {\n            indicator.style.display = 'block';\n          });\n          titleP = document.getElementById(\"title\");\n          titleP.textContent = improvementWork.name;\n          aAreaElement = document.getElementById(\"pArea\");\n          aAreaElement.textContent = improvementWork.area;\n          resources = document.getElementById(\"pResources\");\n          resources.textContent = improvementWork.resources;\n          time = document.getElementById(\"pTime\");\n          formatdateStarted = timestamptoDate(improvementWork.dateStarted);\n          time.textContent = getDaysMonthYear(formatdateStarted);\n          _context6.next = 13;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getUnits)({\n            unitId: improvementWork.unitId\n          });\n        case 13:\n          aUnitArray = _context6.sent;\n          _context6.next = 16;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getImprovementWorkResponsible)(improvementWork.id);\n        case 16:\n          projectLeader = _context6.sent;\n          _context6.next = 19;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getUsersForImprovementWork)(improvementWork.id);\n        case 19:\n          members = _context6.sent;\n          aProjectLeader = document.getElementById(\"pLeader\");\n          aProjectLeader.textContent = projectLeader.firstName + \" \" + projectLeader.lastName + \" (\" + projectLeader.email + \")\";\n          aMembers = document.getElementById(\"pMembers\");\n          members.forEach(function (member) {\n            return __awaiter(_this2, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n              return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n                while (1) switch (_context5.prev = _context5.next) {\n                  case 0:\n                    aMembers.textContent = aMembers.textContent + member.firstName + \" \" + member.lastName + \", \";\n                  case 1:\n                  case \"end\":\n                    return _context5.stop();\n                }\n              }, _callee5);\n            }));\n          });\n          //stop loding current members\n          if (aUnitArray.length === 0) {\n            console.log(\"Error loading the units.\");\n          }\n          aUnit = aUnitArray[0];\n          aUnitElement = document.getElementById(\"pUnit\");\n          aUnitElement.textContent = aUnit.name;\n          _context6.next = 30;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getHospitals)({\n            hospitalId: aUnit.hospitalId\n          });\n        case 30:\n          hospitalArray = _context6.sent;\n          if (hospitalArray.length === 0) {\n            console.log(\"Error loading the hospitals.\");\n          }\n          aHospital = hospitalArray[0];\n          aHospitalElement = document.getElementById(\"pHospital\");\n          aHospitalElement.textContent = aHospital.name;\n          // Close loading indicators\n          loadingIndicators.forEach(function (indicator) {\n            indicator.style.display = 'none';\n          });\n        case 36:\n        case \"end\":\n          return _context6.stop();\n      }\n    }, _callee6);\n  }));\n}\nfunction getDivWithIdFromHTML(path, id) {\n  // Returning a Promise\n  return fetch(path).then(function (response) {\n    return response.text();\n  }).then(function (html) {\n    // Create a temporary container\n    var container = document.createElement('div');\n    container.innerHTML = html;\n    // Get the modal content from the container\n    var element = container.querySelector(id);\n    return element;\n  })[\"catch\"](function (error) {\n    console.error('Error loading modal content:', error);\n    return null;\n  });\n}\nfunction loadMemberModal() {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var modalContent, selectEmployeeChangeSection;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          _context7.next = 2;\n          return getDivWithIdFromHTML('../projectPage/addMemberModal.html', '#addMemberModal');\n        case 2:\n          modalContent = _context7.sent;\n          if (modalContent) {\n            $('#container-fluid').append(modalContent);\n            $(modalContent).modal('show');\n          }\n          /*     const selectMemberContent = await getDivWithIdFromHTML('../initiateForbattringsarbete/initiateIdea.html', '#selectEmployees');\n              if (selectMemberContent) {\n                  $('#modal-body').append(selectMemberContent);\n              } */\n          selectEmployeeChangeSection = document.querySelector('#selectEmployee');\n          if (selectEmployeeChangeSection) {\n            selectEmployeeChangeSection.addEventListener('change', _initiateForbattringsarbete_initiateIdea_js__WEBPACK_IMPORTED_MODULE_2__.assignedEmployer);\n          } else {\n            console.error(\"Error: 'changebutton' not found\");\n          }\n          (0,_initiateForbattringsarbete_initiateIdea_js__WEBPACK_IMPORTED_MODULE_2__.loadEmployees)();\n        case 7:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7);\n  }));\n}\n\n//# sourceURL=webpack://c3/./client/projectPage/projectPage.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   formatDate: () => (/* binding */ formatDate),\n/* harmony export */   loadImprovementWorkTasks: () => (/* binding */ loadImprovementWorkTasks),\n/* harmony export */   loadMemberModal: () => (/* binding */ loadMemberModal),\n/* harmony export */   loadPage: () => (/* binding */ loadPage),\n/* harmony export */   loadProjectHeader: () => (/* binding */ loadProjectHeader),\n/* harmony export */   openTaskModal: () => (/* binding */ openTaskModal)\n/* harmony export */ });\n/* harmony import */ var _Database_database_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Database/database.js */ \"./client/Database/database.js\");\n/* harmony import */ var firebase_firestore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! firebase/firestore */ \"./node_modules/firebase/firestore/dist/esm/index.esm.js\");\n/* harmony import */ var _initiateForbattringsarbete_initiateIdea_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../initiateForbattringsarbete/initiateIdea.js */ \"./client/initiateForbattringsarbete/initiateIdea.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\nfunction loadPage(projectId) {}\nfunction loadImprovementWorkTasks(projectId, stage, stageListClassName, taskListId, closeBtnId, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, saveBtnId, deleteBtnId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var _this = this;\n    var tasks, taskListElement;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          _context2.next = 2;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getTasks)({\n            improvementWorkId: projectId,\n            stage: stage\n          });\n        case 2:\n          tasks = _context2.sent;\n          taskListElement = $(\"#\" + taskListId);\n          modalEventListeners(projectId, stage, stageListClassName, closeBtnId, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, taskListId, saveBtnId, deleteBtnId);\n          if (taskListElement) {\n            tasks.forEach(function (task) {\n              return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n                var taskElement, textSpan, checkbox;\n                return _regeneratorRuntime().wrap(function _callee$(_context) {\n                  while (1) switch (_context.prev = _context.next) {\n                    case 0:\n                      taskElement = $(\"<li>\");\n                      textSpan = $(\"<span>\").text(task.name);\n                      checkbox = $(\"<input>\").attr(\"type\", \"checkbox\");\n                      if (task.completed) {\n                        checkbox.prop(\"checked\", true);\n                      }\n                      taskElement.append(textSpan, checkbox);\n                      taskElement.addClass(stageListClassName);\n                      taskElement.on(\"click\", function () {\n                        var startDateFormatted = formatDate(task.startDate);\n                        var endDateFormatted = formatDate(task.deadlineDate);\n                        openTaskModal(task.name, task.content, task.id, startDateFormatted, endDateFormatted, taskModalId, taskTitleId, taskContentId, taskStartDateId, taskEndDateId);\n                      });\n                      checkbox.on(\"click\", function (event) {\n                        event.stopPropagation();\n                        if (checkbox.prop(\"checked\")) {\n                          console.log(\"Checkbox is checked.\");\n                          (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.updateInstance)(\"task\", task.id, {\n                            completed: true\n                          });\n                        } else {\n                          console.log(\"Checkbox is unchecked.\");\n                          (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.updateInstance)(\"task\", task.id, {\n                            completed: false\n                          });\n                        }\n                      });\n                      taskListElement.append(taskElement); // Stop if the container isn't found\n                    case 9:\n                    case \"end\":\n                      return _context.stop();\n                  }\n                }, _callee);\n              }));\n            });\n          } else {\n            console.log(\"Task container not found\");\n          }\n        case 6:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2);\n  }));\n}\n//Opens modal for a task\nfunction openTaskModal(taskTitle, taskContent, taskId, taskStart, taskEnd, taskModalId, taskTitleId, taskContentId, taskStartDateId, taskEndDateId) {\n  var taskModal = document.getElementById(taskModalId);\n  var title = document.getElementById(taskTitleId);\n  var content = document.getElementById(taskContentId);\n  var startDate = document.getElementById(taskStartDateId);\n  var endDate = document.getElementById(taskEndDateId);\n  if (taskModal) {\n    taskModal.setAttribute(\"data-task-id\", taskId);\n    if (title && content && startDate && endDate) {\n      title.value = \"\";\n      content.value = \"\";\n      startDate.value = \"\";\n      endDate.value = \"\";\n      if (taskTitle !== \"\" || taskContent !== \"\" || taskStart !== \"\" || taskEnd !== \"\") {\n        title.value = taskTitle;\n        content.value = taskContent;\n        startDate.value = taskStart;\n        endDate.value = taskEnd;\n      }\n    }\n    taskModal.style.display = \"block\";\n  }\n}\n//Adds eventlistener to close modal\nfunction modalEventListeners(projectId, stage, stageListClassName, closeBtnId, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, taskListId, saveBtnId, deleteBtnId) {\n  var closeButton = document.getElementById(closeBtnId);\n  var taskModal = document.getElementById(taskModalId);\n  var saveButton = document.getElementById(saveBtnId);\n  var deleteButton = document.getElementById(deleteBtnId);\n  if (closeButton && taskModal) {\n    var closeBtnListener = closeButton.hasAttribute(\"data-has-event-listener\");\n    if (!closeBtnListener) {\n      closeButton.setAttribute(\"data-has-event-listener\", \"true\");\n      closeButton.addEventListener(\"click\", function () {\n        taskModal.style.display = \"none\"; //Closes modal\n      });\n    }\n  }\n\n  if (saveButton && taskModal) {\n    var saveBtnListener = saveButton.hasAttribute(\"data-has-event-listener\");\n    if (!saveBtnListener) {\n      saveButton.setAttribute(\"data-has-event-listener\", \"true\");\n      saveButton.addEventListener(\"click\", function () {\n        createNewOrSaveTask(projectId, stage, stageListClassName, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, taskListId, closeBtnId, saveBtnId, deleteBtnId);\n        taskModal.style.display = \"none\"; //Closes modal\n      });\n    }\n  }\n\n  if (deleteButton && taskModal) {\n    var deleteBtnListener = deleteButton.hasAttribute(\"data-has-event-listener\");\n    if (!deleteBtnListener) {\n      deleteButton.setAttribute(\"data-has-event-listener\", \"true\");\n      deleteButton.addEventListener(\"click\", function () {\n        deleteTask(projectId, stage, stageListClassName, taskModalId, taskListId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, saveBtnId, deleteBtnId, closeBtnId);\n        taskModal.style.display = \"none\"; //Closes modal\n      });\n    }\n  }\n}\n\nfunction createNewOrSaveTask(projectId, stage, stageListClassName, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, taskListId, closeBtnId, saveBtnId, deleteBtnId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var modalElement, titleElement, deadlineElement, startElement, contentElement, taskId, improvementWork, deadline, startDate, listElement, _deadline, _startDate, _listElement;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          //title: string, deadline : Date, startDate: Date, stage: string, content: string\n          modalElement = document.getElementById(taskModalId);\n          titleElement = document.getElementById(taskTitleId);\n          deadlineElement = document.getElementById(taskEndDateId);\n          startElement = document.getElementById(taskStartDateId);\n          contentElement = document.getElementById(taskContentId);\n          taskId = modalElement.getAttribute(\"data-task-id\");\n          if (!(taskId === \"\")) {\n            _context3.next = 13;\n            break;\n          }\n          _context3.next = 9;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getObjectById)(\"improvementWork\", projectId);\n        case 9:\n          improvementWork = _context3.sent;\n          if (titleElement && contentElement && deadlineElement && startElement) {\n            if (titleElement.value !== \"\", deadlineElement.value !== \"\", startElement.value !== \"\", contentElement.value !== \"\") {\n              deadline = new Date(deadlineElement.value); //Date string to timestamp\n              startDate = new Date(startElement.value); //Date string to timestamp\n              (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.createTaskOnImprovementWork)(null, projectId, titleElement.value, deadline, startDate, improvementWork.currentStage, contentElement.value);\n              listElement = document.getElementById(taskListId);\n              listElement.innerHTML = \"\";\n              loadImprovementWorkTasks(projectId, stage, stageListClassName, taskListId, closeBtnId, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, saveBtnId, deleteBtnId);\n            } else {\n              console.log(\"All input fields for the task where not filled in\");\n            }\n          } else {\n            console.log(\"All input element where not found\");\n          }\n          _context3.next = 21;\n          break;\n        case 13:\n          if (!taskId) {\n            _context3.next = 21;\n            break;\n          }\n          _deadline = new Date(deadlineElement.value); //Date string to timestamp\n          _startDate = new Date(startElement.value); //Date string to timestamp\n          _context3.next = 18;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.updateInstance)(\"task\", taskId, {\n            name: titleElement.value,\n            deadlineDate: _deadline,\n            startDate: _startDate,\n            content: contentElement.value\n          });\n        case 18:\n          _listElement = document.getElementById(taskListId);\n          _listElement.innerHTML = \"\";\n          loadImprovementWorkTasks(projectId, stage, stageListClassName, taskListId, closeBtnId, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, saveBtnId, deleteBtnId);\n          //loadPage(projectId); //Loads tasks since updated ASK for help\n        case 21:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3);\n  }));\n}\nfunction deleteTask(projectId, stage, stageListClassName, taskModalId, taskListId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, saveBtnId, deleteBtnId, closeBtnId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n    var modalElement, taskId, listElement;\n    return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n      while (1) switch (_context4.prev = _context4.next) {\n        case 0:\n          modalElement = document.getElementById(taskModalId);\n          taskId = modalElement.getAttribute(\"data-task-id\");\n          if (!taskId) {\n            _context4.next = 8;\n            break;\n          }\n          _context4.next = 5;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.deleteInstance)(\"task\", taskId);\n        case 5:\n          listElement = document.getElementById(taskListId);\n          listElement.innerHTML = \"\";\n          loadImprovementWorkTasks(projectId, stage, stageListClassName, taskListId, closeBtnId, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, saveBtnId, deleteBtnId);\n        case 8:\n        case \"end\":\n          return _context4.stop();\n      }\n    }, _callee4);\n  }));\n}\nfunction formatDate(timeStamp) {\n  var date = timeStamp.toDate();\n  var day = String(date.getDate()).toString();\n  var month = String(date.getMonth() + 1).toString(); // Adding 1 because months are zero-based\n  var year = String(date.getFullYear()).toString();\n  if (parseInt(month, 10) < 10 && parseInt(day, 10) > 9) {\n    return \"\".concat(year, \"-0\").concat(month, \"-\").concat(day);\n  } else if (parseInt(month, 10) > 9 && parseInt(day, 10) < 10) {\n    return \"\".concat(year, \"-\").concat(month, \"-0\").concat(day);\n  } else if (parseInt(month, 10) < 10 && parseInt(day, 10) < 10) {\n    return \"\".concat(year, \"-0\").concat(month, \"-0\").concat(day);\n  } else {\n    return \"\".concat(year, \"-\").concat(month, \"-\").concat(day);\n  }\n}\nfunction timestamptoDate(timestamp) {\n  if (timestamp instanceof firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.Timestamp) {\n    var date = timestamp.toDate();\n    return date;\n  } else {\n    console.error(\"Invalid timestamp type.\");\n    return null;\n  }\n}\nfunction getDaysMonthYear(startDate) {\n  var currentTime = new Date();\n  if (startDate) {\n    var millisecondsDifference = currentTime.getTime() - startDate.getTime();\n    // Convert milliseconds to seconds\n    var secondsDifference = millisecondsDifference / 1000;\n    // Calculate years, months, and days\n    var years = Math.floor(secondsDifference / (365.25 * 24 * 60 * 60));\n    var remainingSeconds = secondsDifference % (365.25 * 24 * 60 * 60);\n    var months = Math.floor(remainingSeconds / (30 * 24 * 60 * 60)); // Assuming 30 days per month\n    var days = Math.floor(remainingSeconds % (30 * 24 * 60 * 60) / (24 * 60 * 60));\n    return \" \".concat(years, \" \\xE5r, \").concat(months, \" m\\xE5nader, \").concat(days, \" dagar.\");\n  } else {\n    return \"Det finns inget startdatum registrerat\";\n  }\n}\nfunction loadProjectHeader(improvementWork) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n    var _this2 = this;\n    var loadingIndicators, titleP, aAreaElement, resources, time, formatdateStarted, aUnitArray, projectLeader, members, aProjectLeader, aMembers, aUnit, aUnitElement, hospitalArray, aHospital, aHospitalElement;\n    return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n      while (1) switch (_context6.prev = _context6.next) {\n        case 0:\n          // Show loading indicators\n          loadingIndicators = document.querySelectorAll(\".loadingIndicator\");\n          loadingIndicators.forEach(function (indicator) {\n            indicator.style.display = \"block\";\n          });\n          titleP = document.getElementById(\"title\");\n          titleP.textContent = improvementWork.name;\n          aAreaElement = document.getElementById(\"pArea\");\n          aAreaElement.textContent = improvementWork.area;\n          resources = document.getElementById(\"pResources\");\n          resources.textContent = improvementWork.resources;\n          time = document.getElementById(\"pTime\");\n          formatdateStarted = timestamptoDate(improvementWork.dateStarted);\n          time.textContent = getDaysMonthYear(formatdateStarted);\n          _context6.next = 13;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getUnits)({\n            unitId: improvementWork.unitId\n          });\n        case 13:\n          aUnitArray = _context6.sent;\n          _context6.next = 16;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getImprovementWorkResponsible)(improvementWork.id);\n        case 16:\n          projectLeader = _context6.sent;\n          _context6.next = 19;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getUsersForImprovementWork)(improvementWork.id);\n        case 19:\n          members = _context6.sent;\n          aProjectLeader = document.getElementById(\"pLeader\");\n          aProjectLeader.textContent = projectLeader.firstName + \" \" + projectLeader.lastName + \" (\" + projectLeader.email + \")\";\n          aMembers = document.getElementById(\"pMembers\");\n          members.forEach(function (member) {\n            return __awaiter(_this2, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n              return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n                while (1) switch (_context5.prev = _context5.next) {\n                  case 0:\n                    aMembers.textContent = aMembers.textContent + member.firstName + \" \" + member.lastName + \", \";\n                  case 1:\n                  case \"end\":\n                    return _context5.stop();\n                }\n              }, _callee5);\n            }));\n          });\n          //stop loding current members\n          if (aUnitArray.length === 0) {\n            console.log(\"Error loading the units.\");\n          }\n          aUnit = aUnitArray[0];\n          aUnitElement = document.getElementById(\"pUnit\");\n          aUnitElement.textContent = aUnit.name;\n          _context6.next = 30;\n          return (0,_Database_database_js__WEBPACK_IMPORTED_MODULE_0__.getHospitals)({\n            hospitalId: aUnit.hospitalId\n          });\n        case 30:\n          hospitalArray = _context6.sent;\n          if (hospitalArray.length === 0) {\n            console.log(\"Error loading the hospitals.\");\n          }\n          aHospital = hospitalArray[0];\n          aHospitalElement = document.getElementById(\"pHospital\");\n          aHospitalElement.textContent = aHospital.name;\n          // Close loading indicators\n          loadingIndicators.forEach(function (indicator) {\n            indicator.style.display = \"none\";\n          });\n        case 36:\n        case \"end\":\n          return _context6.stop();\n      }\n    }, _callee6);\n  }));\n}\nfunction getDivWithIdFromHTML(path, id) {\n  // Returning a Promise\n  return fetch(path).then(function (response) {\n    return response.text();\n  }).then(function (html) {\n    // Create a temporary container\n    var container = document.createElement(\"div\");\n    container.innerHTML = html;\n    // Get the modal content from the container\n    var element = container.querySelector(id);\n    return element;\n  })[\"catch\"](function (error) {\n    console.error(\"Error loading modal content:\", error);\n    return null;\n  });\n}\nfunction loadMemberModal() {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var modalContent, selectEmployeeChangeSection;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          _context7.next = 2;\n          return getDivWithIdFromHTML(\"../projectPage/addMemberModal.html\", \"#addMemberModal\");\n        case 2:\n          modalContent = _context7.sent;\n          if (modalContent) {\n            $(\"#container-fluid\").append(modalContent);\n            $(modalContent).modal(\"show\");\n          }\n          /*     const selectMemberContent = await getDivWithIdFromHTML('../initiateForbattringsarbete/initiateIdea.html', '#selectEmployees');\n            if (selectMemberContent) {\n                $('#modal-body').append(selectMemberContent);\n            } */\n          selectEmployeeChangeSection = document.querySelector(\"#selectEmployee\");\n          if (selectEmployeeChangeSection) {\n            selectEmployeeChangeSection.addEventListener(\"change\", _initiateForbattringsarbete_initiateIdea_js__WEBPACK_IMPORTED_MODULE_2__.assignedEmployer);\n          } else {\n            console.error(\"Error: 'changebutton' not found\");\n          }\n          (0,_initiateForbattringsarbete_initiateIdea_js__WEBPACK_IMPORTED_MODULE_2__.loadEmployees)();\n        case 7:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7);\n  }));\n}\n\n//# sourceURL=webpack://c3/./client/projectPage/projectPage.js?");
 
 /***/ }),
 
diff --git a/client/dist/register.bundle.js b/client/dist/register.bundle.js
index 2c6344e5926ebdcf95f593ffd25d0c2288234b08..50c7c8645c0f66104856bbaad94b694f11fda7cb 100644
--- a/client/dist/register.bundle.js
+++ b/client/dist/register.bundle.js
@@ -96,7 +96,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
   \*******************************************/
 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   login: () => (/* binding */ login),\n/* harmony export */   logout: () => (/* binding */ logout),\n/* harmony export */   register: () => (/* binding */ register)\n/* harmony export */ });\n/* harmony import */ var _database_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./database.js */ \"./client/Database/database.js\");\n/* harmony import */ var firebase_auth__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! firebase/auth */ \"./node_modules/firebase/auth/dist/esm/index.esm.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n///////////////////////////////////login functions/////////////////////////////////////////////////////////////////////\n//Log ins the user\nfunction login(email, password) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var _this = this;\n    var returnValue;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          returnValue = false;\n          _context2.next = 3;\n          return (0,firebase_auth__WEBPACK_IMPORTED_MODULE_1__.signInWithEmailAndPassword)(_database_js__WEBPACK_IMPORTED_MODULE_0__.auth, email, password).then(function (userCredential) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n              var user;\n              return _regeneratorRuntime().wrap(function _callee$(_context) {\n                while (1) switch (_context.prev = _context.next) {\n                  case 0:\n                    _context.next = 2;\n                    return (0,_database_js__WEBPACK_IMPORTED_MODULE_0__.getUsers)({\n                      uid: userCredential.user.uid\n                    });\n                  case 2:\n                    user = _context.sent;\n                    localStorage.setItem(\"user\", JSON.stringify(user));\n                    returnValue = true;\n                  case 5:\n                  case \"end\":\n                    return _context.stop();\n                }\n              }, _callee);\n            }));\n          })[\"catch\"](function (error) {\n            console.log(error);\n            returnValue = false;\n          });\n        case 3:\n          return _context2.abrupt(\"return\", returnValue);\n        case 4:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2);\n  }));\n}\n//Redirects to the login in screen and log outs the user\nfunction logout() {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          (0,firebase_auth__WEBPACK_IMPORTED_MODULE_1__.signOut)(_database_js__WEBPACK_IMPORTED_MODULE_0__.auth);\n          localStorage.removeItem(\"user\");\n        case 2:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3);\n  }));\n}\n//Registers and log ins a new user\nfunction register(hsaId, hospitalName, unitName, role, firstName, lastName, email, password, isManager) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n    var _this2 = this;\n    var hospital, unit, uid;\n    return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n      while (1) switch (_context5.prev = _context5.next) {\n        case 0:\n          _context5.next = 2;\n          return (0,_database_js__WEBPACK_IMPORTED_MODULE_0__.getHospitals)({\n            hospitalName: hospitalName\n          });\n        case 2:\n          hospital = _context5.sent;\n          if (!(hospital.length != 1)) {\n            _context5.next = 6;\n            break;\n          }\n          console.log(\"hospital does not exist\");\n          return _context5.abrupt(\"return\", false);\n        case 6:\n          _context5.next = 8;\n          return (0,_database_js__WEBPACK_IMPORTED_MODULE_0__.getUnits)({\n            name: unitName,\n            hospitalId: hospital[0].id,\n            ascendingUnitNames: false\n          });\n        case 8:\n          unit = _context5.sent;\n          if (!(unit.length != 1)) {\n            _context5.next = 12;\n            break;\n          }\n          console.log(\"that unit does not exist for this hospital\");\n          return _context5.abrupt(\"return\", false);\n        case 12:\n          uid = \"\";\n          _context5.next = 15;\n          return (0,firebase_auth__WEBPACK_IMPORTED_MODULE_1__.createUserWithEmailAndPassword)(_database_js__WEBPACK_IMPORTED_MODULE_0__.auth, email, password).then(function (userCredential) {\n            return __awaiter(_this2, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n              return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n                while (1) switch (_context4.prev = _context4.next) {\n                  case 0:\n                    uid = userCredential.user.uid;\n                  case 1:\n                  case \"end\":\n                    return _context4.stop();\n                }\n              }, _callee4);\n            }));\n          })[\"catch\"](function (error) {\n            var errorMessage = error.message;\n            console.log(errorMessage);\n            return false;\n          });\n        case 15:\n          (0,_database_js__WEBPACK_IMPORTED_MODULE_0__.createUser)(hsaId, unit[0].id, firstName, lastName, email, isManager, \"Sjuksöterska\", uid);\n          return _context5.abrupt(\"return\", login(email, password));\n        case 17:\n        case \"end\":\n          return _context5.stop();\n      }\n    }, _callee5);\n  }));\n}\n\n\n//# sourceURL=webpack://c3/./client/Database/authentication.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   login: () => (/* binding */ login),\n/* harmony export */   logout: () => (/* binding */ logout),\n/* harmony export */   register: () => (/* binding */ register)\n/* harmony export */ });\n/* harmony import */ var _database_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./database.js */ \"./client/Database/database.js\");\n/* harmony import */ var firebase_auth__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! firebase/auth */ \"./node_modules/firebase/auth/dist/esm/index.esm.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n///////////////////////////////////login functions/////////////////////////////////////////////////////////////////////\n//Log ins the user\nfunction login(email, password) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var _this = this;\n    var returnValue;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          returnValue = false;\n          _context2.next = 3;\n          return (0,firebase_auth__WEBPACK_IMPORTED_MODULE_1__.signInWithEmailAndPassword)(_database_js__WEBPACK_IMPORTED_MODULE_0__.auth, email, password).then(function (userCredential) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n              var user;\n              return _regeneratorRuntime().wrap(function _callee$(_context) {\n                while (1) switch (_context.prev = _context.next) {\n                  case 0:\n                    _context.next = 2;\n                    return (0,_database_js__WEBPACK_IMPORTED_MODULE_0__.getUsers)({\n                      uid: userCredential.user.uid\n                    });\n                  case 2:\n                    user = _context.sent;\n                    localStorage.setItem(\"user\", JSON.stringify(user));\n                    returnValue = true;\n                  case 5:\n                  case \"end\":\n                    return _context.stop();\n                }\n              }, _callee);\n            }));\n          })[\"catch\"](function (error) {\n            console.log(error);\n            alert(\"Felaktiga inloggnings-uppgifter\");\n            returnValue = false;\n          });\n        case 3:\n          return _context2.abrupt(\"return\", returnValue);\n        case 4:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2);\n  }));\n}\n//Redirects to the login in screen and log outs the user\nfunction logout() {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          (0,firebase_auth__WEBPACK_IMPORTED_MODULE_1__.signOut)(_database_js__WEBPACK_IMPORTED_MODULE_0__.auth);\n          localStorage.removeItem(\"user\");\n        case 2:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3);\n  }));\n}\n//Registers and log ins a new user\nfunction register(hsaId, hospitalName, unitName, role, firstName, lastName, email, password, isManager) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n    var _this2 = this;\n    var hospital, unit, uid;\n    return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n      while (1) switch (_context5.prev = _context5.next) {\n        case 0:\n          _context5.next = 2;\n          return (0,_database_js__WEBPACK_IMPORTED_MODULE_0__.getHospitals)({\n            hospitalName: hospitalName\n          });\n        case 2:\n          hospital = _context5.sent;\n          if (!(hospital.length != 1)) {\n            _context5.next = 6;\n            break;\n          }\n          console.log(\"hospital does not exist\");\n          return _context5.abrupt(\"return\", false);\n        case 6:\n          _context5.next = 8;\n          return (0,_database_js__WEBPACK_IMPORTED_MODULE_0__.getUnits)({\n            name: unitName,\n            hospitalId: hospital[0].id,\n            ascendingUnitNames: false\n          });\n        case 8:\n          unit = _context5.sent;\n          if (!(unit.length != 1)) {\n            _context5.next = 12;\n            break;\n          }\n          console.log(\"that unit does not exist for this hospital\");\n          return _context5.abrupt(\"return\", false);\n        case 12:\n          uid = \"\";\n          _context5.next = 15;\n          return (0,firebase_auth__WEBPACK_IMPORTED_MODULE_1__.createUserWithEmailAndPassword)(_database_js__WEBPACK_IMPORTED_MODULE_0__.auth, email, password).then(function (userCredential) {\n            return __awaiter(_this2, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n              return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n                while (1) switch (_context4.prev = _context4.next) {\n                  case 0:\n                    uid = userCredential.user.uid;\n                  case 1:\n                  case \"end\":\n                    return _context4.stop();\n                }\n              }, _callee4);\n            }));\n          })[\"catch\"](function (error) {\n            var errorMessage = error.message;\n            console.log(errorMessage);\n            return false;\n          });\n        case 15:\n          (0,_database_js__WEBPACK_IMPORTED_MODULE_0__.createUser)(hsaId, unit[0].id, firstName, lastName, email, isManager, \"Sjuksöterska\", uid);\n          return _context5.abrupt(\"return\", login(email, password));\n        case 17:\n        case \"end\":\n          return _context5.stop();\n      }\n    }, _callee5);\n  }));\n}\n\n\n//# sourceURL=webpack://c3/./client/Database/authentication.js?");
 
 /***/ }),
 
@@ -106,7 +106,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
   \*************************************/
 /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
 
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   addDocumentToImprovementWork: () => (/* binding */ addDocumentToImprovementWork),\n/* harmony export */   addMemberToImprovementWork: () => (/* binding */ addMemberToImprovementWork),\n/* harmony export */   addMemberToTask: () => (/* binding */ addMemberToTask),\n/* harmony export */   addNoteToUser: () => (/* binding */ addNoteToUser),\n/* harmony export */   auth: () => (/* binding */ auth),\n/* harmony export */   changePatientRiskLevel: () => (/* binding */ changePatientRiskLevel),\n/* harmony export */   createComment: () => (/* binding */ createComment),\n/* harmony export */   createHospital: () => (/* binding */ createHospital),\n/* harmony export */   createImprovementWork: () => (/* binding */ createImprovementWork),\n/* harmony export */   createSuggestion: () => (/* binding */ createSuggestion),\n/* harmony export */   createTaskOnImprovementWork: () => (/* binding */ createTaskOnImprovementWork),\n/* harmony export */   createUnit: () => (/* binding */ createUnit),\n/* harmony export */   createUser: () => (/* binding */ createUser),\n/* harmony export */   createdDocumentInKnowledgeBank: () => (/* binding */ createdDocumentInKnowledgeBank),\n/* harmony export */   db: () => (/* binding */ db),\n/* harmony export */   deleteAllDocumentsInCollection: () => (/* binding */ deleteAllDocumentsInCollection),\n/* harmony export */   deleteInstance: () => (/* binding */ deleteInstance),\n/* harmony export */   deleteSuggestion: () => (/* binding */ deleteSuggestion),\n/* harmony export */   finalizeImprovementWork: () => (/* binding */ finalizeImprovementWork),\n/* harmony export */   getComments: () => (/* binding */ getComments),\n/* harmony export */   getDocumentsByImprovementWork: () => (/* binding */ getDocumentsByImprovementWork),\n/* harmony export */   getFilteredImprovementWorks: () => (/* binding */ getFilteredImprovementWorks),\n/* harmony export */   getHospitals: () => (/* binding */ getHospitals),\n/* harmony export */   getImprovementWorkOwner: () => (/* binding */ getImprovementWorkOwner),\n/* harmony export */   getImprovementWorkResponsible: () => (/* binding */ getImprovementWorkResponsible),\n/* harmony export */   getImprovementWorks: () => (/* binding */ getImprovementWorks),\n/* harmony export */   getImprovementWorksForUser: () => (/* binding */ getImprovementWorksForUser),\n/* harmony export */   getObject: () => (/* binding */ getObject),\n/* harmony export */   getObjectById: () => (/* binding */ getObjectById),\n/* harmony export */   getSuggestions: () => (/* binding */ getSuggestions),\n/* harmony export */   getTasks: () => (/* binding */ getTasks),\n/* harmony export */   getUnits: () => (/* binding */ getUnits),\n/* harmony export */   getUsers: () => (/* binding */ getUsers),\n/* harmony export */   getUsersForImprovementWork: () => (/* binding */ getUsersForImprovementWork),\n/* harmony export */   startOrPauseImprovementWork: () => (/* binding */ startOrPauseImprovementWork),\n/* harmony export */   updateInstance: () => (/* binding */ updateInstance),\n/* harmony export */   upvoteComment: () => (/* binding */ upvoteComment),\n/* harmony export */   upvoteSuggestion: () => (/* binding */ upvoteSuggestion)\n/* harmony export */ });\n/* harmony import */ var firebase_app__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! firebase/app */ \"./node_modules/firebase/app/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_firestore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! firebase/firestore */ \"./node_modules/firebase/firestore/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_auth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! firebase/auth */ \"./node_modules/firebase/auth/dist/esm/index.esm.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n// C3 solutions databasen - ska användas för P&S\nvar firebaseConfig = {\n  apiKey: \"AIzaSyB7n9YIDCmeyzeZzteFnXqOUBijzEO59ls\",\n  authDomain: \"backup-277c3.firebaseapp.com\",\n  projectId: \"backup-277c3\",\n  storageBucket: \"backup-277c3.appspot.com\",\n  messagingSenderId: \"296015398098\",\n  appId: \"1:296015398098:web:71e1d1ec2b0c370e5a590b\",\n  measurementId: \"G-E933CXWWCG\"\n};\n//Backup databas - ska användas av R&D\n/*  const firebaseConfig = {\n   apiKey: \"AIzaSyAMfD8V0belL6GxbuoehL__6YTFZH4pyoc\",\n   authDomain: \"company3-backup.firebaseapp.com\",\n   projectId: \"company3-backup\",\n   storageBucket: \"company3-backup.appspot.com\",\n   messagingSenderId: \"820650717800\",\n   appId: \"1:820650717800:web:7557c7734ed59d3f7281dd\"\n };\n */\n//Bens egna reserv #nödfall\n/* const firebaseConfig = {\n  apiKey: \"AIzaSyBIsZq_yOsJljp1woIxndJO1GkW6soh-g4\",\n  authDomain: \"company3-456bb.firebaseapp.com\",\n  projectId: \"company3-456bb\",\n  storageBucket: \"company3-456bb.appspot.com\",\n  messagingSenderId: \"310033686522\",\n  appId: \"1:310033686522:web:63198bb0db679c98ee4e43\",\n  measurementId: \"G-PFLDQY00DB\"\n}; */\nvar app = (0,firebase_app__WEBPACK_IMPORTED_MODULE_0__.initializeApp)(firebaseConfig);\nvar auth = (0,firebase_auth__WEBPACK_IMPORTED_MODULE_2__.getAuth)();\nvar db = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getFirestore)(app);\nvar userCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\nvar unitCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\nvar improvementWorkCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\nvar taskCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\nvar hospitalCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\nvar suggestionCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\nvar knowledgeDocumentCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"knowledgeDocument\");\nvar userImprovementWorkCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"userImprovementWork\");\nvar userTaskCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"userTask\");\n////////////////////////////////////////Setters///////////////////////////////////////////////////////////////////\n// Function to create user a new user in database\n// takes in userId, unitId, firstname, lastname, email and password as string\n// throws error if transaction failed\nfunction createUser(hsaId, unitId, firstName, lastName, email, manager, role, uid) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n    var userRef;\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          _context.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, hsaId);\n          _context.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(userRef, {\n            id: userRef.id,\n            uid: uid,\n            unitId: unitId,\n            firstName: firstName,\n            lastName: lastName,\n            email: email,\n            role: role,\n            // TODO Replace with userImprovementWork collection\n            improvementWorks: [],\n            tasks: [],\n            manager: manager\n          });\n        case 4:\n          _context.next = 9;\n          break;\n        case 6:\n          _context.prev = 6;\n          _context.t0 = _context[\"catch\"](0);\n          console.log(_context.t0);\n        case 9:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee, null, [[0, 6]]);\n  }));\n}\nfunction createImprovementWork(id, name, currentStage, content,\n// Är detta description bör detta förtydligas. JA\nunitId, purpose,\n//Bör tas bort motsvaras av p2- mål med projektet\npatientRiskLevel, area, projectLeader,\n//Adding projectleader & members to the project\nmembers) {\n  var resources = arguments.length > 10 && arguments[10] !== undefined ? arguments[10] : \"Inte definerat ännu\";\n  var p1 = arguments.length > 11 && arguments[11] !== undefined ? arguments[11] : \"\";\n  var p2 = arguments.length > 12 && arguments[12] !== undefined ? arguments[12] : \"\";\n  var p3 = arguments.length > 13 && arguments[13] !== undefined ? arguments[13] : \"\";\n  var p4 = arguments.length > 14 && arguments[14] !== undefined ? arguments[14] : \"\";\n  var p5 = arguments.length > 15 && arguments[15] !== undefined ? arguments[15] : \"\";\n  var p6 = arguments.length > 16 && arguments[16] !== undefined ? arguments[16] : \"\";\n  var p7 = arguments.length > 17 && arguments[17] !== undefined ? arguments[17] : \"\";\n  var g1 = arguments.length > 18 && arguments[18] !== undefined ? arguments[18] : \"\";\n  var g2 = arguments.length > 19 && arguments[19] !== undefined ? arguments[19] : \"\";\n  var g3 = arguments.length > 20 && arguments[20] !== undefined ? arguments[20] : \"\";\n  var g4 = arguments.length > 21 && arguments[21] !== undefined ? arguments[21] : \"\";\n  var g5 = arguments.length > 22 && arguments[22] !== undefined ? arguments[22] : \"\";\n  var s1 = arguments.length > 23 && arguments[23] !== undefined ? arguments[23] : \"\";\n  var s2 = arguments.length > 24 && arguments[24] !== undefined ? arguments[24] : \"\";\n  var s3 = arguments.length > 25 && arguments[25] !== undefined ? arguments[25] : \"\";\n  var a1 = arguments.length > 26 && arguments[26] !== undefined ? arguments[26] : \"\";\n  var a2 = arguments.length > 27 && arguments[27] !== undefined ? arguments[27] : \"\";\n  var a3 = arguments.length > 28 && arguments[28] !== undefined ? arguments[28] : \"\";\n  var a4 = arguments.length > 29 && arguments[29] !== undefined ? arguments[29] : \"\";\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var improvementWorkData, improvementWorkRef, _improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          _context2.prev = 0;\n          improvementWorkData = {\n            name: name,\n            lowerCaseName: name.toLowerCase(),\n            currentStage: currentStage,\n            content: content,\n            purpose: purpose,\n            dateStarted: new Date(),\n            unitId: unitId,\n            completed: false,\n            ongoing: false,\n            tasks: [],\n            patientRiskLevel: patientRiskLevel,\n            area: area,\n            p1: p1,\n            p2: p2,\n            p3: p3,\n            p4: p4,\n            p5: p5,\n            p6: p6,\n            p7: p7,\n            g1: g1,\n            g2: g2,\n            g3: g3,\n            g4: g4,\n            g5: g5,\n            s1: s1,\n            s2: s2,\n            s3: s3,\n            a1: a1,\n            a2: a2,\n            a3: a3,\n            a4: a4,\n            resources: resources\n          };\n          if (!id) {\n            _context2.next = 8;\n            break;\n          }\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, id);\n          _context2.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(improvementWorkRef, Object.assign({\n            id: improvementWorkRef.id\n          }, improvementWorkData));\n        case 6:\n          _context2.next = 12;\n          break;\n        case 8:\n          _improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection);\n          _context2.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(_improvementWorkRef, improvementWorkData);\n        case 11:\n          id = _improvementWorkRef.id;\n        case 12:\n          //adding the projectleader and users to the project\n          addMemberToImprovementWork(projectLeader, id, false, true);\n          members.forEach(function (member) {\n            addMemberToImprovementWork(member, id, false, false);\n          });\n          _context2.next = 20;\n          break;\n        case 16:\n          _context2.prev = 16;\n          _context2.t0 = _context2[\"catch\"](0);\n          console.log(\"Error creating improvementWork: \", _context2.t0);\n          throw _context2.t0;\n        case 20:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2, null, [[0, 16]]);\n  }));\n}\nfunction addMemberToTask(userHsaId, taskId, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var relationRef;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          _context3.prev = 0;\n          relationRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userTaskCollection);\n          _context3.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(relationRef, {\n            id: relationRef.id,\n            userHsaId: userHsaId,\n            taskId: taskId,\n            isResponsibleFor: isResponsibleFor\n          });\n        case 4:\n          _context3.next = 10;\n          break;\n        case 6:\n          _context3.prev = 6;\n          _context3.t0 = _context3[\"catch\"](0);\n          console.log(\"Error adding member to task: \", _context3.t0);\n          throw _context3.t0;\n        case 10:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3, null, [[0, 6]]);\n  }));\n}\nfunction addMemberToImprovementWork(userHsaId, improvementWorkId, isOwner, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n    var relationRef;\n    return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n      while (1) switch (_context4.prev = _context4.next) {\n        case 0:\n          _context4.prev = 0;\n          relationRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userImprovementWorkCollection);\n          _context4.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(relationRef, {\n            id: relationRef.id,\n            userHsaId: userHsaId,\n            improvementWorkId: improvementWorkId,\n            isOwner: isOwner,\n            isResponsibleFor: isResponsibleFor\n          });\n        case 4:\n          _context4.next = 10;\n          break;\n        case 6:\n          _context4.prev = 6;\n          _context4.t0 = _context4[\"catch\"](0);\n          console.log(\"Error adding member to improvementWork: \", _context4.t0);\n          throw _context4.t0;\n        case 10:\n        case \"end\":\n          return _context4.stop();\n      }\n    }, _callee4, null, [[0, 6]]);\n  }));\n}\nfunction createTaskOnImprovementWork(taskId, improvementWorkId, name, deadlineDate, startDate, stage, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n    var taskData, taskRef, _taskRef;\n    return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n      while (1) switch (_context5.prev = _context5.next) {\n        case 0:\n          _context5.prev = 0;\n          taskData = {\n            improvementWorkId: improvementWorkId,\n            name: name,\n            deadlineDate: deadlineDate,\n            startDate: startDate,\n            stage: stage,\n            content: content,\n            completed: false\n          };\n          if (!taskId) {\n            _context5.next = 8;\n            break;\n          }\n          taskRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context5.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(taskRef, Object.assign({\n            id: taskRef.id\n          }, taskData));\n        case 6:\n          _context5.next = 11;\n          break;\n        case 8:\n          _taskRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection);\n          _context5.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(_taskRef, taskData);\n        case 11:\n          _context5.next = 17;\n          break;\n        case 13:\n          _context5.prev = 13;\n          _context5.t0 = _context5[\"catch\"](0);\n          console.log(\"Error creating task: \", _context5.t0);\n          throw _context5.t0;\n        case 17:\n        case \"end\":\n          return _context5.stop();\n      }\n    }, _callee5, null, [[0, 13]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction createdDocumentInKnowledgeBank(documentUrl, name, projectId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n      while (1) switch (_context6.prev = _context6.next) {\n        case 0:\n          _context6.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(knowledgeDocumentCollection);\n          _context6.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            name: name,\n            projectId: projectId\n          });\n        case 4:\n          _context6.next = 10;\n          break;\n        case 6:\n          _context6.prev = 6;\n          _context6.t0 = _context6[\"catch\"](0);\n          console.log(\"Error adding document: \", _context6.t0);\n          throw _context6.t0;\n        case 10:\n        case \"end\":\n          return _context6.stop();\n      }\n    }, _callee6, null, [[0, 6]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction addDocumentToImprovementWork(documentUrl, name, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var improvementWorkRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          _context7.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkRef, \"documents\");\n          _context7.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            timestamp: new Date(),\n            name: name\n          });\n        case 5:\n          _context7.next = 11;\n          break;\n        case 7:\n          _context7.prev = 7;\n          _context7.t0 = _context7[\"catch\"](0);\n          console.log(\"Error adding document: \", _context7.t0);\n          throw _context7.t0;\n        case 11:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7, null, [[0, 7]]);\n  }));\n}\nfunction getDocumentsByImprovementWork(improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var q, querySnapshot, documents, _iterator, _step, _doc, documentId, documentDoc;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          _context8.prev = 0;\n          console.log(\"Getting documents for improvementwork: \", improvementWorkId);\n          // Query the userImprovementWork collection for relations involving this user\n          q = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)(knowledgeDocumentCollection, (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"projectId\", \"==\", improvementWorkId));\n          _context8.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 5:\n          querySnapshot = _context8.sent;\n          // Fetch each related improvementWork document\n          documents = [];\n          _iterator = _createForOfIteratorHelper(querySnapshot.docs);\n          _context8.prev = 8;\n          _iterator.s();\n        case 10:\n          if ((_step = _iterator.n()).done) {\n            _context8.next = 19;\n            break;\n          }\n          _doc = _step.value;\n          documentId = _doc.data().id;\n          _context8.next = 15;\n          return getObjectById(\"knowledgeDocument\", documentId);\n        case 15:\n          documentDoc = _context8.sent;\n          documents.push(documentDoc);\n        case 17:\n          _context8.next = 10;\n          break;\n        case 19:\n          _context8.next = 24;\n          break;\n        case 21:\n          _context8.prev = 21;\n          _context8.t0 = _context8[\"catch\"](8);\n          _iterator.e(_context8.t0);\n        case 24:\n          _context8.prev = 24;\n          _iterator.f();\n          return _context8.finish(24);\n        case 27:\n          return _context8.abrupt(\"return\", documents);\n        case 30:\n          _context8.prev = 30;\n          _context8.t1 = _context8[\"catch\"](0);\n          console.error(\"Error getting documents for improvmentwork: \", _context8.t1);\n          throw _context8.t1;\n        case 34:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8, null, [[0, 30], [8, 21, 24, 27]]);\n  }));\n}\nfunction createHospital(hospitalId,\n// should be auto?\nname) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n    var hospitalData, hospitalRef, _hospitalRef;\n    return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n      while (1) switch (_context9.prev = _context9.next) {\n        case 0:\n          _context9.prev = 0;\n          hospitalData = {\n            name: name,\n            units: []\n          };\n          if (!hospitalId) {\n            _context9.next = 8;\n            break;\n          }\n          hospitalRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context9.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(hospitalRef, Object.assign({\n            id: hospitalRef.id\n          }, hospitalData));\n        case 6:\n          _context9.next = 11;\n          break;\n        case 8:\n          _hospitalRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection);\n          _context9.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(_hospitalRef, hospitalData);\n        case 11:\n          _context9.next = 17;\n          break;\n        case 13:\n          _context9.prev = 13;\n          _context9.t0 = _context9[\"catch\"](0);\n          console.log(\"Error creating hospital: \", _context9.t0);\n          throw _context9.t0;\n        case 17:\n        case \"end\":\n          return _context9.stop();\n      }\n    }, _callee9, null, [[0, 13]]);\n  }));\n}\nfunction createUnit(unitId,\n//should be auto?\nhospitalId, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var unitData, unitRef, _unitRef;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          _context10.prev = 0;\n          unitData = {\n            hospitalId: hospitalId,\n            name: name\n          };\n          if (!unitId) {\n            _context10.next = 8;\n            break;\n          }\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context10.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(unitRef, Object.assign({\n            id: unitRef.id\n          }, unitData));\n        case 6:\n          _context10.next = 11;\n          break;\n        case 8:\n          _unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection);\n          _context10.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(_unitRef, unitData);\n        case 11:\n          _context10.next = 17;\n          break;\n        case 13:\n          _context10.prev = 13;\n          _context10.t0 = _context10[\"catch\"](0);\n          console.log(\"Error creating unit: \", _context10.t0);\n          throw _context10.t0;\n        case 17:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10, null, [[0, 13]]);\n  }));\n}\nfunction createSuggestion(id, creatorHsaId, name, area, content, purpose, measure, ideas,\n//need: boolean,\nunitId, departmentId, isPublic) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {\n    var suggestionData, suggestionRef, _suggestionRef;\n    return _regeneratorRuntime().wrap(function _callee11$(_context11) {\n      while (1) switch (_context11.prev = _context11.next) {\n        case 0:\n          _context11.prev = 0;\n          suggestionData = {\n            creatorHsaId: creatorHsaId,\n            name: name,\n            area: area,\n            content: content,\n            purpose: purpose,\n            measure: measure,\n            ideas: ideas,\n            //need,\n            unitId: unitId,\n            departmentId: departmentId,\n            \"public\": isPublic,\n            upvotes: [],\n            comments: [],\n            dateCreated: new Date()\n          };\n          if (!id) {\n            _context11.next = 8;\n            break;\n          }\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, id);\n          _context11.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(suggestionRef, Object.assign({\n            id: suggestionRef.id\n          }, suggestionData));\n        case 6:\n          _context11.next = 11;\n          break;\n        case 8:\n          _suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection);\n          _context11.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(_suggestionRef, suggestionData);\n        case 11:\n          _context11.next = 17;\n          break;\n        case 13:\n          _context11.prev = 13;\n          _context11.t0 = _context11[\"catch\"](0);\n          console.log(\"Error creating suggestion: \", _context11.t0);\n          throw _context11.t0;\n        case 17:\n        case \"end\":\n          return _context11.stop();\n      }\n    }, _callee11, null, [[0, 13]]);\n  }));\n}\nfunction deleteSuggestion(suggestionId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {\n    var suggestionRef;\n    return _regeneratorRuntime().wrap(function _callee12$(_context12) {\n      while (1) switch (_context12.prev = _context12.next) {\n        case 0:\n          _context12.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          _context12.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(suggestionRef);\n        case 4:\n          _context12.next = 10;\n          break;\n        case 6:\n          _context12.prev = 6;\n          _context12.t0 = _context12[\"catch\"](0);\n          console.log(\"Error deleting suggestion: \", _context12.t0);\n          throw _context12.t0;\n        case 10:\n        case \"end\":\n          return _context12.stop();\n      }\n    }, _callee12, null, [[0, 6]]);\n  }));\n}\n// Upvote a suggestion for a user\n// takes in suggestion id, user HSAid\n// returns error if transaction failed\nfunction upvoteSuggestion(suggestionId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {\n    var suggestionRef;\n    return _regeneratorRuntime().wrap(function _callee13$(_context13) {\n      while (1) switch (_context13.prev = _context13.next) {\n        case 0:\n          _context13.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId); // Atomically add a update to the upvote array field.\n          _context13.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(suggestionRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 4:\n          _context13.next = 10;\n          break;\n        case 6:\n          _context13.prev = 6;\n          _context13.t0 = _context13[\"catch\"](0);\n          console.log(\"Error upvoting suggestion: \", _context13.t0);\n          throw _context13.t0;\n        case 10:\n        case \"end\":\n          return _context13.stop();\n      }\n    }, _callee13, null, [[0, 6]]);\n  }));\n}\n//creates a comment\n// takes in commenters id, suggestion id and content as string\n// throws error if transaction failed\nfunction createComment(\n// change to subcollection\ncommenterHsaId, suggestionId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee14() {\n    var suggestionRef, commentCollection, commentRef;\n    return _regeneratorRuntime().wrap(function _callee14$(_context14) {\n      while (1) switch (_context14.prev = _context14.next) {\n        case 0:\n          _context14.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          _context14.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 4:\n          commentCollection = _context14.sent;\n          _context14.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 7:\n          commentRef = _context14.sent;\n          _context14.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(commentRef, {\n            id: commentRef.id,\n            commenterHsaId: commenterHsaId,\n            content: content,\n            dateCreated: new Date(),\n            upvotes: []\n          });\n        case 10:\n          _context14.next = 16;\n          break;\n        case 12:\n          _context14.prev = 12;\n          _context14.t0 = _context14[\"catch\"](0);\n          console.log(\"Error creating comment: \", _context14.t0);\n          throw _context14.t0;\n        case 16:\n        case \"end\":\n          return _context14.stop();\n      }\n    }, _callee14, null, [[0, 12]]);\n  }));\n}\n// Upvote a comment for a user\n// takes in suggestionId, commentId and userId as strings\n// return error if transaction failed\nfunction upvoteComment(suggestionId, commentId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee15() {\n    var suggestionRef, commentRef;\n    return _regeneratorRuntime().wrap(function _callee15$(_context15) {\n      while (1) switch (_context15.prev = _context15.next) {\n        case 0:\n          _context15.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          commentRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionRef, \"comment\", commentId); // Atomically add a update to the upvote array field.\n          _context15.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(commentRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 5:\n          _context15.next = 11;\n          break;\n        case 7:\n          _context15.prev = 7;\n          _context15.t0 = _context15[\"catch\"](0);\n          console.log(\"Error upvoting comment: \", _context15.t0);\n          throw _context15.t0;\n        case 11:\n        case \"end\":\n          return _context15.stop();\n      }\n    }, _callee15, null, [[0, 7]]);\n  }));\n}\n//add a note to a user\n// takes in userHsaId and content as string\n// throws error if transaction failed\nfunction addNoteToUser(userHsaId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee16() {\n    var userRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee16$(_context16) {\n      while (1) switch (_context16.prev = _context16.next) {\n        case 0:\n          _context16.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userRef, \"notes\");\n          _context16.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            content: content,\n            dateCreated: new Date()\n          });\n        case 5:\n          _context16.next = 11;\n          break;\n        case 7:\n          _context16.prev = 7;\n          _context16.t0 = _context16[\"catch\"](0);\n          console.log(\"Error adding document: \", _context16.t0);\n          throw _context16.t0;\n        case 11:\n        case \"end\":\n          return _context16.stop();\n      }\n    }, _callee16, null, [[0, 7]]);\n  }));\n}\n// export to setters to be able to use in other files\n\n//////////////////////////////////////////////GETTERS/////////////////////////////////////////////////////////////////////\n// Get any object\n// input is the database type as a string.\n// output is the whole collection of that type.\nfunction getObject(collectionPath) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee17() {\n    var collectionRef, querySnapshot, result;\n    return _regeneratorRuntime().wrap(function _callee17$(_context17) {\n      while (1) switch (_context17.prev = _context17.next) {\n        case 0:\n          _context17.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionPath);\n          _context17.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          querySnapshot = _context17.sent;\n          result = [];\n          querySnapshot.forEach(function (doc) {\n            result.push(doc.data());\n          });\n          return _context17.abrupt(\"return\", result);\n        case 10:\n          _context17.prev = 10;\n          _context17.t0 = _context17[\"catch\"](0);\n          console.error(\"Error getting collection data\", _context17.t0);\n          throw _context17.t0;\n        case 14:\n        case \"end\":\n          return _context17.stop();\n      }\n    }, _callee17, null, [[0, 10]]);\n  }));\n}\n/**\n * Asynchronously retrieves a single document object from the specified collection path and document ID.\n * If the document does not exist, logs a warning and returns null.\n *\n * @param {string} collectionPath - The path to the collection in the database (\"improvementWork\", \"hospital\", \"suggestion\", \"task\", \"unit\", \"users\")\n * @param {string} documentId - The ID of the document to retrieve.\n * @returns {Promise<any|null>} A promise that resolves to the document object if found, or null if not.\n *\n * @throws Will throw an error if there is an issue during retrieval from the database.\n */\nfunction getObjectById(collectionPath, documentId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee18() {\n    var docRef, docSnapshot;\n    return _regeneratorRuntime().wrap(function _callee18$(_context18) {\n      while (1) switch (_context18.prev = _context18.next) {\n        case 0:\n          _context18.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, collectionPath, documentId);\n          _context18.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDoc)(docRef);\n        case 4:\n          docSnapshot = _context18.sent;\n          if (!docSnapshot.exists()) {\n            _context18.next = 9;\n            break;\n          }\n          return _context18.abrupt(\"return\", Object.assign({\n            id: docSnapshot.id\n          }, docSnapshot.data()));\n        case 9:\n          console.warn(\"No such document! \".concat(collectionPath, \"/\").concat(documentId));\n          return _context18.abrupt(\"return\", null);\n        case 11:\n          _context18.next = 17;\n          break;\n        case 13:\n          _context18.prev = 13;\n          _context18.t0 = _context18[\"catch\"](0);\n          console.error(\"Error getting object\", _context18.t0);\n          throw _context18.t0;\n        case 17:\n        case \"end\":\n          return _context18.stop();\n      }\n    }, _callee18, null, [[0, 13]]);\n  }));\n}\n/**\n * Asynchronously retrieves comments for a given suggestion.\n *\n * @param {Object} params - The parameters for fetching comments.\n * @param {string} params.suggestionId - The ID of the suggestion to fetch comments for.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - The criterion to sort the comments by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Determines if the sorting should be in ascending order. Defaults to false (descending).\n * @returns {Promise<any[]>} A promise that resolves to an array of comment objects.\n *\n * @throws Will throw an error if the comments cannot be retrieved.\n */\nfunction getComments(_ref) {\n  var suggestionId = _ref.suggestionId,\n    _ref$sortBy = _ref.sortBy,\n    sortBy = _ref$sortBy === void 0 ? \"dateCreated\" : _ref$sortBy,\n    _ref$ascending = _ref.ascending,\n    ascending = _ref$ascending === void 0 ? false : _ref$ascending;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee19() {\n    var suggestionRef, commentsQuery, commentsSnapshot, comments;\n    return _regeneratorRuntime().wrap(function _callee19$(_context19) {\n      while (1) switch (_context19.prev = _context19.next) {\n        case 0:\n          _context19.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, \"suggestionCollection\", suggestionId);\n          commentsQuery = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\"), (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          _context19.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(commentsQuery);\n        case 5:\n          commentsSnapshot = _context19.sent;\n          comments = [];\n          commentsSnapshot.forEach(function (doc) {\n            comments.push(doc.data());\n          });\n          return _context19.abrupt(\"return\", comments);\n        case 11:\n          _context19.prev = 11;\n          _context19.t0 = _context19[\"catch\"](0);\n          console.error(\"Error getting comments for suggestion: \", _context19.t0);\n          throw _context19.t0;\n        case 15:\n        case \"end\":\n          return _context19.stop();\n      }\n    }, _callee19, null, [[0, 11]]);\n  }));\n}\n//Filtering suggestions on unitId AND creatorHsaId\n//Sort suggestions on dateCreated OR upvotes\n/**\n * Asynchronously retrieves an array of suggestions from the database, with various filters and sorting options.\n *\n * @param {Object} params - The parameters for filtering and sorting suggestions.\n * @param {string} [params.id] - Optional ID to filter suggestions by a specific identifier.\n * @param {string} [params.creatorHsaId] - Optional HSA ID to filter suggestions by the creator's HSA ID.\n * @param {string} [params.unitId] - Optional unit ID to filter suggestions by a specific unit.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - Criterion to sort the suggestions by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Flag indicating if sorting should be ascending. Defaults to false (descending order).\n * @param {boolean} [params.isPublic=true] - Flag indicating whether to filter for public suggestions. Defaults to true.\n * @returns {Promise<any[]>} A promise that resolves to an array of suggestion objects.\n *\n * @throws Will throw an error if there is an issue retrieving suggestions.\n */\nfunction getSuggestions(_ref2) {\n  var id = _ref2.id,\n    creatorHsaId = _ref2.creatorHsaId,\n    name = _ref2.name,\n    unitId = _ref2.unitId,\n    _ref2$sortBy = _ref2.sortBy,\n    sortBy = _ref2$sortBy === void 0 ? \"dateCreated\" : _ref2$sortBy,\n    _ref2$ascending = _ref2.ascending,\n    ascending = _ref2$ascending === void 0 ? false : _ref2$ascending,\n    _ref2$isPublic = _ref2.isPublic,\n    isPublic = _ref2$isPublic === void 0 ? true : _ref2$isPublic;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee20() {\n    var collectionRef, constraints, q, querySnapshot, suggestions;\n    return _regeneratorRuntime().wrap(function _callee20$(_context20) {\n      while (1) switch (_context20.prev = _context20.next) {\n        case 0:\n          _context20.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (creatorHsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"creatorHsaId\", \"==\", creatorHsaId));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", name));\n            sortBy = \"name\";\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"public\", \"==\", isPublic));\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context20.next = 12;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 12:\n          querySnapshot = _context20.sent;\n          suggestions = [];\n          querySnapshot.forEach(function (doc) {\n            suggestions.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context20.abrupt(\"return\", suggestions);\n        case 18:\n          _context20.prev = 18;\n          _context20.t0 = _context20[\"catch\"](0);\n          console.log(\"Error retrieving suggestions by department: \", _context20.t0);\n          throw _context20.t0;\n        case 22:\n        case \"end\":\n          return _context20.stop();\n      }\n    }, _callee20, null, [[0, 18]]);\n  }));\n}\n/**\n * Asynchronously searches for hospital documents in the database.\n * It can filter the results by the hospital's name, ID, or both.\n * If no parameters are provided, it retrieves all hospitals.\n *\n * @param {Object} params - An object containing the search parameters.\n * @param {string} [params.hospitalName] - Optional name of the hospital to filter the search.\n * @param {string} [params.hospitalId] - Optional unique identifier of the hospital to filter the search.\n * @returns {Promise<any[]>} A promise that resolves to an array of hospital objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getHospitals(_ref3) {\n  var hospitalName = _ref3.hospitalName,\n    hospitalId = _ref3.hospitalId;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee21() {\n    var collectionRef, constraints, q, querySnapshot, hospitals;\n    return _regeneratorRuntime().wrap(function _callee21$(_context21) {\n      while (1) switch (_context21.prev = _context21.next) {\n        case 0:\n          _context21.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\n          constraints = [];\n          if (hospitalName) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", hospitalName));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hospitalId));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context21.next = 8;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 8:\n          querySnapshot = _context21.sent;\n          hospitals = [];\n          querySnapshot.forEach(function (doc) {\n            hospitals.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context21.abrupt(\"return\", hospitals);\n        case 14:\n          _context21.prev = 14;\n          _context21.t0 = _context21[\"catch\"](0);\n          console.log(\"Error retrieving Hospitals\", _context21.t0);\n          throw _context21.t0;\n        case 18:\n        case \"end\":\n          return _context21.stop();\n      }\n    }, _callee21, null, [[0, 14]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of improvement work documents based on various filter criteria.\n * It supports filtering by ID, Nolan stage, unit ID, completion status, ongoing status, and patient risk level.\n * It also supports sorting by the start date of the improvement work in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.id] - Optional identifier to filter the improvement works.\n * @param {string} [params.nolanStage] - Optional Nolan stage to filter the improvement works.\n * @param {string} [params.unitId] - Optional unit ID to filter the improvement works.\n * @param {boolean} [params.completed] - Optional flag to filter the improvement works by their completion status.\n * @param {boolean} [params.ongoing] - Optional flag to filter the improvement works by their ongoing status.\n * @param {string} [params.patientRiskLevel] - Optional patient risk level to filter the improvement works.\n * @param {boolean} [params.ascendingDates=false] - Optional flag for sorting by date in ascending order. Defaults to false.\n * @returns {Promise<any[]>} A promise that resolves to an array of improvement work objects that match the criteria.\n *\n * @throws Will throw an error if there is a problem retrieving the improvement works.\n */\nfunction getImprovementWorks(_ref4) {\n  var id = _ref4.id,\n    name = _ref4.name,\n    nolanStage = _ref4.nolanStage,\n    unitId = _ref4.unitId,\n    completed = _ref4.completed,\n    ongoing = _ref4.ongoing,\n    patientRiskLevel = _ref4.patientRiskLevel,\n    _ref4$ascendingDates = _ref4.ascendingDates,\n    ascendingDates = _ref4$ascendingDates === void 0 ? false : _ref4$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee22() {\n    var collectionRef, constraints, q, querySnapshot, improvementWorks;\n    return _regeneratorRuntime().wrap(function _callee22$(_context22) {\n      while (1) switch (_context22.prev = _context22.next) {\n        case 0:\n          _context22.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            console.log(\"inne i ifsatsen i databasen\");\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (nolanStage) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"currentStage\", \"==\", nolanStage));\n          }\n          if (completed != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"completed\", \"==\", completed));\n          }\n          if (ongoing !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"ongoing\", \"==\", ongoing));\n          }\n          if (patientRiskLevel) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"patientRiskLevel\", \"==\", patientRiskLevel));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"lowerCaseName\", \">=\", name.toLowerCase()));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"lowerCaseName\", \"<=\", name.toLowerCase() + \"~\"));\n          } else {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"dateStarted\", ascendingDates ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context22.next = 13;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 13:\n          querySnapshot = _context22.sent;\n          improvementWorks = [];\n          querySnapshot.forEach(function (doc) {\n            improvementWorks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context22.abrupt(\"return\", improvementWorks);\n        case 19:\n          _context22.prev = 19;\n          _context22.t0 = _context22[\"catch\"](0);\n          console.log(\"Error retrieving improvementWorks: \", _context22.t0);\n          throw _context22.t0;\n        case 23:\n        case \"end\":\n          return _context22.stop();\n      }\n    }, _callee22, null, [[0, 19]]);\n  }));\n}\n// Gets improvementWorks where each field matches the union of elements in the input array for each fo the fields\nfunction getFilteredImprovementWorks(_ref5) {\n  var patientRiskLevels = _ref5.patientRiskLevels,\n    nolanStages = _ref5.nolanStages,\n    units = _ref5.units,\n    _ref5$ascendingDates = _ref5.ascendingDates,\n    ascendingDates = _ref5$ascendingDates === void 0 ? false : _ref5$ascendingDates,\n    completed = _ref5.completed;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee23() {\n    var collectionRef, constraints, q, querySnapshot, improvementWorks;\n    return _regeneratorRuntime().wrap(function _callee23$(_context23) {\n      while (1) switch (_context23.prev = _context23.next) {\n        case 0:\n          _context23.prev = 0;\n          console.log(\"Getting improvement works with the following constraints\", patientRiskLevels, nolanStages, units, ascendingDates);\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\n          constraints = [];\n          if (patientRiskLevels && patientRiskLevels.length) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"patientRiskLevel\", \"in\", patientRiskLevels));\n          }\n          if (nolanStages && nolanStages.length) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"currentStage\", \"in\", nolanStages));\n          }\n          if (units && units.length) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"in\", units));\n          }\n          // If none of the array filters are provided, default to ordering by date.\n          if (!patientRiskLevels.length && !nolanStages.length && !units.length) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"dateStarted\", ascendingDates ? \"asc\" : \"desc\"));\n          }\n          if (completed) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"completed\", \"==\", completed));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context23.next = 12;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 12:\n          querySnapshot = _context23.sent;\n          improvementWorks = [];\n          querySnapshot.forEach(function (doc) {\n            improvementWorks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context23.abrupt(\"return\", improvementWorks);\n        case 18:\n          _context23.prev = 18;\n          _context23.t0 = _context23[\"catch\"](0);\n          console.error(\"Error retrieving filtered improvementWorks: \", _context23.t0);\n          throw _context23.t0;\n        case 22:\n        case \"end\":\n          return _context23.stop();\n      }\n    }, _callee23, null, [[0, 18]]);\n  }));\n}\nfunction getImprovementWorkOwner(improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee24() {\n    var constraints, q, querySnapshot, owner;\n    return _regeneratorRuntime().wrap(function _callee24$(_context24) {\n      while (1) switch (_context24.prev = _context24.next) {\n        case 0:\n          _context24.prev = 0;\n          constraints = [];\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"isOwner\", \"==\", true));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [userImprovementWorkCollection].concat(constraints));\n          _context24.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 7:\n          querySnapshot = _context24.sent;\n          if (!querySnapshot.empty) {\n            _context24.next = 13;\n            break;\n          }\n          console.log(\"Improvement work \", improvementWorkId, \" has no owner\");\n          return _context24.abrupt(\"return\", null);\n        case 13:\n          owner = querySnapshot.docs[0].data().userHsaId;\n          return _context24.abrupt(\"return\", owner);\n        case 15:\n          _context24.next = 20;\n          break;\n        case 17:\n          _context24.prev = 17;\n          _context24.t0 = _context24[\"catch\"](0);\n          console.log(_context24.t0);\n        case 20:\n        case \"end\":\n          return _context24.stop();\n      }\n    }, _callee24, null, [[0, 17]]);\n  }));\n}\nfunction getImprovementWorkResponsible(improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee25() {\n    var constraints, q, querySnapshot, responsibleId, responsible;\n    return _regeneratorRuntime().wrap(function _callee25$(_context25) {\n      while (1) switch (_context25.prev = _context25.next) {\n        case 0:\n          _context25.prev = 0;\n          constraints = [];\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"isResponsibleFor\", \"==\", true));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [userImprovementWorkCollection].concat(constraints));\n          _context25.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 7:\n          querySnapshot = _context25.sent;\n          if (!querySnapshot.empty) {\n            _context25.next = 13;\n            break;\n          }\n          console.log(\"Improvement work \", improvementWorkId, \" has no responsible\");\n          return _context25.abrupt(\"return\", null);\n        case 13:\n          responsibleId = querySnapshot.docs[0].data().userHsaId;\n          _context25.next = 16;\n          return getObjectById(\"users\", responsibleId);\n        case 16:\n          responsible = _context25.sent;\n          return _context25.abrupt(\"return\", responsible);\n        case 18:\n          _context25.next = 23;\n          break;\n        case 20:\n          _context25.prev = 20;\n          _context25.t0 = _context25[\"catch\"](0);\n          console.log(_context25.t0);\n        case 23:\n        case \"end\":\n          return _context25.stop();\n      }\n    }, _callee25, null, [[0, 20]]);\n  }));\n}\n// TODO getUsersForTask!\n/**\n * Asynchronously retrieves user documents from the database based on various filter criteria.\n * It can filter by the Health Savings Account ID (hsaId), unit ID, and unique identifier (uid).\n * Additionally, it can sort the results by first name in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.hsaId] - Optional HSA ID to filter the users.\n * @param {string} [params.unitId] - Optional unit ID to filter the users.\n * @param {boolean} [params.ascendingFirstNames=false] - Optional flag to sort by first names in ascending order. Defaults to false (descending order).\n * @param {string} [params.uid] - Optional unique identifier to filter the users.\n * @returns {Promise<any[]>} A promise that resolves to an array of user objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUsers(_ref6) {\n  var hsaId = _ref6.hsaId,\n    name = _ref6.name,\n    unitId = _ref6.unitId,\n    _ref6$ascendingFirstN = _ref6.ascendingFirstNames,\n    ascendingFirstNames = _ref6$ascendingFirstN === void 0 ? false : _ref6$ascendingFirstN,\n    uid = _ref6.uid;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee26() {\n    var collectionRef, constraints, q, querySnapshot, users;\n    return _regeneratorRuntime().wrap(function _callee26$(_context26) {\n      while (1) switch (_context26.prev = _context26.next) {\n        case 0:\n          _context26.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\n          constraints = [];\n          if (hsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hsaId));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (uid) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"uid\", \"==\", uid));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", name));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"firstName\", ascendingFirstNames ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context26.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 11:\n          querySnapshot = _context26.sent;\n          users = [];\n          querySnapshot.forEach(function (doc) {\n            users.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context26.abrupt(\"return\", users);\n        case 17:\n          _context26.prev = 17;\n          _context26.t0 = _context26[\"catch\"](0);\n          console.log(\"Error retrieving users by department: \", _context26.t0);\n          throw _context26.t0;\n        case 21:\n        case \"end\":\n          return _context26.stop();\n      }\n    }, _callee26, null, [[0, 17]]);\n  }));\n}\n// TODO getTasksForUser!\n/**\n * Asynchronously retrieves an array of task documents from the database based on several filter and sorting criteria.\n * Filters include task ID, user ID and their responsibility status, and related improvement work ID.\n * Results can be sorted by date either in ascending or descending order.\n *\n * @param {Object} params - Parameters to filter and sort the task results.\n * @param {string} [params.taskId] - Optional task ID to filter the tasks.\n * @param {string} [params.userId] - Optional user ID to identify tasks related to a user.\n * @param {boolean} [params.isResponsibleFor] - Optional flag to filter tasks where the user is marked as responsible.\n * @param {string} [params.improvementWorkId] - Optional improvement work ID to filter tasks related to a specific improvement work.\n * @param {boolean} [params.ascendingDates=false] - Optional flag to sort tasks by date in ascending order; defaults to descending order.\n * @returns {Promise<any[]>} A promise that resolves to an array of task objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getTasks(_ref7) {\n  var improvementWorkId = _ref7.improvementWorkId,\n    stage = _ref7.stage,\n    _ref7$ascendingDates = _ref7.ascendingDates,\n    ascendingDates = _ref7$ascendingDates === void 0 ? false : _ref7$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee27() {\n    var collectionRef, constraints, q, querySnapshot, tasks;\n    return _regeneratorRuntime().wrap(function _callee27$(_context27) {\n      while (1) switch (_context27.prev = _context27.next) {\n        case 0:\n          _context27.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\n          constraints = [];\n          if (stage) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"stage\", \"==\", stage));\n          }\n          if (improvementWorkId != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"startDate\", ascendingDates ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context27.next = 8;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 8:\n          querySnapshot = _context27.sent;\n          tasks = [];\n          querySnapshot.forEach(function (doc) {\n            tasks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context27.abrupt(\"return\", tasks);\n        case 14:\n          _context27.prev = 14;\n          _context27.t0 = _context27[\"catch\"](0);\n          console.log(\"Error retrieving task by department: \", _context27.t0);\n          throw _context27.t0;\n        case 18:\n        case \"end\":\n          return _context27.stop();\n      }\n    }, _callee27, null, [[0, 14]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of unit documents from the database based on various filter criteria.\n * Filters can be applied based on unit ID, hospital ID, and unit name.\n * Additionally, results can be sorted by unit names in ascending or descending order.\n *\n * @param {Object} params - The parameters object containing filter and sorting options.\n * @param {string} [params.unitId] - Optional unit ID to filter the units.\n * @param {string} [params.hospitalId] - Optional hospital ID to filter units within a specific hospital.\n * @param {string} [params.name] - Optional name to filter units by a specific name.\n * @param {boolean} [params.ascendingUnitNames=false] - Optional flag to sort units by name in ascending order, defaults to descending.\n * @returns {Promise<any[]>} A promise that resolves to an array of unit objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUnits(_ref8) {\n  var unitId = _ref8.unitId,\n    hospitalId = _ref8.hospitalId,\n    name = _ref8.name,\n    _ref8$ascendingUnitNa = _ref8.ascendingUnitNames,\n    ascendingUnitNames = _ref8$ascendingUnitNa === void 0 ? false : _ref8$ascendingUnitNa;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee28() {\n    var collectionRef, constraints, q, querySnapshot, units;\n    return _regeneratorRuntime().wrap(function _callee28$(_context28) {\n      while (1) switch (_context28.prev = _context28.next) {\n        case 0:\n          _context28.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\n          constraints = [];\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", unitId));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", name));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"hospitalId\", \"==\", hospitalId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"name\", ascendingUnitNames ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context28.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context28.sent;\n          units = [];\n          querySnapshot.forEach(function (doc) {\n            units.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context28.abrupt(\"return\", units);\n        case 15:\n          _context28.prev = 15;\n          _context28.t0 = _context28[\"catch\"](0);\n          console.log(\"Error retrieving units by hospitalId: \", _context28.t0);\n          throw _context28.t0;\n        case 19:\n        case \"end\":\n          return _context28.stop();\n      }\n    }, _callee28, null, [[0, 15]]);\n  }));\n}\nfunction getImprovementWorksForUser(userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee29() {\n    var q, querySnapshot, improvementWorks, _iterator2, _step2, _doc2, improvementWorkId, improvementWorkDoc;\n    return _regeneratorRuntime().wrap(function _callee29$(_context29) {\n      while (1) switch (_context29.prev = _context29.next) {\n        case 0:\n          _context29.prev = 0;\n          console.log(\"Getting improvementworks for user: \", userHsaId);\n          // Query the userImprovementWork collection for relations involving this user\n          q = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)(userImprovementWorkCollection, (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"userHsaId\", \"==\", userHsaId));\n          _context29.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 5:\n          querySnapshot = _context29.sent;\n          // Fetch each related improvementWork document\n          improvementWorks = [];\n          _iterator2 = _createForOfIteratorHelper(querySnapshot.docs);\n          _context29.prev = 8;\n          _iterator2.s();\n        case 10:\n          if ((_step2 = _iterator2.n()).done) {\n            _context29.next = 19;\n            break;\n          }\n          _doc2 = _step2.value;\n          improvementWorkId = _doc2.data().improvementWorkId;\n          _context29.next = 15;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 15:\n          improvementWorkDoc = _context29.sent;\n          improvementWorks.push(improvementWorkDoc);\n        case 17:\n          _context29.next = 10;\n          break;\n        case 19:\n          _context29.next = 24;\n          break;\n        case 21:\n          _context29.prev = 21;\n          _context29.t0 = _context29[\"catch\"](8);\n          _iterator2.e(_context29.t0);\n        case 24:\n          _context29.prev = 24;\n          _iterator2.f();\n          return _context29.finish(24);\n        case 27:\n          return _context29.abrupt(\"return\", improvementWorks);\n        case 30:\n          _context29.prev = 30;\n          _context29.t1 = _context29[\"catch\"](0);\n          console.error(\"Error getting improvement works for user: \", _context29.t1);\n          throw _context29.t1;\n        case 34:\n        case \"end\":\n          return _context29.stop();\n      }\n    }, _callee29, null, [[0, 30], [8, 21, 24, 27]]);\n  }));\n}\nfunction getUsersForImprovementWork(improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee30() {\n    var q, querySnapshot, users, _iterator3, _step3, _doc3, userHsaId, userDoc;\n    return _regeneratorRuntime().wrap(function _callee30$(_context30) {\n      while (1) switch (_context30.prev = _context30.next) {\n        case 0:\n          _context30.prev = 0;\n          // Query the userImprovementWork collection for relations involving this improvementWork\n          q = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)(userImprovementWorkCollection, (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n          _context30.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 4:\n          querySnapshot = _context30.sent;\n          // Fetch each related user document\n          users = [];\n          _iterator3 = _createForOfIteratorHelper(querySnapshot.docs);\n          _context30.prev = 7;\n          _iterator3.s();\n        case 9:\n          if ((_step3 = _iterator3.n()).done) {\n            _context30.next = 18;\n            break;\n          }\n          _doc3 = _step3.value;\n          userHsaId = _doc3.data().userHsaId;\n          _context30.next = 14;\n          return getObjectById(\"users\", userHsaId);\n        case 14:\n          userDoc = _context30.sent;\n          users.push(userDoc);\n        case 16:\n          _context30.next = 9;\n          break;\n        case 18:\n          _context30.next = 23;\n          break;\n        case 20:\n          _context30.prev = 20;\n          _context30.t0 = _context30[\"catch\"](7);\n          _iterator3.e(_context30.t0);\n        case 23:\n          _context30.prev = 23;\n          _iterator3.f();\n          return _context30.finish(23);\n        case 26:\n          return _context30.abrupt(\"return\", users);\n        case 29:\n          _context30.prev = 29;\n          _context30.t1 = _context30[\"catch\"](0);\n          console.error(\"Error getting users for improvementWork: \", _context30.t1);\n          throw _context30.t1;\n        case 33:\n        case \"end\":\n          return _context30.stop();\n      }\n    }, _callee30, null, [[0, 29], [7, 20, 23, 26]]);\n  }));\n}\n// export getters to be able to use in other files\n\n////////////////////////////////////DELETING/////////////////////////////////////////////\n// delete an instance of a type\nfunction deleteInstance(docType, docId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee31() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee31$(_context31) {\n      while (1) switch (_context31.prev = _context31.next) {\n        case 0:\n          _context31.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context31.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(docRef);\n        case 4:\n          console.log(\"\".concat(docType, \" deleted successfully.\"));\n          _context31.next = 11;\n          break;\n        case 7:\n          _context31.prev = 7;\n          _context31.t0 = _context31[\"catch\"](0);\n          console.error(\"Error deleting \".concat(docType, \":\"), _context31.t0);\n          throw _context31.t0;\n        case 11:\n        case \"end\":\n          return _context31.stop();\n      }\n    }, _callee31, null, [[0, 7]]);\n  }));\n}\n// delete all instances of a type\nfunction deleteAllDocumentsInCollection(collectionName) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee33() {\n    var _this = this;\n    var collectionRef, snapshot, deletePromises;\n    return _regeneratorRuntime().wrap(function _callee33$(_context33) {\n      while (1) switch (_context33.prev = _context33.next) {\n        case 0:\n          _context33.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionName);\n          _context33.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          snapshot = _context33.sent;\n          // Delete all documents in the collection\n          deletePromises = snapshot.docs.map(function (doc) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee32() {\n              return _regeneratorRuntime().wrap(function _callee32$(_context32) {\n                while (1) switch (_context32.prev = _context32.next) {\n                  case 0:\n                    _context32.next = 2;\n                    return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(doc.ref);\n                  case 2:\n                  case \"end\":\n                    return _context32.stop();\n                }\n              }, _callee32);\n            }));\n          });\n          _context33.next = 8;\n          return Promise.all(deletePromises);\n        case 8:\n          console.log(\"All documents in the \".concat(collectionName, \" collection deleted successfully.\"));\n          _context33.next = 15;\n          break;\n        case 11:\n          _context33.prev = 11;\n          _context33.t0 = _context33[\"catch\"](0);\n          console.error(\"Error deleting all documents in \".concat(collectionName, \":\"), _context33.t0);\n          throw _context33.t0;\n        case 15:\n        case \"end\":\n          return _context33.stop();\n      }\n    }, _callee33, null, [[0, 11]]);\n  }));\n}\n////////////////////////////////////UPDATING/////////////////////////////////////////////\n// update a field in an instance\nfunction updateInstance(docType, docId, updates) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee34() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee34$(_context34) {\n      while (1) switch (_context34.prev = _context34.next) {\n        case 0:\n          _context34.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context34.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(docRef, updates);\n        case 4:\n          console.log(\"\".concat(docType, \" updated successfully.\"));\n          _context34.next = 11;\n          break;\n        case 7:\n          _context34.prev = 7;\n          _context34.t0 = _context34[\"catch\"](0);\n          console.error(\"Error updating \".concat(docType, \":\"), _context34.t0);\n          throw _context34.t0;\n        case 11:\n        case \"end\":\n          return _context34.stop();\n      }\n    }, _callee34, null, [[0, 7]]);\n  }));\n}\n// changes the ongoing status of an improvement work. if ongoing it is paused, if if paused onging.\n// user must be a manager\nfunction startOrPauseImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee35() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee35$(_context35) {\n      while (1) switch (_context35.prev = _context35.next) {\n        case 0:\n          _context35.prev = 0;\n          _context35.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context35.sent;\n          _context35.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context35.sent;\n          if (!(!user || !user.manager)) {\n            _context35.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change improvementWork status\");\n        case 11:\n          if (!improvementWork) {\n            _context35.next = 19;\n            break;\n          }\n          update = {\n            ongoing: !improvementWork.ongoing\n          };\n          _context35.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          return _context35.abrupt(\"return\", true);\n        case 19:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n          return _context35.abrupt(\"return\", false);\n        case 21:\n          _context35.next = 27;\n          break;\n        case 23:\n          _context35.prev = 23;\n          _context35.t0 = _context35[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context35.t0);\n          throw _context35.t0;\n        case 27:\n        case \"end\":\n          return _context35.stop();\n      }\n    }, _callee35, null, [[0, 23]]);\n  }));\n}\nfunction changePatientRiskLevel(userId, improvementWorkId, patientRiskLevel) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee36() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee36$(_context36) {\n      while (1) switch (_context36.prev = _context36.next) {\n        case 0:\n          _context36.prev = 0;\n          _context36.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context36.sent;\n          _context36.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context36.sent;\n          if (!(!user || !user.manager)) {\n            _context36.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change patientRiskLevel in improvement work\");\n        case 11:\n          if (!improvementWork) {\n            _context36.next = 18;\n            break;\n          }\n          update = {\n            patientRiskLevel: patientRiskLevel\n          };\n          _context36.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context36.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context36.next = 25;\n          break;\n        case 21:\n          _context36.prev = 21;\n          _context36.t0 = _context36[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context36.t0);\n          throw _context36.t0;\n        case 25:\n        case \"end\":\n          return _context36.stop();\n      }\n    }, _callee36, null, [[0, 21]]);\n  }));\n}\n// finalizes the improvement work. ongoing is set to false.\n// user must be a manager\nfunction finalizeImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee37() {\n    var user, update;\n    return _regeneratorRuntime().wrap(function _callee37$(_context37) {\n      while (1) switch (_context37.prev = _context37.next) {\n        case 0:\n          _context37.prev = 0;\n          _context37.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context37.sent;\n          if (!(!user || !user.manager)) {\n            _context37.next = 8;\n            break;\n          }\n          return _context37.abrupt(\"return\", false);\n        case 8:\n          update = {\n            completed: true,\n            ongoing: false\n          };\n          _context37.next = 11;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 11:\n          return _context37.abrupt(\"return\", true);\n        case 12:\n          _context37.next = 17;\n          break;\n        case 14:\n          _context37.prev = 14;\n          _context37.t0 = _context37[\"catch\"](0);\n          return _context37.abrupt(\"return\", false);\n        case 17:\n        case \"end\":\n          return _context37.stop();\n      }\n    }, _callee37, null, [[0, 14]]);\n  }));\n}\n\n//////////////////////////////// for later sprint\n//function add_upvotes\n//function add_notes\n//function add_intrested_users\n\n//# sourceURL=webpack://c3/./client/Database/database.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */   addDocumentToImprovementWork: () => (/* binding */ addDocumentToImprovementWork),\n/* harmony export */   addMemberToImprovementWork: () => (/* binding */ addMemberToImprovementWork),\n/* harmony export */   addMemberToTask: () => (/* binding */ addMemberToTask),\n/* harmony export */   addNoteToUser: () => (/* binding */ addNoteToUser),\n/* harmony export */   auth: () => (/* binding */ auth),\n/* harmony export */   changePatientRiskLevel: () => (/* binding */ changePatientRiskLevel),\n/* harmony export */   createComment: () => (/* binding */ createComment),\n/* harmony export */   createHospital: () => (/* binding */ createHospital),\n/* harmony export */   createImprovementWork: () => (/* binding */ createImprovementWork),\n/* harmony export */   createSuggestion: () => (/* binding */ createSuggestion),\n/* harmony export */   createTaskOnImprovementWork: () => (/* binding */ createTaskOnImprovementWork),\n/* harmony export */   createUnit: () => (/* binding */ createUnit),\n/* harmony export */   createUser: () => (/* binding */ createUser),\n/* harmony export */   createdDocumentInKnowledgeBank: () => (/* binding */ createdDocumentInKnowledgeBank),\n/* harmony export */   db: () => (/* binding */ db),\n/* harmony export */   deleteAllDocumentsInCollection: () => (/* binding */ deleteAllDocumentsInCollection),\n/* harmony export */   deleteInstance: () => (/* binding */ deleteInstance),\n/* harmony export */   deleteSuggestion: () => (/* binding */ deleteSuggestion),\n/* harmony export */   finalizeImprovementWork: () => (/* binding */ finalizeImprovementWork),\n/* harmony export */   getComments: () => (/* binding */ getComments),\n/* harmony export */   getDocumentsByImprovementWork: () => (/* binding */ getDocumentsByImprovementWork),\n/* harmony export */   getFilteredImprovementWorks: () => (/* binding */ getFilteredImprovementWorks),\n/* harmony export */   getHospitals: () => (/* binding */ getHospitals),\n/* harmony export */   getImprovementWorkOwner: () => (/* binding */ getImprovementWorkOwner),\n/* harmony export */   getImprovementWorkResponsible: () => (/* binding */ getImprovementWorkResponsible),\n/* harmony export */   getImprovementWorks: () => (/* binding */ getImprovementWorks),\n/* harmony export */   getImprovementWorksForUser: () => (/* binding */ getImprovementWorksForUser),\n/* harmony export */   getObject: () => (/* binding */ getObject),\n/* harmony export */   getObjectById: () => (/* binding */ getObjectById),\n/* harmony export */   getSuggestions: () => (/* binding */ getSuggestions),\n/* harmony export */   getTasks: () => (/* binding */ getTasks),\n/* harmony export */   getUnits: () => (/* binding */ getUnits),\n/* harmony export */   getUsers: () => (/* binding */ getUsers),\n/* harmony export */   getUsersForImprovementWork: () => (/* binding */ getUsersForImprovementWork),\n/* harmony export */   startOrPauseImprovementWork: () => (/* binding */ startOrPauseImprovementWork),\n/* harmony export */   updateInstance: () => (/* binding */ updateInstance),\n/* harmony export */   upvoteComment: () => (/* binding */ upvoteComment),\n/* harmony export */   upvoteSuggestion: () => (/* binding */ upvoteSuggestion)\n/* harmony export */ });\n/* harmony import */ var firebase_app__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! firebase/app */ \"./node_modules/firebase/app/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_firestore__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! firebase/firestore */ \"./node_modules/firebase/firestore/dist/esm/index.esm.js\");\n/* harmony import */ var firebase_auth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! firebase/auth */ \"./node_modules/firebase/auth/dist/esm/index.esm.js\");\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it[\"return\"] != null) it[\"return\"](); } finally { if (didErr) throw err; } } }; }\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }\nfunction _regeneratorRuntime() { \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = \"function\" == typeof Symbol ? Symbol : {}, a = i.iterator || \"@@iterator\", c = i.asyncIterator || \"@@asyncIterator\", u = i.toStringTag || \"@@toStringTag\"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, \"\"); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, \"_invoke\", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: \"normal\", arg: t.call(e, r) }; } catch (t) { return { type: \"throw\", arg: t }; } } e.wrap = wrap; var h = \"suspendedStart\", l = \"suspendedYield\", f = \"executing\", s = \"completed\", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { [\"next\", \"throw\", \"return\"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if (\"throw\" !== c.type) { var u = c.arg, h = u.value; return h && \"object\" == _typeof(h) && n.call(h, \"__await\") ? e.resolve(h.__await).then(function (t) { invoke(\"next\", t, i, a); }, function (t) { invoke(\"throw\", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke(\"throw\", t, i, a); }); } a(c.arg); } var r; o(this, \"_invoke\", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error(\"Generator is already running\"); if (o === s) { if (\"throw\" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if (\"next\" === n.method) n.sent = n._sent = n.arg;else if (\"throw\" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else \"return\" === n.method && n.abrupt(\"return\", n.arg); o = f; var p = tryCatch(e, r, n); if (\"normal\" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } \"throw\" === p.type && (o = s, n.method = \"throw\", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, \"throw\" === n && e.iterator[\"return\"] && (r.method = \"return\", r.arg = t, maybeInvokeDelegate(e, r), \"throw\" === r.method) || \"return\" !== n && (r.method = \"throw\", r.arg = new TypeError(\"The iterator does not provide a '\" + n + \"' method\")), y; var i = tryCatch(o, e.iterator, r.arg); if (\"throw\" === i.type) return r.method = \"throw\", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, \"return\" !== r.method && (r.method = \"next\", r.arg = t), r.delegate = null, y) : a : (r.method = \"throw\", r.arg = new TypeError(\"iterator result is not an object\"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = \"normal\", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: \"root\" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || \"\" === e) { var r = e[a]; if (r) return r.call(e); if (\"function\" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + \" is not iterable\"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, \"constructor\", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, \"constructor\", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, \"GeneratorFunction\"), e.isGeneratorFunction = function (t) { var e = \"function\" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || \"GeneratorFunction\" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, \"GeneratorFunction\")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, \"Generator\"), define(g, a, function () { return this; }), define(g, \"toString\", function () { return \"[object Generator]\"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) \"t\" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if (\"throw\" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = \"throw\", a.arg = e, r.next = n, o && (r.method = \"next\", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if (\"root\" === i.tryLoc) return handle(\"end\"); if (i.tryLoc <= this.prev) { var c = n.call(i, \"catchLoc\"), u = n.call(i, \"finallyLoc\"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error(\"try statement without catch or finally\"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, \"finallyLoc\") && this.prev < o.finallyLoc) { var i = o; break; } } i && (\"break\" === t || \"continue\" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = \"next\", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if (\"throw\" === t.type) throw t.arg; return \"break\" === t.type || \"continue\" === t.type ? this.next = t.arg : \"return\" === t.type ? (this.rval = this.arg = t.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, \"catch\": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if (\"throw\" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error(\"illegal catch attempt\"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, \"next\" === this.method && (this.arg = t), y; } }, e; }\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n  function adopt(value) {\n    return value instanceof P ? value : new P(function (resolve) {\n      resolve(value);\n    });\n  }\n  return new (P || (P = Promise))(function (resolve, reject) {\n    function fulfilled(value) {\n      try {\n        step(generator.next(value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function rejected(value) {\n      try {\n        step(generator[\"throw\"](value));\n      } catch (e) {\n        reject(e);\n      }\n    }\n    function step(result) {\n      result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n    }\n    step((generator = generator.apply(thisArg, _arguments || [])).next());\n  });\n};\n\n\n\n// C3 solutions databasen - ska användas för P&S\nvar firebaseConfig = {\n  apiKey: \"AIzaSyDqkaVZMr11J4mfnR0auqoQilZyPfyD-x4\",\n  authDomain: \"c3solutions-dc109.firebaseapp.com\",\n  projectId: \"c3solutions-dc109\",\n  storageBucket: \"c3solutions-dc109.appspot.com\",\n  messagingSenderId: \"902143402555\",\n  appId: \"1:902143402555:web:29213e81de0a0cba38b21e\"\n};\n//Backup databas - ska användas av R&D\n/*  const firebaseConfig = {\n   apiKey: \"AIzaSyAMfD8V0belL6GxbuoehL__6YTFZH4pyoc\",\n   authDomain: \"company3-backup.firebaseapp.com\",\n   projectId: \"company3-backup\",\n   storageBucket: \"company3-backup.appspot.com\",\n   messagingSenderId: \"820650717800\",\n   appId: \"1:820650717800:web:7557c7734ed59d3f7281dd\"\n };\n */\n//Bens egna reserv #nödfall\n/* const firebaseConfig = {\n  apiKey: \"AIzaSyBIsZq_yOsJljp1woIxndJO1GkW6soh-g4\",\n  authDomain: \"company3-456bb.firebaseapp.com\",\n  projectId: \"company3-456bb\",\n  storageBucket: \"company3-456bb.appspot.com\",\n  messagingSenderId: \"310033686522\",\n  appId: \"1:310033686522:web:63198bb0db679c98ee4e43\",\n  measurementId: \"G-PFLDQY00DB\"\n}; */\nvar app = (0,firebase_app__WEBPACK_IMPORTED_MODULE_0__.initializeApp)(firebaseConfig);\nvar auth = (0,firebase_auth__WEBPACK_IMPORTED_MODULE_2__.getAuth)();\nvar db = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getFirestore)(app);\nvar userCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\nvar unitCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\nvar improvementWorkCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\nvar taskCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\nvar hospitalCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\nvar suggestionCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\nvar knowledgeDocumentCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"knowledgeDocument\");\nvar userImprovementWorkCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"userImprovementWork\");\nvar userTaskCollection = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"userTask\");\n////////////////////////////////////////Setters///////////////////////////////////////////////////////////////////\n// Function to create user a new user in database\n// takes in userId, unitId, firstname, lastname, email and password as string\n// throws error if transaction failed\nfunction createUser(hsaId, unitId, firstName, lastName, email, manager, role, uid) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {\n    var userRef;\n    return _regeneratorRuntime().wrap(function _callee$(_context) {\n      while (1) switch (_context.prev = _context.next) {\n        case 0:\n          _context.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, hsaId);\n          _context.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(userRef, {\n            id: userRef.id,\n            uid: uid,\n            unitId: unitId,\n            firstName: firstName,\n            lastName: lastName,\n            email: email,\n            role: role,\n            // TODO Replace with userImprovementWork collection\n            improvementWorks: [],\n            tasks: [],\n            manager: manager\n          });\n        case 4:\n          _context.next = 9;\n          break;\n        case 6:\n          _context.prev = 6;\n          _context.t0 = _context[\"catch\"](0);\n          console.log(_context.t0);\n        case 9:\n        case \"end\":\n          return _context.stop();\n      }\n    }, _callee, null, [[0, 6]]);\n  }));\n}\nfunction createImprovementWork(id, name, currentStage, content,\n// Är detta description bör detta förtydligas. JA\nunitId, purpose,\n//Bör tas bort motsvaras av p2- mål med projektet\npatientRiskLevel, area, projectLeader,\n//Adding projectleader & members to the project\nmembers) {\n  var resources = arguments.length > 10 && arguments[10] !== undefined ? arguments[10] : \"Inte definerat ännu\";\n  var p1 = arguments.length > 11 && arguments[11] !== undefined ? arguments[11] : \"\";\n  var p2 = arguments.length > 12 && arguments[12] !== undefined ? arguments[12] : \"\";\n  var p3 = arguments.length > 13 && arguments[13] !== undefined ? arguments[13] : \"\";\n  var p4 = arguments.length > 14 && arguments[14] !== undefined ? arguments[14] : \"\";\n  var p5 = arguments.length > 15 && arguments[15] !== undefined ? arguments[15] : \"\";\n  var p6 = arguments.length > 16 && arguments[16] !== undefined ? arguments[16] : \"\";\n  var p7 = arguments.length > 17 && arguments[17] !== undefined ? arguments[17] : \"\";\n  var g1 = arguments.length > 18 && arguments[18] !== undefined ? arguments[18] : \"\";\n  var g2 = arguments.length > 19 && arguments[19] !== undefined ? arguments[19] : \"\";\n  var g3 = arguments.length > 20 && arguments[20] !== undefined ? arguments[20] : \"\";\n  var g4 = arguments.length > 21 && arguments[21] !== undefined ? arguments[21] : \"\";\n  var g5 = arguments.length > 22 && arguments[22] !== undefined ? arguments[22] : \"\";\n  var s1 = arguments.length > 23 && arguments[23] !== undefined ? arguments[23] : \"\";\n  var s2 = arguments.length > 24 && arguments[24] !== undefined ? arguments[24] : \"\";\n  var s3 = arguments.length > 25 && arguments[25] !== undefined ? arguments[25] : \"\";\n  var a1 = arguments.length > 26 && arguments[26] !== undefined ? arguments[26] : \"\";\n  var a2 = arguments.length > 27 && arguments[27] !== undefined ? arguments[27] : \"\";\n  var a3 = arguments.length > 28 && arguments[28] !== undefined ? arguments[28] : \"\";\n  var a4 = arguments.length > 29 && arguments[29] !== undefined ? arguments[29] : \"\";\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {\n    var improvementWorkData, improvementWorkRef, _improvementWorkRef;\n    return _regeneratorRuntime().wrap(function _callee2$(_context2) {\n      while (1) switch (_context2.prev = _context2.next) {\n        case 0:\n          _context2.prev = 0;\n          improvementWorkData = {\n            name: name,\n            lowerCaseName: name.toLowerCase(),\n            currentStage: currentStage,\n            content: content,\n            purpose: purpose,\n            dateStarted: new Date(),\n            unitId: unitId,\n            completed: false,\n            ongoing: false,\n            tasks: [],\n            patientRiskLevel: patientRiskLevel,\n            area: area,\n            p1: p1,\n            p2: p2,\n            p3: p3,\n            p4: p4,\n            p5: p5,\n            p6: p6,\n            p7: p7,\n            g1: g1,\n            g2: g2,\n            g3: g3,\n            g4: g4,\n            g5: g5,\n            s1: s1,\n            s2: s2,\n            s3: s3,\n            a1: a1,\n            a2: a2,\n            a3: a3,\n            a4: a4,\n            resources: resources\n          };\n          if (!id) {\n            _context2.next = 8;\n            break;\n          }\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, id);\n          _context2.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(improvementWorkRef, Object.assign({\n            id: improvementWorkRef.id\n          }, improvementWorkData));\n        case 6:\n          _context2.next = 12;\n          break;\n        case 8:\n          _improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection);\n          _context2.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(_improvementWorkRef, improvementWorkData);\n        case 11:\n          id = _improvementWorkRef.id;\n        case 12:\n          //adding the projectleader and users to the project\n          addMemberToImprovementWork(projectLeader, id, false, true);\n          members.forEach(function (member) {\n            addMemberToImprovementWork(member, id, false, false);\n          });\n          _context2.next = 20;\n          break;\n        case 16:\n          _context2.prev = 16;\n          _context2.t0 = _context2[\"catch\"](0);\n          console.log(\"Error creating improvementWork: \", _context2.t0);\n          throw _context2.t0;\n        case 20:\n        case \"end\":\n          return _context2.stop();\n      }\n    }, _callee2, null, [[0, 16]]);\n  }));\n}\nfunction addMemberToTask(userHsaId, taskId, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee3() {\n    var relationRef;\n    return _regeneratorRuntime().wrap(function _callee3$(_context3) {\n      while (1) switch (_context3.prev = _context3.next) {\n        case 0:\n          _context3.prev = 0;\n          relationRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userTaskCollection);\n          _context3.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(relationRef, {\n            id: relationRef.id,\n            userHsaId: userHsaId,\n            taskId: taskId,\n            isResponsibleFor: isResponsibleFor\n          });\n        case 4:\n          _context3.next = 10;\n          break;\n        case 6:\n          _context3.prev = 6;\n          _context3.t0 = _context3[\"catch\"](0);\n          console.log(\"Error adding member to task: \", _context3.t0);\n          throw _context3.t0;\n        case 10:\n        case \"end\":\n          return _context3.stop();\n      }\n    }, _callee3, null, [[0, 6]]);\n  }));\n}\nfunction addMemberToImprovementWork(userHsaId, improvementWorkId, isOwner, isResponsibleFor) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee4() {\n    var relationRef;\n    return _regeneratorRuntime().wrap(function _callee4$(_context4) {\n      while (1) switch (_context4.prev = _context4.next) {\n        case 0:\n          _context4.prev = 0;\n          relationRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userImprovementWorkCollection);\n          _context4.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(relationRef, {\n            id: relationRef.id,\n            userHsaId: userHsaId,\n            improvementWorkId: improvementWorkId,\n            isOwner: isOwner,\n            isResponsibleFor: isResponsibleFor\n          });\n        case 4:\n          _context4.next = 10;\n          break;\n        case 6:\n          _context4.prev = 6;\n          _context4.t0 = _context4[\"catch\"](0);\n          console.log(\"Error adding member to improvementWork: \", _context4.t0);\n          throw _context4.t0;\n        case 10:\n        case \"end\":\n          return _context4.stop();\n      }\n    }, _callee4, null, [[0, 6]]);\n  }));\n}\nfunction createTaskOnImprovementWork(taskId, improvementWorkId, name, deadlineDate, startDate, stage, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee5() {\n    var taskData, taskRef, _taskRef;\n    return _regeneratorRuntime().wrap(function _callee5$(_context5) {\n      while (1) switch (_context5.prev = _context5.next) {\n        case 0:\n          _context5.prev = 0;\n          taskData = {\n            improvementWorkId: improvementWorkId,\n            name: name,\n            deadlineDate: deadlineDate,\n            startDate: startDate,\n            stage: stage,\n            content: content,\n            completed: false\n          };\n          if (!taskId) {\n            _context5.next = 8;\n            break;\n          }\n          taskRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection, taskId);\n          _context5.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(taskRef, Object.assign({\n            id: taskRef.id\n          }, taskData));\n        case 6:\n          _context5.next = 11;\n          break;\n        case 8:\n          _taskRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(taskCollection);\n          _context5.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(_taskRef, taskData);\n        case 11:\n          _context5.next = 17;\n          break;\n        case 13:\n          _context5.prev = 13;\n          _context5.t0 = _context5[\"catch\"](0);\n          console.log(\"Error creating task: \", _context5.t0);\n          throw _context5.t0;\n        case 17:\n        case \"end\":\n          return _context5.stop();\n      }\n    }, _callee5, null, [[0, 13]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction createdDocumentInKnowledgeBank(documentUrl, name, projectId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee6() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee6$(_context6) {\n      while (1) switch (_context6.prev = _context6.next) {\n        case 0:\n          _context6.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(knowledgeDocumentCollection);\n          _context6.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            name: name,\n            projectId: projectId\n          });\n        case 4:\n          _context6.next = 10;\n          break;\n        case 6:\n          _context6.prev = 6;\n          _context6.t0 = _context6[\"catch\"](0);\n          console.log(\"Error adding document: \", _context6.t0);\n          throw _context6.t0;\n        case 10:\n        case \"end\":\n          return _context6.stop();\n      }\n    }, _callee6, null, [[0, 6]]);\n  }));\n}\n//add a document to a improvementWork\n// takes in, document url, name and improvementWork id refering to as string\n// throws error if transaction failed\nfunction addDocumentToImprovementWork(documentUrl, name, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee7() {\n    var improvementWorkRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee7$(_context7) {\n      while (1) switch (_context7.prev = _context7.next) {\n        case 0:\n          _context7.prev = 0;\n          improvementWorkRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkCollection, improvementWorkId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(improvementWorkRef, \"documents\");\n          _context7.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            id: docRef.id,\n            documentUrl: documentUrl,\n            timestamp: new Date(),\n            name: name\n          });\n        case 5:\n          _context7.next = 11;\n          break;\n        case 7:\n          _context7.prev = 7;\n          _context7.t0 = _context7[\"catch\"](0);\n          console.log(\"Error adding document: \", _context7.t0);\n          throw _context7.t0;\n        case 11:\n        case \"end\":\n          return _context7.stop();\n      }\n    }, _callee7, null, [[0, 7]]);\n  }));\n}\nfunction getDocumentsByImprovementWork(improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee8() {\n    var q, querySnapshot, documents, _iterator, _step, _doc, documentId, documentDoc;\n    return _regeneratorRuntime().wrap(function _callee8$(_context8) {\n      while (1) switch (_context8.prev = _context8.next) {\n        case 0:\n          _context8.prev = 0;\n          console.log(\"Getting documents for improvementwork: \", improvementWorkId);\n          // Query the userImprovementWork collection for relations involving this user\n          q = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)(knowledgeDocumentCollection, (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"projectId\", \"==\", improvementWorkId));\n          _context8.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 5:\n          querySnapshot = _context8.sent;\n          // Fetch each related improvementWork document\n          documents = [];\n          _iterator = _createForOfIteratorHelper(querySnapshot.docs);\n          _context8.prev = 8;\n          _iterator.s();\n        case 10:\n          if ((_step = _iterator.n()).done) {\n            _context8.next = 19;\n            break;\n          }\n          _doc = _step.value;\n          documentId = _doc.data().id;\n          _context8.next = 15;\n          return getObjectById(\"knowledgeDocument\", documentId);\n        case 15:\n          documentDoc = _context8.sent;\n          documents.push(documentDoc);\n        case 17:\n          _context8.next = 10;\n          break;\n        case 19:\n          _context8.next = 24;\n          break;\n        case 21:\n          _context8.prev = 21;\n          _context8.t0 = _context8[\"catch\"](8);\n          _iterator.e(_context8.t0);\n        case 24:\n          _context8.prev = 24;\n          _iterator.f();\n          return _context8.finish(24);\n        case 27:\n          return _context8.abrupt(\"return\", documents);\n        case 30:\n          _context8.prev = 30;\n          _context8.t1 = _context8[\"catch\"](0);\n          console.error(\"Error getting documents for improvmentwork: \", _context8.t1);\n          throw _context8.t1;\n        case 34:\n        case \"end\":\n          return _context8.stop();\n      }\n    }, _callee8, null, [[0, 30], [8, 21, 24, 27]]);\n  }));\n}\nfunction createHospital(hospitalId,\n// should be auto?\nname) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee9() {\n    var hospitalData, hospitalRef, _hospitalRef;\n    return _regeneratorRuntime().wrap(function _callee9$(_context9) {\n      while (1) switch (_context9.prev = _context9.next) {\n        case 0:\n          _context9.prev = 0;\n          hospitalData = {\n            name: name,\n            units: []\n          };\n          if (!hospitalId) {\n            _context9.next = 8;\n            break;\n          }\n          hospitalRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection, hospitalId);\n          _context9.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(hospitalRef, Object.assign({\n            id: hospitalRef.id\n          }, hospitalData));\n        case 6:\n          _context9.next = 11;\n          break;\n        case 8:\n          _hospitalRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(hospitalCollection);\n          _context9.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(_hospitalRef, hospitalData);\n        case 11:\n          _context9.next = 17;\n          break;\n        case 13:\n          _context9.prev = 13;\n          _context9.t0 = _context9[\"catch\"](0);\n          console.log(\"Error creating hospital: \", _context9.t0);\n          throw _context9.t0;\n        case 17:\n        case \"end\":\n          return _context9.stop();\n      }\n    }, _callee9, null, [[0, 13]]);\n  }));\n}\nfunction createUnit(unitId,\n//should be auto?\nhospitalId, name) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee10() {\n    var unitData, unitRef, _unitRef;\n    return _regeneratorRuntime().wrap(function _callee10$(_context10) {\n      while (1) switch (_context10.prev = _context10.next) {\n        case 0:\n          _context10.prev = 0;\n          unitData = {\n            hospitalId: hospitalId,\n            name: name\n          };\n          if (!unitId) {\n            _context10.next = 8;\n            break;\n          }\n          unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection, unitId);\n          _context10.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(unitRef, Object.assign({\n            id: unitRef.id\n          }, unitData));\n        case 6:\n          _context10.next = 11;\n          break;\n        case 8:\n          _unitRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(unitCollection);\n          _context10.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(_unitRef, unitData);\n        case 11:\n          _context10.next = 17;\n          break;\n        case 13:\n          _context10.prev = 13;\n          _context10.t0 = _context10[\"catch\"](0);\n          console.log(\"Error creating unit: \", _context10.t0);\n          throw _context10.t0;\n        case 17:\n        case \"end\":\n          return _context10.stop();\n      }\n    }, _callee10, null, [[0, 13]]);\n  }));\n}\nfunction createSuggestion(id, creatorHsaId, name, area, content, purpose, measure, ideas,\n//need: boolean,\nunitId, departmentId, isPublic) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee11() {\n    var suggestionData, suggestionRef, _suggestionRef;\n    return _regeneratorRuntime().wrap(function _callee11$(_context11) {\n      while (1) switch (_context11.prev = _context11.next) {\n        case 0:\n          _context11.prev = 0;\n          suggestionData = {\n            creatorHsaId: creatorHsaId,\n            name: name,\n            area: area,\n            content: content,\n            purpose: purpose,\n            measure: measure,\n            ideas: ideas,\n            //need,\n            unitId: unitId,\n            departmentId: departmentId,\n            \"public\": isPublic,\n            upvotes: [],\n            comments: [],\n            dateCreated: new Date()\n          };\n          if (!id) {\n            _context11.next = 8;\n            break;\n          }\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, id);\n          _context11.next = 6;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(suggestionRef, Object.assign({\n            id: suggestionRef.id\n          }, suggestionData));\n        case 6:\n          _context11.next = 11;\n          break;\n        case 8:\n          _suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection);\n          _context11.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(_suggestionRef, suggestionData);\n        case 11:\n          _context11.next = 17;\n          break;\n        case 13:\n          _context11.prev = 13;\n          _context11.t0 = _context11[\"catch\"](0);\n          console.log(\"Error creating suggestion: \", _context11.t0);\n          throw _context11.t0;\n        case 17:\n        case \"end\":\n          return _context11.stop();\n      }\n    }, _callee11, null, [[0, 13]]);\n  }));\n}\nfunction deleteSuggestion(suggestionId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee12() {\n    var suggestionRef;\n    return _regeneratorRuntime().wrap(function _callee12$(_context12) {\n      while (1) switch (_context12.prev = _context12.next) {\n        case 0:\n          _context12.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          _context12.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(suggestionRef);\n        case 4:\n          _context12.next = 10;\n          break;\n        case 6:\n          _context12.prev = 6;\n          _context12.t0 = _context12[\"catch\"](0);\n          console.log(\"Error deleting suggestion: \", _context12.t0);\n          throw _context12.t0;\n        case 10:\n        case \"end\":\n          return _context12.stop();\n      }\n    }, _callee12, null, [[0, 6]]);\n  }));\n}\n// Upvote a suggestion for a user\n// takes in suggestion id, user HSAid\n// returns error if transaction failed\nfunction upvoteSuggestion(suggestionId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee13() {\n    var suggestionRef;\n    return _regeneratorRuntime().wrap(function _callee13$(_context13) {\n      while (1) switch (_context13.prev = _context13.next) {\n        case 0:\n          _context13.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId); // Atomically add a update to the upvote array field.\n          _context13.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(suggestionRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 4:\n          _context13.next = 10;\n          break;\n        case 6:\n          _context13.prev = 6;\n          _context13.t0 = _context13[\"catch\"](0);\n          console.log(\"Error upvoting suggestion: \", _context13.t0);\n          throw _context13.t0;\n        case 10:\n        case \"end\":\n          return _context13.stop();\n      }\n    }, _callee13, null, [[0, 6]]);\n  }));\n}\n//creates a comment\n// takes in commenters id, suggestion id and content as string\n// throws error if transaction failed\nfunction createComment(\n// change to subcollection\ncommenterHsaId, suggestionId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee14() {\n    var suggestionRef, commentCollection, commentRef;\n    return _regeneratorRuntime().wrap(function _callee14$(_context14) {\n      while (1) switch (_context14.prev = _context14.next) {\n        case 0:\n          _context14.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          _context14.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\");\n        case 4:\n          commentCollection = _context14.sent;\n          _context14.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(commentCollection);\n        case 7:\n          commentRef = _context14.sent;\n          _context14.next = 10;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(commentRef, {\n            id: commentRef.id,\n            commenterHsaId: commenterHsaId,\n            content: content,\n            dateCreated: new Date(),\n            upvotes: []\n          });\n        case 10:\n          _context14.next = 16;\n          break;\n        case 12:\n          _context14.prev = 12;\n          _context14.t0 = _context14[\"catch\"](0);\n          console.log(\"Error creating comment: \", _context14.t0);\n          throw _context14.t0;\n        case 16:\n        case \"end\":\n          return _context14.stop();\n      }\n    }, _callee14, null, [[0, 12]]);\n  }));\n}\n// Upvote a comment for a user\n// takes in suggestionId, commentId and userId as strings\n// return error if transaction failed\nfunction upvoteComment(suggestionId, commentId, userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee15() {\n    var suggestionRef, commentRef;\n    return _regeneratorRuntime().wrap(function _callee15$(_context15) {\n      while (1) switch (_context15.prev = _context15.next) {\n        case 0:\n          _context15.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionCollection, suggestionId);\n          commentRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(suggestionRef, \"comment\", commentId); // Atomically add a update to the upvote array field.\n          _context15.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(commentRef, {\n            upvotes: (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.arrayUnion)(userHsaId)\n          });\n        case 5:\n          _context15.next = 11;\n          break;\n        case 7:\n          _context15.prev = 7;\n          _context15.t0 = _context15[\"catch\"](0);\n          console.log(\"Error upvoting comment: \", _context15.t0);\n          throw _context15.t0;\n        case 11:\n        case \"end\":\n          return _context15.stop();\n      }\n    }, _callee15, null, [[0, 7]]);\n  }));\n}\n//add a note to a user\n// takes in userHsaId and content as string\n// throws error if transaction failed\nfunction addNoteToUser(userHsaId, content) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee16() {\n    var userRef, docRef;\n    return _regeneratorRuntime().wrap(function _callee16$(_context16) {\n      while (1) switch (_context16.prev = _context16.next) {\n        case 0:\n          _context16.prev = 0;\n          userRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userCollection, userHsaId);\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(userRef, \"notes\");\n          _context16.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.setDoc)(docRef, {\n            content: content,\n            dateCreated: new Date()\n          });\n        case 5:\n          _context16.next = 11;\n          break;\n        case 7:\n          _context16.prev = 7;\n          _context16.t0 = _context16[\"catch\"](0);\n          console.log(\"Error adding document: \", _context16.t0);\n          throw _context16.t0;\n        case 11:\n        case \"end\":\n          return _context16.stop();\n      }\n    }, _callee16, null, [[0, 7]]);\n  }));\n}\n// export to setters to be able to use in other files\n\n//////////////////////////////////////////////GETTERS/////////////////////////////////////////////////////////////////////\n// Get any object\n// input is the database type as a string.\n// output is the whole collection of that type.\nfunction getObject(collectionPath) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee17() {\n    var collectionRef, querySnapshot, result;\n    return _regeneratorRuntime().wrap(function _callee17$(_context17) {\n      while (1) switch (_context17.prev = _context17.next) {\n        case 0:\n          _context17.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionPath);\n          _context17.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          querySnapshot = _context17.sent;\n          result = [];\n          querySnapshot.forEach(function (doc) {\n            result.push(doc.data());\n          });\n          return _context17.abrupt(\"return\", result);\n        case 10:\n          _context17.prev = 10;\n          _context17.t0 = _context17[\"catch\"](0);\n          console.error(\"Error getting collection data\", _context17.t0);\n          throw _context17.t0;\n        case 14:\n        case \"end\":\n          return _context17.stop();\n      }\n    }, _callee17, null, [[0, 10]]);\n  }));\n}\n/**\n * Asynchronously retrieves a single document object from the specified collection path and document ID.\n * If the document does not exist, logs a warning and returns null.\n *\n * @param {string} collectionPath - The path to the collection in the database (\"improvementWork\", \"hospital\", \"suggestion\", \"task\", \"unit\", \"users\")\n * @param {string} documentId - The ID of the document to retrieve.\n * @returns {Promise<any|null>} A promise that resolves to the document object if found, or null if not.\n *\n * @throws Will throw an error if there is an issue during retrieval from the database.\n */\nfunction getObjectById(collectionPath, documentId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee18() {\n    var docRef, docSnapshot;\n    return _regeneratorRuntime().wrap(function _callee18$(_context18) {\n      while (1) switch (_context18.prev = _context18.next) {\n        case 0:\n          _context18.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, collectionPath, documentId);\n          _context18.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDoc)(docRef);\n        case 4:\n          docSnapshot = _context18.sent;\n          if (!docSnapshot.exists()) {\n            _context18.next = 9;\n            break;\n          }\n          return _context18.abrupt(\"return\", Object.assign({\n            id: docSnapshot.id\n          }, docSnapshot.data()));\n        case 9:\n          console.warn(\"No such document! \".concat(collectionPath, \"/\").concat(documentId));\n          return _context18.abrupt(\"return\", null);\n        case 11:\n          _context18.next = 17;\n          break;\n        case 13:\n          _context18.prev = 13;\n          _context18.t0 = _context18[\"catch\"](0);\n          console.error(\"Error getting object\", _context18.t0);\n          throw _context18.t0;\n        case 17:\n        case \"end\":\n          return _context18.stop();\n      }\n    }, _callee18, null, [[0, 13]]);\n  }));\n}\n/**\n * Asynchronously retrieves comments for a given suggestion.\n *\n * @param {Object} params - The parameters for fetching comments.\n * @param {string} params.suggestionId - The ID of the suggestion to fetch comments for.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - The criterion to sort the comments by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Determines if the sorting should be in ascending order. Defaults to false (descending).\n * @returns {Promise<any[]>} A promise that resolves to an array of comment objects.\n *\n * @throws Will throw an error if the comments cannot be retrieved.\n */\nfunction getComments(_ref) {\n  var suggestionId = _ref.suggestionId,\n    _ref$sortBy = _ref.sortBy,\n    sortBy = _ref$sortBy === void 0 ? \"dateCreated\" : _ref$sortBy,\n    _ref$ascending = _ref.ascending,\n    ascending = _ref$ascending === void 0 ? false : _ref$ascending;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee19() {\n    var suggestionRef, commentsQuery, commentsSnapshot, comments;\n    return _regeneratorRuntime().wrap(function _callee19$(_context19) {\n      while (1) switch (_context19.prev = _context19.next) {\n        case 0:\n          _context19.prev = 0;\n          suggestionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, \"suggestionCollection\", suggestionId);\n          commentsQuery = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(suggestionRef, \"comment\"), (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          _context19.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(commentsQuery);\n        case 5:\n          commentsSnapshot = _context19.sent;\n          comments = [];\n          commentsSnapshot.forEach(function (doc) {\n            comments.push(doc.data());\n          });\n          return _context19.abrupt(\"return\", comments);\n        case 11:\n          _context19.prev = 11;\n          _context19.t0 = _context19[\"catch\"](0);\n          console.error(\"Error getting comments for suggestion: \", _context19.t0);\n          throw _context19.t0;\n        case 15:\n        case \"end\":\n          return _context19.stop();\n      }\n    }, _callee19, null, [[0, 11]]);\n  }));\n}\n//Filtering suggestions on unitId AND creatorHsaId\n//Sort suggestions on dateCreated OR upvotes\n/**\n * Asynchronously retrieves an array of suggestions from the database, with various filters and sorting options.\n *\n * @param {Object} params - The parameters for filtering and sorting suggestions.\n * @param {string} [params.id] - Optional ID to filter suggestions by a specific identifier.\n * @param {string} [params.creatorHsaId] - Optional HSA ID to filter suggestions by the creator's HSA ID.\n * @param {string} [params.unitId] - Optional unit ID to filter suggestions by a specific unit.\n * @param {\"dateCreated\"|\"upvotes\"} [params.sortBy=\"dateCreated\"] - Criterion to sort the suggestions by. Defaults to \"dateCreated\".\n * @param {boolean} [params.ascending=false] - Flag indicating if sorting should be ascending. Defaults to false (descending order).\n * @param {boolean} [params.isPublic=true] - Flag indicating whether to filter for public suggestions. Defaults to true.\n * @returns {Promise<any[]>} A promise that resolves to an array of suggestion objects.\n *\n * @throws Will throw an error if there is an issue retrieving suggestions.\n */\nfunction getSuggestions(_ref2) {\n  var id = _ref2.id,\n    creatorHsaId = _ref2.creatorHsaId,\n    name = _ref2.name,\n    unitId = _ref2.unitId,\n    _ref2$sortBy = _ref2.sortBy,\n    sortBy = _ref2$sortBy === void 0 ? \"dateCreated\" : _ref2$sortBy,\n    _ref2$ascending = _ref2.ascending,\n    ascending = _ref2$ascending === void 0 ? false : _ref2$ascending,\n    _ref2$isPublic = _ref2.isPublic,\n    isPublic = _ref2$isPublic === void 0 ? true : _ref2$isPublic;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee20() {\n    var collectionRef, constraints, q, querySnapshot, suggestions;\n    return _regeneratorRuntime().wrap(function _callee20$(_context20) {\n      while (1) switch (_context20.prev = _context20.next) {\n        case 0:\n          _context20.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"suggestion\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (creatorHsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"creatorHsaId\", \"==\", creatorHsaId));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", name));\n            sortBy = \"name\";\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"public\", \"==\", isPublic));\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(sortBy, ascending ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context20.next = 12;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 12:\n          querySnapshot = _context20.sent;\n          suggestions = [];\n          querySnapshot.forEach(function (doc) {\n            suggestions.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context20.abrupt(\"return\", suggestions);\n        case 18:\n          _context20.prev = 18;\n          _context20.t0 = _context20[\"catch\"](0);\n          console.log(\"Error retrieving suggestions by department: \", _context20.t0);\n          throw _context20.t0;\n        case 22:\n        case \"end\":\n          return _context20.stop();\n      }\n    }, _callee20, null, [[0, 18]]);\n  }));\n}\n/**\n * Asynchronously searches for hospital documents in the database.\n * It can filter the results by the hospital's name, ID, or both.\n * If no parameters are provided, it retrieves all hospitals.\n *\n * @param {Object} params - An object containing the search parameters.\n * @param {string} [params.hospitalName] - Optional name of the hospital to filter the search.\n * @param {string} [params.hospitalId] - Optional unique identifier of the hospital to filter the search.\n * @returns {Promise<any[]>} A promise that resolves to an array of hospital objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getHospitals(_ref3) {\n  var hospitalName = _ref3.hospitalName,\n    hospitalId = _ref3.hospitalId;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee21() {\n    var collectionRef, constraints, q, querySnapshot, hospitals;\n    return _regeneratorRuntime().wrap(function _callee21$(_context21) {\n      while (1) switch (_context21.prev = _context21.next) {\n        case 0:\n          _context21.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"hospital\");\n          constraints = [];\n          if (hospitalName) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", hospitalName));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hospitalId));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context21.next = 8;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 8:\n          querySnapshot = _context21.sent;\n          hospitals = [];\n          querySnapshot.forEach(function (doc) {\n            hospitals.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context21.abrupt(\"return\", hospitals);\n        case 14:\n          _context21.prev = 14;\n          _context21.t0 = _context21[\"catch\"](0);\n          console.log(\"Error retrieving Hospitals\", _context21.t0);\n          throw _context21.t0;\n        case 18:\n        case \"end\":\n          return _context21.stop();\n      }\n    }, _callee21, null, [[0, 14]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of improvement work documents based on various filter criteria.\n * It supports filtering by ID, Nolan stage, unit ID, completion status, ongoing status, and patient risk level.\n * It also supports sorting by the start date of the improvement work in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.id] - Optional identifier to filter the improvement works.\n * @param {string} [params.nolanStage] - Optional Nolan stage to filter the improvement works.\n * @param {string} [params.unitId] - Optional unit ID to filter the improvement works.\n * @param {boolean} [params.completed] - Optional flag to filter the improvement works by their completion status.\n * @param {boolean} [params.ongoing] - Optional flag to filter the improvement works by their ongoing status.\n * @param {string} [params.patientRiskLevel] - Optional patient risk level to filter the improvement works.\n * @param {boolean} [params.ascendingDates=false] - Optional flag for sorting by date in ascending order. Defaults to false.\n * @returns {Promise<any[]>} A promise that resolves to an array of improvement work objects that match the criteria.\n *\n * @throws Will throw an error if there is a problem retrieving the improvement works.\n */\nfunction getImprovementWorks(_ref4) {\n  var id = _ref4.id,\n    name = _ref4.name,\n    nolanStage = _ref4.nolanStage,\n    unitId = _ref4.unitId,\n    completed = _ref4.completed,\n    ongoing = _ref4.ongoing,\n    patientRiskLevel = _ref4.patientRiskLevel,\n    _ref4$ascendingDates = _ref4.ascendingDates,\n    ascendingDates = _ref4$ascendingDates === void 0 ? false : _ref4$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee22() {\n    var collectionRef, constraints, q, querySnapshot, improvementWorks;\n    return _regeneratorRuntime().wrap(function _callee22$(_context22) {\n      while (1) switch (_context22.prev = _context22.next) {\n        case 0:\n          _context22.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\n          constraints = [];\n          if (id) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", id));\n          }\n          if (unitId) {\n            console.log(\"inne i ifsatsen i databasen\");\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (nolanStage) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"currentStage\", \"==\", nolanStage));\n          }\n          if (completed != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"completed\", \"==\", completed));\n          }\n          if (ongoing !== undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"ongoing\", \"==\", ongoing));\n          }\n          if (patientRiskLevel) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"patientRiskLevel\", \"==\", patientRiskLevel));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"lowerCaseName\", \">=\", name.toLowerCase()));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"lowerCaseName\", \"<=\", name.toLowerCase() + \"~\"));\n          } else {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"dateStarted\", ascendingDates ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context22.next = 13;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 13:\n          querySnapshot = _context22.sent;\n          improvementWorks = [];\n          querySnapshot.forEach(function (doc) {\n            improvementWorks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context22.abrupt(\"return\", improvementWorks);\n        case 19:\n          _context22.prev = 19;\n          _context22.t0 = _context22[\"catch\"](0);\n          console.log(\"Error retrieving improvementWorks: \", _context22.t0);\n          throw _context22.t0;\n        case 23:\n        case \"end\":\n          return _context22.stop();\n      }\n    }, _callee22, null, [[0, 19]]);\n  }));\n}\n// Gets improvementWorks where each field matches the union of elements in the input array for each fo the fields\nfunction getFilteredImprovementWorks(_ref5) {\n  var patientRiskLevels = _ref5.patientRiskLevels,\n    nolanStages = _ref5.nolanStages,\n    units = _ref5.units,\n    _ref5$ascendingDates = _ref5.ascendingDates,\n    ascendingDates = _ref5$ascendingDates === void 0 ? false : _ref5$ascendingDates,\n    completed = _ref5.completed;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee23() {\n    var collectionRef, constraints, q, querySnapshot, improvementWorks;\n    return _regeneratorRuntime().wrap(function _callee23$(_context23) {\n      while (1) switch (_context23.prev = _context23.next) {\n        case 0:\n          _context23.prev = 0;\n          console.log(\"Getting improvement works with the following constraints\", patientRiskLevels, nolanStages, units, ascendingDates);\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"improvementWork\");\n          constraints = [];\n          if (patientRiskLevels && patientRiskLevels.length) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"patientRiskLevel\", \"in\", patientRiskLevels));\n          }\n          if (nolanStages && nolanStages.length) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"currentStage\", \"in\", nolanStages));\n          }\n          if (units && units.length) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"in\", units));\n          }\n          // If none of the array filters are provided, default to ordering by date.\n          if (!patientRiskLevels.length && !nolanStages.length && !units.length) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"dateStarted\", ascendingDates ? \"asc\" : \"desc\"));\n          }\n          if (completed) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"completed\", \"==\", completed));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context23.next = 12;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 12:\n          querySnapshot = _context23.sent;\n          improvementWorks = [];\n          querySnapshot.forEach(function (doc) {\n            improvementWorks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context23.abrupt(\"return\", improvementWorks);\n        case 18:\n          _context23.prev = 18;\n          _context23.t0 = _context23[\"catch\"](0);\n          console.error(\"Error retrieving filtered improvementWorks: \", _context23.t0);\n          throw _context23.t0;\n        case 22:\n        case \"end\":\n          return _context23.stop();\n      }\n    }, _callee23, null, [[0, 18]]);\n  }));\n}\nfunction getImprovementWorkOwner(improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee24() {\n    var constraints, q, querySnapshot, owner;\n    return _regeneratorRuntime().wrap(function _callee24$(_context24) {\n      while (1) switch (_context24.prev = _context24.next) {\n        case 0:\n          _context24.prev = 0;\n          constraints = [];\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"isOwner\", \"==\", true));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [userImprovementWorkCollection].concat(constraints));\n          _context24.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 7:\n          querySnapshot = _context24.sent;\n          if (!querySnapshot.empty) {\n            _context24.next = 13;\n            break;\n          }\n          console.log(\"Improvement work \", improvementWorkId, \" has no owner\");\n          return _context24.abrupt(\"return\", null);\n        case 13:\n          owner = querySnapshot.docs[0].data().userHsaId;\n          return _context24.abrupt(\"return\", owner);\n        case 15:\n          _context24.next = 20;\n          break;\n        case 17:\n          _context24.prev = 17;\n          _context24.t0 = _context24[\"catch\"](0);\n          console.log(_context24.t0);\n        case 20:\n        case \"end\":\n          return _context24.stop();\n      }\n    }, _callee24, null, [[0, 17]]);\n  }));\n}\nfunction getImprovementWorkResponsible(improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee25() {\n    var constraints, q, querySnapshot, responsibleId, responsible;\n    return _regeneratorRuntime().wrap(function _callee25$(_context25) {\n      while (1) switch (_context25.prev = _context25.next) {\n        case 0:\n          _context25.prev = 0;\n          constraints = [];\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"isResponsibleFor\", \"==\", true));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [userImprovementWorkCollection].concat(constraints));\n          _context25.next = 7;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 7:\n          querySnapshot = _context25.sent;\n          if (!querySnapshot.empty) {\n            _context25.next = 13;\n            break;\n          }\n          console.log(\"Improvement work \", improvementWorkId, \" has no responsible\");\n          return _context25.abrupt(\"return\", null);\n        case 13:\n          responsibleId = querySnapshot.docs[0].data().userHsaId;\n          _context25.next = 16;\n          return getObjectById(\"users\", responsibleId);\n        case 16:\n          responsible = _context25.sent;\n          return _context25.abrupt(\"return\", responsible);\n        case 18:\n          _context25.next = 23;\n          break;\n        case 20:\n          _context25.prev = 20;\n          _context25.t0 = _context25[\"catch\"](0);\n          console.log(_context25.t0);\n        case 23:\n        case \"end\":\n          return _context25.stop();\n      }\n    }, _callee25, null, [[0, 20]]);\n  }));\n}\n// TODO getUsersForTask!\n/**\n * Asynchronously retrieves user documents from the database based on various filter criteria.\n * It can filter by the Health Savings Account ID (hsaId), unit ID, and unique identifier (uid).\n * Additionally, it can sort the results by first name in either ascending or descending order.\n *\n * @param {Object} params - An object containing the filter and sorting parameters.\n * @param {string} [params.hsaId] - Optional HSA ID to filter the users.\n * @param {string} [params.unitId] - Optional unit ID to filter the users.\n * @param {boolean} [params.ascendingFirstNames=false] - Optional flag to sort by first names in ascending order. Defaults to false (descending order).\n * @param {string} [params.uid] - Optional unique identifier to filter the users.\n * @returns {Promise<any[]>} A promise that resolves to an array of user objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUsers(_ref6) {\n  var hsaId = _ref6.hsaId,\n    name = _ref6.name,\n    unitId = _ref6.unitId,\n    _ref6$ascendingFirstN = _ref6.ascendingFirstNames,\n    ascendingFirstNames = _ref6$ascendingFirstN === void 0 ? false : _ref6$ascendingFirstN,\n    uid = _ref6.uid;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee26() {\n    var collectionRef, constraints, q, querySnapshot, users;\n    return _regeneratorRuntime().wrap(function _callee26$(_context26) {\n      while (1) switch (_context26.prev = _context26.next) {\n        case 0:\n          _context26.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"users\");\n          constraints = [];\n          if (hsaId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", hsaId));\n          }\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"unitId\", \"==\", unitId));\n          }\n          if (uid) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"uid\", \"==\", uid));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", name));\n          }\n          constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"firstName\", ascendingFirstNames ? \"asc\" : \"desc\"));\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context26.next = 11;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 11:\n          querySnapshot = _context26.sent;\n          users = [];\n          querySnapshot.forEach(function (doc) {\n            users.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context26.abrupt(\"return\", users);\n        case 17:\n          _context26.prev = 17;\n          _context26.t0 = _context26[\"catch\"](0);\n          console.log(\"Error retrieving users by department: \", _context26.t0);\n          throw _context26.t0;\n        case 21:\n        case \"end\":\n          return _context26.stop();\n      }\n    }, _callee26, null, [[0, 17]]);\n  }));\n}\n// TODO getTasksForUser!\n/**\n * Asynchronously retrieves an array of task documents from the database based on several filter and sorting criteria.\n * Filters include task ID, user ID and their responsibility status, and related improvement work ID.\n * Results can be sorted by date either in ascending or descending order.\n *\n * @param {Object} params - Parameters to filter and sort the task results.\n * @param {string} [params.taskId] - Optional task ID to filter the tasks.\n * @param {string} [params.userId] - Optional user ID to identify tasks related to a user.\n * @param {boolean} [params.isResponsibleFor] - Optional flag to filter tasks where the user is marked as responsible.\n * @param {string} [params.improvementWorkId] - Optional improvement work ID to filter tasks related to a specific improvement work.\n * @param {boolean} [params.ascendingDates=false] - Optional flag to sort tasks by date in ascending order; defaults to descending order.\n * @returns {Promise<any[]>} A promise that resolves to an array of task objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getTasks(_ref7) {\n  var improvementWorkId = _ref7.improvementWorkId,\n    stage = _ref7.stage,\n    _ref7$ascendingDates = _ref7.ascendingDates,\n    ascendingDates = _ref7$ascendingDates === void 0 ? false : _ref7$ascendingDates;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee27() {\n    var collectionRef, constraints, q, querySnapshot, tasks;\n    return _regeneratorRuntime().wrap(function _callee27$(_context27) {\n      while (1) switch (_context27.prev = _context27.next) {\n        case 0:\n          _context27.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"task\");\n          constraints = [];\n          if (stage) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"stage\", \"==\", stage));\n          }\n          if (improvementWorkId != undefined) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"startDate\", ascendingDates ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context27.next = 8;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 8:\n          querySnapshot = _context27.sent;\n          tasks = [];\n          querySnapshot.forEach(function (doc) {\n            tasks.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context27.abrupt(\"return\", tasks);\n        case 14:\n          _context27.prev = 14;\n          _context27.t0 = _context27[\"catch\"](0);\n          console.log(\"Error retrieving task by department: \", _context27.t0);\n          throw _context27.t0;\n        case 18:\n        case \"end\":\n          return _context27.stop();\n      }\n    }, _callee27, null, [[0, 14]]);\n  }));\n}\n/**\n * Asynchronously retrieves an array of unit documents from the database based on various filter criteria.\n * Filters can be applied based on unit ID, hospital ID, and unit name.\n * Additionally, results can be sorted by unit names in ascending or descending order.\n *\n * @param {Object} params - The parameters object containing filter and sorting options.\n * @param {string} [params.unitId] - Optional unit ID to filter the units.\n * @param {string} [params.hospitalId] - Optional hospital ID to filter units within a specific hospital.\n * @param {string} [params.name] - Optional name to filter units by a specific name.\n * @param {boolean} [params.ascendingUnitNames=false] - Optional flag to sort units by name in ascending order, defaults to descending.\n * @returns {Promise<any[]>} A promise that resolves to an array of unit objects that match the search criteria.\n *\n * @throws Will throw an error if there is an issue during the retrieval process.\n */\nfunction getUnits(_ref8) {\n  var unitId = _ref8.unitId,\n    hospitalId = _ref8.hospitalId,\n    name = _ref8.name,\n    _ref8$ascendingUnitNa = _ref8.ascendingUnitNames,\n    ascendingUnitNames = _ref8$ascendingUnitNa === void 0 ? false : _ref8$ascendingUnitNa;\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee28() {\n    var collectionRef, constraints, q, querySnapshot, units;\n    return _regeneratorRuntime().wrap(function _callee28$(_context28) {\n      while (1) switch (_context28.prev = _context28.next) {\n        case 0:\n          _context28.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, \"unit\");\n          constraints = [];\n          if (unitId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"id\", \"==\", unitId));\n          }\n          if (name) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"name\", \"==\", name));\n          }\n          if (hospitalId) {\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"hospitalId\", \"==\", hospitalId));\n            constraints.push((0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.orderBy)(\"name\", ascendingUnitNames ? \"asc\" : \"desc\"));\n          }\n          q = firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query.apply(void 0, [collectionRef].concat(constraints));\n          _context28.next = 9;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 9:\n          querySnapshot = _context28.sent;\n          units = [];\n          querySnapshot.forEach(function (doc) {\n            units.push(Object.assign({\n              id: doc.id\n            }, doc.data()));\n          });\n          return _context28.abrupt(\"return\", units);\n        case 15:\n          _context28.prev = 15;\n          _context28.t0 = _context28[\"catch\"](0);\n          console.log(\"Error retrieving units by hospitalId: \", _context28.t0);\n          throw _context28.t0;\n        case 19:\n        case \"end\":\n          return _context28.stop();\n      }\n    }, _callee28, null, [[0, 15]]);\n  }));\n}\nfunction getImprovementWorksForUser(userHsaId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee29() {\n    var q, querySnapshot, improvementWorks, _iterator2, _step2, _doc2, improvementWorkId, improvementWorkDoc;\n    return _regeneratorRuntime().wrap(function _callee29$(_context29) {\n      while (1) switch (_context29.prev = _context29.next) {\n        case 0:\n          _context29.prev = 0;\n          console.log(\"Getting improvementworks for user: \", userHsaId);\n          // Query the userImprovementWork collection for relations involving this user\n          q = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)(userImprovementWorkCollection, (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"userHsaId\", \"==\", userHsaId));\n          _context29.next = 5;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 5:\n          querySnapshot = _context29.sent;\n          // Fetch each related improvementWork document\n          improvementWorks = [];\n          _iterator2 = _createForOfIteratorHelper(querySnapshot.docs);\n          _context29.prev = 8;\n          _iterator2.s();\n        case 10:\n          if ((_step2 = _iterator2.n()).done) {\n            _context29.next = 19;\n            break;\n          }\n          _doc2 = _step2.value;\n          improvementWorkId = _doc2.data().improvementWorkId;\n          _context29.next = 15;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 15:\n          improvementWorkDoc = _context29.sent;\n          improvementWorks.push(improvementWorkDoc);\n        case 17:\n          _context29.next = 10;\n          break;\n        case 19:\n          _context29.next = 24;\n          break;\n        case 21:\n          _context29.prev = 21;\n          _context29.t0 = _context29[\"catch\"](8);\n          _iterator2.e(_context29.t0);\n        case 24:\n          _context29.prev = 24;\n          _iterator2.f();\n          return _context29.finish(24);\n        case 27:\n          return _context29.abrupt(\"return\", improvementWorks);\n        case 30:\n          _context29.prev = 30;\n          _context29.t1 = _context29[\"catch\"](0);\n          console.error(\"Error getting improvement works for user: \", _context29.t1);\n          throw _context29.t1;\n        case 34:\n        case \"end\":\n          return _context29.stop();\n      }\n    }, _callee29, null, [[0, 30], [8, 21, 24, 27]]);\n  }));\n}\nfunction getUsersForImprovementWork(improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee30() {\n    var q, querySnapshot, users, _iterator3, _step3, _doc3, userHsaId, userDoc;\n    return _regeneratorRuntime().wrap(function _callee30$(_context30) {\n      while (1) switch (_context30.prev = _context30.next) {\n        case 0:\n          _context30.prev = 0;\n          // Query the userImprovementWork collection for relations involving this improvementWork\n          q = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.query)(userImprovementWorkCollection, (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.where)(\"improvementWorkId\", \"==\", improvementWorkId));\n          _context30.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(q);\n        case 4:\n          querySnapshot = _context30.sent;\n          // Fetch each related user document\n          users = [];\n          _iterator3 = _createForOfIteratorHelper(querySnapshot.docs);\n          _context30.prev = 7;\n          _iterator3.s();\n        case 9:\n          if ((_step3 = _iterator3.n()).done) {\n            _context30.next = 18;\n            break;\n          }\n          _doc3 = _step3.value;\n          userHsaId = _doc3.data().userHsaId;\n          _context30.next = 14;\n          return getObjectById(\"users\", userHsaId);\n        case 14:\n          userDoc = _context30.sent;\n          users.push(userDoc);\n        case 16:\n          _context30.next = 9;\n          break;\n        case 18:\n          _context30.next = 23;\n          break;\n        case 20:\n          _context30.prev = 20;\n          _context30.t0 = _context30[\"catch\"](7);\n          _iterator3.e(_context30.t0);\n        case 23:\n          _context30.prev = 23;\n          _iterator3.f();\n          return _context30.finish(23);\n        case 26:\n          return _context30.abrupt(\"return\", users);\n        case 29:\n          _context30.prev = 29;\n          _context30.t1 = _context30[\"catch\"](0);\n          console.error(\"Error getting users for improvementWork: \", _context30.t1);\n          throw _context30.t1;\n        case 33:\n        case \"end\":\n          return _context30.stop();\n      }\n    }, _callee30, null, [[0, 29], [7, 20, 23, 26]]);\n  }));\n}\n// export getters to be able to use in other files\n\n////////////////////////////////////DELETING/////////////////////////////////////////////\n// delete an instance of a type\nfunction deleteInstance(docType, docId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee31() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee31$(_context31) {\n      while (1) switch (_context31.prev = _context31.next) {\n        case 0:\n          _context31.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context31.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(docRef);\n        case 4:\n          console.log(\"\".concat(docType, \" deleted successfully.\"));\n          _context31.next = 11;\n          break;\n        case 7:\n          _context31.prev = 7;\n          _context31.t0 = _context31[\"catch\"](0);\n          console.error(\"Error deleting \".concat(docType, \":\"), _context31.t0);\n          throw _context31.t0;\n        case 11:\n        case \"end\":\n          return _context31.stop();\n      }\n    }, _callee31, null, [[0, 7]]);\n  }));\n}\n// delete all instances of a type\nfunction deleteAllDocumentsInCollection(collectionName) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee33() {\n    var _this = this;\n    var collectionRef, snapshot, deletePromises;\n    return _regeneratorRuntime().wrap(function _callee33$(_context33) {\n      while (1) switch (_context33.prev = _context33.next) {\n        case 0:\n          _context33.prev = 0;\n          collectionRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.collection)(db, collectionName);\n          _context33.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.getDocs)(collectionRef);\n        case 4:\n          snapshot = _context33.sent;\n          // Delete all documents in the collection\n          deletePromises = snapshot.docs.map(function (doc) {\n            return __awaiter(_this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee32() {\n              return _regeneratorRuntime().wrap(function _callee32$(_context32) {\n                while (1) switch (_context32.prev = _context32.next) {\n                  case 0:\n                    _context32.next = 2;\n                    return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.deleteDoc)(doc.ref);\n                  case 2:\n                  case \"end\":\n                    return _context32.stop();\n                }\n              }, _callee32);\n            }));\n          });\n          _context33.next = 8;\n          return Promise.all(deletePromises);\n        case 8:\n          console.log(\"All documents in the \".concat(collectionName, \" collection deleted successfully.\"));\n          _context33.next = 15;\n          break;\n        case 11:\n          _context33.prev = 11;\n          _context33.t0 = _context33[\"catch\"](0);\n          console.error(\"Error deleting all documents in \".concat(collectionName, \":\"), _context33.t0);\n          throw _context33.t0;\n        case 15:\n        case \"end\":\n          return _context33.stop();\n      }\n    }, _callee33, null, [[0, 11]]);\n  }));\n}\n////////////////////////////////////UPDATING/////////////////////////////////////////////\n// update a field in an instance\nfunction updateInstance(docType, docId, updates) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee34() {\n    var docRef;\n    return _regeneratorRuntime().wrap(function _callee34$(_context34) {\n      while (1) switch (_context34.prev = _context34.next) {\n        case 0:\n          _context34.prev = 0;\n          docRef = (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.doc)(db, docType, docId);\n          _context34.next = 4;\n          return (0,firebase_firestore__WEBPACK_IMPORTED_MODULE_1__.updateDoc)(docRef, updates);\n        case 4:\n          console.log(\"\".concat(docType, \" updated successfully.\"));\n          _context34.next = 11;\n          break;\n        case 7:\n          _context34.prev = 7;\n          _context34.t0 = _context34[\"catch\"](0);\n          console.error(\"Error updating \".concat(docType, \":\"), _context34.t0);\n          throw _context34.t0;\n        case 11:\n        case \"end\":\n          return _context34.stop();\n      }\n    }, _callee34, null, [[0, 7]]);\n  }));\n}\n// changes the ongoing status of an improvement work. if ongoing it is paused, if if paused onging.\n// user must be a manager\nfunction startOrPauseImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee35() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee35$(_context35) {\n      while (1) switch (_context35.prev = _context35.next) {\n        case 0:\n          _context35.prev = 0;\n          _context35.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context35.sent;\n          _context35.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context35.sent;\n          if (!(!user || !user.manager)) {\n            _context35.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change improvementWork status\");\n        case 11:\n          if (!improvementWork) {\n            _context35.next = 19;\n            break;\n          }\n          update = {\n            ongoing: !improvementWork.ongoing\n          };\n          _context35.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          return _context35.abrupt(\"return\", true);\n        case 19:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n          return _context35.abrupt(\"return\", false);\n        case 21:\n          _context35.next = 27;\n          break;\n        case 23:\n          _context35.prev = 23;\n          _context35.t0 = _context35[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context35.t0);\n          throw _context35.t0;\n        case 27:\n        case \"end\":\n          return _context35.stop();\n      }\n    }, _callee35, null, [[0, 23]]);\n  }));\n}\nfunction changePatientRiskLevel(userId, improvementWorkId, patientRiskLevel) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee36() {\n    var user, improvementWork, update;\n    return _regeneratorRuntime().wrap(function _callee36$(_context36) {\n      while (1) switch (_context36.prev = _context36.next) {\n        case 0:\n          _context36.prev = 0;\n          _context36.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context36.sent;\n          _context36.next = 6;\n          return getObjectById(\"improvementWork\", improvementWorkId);\n        case 6:\n          improvementWork = _context36.sent;\n          if (!(!user || !user.manager)) {\n            _context36.next = 11;\n            break;\n          }\n          throw new Error(\"User can't change patientRiskLevel in improvement work\");\n        case 11:\n          if (!improvementWork) {\n            _context36.next = 18;\n            break;\n          }\n          update = {\n            patientRiskLevel: patientRiskLevel\n          };\n          _context36.next = 15;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 15:\n          console.log(\"Improvement work \".concat(improvementWorkId, \" status updated.\"));\n          _context36.next = 19;\n          break;\n        case 18:\n          console.error(\"Improvement work with ID \".concat(improvementWorkId, \" not found.\"));\n        case 19:\n          _context36.next = 25;\n          break;\n        case 21:\n          _context36.prev = 21;\n          _context36.t0 = _context36[\"catch\"](0);\n          console.error(\"Error starting/pausing improvement work:\", _context36.t0);\n          throw _context36.t0;\n        case 25:\n        case \"end\":\n          return _context36.stop();\n      }\n    }, _callee36, null, [[0, 21]]);\n  }));\n}\n// finalizes the improvement work. ongoing is set to false.\n// user must be a manager\nfunction finalizeImprovementWork(userId, improvementWorkId) {\n  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regeneratorRuntime().mark(function _callee37() {\n    var user, update;\n    return _regeneratorRuntime().wrap(function _callee37$(_context37) {\n      while (1) switch (_context37.prev = _context37.next) {\n        case 0:\n          _context37.prev = 0;\n          _context37.next = 3;\n          return getObjectById(\"users\", userId);\n        case 3:\n          user = _context37.sent;\n          if (!(!user || !user.manager)) {\n            _context37.next = 8;\n            break;\n          }\n          return _context37.abrupt(\"return\", false);\n        case 8:\n          update = {\n            completed: true,\n            ongoing: false\n          };\n          _context37.next = 11;\n          return updateInstance(\"improvementWork\", improvementWorkId, update);\n        case 11:\n          return _context37.abrupt(\"return\", true);\n        case 12:\n          _context37.next = 17;\n          break;\n        case 14:\n          _context37.prev = 14;\n          _context37.t0 = _context37[\"catch\"](0);\n          return _context37.abrupt(\"return\", false);\n        case 17:\n        case \"end\":\n          return _context37.stop();\n      }\n    }, _callee37, null, [[0, 14]]);\n  }));\n}\n\n//////////////////////////////// for later sprint\n//function add_upvotes\n//function add_notes\n//function add_intrested_users\n\n//# sourceURL=webpack://c3/./client/Database/database.js?");
 
 /***/ }),
 
diff --git a/client/homePage.ts b/client/homePage.ts
index 49dbbc4d463443dcf8adcc0ab31fa241ac351978..2e6fa1ee2b5a987a7c28911f98c3b249251560f3 100644
--- a/client/homePage.ts
+++ b/client/homePage.ts
@@ -1,7 +1,7 @@
 import { onAuthStateChanged } from "firebase/auth";
 import { auth } from "./Database/database.js";
 import { logout } from "./Database/authentication.js";
-import {} from "./currentProjects/currentProjects.js"
+import {} from "./currentProjects/currentProjects.js";
 import {
   loadProjectPageP,
   loadProjectPageA,
@@ -17,6 +17,8 @@ import {
   getImprovementWorksForUser,
 } from "../client/Database/database.js";
 
+import { formatDate } from "./projectPage/projectPage.js";
+
 function logoutUser(event: Event) {
   event.preventDefault();
   alert("logout");
@@ -24,8 +26,6 @@ function logoutUser(event: Event) {
   logout();
 }
 
-
-
 interface Project {
   ID: string;
   name: string;
@@ -186,7 +186,6 @@ function addListner(cardArray: { [key: number]: IdeaCard }, element: Element) {
         } else {
           console.error("Expanded div not found");
         }
-        
       }
     }
   });
@@ -200,7 +199,7 @@ async function createNewIdeaCard(
   className: string,
   container: Element,
   ID: number,
-  suggestionID : string
+  suggestionID: string
 ) {
   let card = new IdeaCard(
     ID,
@@ -258,7 +257,7 @@ export async function loadPage(listenersLoaded: boolean) {
 
         addListner(myIdeaCards, container);
       }
-      
+
       const nameHeaderElement = document.getElementById("user-name-header");
 
       let userFullName = user.firstName + " " + user.lastName;
@@ -269,8 +268,6 @@ export async function loadPage(listenersLoaded: boolean) {
       const projectContainer = document.getElementById("project-container");
       if (projectContainer) {
         await getProjects(projectContainer, listenersLoaded, user.id);
-        
-        
       }
       console.log("innan");
       const departmentContainer = document.getElementById(
@@ -294,34 +291,32 @@ export async function loadPage(listenersLoaded: boolean) {
     });
 }
 
-export async function addEventListener(
-  projectId: string,
-  card: projectCard
-) {
-  
-  $("#homepage-"+projectId).off("click").on("click", async function () {
-    let tmp = await getObjectById("improvementWork", projectId);
-    const currentStage = tmp.currentStage;
-    if (currentStage === "Act") {
-      loadProjectPageA(projectId);
-    } else if (currentStage === "Study") {
-      loadProjectPageS(projectId);
-    } else if (currentStage === "Do") {
-      loadProjectPageG(projectId);
-    } else if (currentStage === "Plan") {
-      loadProjectPageP(projectId);
-    } else if (currentStage === "Finished") {
-      loadProjectPageP(projectId);
-    }
-  });
+export async function addEventListener(projectId: string, card: projectCard) {
+  $("#homepage-" + projectId)
+    .off("click")
+    .on("click", async function () {
+      let tmp = await getObjectById("improvementWork", projectId);
+      const currentStage = tmp.currentStage;
+      if (currentStage === "Act") {
+        loadProjectPageA(projectId);
+      } else if (currentStage === "Study") {
+        loadProjectPageS(projectId);
+      } else if (currentStage === "Do") {
+        loadProjectPageG(projectId);
+      } else if (currentStage === "Plan") {
+        loadProjectPageP(projectId);
+      } else if (currentStage === "Finished") {
+        loadProjectPageP(projectId);
+      }
+    });
 }
 
 const patientRiskLevelMapping: { [key: string]: string } = {
-    Grön: "Green",
-    Blå: "Blue",
-    Gul: "Yellow",
-    Röd: "Red"
-}
+  Grön: "Green",
+  Blå: "Blue",
+  Gul: "Yellow",
+  Röd: "Red",
+};
 
 const nolanStageMapping: { [key: string]: string } = {
   Planera: "Plan",
@@ -436,7 +431,7 @@ async function improvementWorkInfo(departmentContainer: any, user: any) {
 
 async function getProjects(
   selectElement: HTMLElement,
-  listenersLoaded:boolean,
+  listenersLoaded: boolean,
   userHsaId: string
 ) {
   const data = await getImprovementWorksForUser(userHsaId);
@@ -454,7 +449,8 @@ async function getProjects(
         department.name,
         title,
         description,
-        project.id
+        project.id,
+        project.dateStarted
       );
       projectCards[i] = card;
       let cardHTML = card.generateHTML();
@@ -480,6 +476,7 @@ class projectCard {
   private description: string;
   private id: number;
   private projectId: string;
+  private dateStarted: any;
 
   constructor(
     id: number,
@@ -487,7 +484,8 @@ class projectCard {
     department: string,
     title: string,
     description: string,
-    projectId: string
+    projectId: string,
+    dateStarted: string
   ) {
     this.name = name;
     this.department = department;
@@ -495,6 +493,7 @@ class projectCard {
     this.description = description;
     this.id = id;
     this.projectId = projectId;
+    this.dateStarted = dateStarted;
   }
 
   showMoreInfo(blockId: string, thisTextId: string): void {
@@ -526,17 +525,30 @@ class projectCard {
 
   generateHTML(): string {
     return `<div class="homeTotalExpandedOngoingWorkCard">
-        <div style="cursor: pointer;" class="flex-container ongoingCard" id="homepage-${this.projectId}">
+        <div style="cursor: pointer;" class="flex-container ongoingCard" id="homepage-${
+          this.projectId
+        }">
             <div class="ongoingCardImageContainer toSinglePage">
                 <div class = "flex-box ongoingCardImage toSinglePage" id="pinkFaded"></div>
             </div>
             <div class="div ongoingCardInfo toSinglePage">
                 <p class="toSinglePage" id="ongoingCardManager">${this.name}</p>
-                <p class="toSinglePage" id="ongoingCardDepartment">${this.department}</p>
-                <p class="toSinglePage" id="ongoingCardIdeaTitle">${this.title}</p>
+                <p class="toSinglePage" id="ongoingCardDepartment">${
+                  this.department
+                }</p>
+                <p class="toSinglePage" id="ongoingCardIdeaTitle">${
+                  this.title
+                }</p>
+                <p class="toSinglePage" id="ongoingCardStartDate" style="font-size: 12px;"> ${formatDate(
+                  this.dateStarted
+                )}</p>
             </div>
 
-            <!--<button id="homepage-project-button-${this.projectId}" data-project-id="${this.id}" class="projectButton" role="button">Gå till projektsidan</button>-->
+            <!--<button id="homepage-project-button-${
+              this.projectId
+            }" data-project-id="${
+      this.id
+    }" class="projectButton" role="button">Gå till projektsidan</button>-->
 
 
             <div class="container ongoingSeeCardDetails toSinglePage">
@@ -545,7 +557,9 @@ class projectCard {
                 </div>
             </div>
         </div> 
-        <div class = "expandedOngoingWorkCard" id="homepage-expandedOngoingWorkCard${this.projectId}" style="display: none;">
+        <div class = "expandedOngoingWorkCard" id="homepage-expandedOngoingWorkCard${
+          this.projectId
+        }" style="display: none;">
             <div class ="homepage-expandedTextOngoingWorkCard">
             ${this.description}
             </div>
@@ -555,4 +569,3 @@ class projectCard {
 }
 
 //<p id="homepage-ongoingSeeDetailsButton${this.projectId}" class = "moreInfoClass">> Mer information</p>
-
diff --git a/client/projectPage/projectPage.ts b/client/projectPage/projectPage.ts
index 310dca0699ef0a6735869a1603e3f7936bbf27c9..6e6aea73958b0f606300a0c25c1a3a3f09ed529c 100644
--- a/client/projectPage/projectPage.ts
+++ b/client/projectPage/projectPage.ts
@@ -1,192 +1,398 @@
-import {getHospitals, getUsersForImprovementWork, getImprovementWorkResponsible,getUnits,getObjectById, updateInstance, getTasks, createTaskOnImprovementWork, deleteInstance,improvementWork} from "../Database/database.js";
-import { Timestamp} from "firebase/firestore";
-import {loadEmployees,assignedEmployer} from "../initiateForbattringsarbete/initiateIdea.js"
+import {
+  getHospitals,
+  getUsersForImprovementWork,
+  getImprovementWorkResponsible,
+  getUnits,
+  getObjectById,
+  updateInstance,
+  getTasks,
+  createTaskOnImprovementWork,
+  deleteInstance,
+  improvementWork,
+} from "../Database/database.js";
+import { Timestamp } from "firebase/firestore";
+import {
+  loadEmployees,
+  assignedEmployer,
+} from "../initiateForbattringsarbete/initiateIdea.js";
 
-export function loadPage(projectId:string) {
-}
+export function loadPage(projectId: string) {}
 
-export async function loadImprovementWorkTasks(projectId : string, stage: string, stageListClassName: string, taskListId: string, closeBtnId: string, taskModalId: string, taskTitleId: string, taskEndDateId: string, taskStartDateId: string, taskContentId: string, saveBtnId: string, deleteBtnId: string) {
-    //Event listener that closes task modal
-    const tasks = await getTasks({improvementWorkId : projectId, stage : stage});
-    const taskListElement = $('#'+taskListId);
-    modalEventListeners(projectId, stage, stageListClassName, closeBtnId, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, taskListId, saveBtnId, deleteBtnId);
-    if(taskListElement) {
-        tasks.forEach(async(task) => {
-            const taskElement = $('<li>');
-            const textSpan = $('<span>').text(task.name);
-            const checkbox = $('<input>').attr('type', 'checkbox');
-            if(task.completed) {
-                checkbox.prop('checked', true);
-            }
-            taskElement.append(textSpan, checkbox);
-            taskElement.addClass(stageListClassName);
-            taskElement.on('click', function() {
-                let startDateFormatted = formatDate(task.startDate);
-                let endDateFormatted = formatDate(task.deadlineDate);
-                openTaskModal(task.name, task.content, task.id, startDateFormatted, endDateFormatted, taskModalId, taskTitleId, taskContentId, taskStartDateId, taskEndDateId);
-            })
-            checkbox.on('click', (event) => {
-                event.stopPropagation();
-                if (checkbox.prop('checked')) {
-                    console.log('Checkbox is checked.');
-                    updateInstance('task', task.id, {completed: true});
-                  } else {
-                    console.log('Checkbox is unchecked.');
-                    updateInstance('task', task.id, {completed: false});
-                }
-            });
-
-            taskListElement.append(taskElement); // Stop if the container isn't found
-        });
-    } else {
-        console.log("Task container not found");
-    }
+export async function loadImprovementWorkTasks(
+  projectId: string,
+  stage: string,
+  stageListClassName: string,
+  taskListId: string,
+  closeBtnId: string,
+  taskModalId: string,
+  taskTitleId: string,
+  taskEndDateId: string,
+  taskStartDateId: string,
+  taskContentId: string,
+  saveBtnId: string,
+  deleteBtnId: string
+) {
+  //Event listener that closes task modal
+  const tasks = await getTasks({ improvementWorkId: projectId, stage: stage });
+  const taskListElement = $("#" + taskListId);
+  modalEventListeners(
+    projectId,
+    stage,
+    stageListClassName,
+    closeBtnId,
+    taskModalId,
+    taskTitleId,
+    taskEndDateId,
+    taskStartDateId,
+    taskContentId,
+    taskListId,
+    saveBtnId,
+    deleteBtnId
+  );
+  if (taskListElement) {
+    tasks.forEach(async (task) => {
+      const taskElement = $("<li>");
+      const textSpan = $("<span>").text(task.name);
+      const checkbox = $("<input>").attr("type", "checkbox");
+      if (task.completed) {
+        checkbox.prop("checked", true);
+      }
+      taskElement.append(textSpan, checkbox);
+      taskElement.addClass(stageListClassName);
+      taskElement.on("click", function () {
+        let startDateFormatted = formatDate(task.startDate);
+        let endDateFormatted = formatDate(task.deadlineDate);
+        openTaskModal(
+          task.name,
+          task.content,
+          task.id,
+          startDateFormatted,
+          endDateFormatted,
+          taskModalId,
+          taskTitleId,
+          taskContentId,
+          taskStartDateId,
+          taskEndDateId
+        );
+      });
+      checkbox.on("click", (event) => {
+        event.stopPropagation();
+        if (checkbox.prop("checked")) {
+          console.log("Checkbox is checked.");
+          updateInstance("task", task.id, { completed: true });
+        } else {
+          console.log("Checkbox is unchecked.");
+          updateInstance("task", task.id, { completed: false });
+        }
+      });
+
+      taskListElement.append(taskElement); // Stop if the container isn't found
+    });
+  } else {
+    console.log("Task container not found");
+  }
 }
 
 //Opens modal for a task
-export function openTaskModal(taskTitle : string, taskContent : string, taskId: string, taskStart: string, taskEnd: string, taskModalId: string, taskTitleId: string, taskContentId: string, taskStartDateId: string, taskEndDateId: string) {
-    const taskModal = document.getElementById(taskModalId);
-    const title = document.getElementById(taskTitleId) as HTMLInputElement;
-    const content = document.getElementById(taskContentId) as HTMLTextAreaElement;
-    const startDate = document.getElementById(taskStartDateId) as HTMLInputElement;
-    const endDate = document.getElementById(taskEndDateId) as HTMLInputElement;
-    if(taskModal) {
-        taskModal.setAttribute('data-task-id', taskId);
-        if(title && content && startDate && endDate) {
-            title.value = "";
-            content.value = "";
-            startDate.value = "";
-            endDate.value = "";
-
-            if (taskTitle !== "" || taskContent !== "" || taskStart !== "" || taskEnd !== "") {
-                title.value = taskTitle;
-                content.value = taskContent;
-                startDate.value = taskStart;
-                endDate.value = taskEnd;
-            }
-        } 
-        taskModal.style.display = 'block';
+export function openTaskModal(
+  taskTitle: string,
+  taskContent: string,
+  taskId: string,
+  taskStart: string,
+  taskEnd: string,
+  taskModalId: string,
+  taskTitleId: string,
+  taskContentId: string,
+  taskStartDateId: string,
+  taskEndDateId: string
+) {
+  const taskModal = document.getElementById(taskModalId);
+  const title = document.getElementById(taskTitleId) as HTMLInputElement;
+  const content = document.getElementById(taskContentId) as HTMLTextAreaElement;
+  const startDate = document.getElementById(
+    taskStartDateId
+  ) as HTMLInputElement;
+  const endDate = document.getElementById(taskEndDateId) as HTMLInputElement;
+  if (taskModal) {
+    taskModal.setAttribute("data-task-id", taskId);
+    if (title && content && startDate && endDate) {
+      title.value = "";
+      content.value = "";
+      startDate.value = "";
+      endDate.value = "";
+
+      if (
+        taskTitle !== "" ||
+        taskContent !== "" ||
+        taskStart !== "" ||
+        taskEnd !== ""
+      ) {
+        title.value = taskTitle;
+        content.value = taskContent;
+        startDate.value = taskStart;
+        endDate.value = taskEnd;
+      }
     }
+    taskModal.style.display = "block";
+  }
 }
 
 //Adds eventlistener to close modal
-function modalEventListeners(projectId: string, stage: string, stageListClassName: string, closeBtnId: string, taskModalId: string, taskTitleId: string, taskEndDateId: string, taskStartDateId: string, taskContentId: string, taskListId: string, saveBtnId: string, deleteBtnId: string) {
-    const closeButton = document.getElementById(closeBtnId);
-    const taskModal = document.getElementById(taskModalId);
-    const saveButton = document.getElementById(saveBtnId);
-    const deleteButton = document.getElementById(deleteBtnId);
-    if(closeButton && taskModal) {
-        const closeBtnListener = closeButton.hasAttribute('data-has-event-listener');
-        if(!closeBtnListener) {
-            closeButton.setAttribute('data-has-event-listener', 'true');
-            closeButton.addEventListener('click', () => {
-                taskModal.style.display = 'none'; //Closes modal
-            });
-        }
+function modalEventListeners(
+  projectId: string,
+  stage: string,
+  stageListClassName: string,
+  closeBtnId: string,
+  taskModalId: string,
+  taskTitleId: string,
+  taskEndDateId: string,
+  taskStartDateId: string,
+  taskContentId: string,
+  taskListId: string,
+  saveBtnId: string,
+  deleteBtnId: string
+) {
+  const closeButton = document.getElementById(closeBtnId);
+  const taskModal = document.getElementById(taskModalId);
+  const saveButton = document.getElementById(saveBtnId);
+  const deleteButton = document.getElementById(deleteBtnId);
+  if (closeButton && taskModal) {
+    const closeBtnListener = closeButton.hasAttribute(
+      "data-has-event-listener"
+    );
+    if (!closeBtnListener) {
+      closeButton.setAttribute("data-has-event-listener", "true");
+      closeButton.addEventListener("click", () => {
+        taskModal.style.display = "none"; //Closes modal
+      });
     }
-    
-    if(saveButton && taskModal) {
-        const saveBtnListener = saveButton.hasAttribute('data-has-event-listener');
-        if(!saveBtnListener) {
-            saveButton.setAttribute('data-has-event-listener', 'true');
-            saveButton.addEventListener('click', () => {
-                createNewOrSaveTask(projectId, stage, stageListClassName, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, taskListId, closeBtnId, saveBtnId, deleteBtnId);
-                taskModal.style.display = 'none'; //Closes modal
-            });
-        }
+  }
+
+  if (saveButton && taskModal) {
+    const saveBtnListener = saveButton.hasAttribute("data-has-event-listener");
+    if (!saveBtnListener) {
+      saveButton.setAttribute("data-has-event-listener", "true");
+      saveButton.addEventListener("click", () => {
+        createNewOrSaveTask(
+          projectId,
+          stage,
+          stageListClassName,
+          taskModalId,
+          taskTitleId,
+          taskEndDateId,
+          taskStartDateId,
+          taskContentId,
+          taskListId,
+          closeBtnId,
+          saveBtnId,
+          deleteBtnId
+        );
+        taskModal.style.display = "none"; //Closes modal
+      });
     }
+  }
 
-    if(deleteButton && taskModal) {
-        const deleteBtnListener = deleteButton.hasAttribute('data-has-event-listener');
-        if(!deleteBtnListener) {
-            deleteButton.setAttribute('data-has-event-listener', 'true');
-            deleteButton.addEventListener('click', () => {
-                deleteTask(projectId, stage, stageListClassName, taskModalId, taskListId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, saveBtnId, deleteBtnId, closeBtnId);
-                taskModal.style.display = 'none'; //Closes modal
-            });
-        }
+  if (deleteButton && taskModal) {
+    const deleteBtnListener = deleteButton.hasAttribute(
+      "data-has-event-listener"
+    );
+    if (!deleteBtnListener) {
+      deleteButton.setAttribute("data-has-event-listener", "true");
+      deleteButton.addEventListener("click", () => {
+        deleteTask(
+          projectId,
+          stage,
+          stageListClassName,
+          taskModalId,
+          taskListId,
+          taskTitleId,
+          taskEndDateId,
+          taskStartDateId,
+          taskContentId,
+          saveBtnId,
+          deleteBtnId,
+          closeBtnId
+        );
+        taskModal.style.display = "none"; //Closes modal
+      });
     }
+  }
 }
 
-async function createNewOrSaveTask(projectId: string, stage: string, stageListClassName: string, taskModalId: string, taskTitleId: string, taskEndDateId: string, taskStartDateId: string, taskContentId: string, taskListId: string, closeBtnId: string, saveBtnId: string, deleteBtnId: string) {
-    //title: string, deadline : Date, startDate: Date, stage: string, content: string
-    const modalElement = document.getElementById(taskModalId) as HTMLElement;
-    const titleElement = document.getElementById(taskTitleId) as HTMLInputElement;
-    const deadlineElement = document.getElementById(taskEndDateId) as HTMLInputElement;
-    const startElement = document.getElementById(taskStartDateId) as HTMLInputElement;
-    const contentElement = document.getElementById(taskContentId) as HTMLTextAreaElement;
-    const taskId = modalElement.getAttribute('data-task-id');
-
-    if(taskId === '') { //Creates new task
-        const improvementWork = await getObjectById('improvementWork', projectId);
-        if(titleElement && contentElement && deadlineElement && startElement) {
-            if(titleElement.value !== "", deadlineElement.value !== "", startElement.value !== "", contentElement.value !== "") {
-                let deadline: Date = new Date(deadlineElement.value); //Date string to timestamp
-                let startDate: Date = new Date(startElement.value); //Date string to timestamp
-                createTaskOnImprovementWork(null, projectId, titleElement.value, deadline, startDate, improvementWork.currentStage, contentElement.value);
-                const listElement = document.getElementById(taskListId) as HTMLUListElement;
-                listElement.innerHTML = "";
-                loadImprovementWorkTasks(projectId, stage, stageListClassName, taskListId, closeBtnId, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, saveBtnId, deleteBtnId);
-            } else {
-                console.log("All input fields for the task where not filled in")
-            }
-        } else {
-            console.log("All input element where not found")
-        }
-    } else { //Updates old task
-        if(taskId) {
-            let deadline: Date = new Date(deadlineElement.value); //Date string to timestamp
-            let startDate: Date = new Date(startElement.value); //Date string to timestamp
-            await updateInstance('task', taskId, {name: titleElement.value, deadlineDate: deadline, startDate: startDate, content: contentElement.value});
-            const listElement = document.getElementById(taskListId) as HTMLUListElement;
-            listElement.innerHTML = "";
-            loadImprovementWorkTasks(projectId, stage, stageListClassName, taskListId, closeBtnId, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, saveBtnId, deleteBtnId);
-            //loadPage(projectId); //Loads tasks since updated ASK for help
-        }
-    }   
-}
+async function createNewOrSaveTask(
+  projectId: string,
+  stage: string,
+  stageListClassName: string,
+  taskModalId: string,
+  taskTitleId: string,
+  taskEndDateId: string,
+  taskStartDateId: string,
+  taskContentId: string,
+  taskListId: string,
+  closeBtnId: string,
+  saveBtnId: string,
+  deleteBtnId: string
+) {
+  //title: string, deadline : Date, startDate: Date, stage: string, content: string
+  const modalElement = document.getElementById(taskModalId) as HTMLElement;
+  const titleElement = document.getElementById(taskTitleId) as HTMLInputElement;
+  const deadlineElement = document.getElementById(
+    taskEndDateId
+  ) as HTMLInputElement;
+  const startElement = document.getElementById(
+    taskStartDateId
+  ) as HTMLInputElement;
+  const contentElement = document.getElementById(
+    taskContentId
+  ) as HTMLTextAreaElement;
+  const taskId = modalElement.getAttribute("data-task-id");
 
-async function deleteTask(projectId: string, stage: string, stageListClassName: string, taskModalId: string, taskListId: string, taskTitleId: string, taskEndDateId: string, taskStartDateId: string, taskContentId: string, saveBtnId: string, deleteBtnId: string, closeBtnId: string) {
-    const modalElement = document.getElementById(taskModalId) as HTMLElement;
-    const taskId = modalElement.getAttribute('data-task-id');
-    if(taskId) {
-        await deleteInstance('task', taskId);
-        const listElement = document.getElementById(taskListId) as HTMLUListElement;
+  if (taskId === "") {
+    //Creates new task
+    const improvementWork = await getObjectById("improvementWork", projectId);
+    if (titleElement && contentElement && deadlineElement && startElement) {
+      if (
+        (titleElement.value !== "",
+        deadlineElement.value !== "",
+        startElement.value !== "",
+        contentElement.value !== "")
+      ) {
+        let deadline: Date = new Date(deadlineElement.value); //Date string to timestamp
+        let startDate: Date = new Date(startElement.value); //Date string to timestamp
+        createTaskOnImprovementWork(
+          null,
+          projectId,
+          titleElement.value,
+          deadline,
+          startDate,
+          improvementWork.currentStage,
+          contentElement.value
+        );
+        const listElement = document.getElementById(
+          taskListId
+        ) as HTMLUListElement;
         listElement.innerHTML = "";
-        loadImprovementWorkTasks(projectId, stage, stageListClassName, taskListId, closeBtnId, taskModalId, taskTitleId, taskEndDateId, taskStartDateId, taskContentId, saveBtnId, deleteBtnId);
+        loadImprovementWorkTasks(
+          projectId,
+          stage,
+          stageListClassName,
+          taskListId,
+          closeBtnId,
+          taskModalId,
+          taskTitleId,
+          taskEndDateId,
+          taskStartDateId,
+          taskContentId,
+          saveBtnId,
+          deleteBtnId
+        );
+      } else {
+        console.log("All input fields for the task where not filled in");
+      }
+    } else {
+      console.log("All input element where not found");
+    }
+  } else {
+    //Updates old task
+    if (taskId) {
+      let deadline: Date = new Date(deadlineElement.value); //Date string to timestamp
+      let startDate: Date = new Date(startElement.value); //Date string to timestamp
+      await updateInstance("task", taskId, {
+        name: titleElement.value,
+        deadlineDate: deadline,
+        startDate: startDate,
+        content: contentElement.value,
+      });
+      const listElement = document.getElementById(
+        taskListId
+      ) as HTMLUListElement;
+      listElement.innerHTML = "";
+      loadImprovementWorkTasks(
+        projectId,
+        stage,
+        stageListClassName,
+        taskListId,
+        closeBtnId,
+        taskModalId,
+        taskTitleId,
+        taskEndDateId,
+        taskStartDateId,
+        taskContentId,
+        saveBtnId,
+        deleteBtnId
+      );
+      //loadPage(projectId); //Loads tasks since updated ASK for help
     }
+  }
 }
 
-function formatDate(timeStamp: Timestamp): string {
-    const date = timeStamp.toDate();
-    const day: string = String(date.getDate()).toString();
-    const month: string = String(date.getMonth() + 1).toString(); // Adding 1 because months are zero-based
-    const year: string = String(date.getFullYear()).toString(); 
-
-    if(parseInt(month, 10) < 10 && parseInt(day, 10) > 9) {
-        return `${year}-0${month}-${day}`;
-    } else if (parseInt(month, 10) > 9 && parseInt(day, 10) < 10) {
-        return `${year}-${month}-0${day}`;
-    } else if (parseInt(month, 10) < 10 && parseInt(day, 10) < 10) {
-        return `${year}-0${month}-0${day}`;
-    } else {
-        return `${year}-${month}-${day}`;
-    }
+async function deleteTask(
+  projectId: string,
+  stage: string,
+  stageListClassName: string,
+  taskModalId: string,
+  taskListId: string,
+  taskTitleId: string,
+  taskEndDateId: string,
+  taskStartDateId: string,
+  taskContentId: string,
+  saveBtnId: string,
+  deleteBtnId: string,
+  closeBtnId: string
+) {
+  const modalElement = document.getElementById(taskModalId) as HTMLElement;
+  const taskId = modalElement.getAttribute("data-task-id");
+  if (taskId) {
+    await deleteInstance("task", taskId);
+    const listElement = document.getElementById(taskListId) as HTMLUListElement;
+    listElement.innerHTML = "";
+    loadImprovementWorkTasks(
+      projectId,
+      stage,
+      stageListClassName,
+      taskListId,
+      closeBtnId,
+      taskModalId,
+      taskTitleId,
+      taskEndDateId,
+      taskStartDateId,
+      taskContentId,
+      saveBtnId,
+      deleteBtnId
+    );
+  }
 }
-function timestamptoDate (timestamp: any): Date | null {
-    if (timestamp instanceof Timestamp) {
-        const date = timestamp.toDate();
-        return date;
-    } else {
-        console.error('Invalid timestamp type.');
-        return null;
-    }
+
+export function formatDate(timeStamp: Timestamp): string {
+  const date = timeStamp.toDate();
+  const day: string = String(date.getDate()).toString();
+  const month: string = String(date.getMonth() + 1).toString(); // Adding 1 because months are zero-based
+  const year: string = String(date.getFullYear()).toString();
+
+  if (parseInt(month, 10) < 10 && parseInt(day, 10) > 9) {
+    return `${year}-0${month}-${day}`;
+  } else if (parseInt(month, 10) > 9 && parseInt(day, 10) < 10) {
+    return `${year}-${month}-0${day}`;
+  } else if (parseInt(month, 10) < 10 && parseInt(day, 10) < 10) {
+    return `${year}-0${month}-0${day}`;
+  } else {
+    return `${year}-${month}-${day}`;
+  }
+}
+function timestamptoDate(timestamp: any): Date | null {
+  if (timestamp instanceof Timestamp) {
+    const date = timestamp.toDate();
+    return date;
+  } else {
+    console.error("Invalid timestamp type.");
+    return null;
+  }
 }
 
-function getDaysMonthYear(startDate : Date | null): string {
-    const currentTime = new Date();
-    if (startDate){
-        const millisecondsDifference = currentTime.getTime() - startDate.getTime();
+function getDaysMonthYear(startDate: Date | null): string {
+  const currentTime = new Date();
+  if (startDate) {
+    const millisecondsDifference = currentTime.getTime() - startDate.getTime();
 
     // Convert milliseconds to seconds
     const secondsDifference = millisecondsDifference / 1000;
@@ -195,110 +401,131 @@ function getDaysMonthYear(startDate : Date | null): string {
     const years = Math.floor(secondsDifference / (365.25 * 24 * 60 * 60));
     const remainingSeconds = secondsDifference % (365.25 * 24 * 60 * 60);
     const months = Math.floor(remainingSeconds / (30 * 24 * 60 * 60)); // Assuming 30 days per month
-    const days = Math.floor((remainingSeconds % (30 * 24 * 60 * 60)) / (24 * 60 * 60));
+    const days = Math.floor(
+      (remainingSeconds % (30 * 24 * 60 * 60)) / (24 * 60 * 60)
+    );
 
     return ` ${years} år, ${months} månader, ${days} dagar.`;
-    } else {
-        return "Det finns inget startdatum registrerat"
-    }
-    
-
+  } else {
+    return "Det finns inget startdatum registrerat";
+  }
 }
 
-export async function loadProjectHeader(improvementWork: improvementWork)
-{   // Show loading indicators
-    const loadingIndicators = document.querySelectorAll(".loadingIndicator");
-    loadingIndicators.forEach(indicator => {
-        (indicator as HTMLParagraphElement).style.display = 'block';
-    });
+export async function loadProjectHeader(improvementWork: improvementWork) {
+  // Show loading indicators
+  const loadingIndicators = document.querySelectorAll(".loadingIndicator");
+  loadingIndicators.forEach((indicator) => {
+    (indicator as HTMLParagraphElement).style.display = "block";
+  });
 
-    const titleP = document.getElementById("title") as HTMLTextAreaElement;
-    titleP.textContent = improvementWork.name;
-
-    const aAreaElement = document.getElementById("pArea") as HTMLParagraphElement;
-    aAreaElement.textContent = improvementWork.area;
-
-    const resources = document.getElementById("pResources") as HTMLTextAreaElement;
-    resources.textContent = improvementWork.resources;
-
-    const time = document.getElementById("pTime") as HTMLTextAreaElement;
-    let formatdateStarted = timestamptoDate(improvementWork.dateStarted); 
-    time.textContent = getDaysMonthYear(formatdateStarted);
-    
-
-    
-    const aUnitArray = await getUnits({ unitId: improvementWork.unitId });
-        //this code loads the current members
-    const projectLeader = await getImprovementWorkResponsible(improvementWork.id!);
-    const members = await getUsersForImprovementWork(improvementWork.id!);
-    
-    const aProjectLeader = document.getElementById("pLeader")  as HTMLParagraphElement;
-    aProjectLeader.textContent = projectLeader.firstName +" "+ projectLeader.lastName + " ("+projectLeader.email +")";
-    
-    const aMembers = document.getElementById("pMembers") as HTMLParagraphElement;
-    members.forEach(async member => {
-            aMembers.textContent = aMembers.textContent + member.firstName +" "+member.lastName + ", ";
-    })
-        //stop loding current members
-    if (aUnitArray.length === 0) {
-        console.log("Error loading the units.")
-    }
-    
-    const aUnit = aUnitArray[0];
-    const aUnitElement = document.getElementById("pUnit") as HTMLParagraphElement;
-    aUnitElement.textContent = aUnit.name;
-
-    const hospitalArray = await getHospitals({ hospitalId: aUnit.hospitalId });
-    if (hospitalArray.length === 0) {
-        console.log("Error loading the hospitals.")
-    }
-    const aHospital = hospitalArray[0];
-    const aHospitalElement = document.getElementById("pHospital") as HTMLParagraphElement;
-    aHospitalElement.textContent = aHospital.name;
-
-     // Close loading indicators
-     loadingIndicators.forEach(indicator => {
-         (indicator as HTMLParagraphElement).style.display = 'none';
-     });
+  const titleP = document.getElementById("title") as HTMLTextAreaElement;
+  titleP.textContent = improvementWork.name;
+
+  const aAreaElement = document.getElementById("pArea") as HTMLParagraphElement;
+  aAreaElement.textContent = improvementWork.area;
+
+  const resources = document.getElementById(
+    "pResources"
+  ) as HTMLTextAreaElement;
+  resources.textContent = improvementWork.resources;
+
+  const time = document.getElementById("pTime") as HTMLTextAreaElement;
+  let formatdateStarted = timestamptoDate(improvementWork.dateStarted);
+  time.textContent = getDaysMonthYear(formatdateStarted);
+
+  const aUnitArray = await getUnits({ unitId: improvementWork.unitId });
+  //this code loads the current members
+  const projectLeader = await getImprovementWorkResponsible(
+    improvementWork.id!
+  );
+  const members = await getUsersForImprovementWork(improvementWork.id!);
+
+  const aProjectLeader = document.getElementById(
+    "pLeader"
+  ) as HTMLParagraphElement;
+  aProjectLeader.textContent =
+    projectLeader.firstName +
+    " " +
+    projectLeader.lastName +
+    " (" +
+    projectLeader.email +
+    ")";
+
+  const aMembers = document.getElementById("pMembers") as HTMLParagraphElement;
+  members.forEach(async (member) => {
+    aMembers.textContent =
+      aMembers.textContent + member.firstName + " " + member.lastName + ", ";
+  });
+  //stop loding current members
+  if (aUnitArray.length === 0) {
+    console.log("Error loading the units.");
+  }
+
+  const aUnit = aUnitArray[0];
+  const aUnitElement = document.getElementById("pUnit") as HTMLParagraphElement;
+  aUnitElement.textContent = aUnit.name;
+
+  const hospitalArray = await getHospitals({ hospitalId: aUnit.hospitalId });
+  if (hospitalArray.length === 0) {
+    console.log("Error loading the hospitals.");
+  }
+  const aHospital = hospitalArray[0];
+  const aHospitalElement = document.getElementById(
+    "pHospital"
+  ) as HTMLParagraphElement;
+  aHospitalElement.textContent = aHospital.name;
+
+  // Close loading indicators
+  loadingIndicators.forEach((indicator) => {
+    (indicator as HTMLParagraphElement).style.display = "none";
+  });
 }
-function getDivWithIdFromHTML(path: string, id: string): Promise<HTMLElement | null> {
-    // Returning a Promise
-    return fetch(path)
-        .then(response => response.text())
-        .then(html => {
-            // Create a temporary container
-            const container = document.createElement('div');
-            container.innerHTML = html;
-
-            // Get the modal content from the container
-            const element = container.querySelector(id) as HTMLElement;
-            return element;
-        })
-        .catch(error => {
-            console.error('Error loading modal content:', error);
-            return null;
-        });
+function getDivWithIdFromHTML(
+  path: string,
+  id: string
+): Promise<HTMLElement | null> {
+  // Returning a Promise
+  return fetch(path)
+    .then((response) => response.text())
+    .then((html) => {
+      // Create a temporary container
+      const container = document.createElement("div");
+      container.innerHTML = html;
+
+      // Get the modal content from the container
+      const element = container.querySelector(id) as HTMLElement;
+      return element;
+    })
+    .catch((error) => {
+      console.error("Error loading modal content:", error);
+      return null;
+    });
 }
 
 export async function loadMemberModal() {
-    const modalContent = await getDivWithIdFromHTML('../projectPage/addMemberModal.html', '#addMemberModal');
+  const modalContent = await getDivWithIdFromHTML(
+    "../projectPage/addMemberModal.html",
+    "#addMemberModal"
+  );
 
-    if (modalContent) {
-        $('#container-fluid').append(modalContent);
-        ($(modalContent) as any).modal('show');
-    }
+  if (modalContent) {
+    $("#container-fluid").append(modalContent);
+    ($(modalContent) as any).modal("show");
+  }
 
-/*     const selectMemberContent = await getDivWithIdFromHTML('../initiateForbattringsarbete/initiateIdea.html', '#selectEmployees');
+  /*     const selectMemberContent = await getDivWithIdFromHTML('../initiateForbattringsarbete/initiateIdea.html', '#selectEmployees');
     if (selectMemberContent) {
         $('#modal-body').append(selectMemberContent);
     } */
-    const selectEmployeeChangeSection = document.querySelector('#selectEmployee') as HTMLButtonElement;
+  const selectEmployeeChangeSection = document.querySelector(
+    "#selectEmployee"
+  ) as HTMLButtonElement;
 
-    if (selectEmployeeChangeSection) {
-        selectEmployeeChangeSection.addEventListener('change', assignedEmployer);
-    } else {
-        console.error("Error: 'changebutton' not found");
-    }
+  if (selectEmployeeChangeSection) {
+    selectEmployeeChangeSection.addEventListener("change", assignedEmployer);
+  } else {
+    console.error("Error: 'changebutton' not found");
+  }
 
-    loadEmployees();
+  loadEmployees();
 }