function mergeState()

in helper/src/components/portalnav.js [296:332]


  function mergeState(tab, field, value, previewLink) {
    let updatevals
    let newFields = new Map()
    if(lastAIUpdated.tab !== tab || lastAIUpdated.field !== field){
      //console.log("AI:- Field Selected " + tab + "-" + field)
      appInsights.trackEvent({name: "FieldSelected." + tab + "." + field});
      setLastAIUpdated({tab: tab, field: field})
    }

    if (typeof field === "string") {
      updatevals = { [field]: value }
      newFields.set(`${tab}.${field}`, value)
    } else if (typeof field === "function") {
      updatevals = field(tabValues[tab])
      for (let nfield of Object.keys(updatevals)) {
        newFields.set(`${tab}.${nfield}`, updatevals[nfield])
      }
    }

    setTabValues((p) => {
      return {
        ...p,
        [tab]: {
          ...p[tab],
          ...updatevals
        }
      }
    })

    setUrlParams((currentUrlParams) => {
      // remove old cards
      for (const [key, value] of newFields.entries()) currentUrlParams.set(key, value)
      window.history.replaceState(null, null, "?"+currentUrlParams.toString())
      return currentUrlParams
    })

  }