{"version":3,"file":"useSearchFilterParamsMap.mjs","names":["useCallback","UdpKeywordEnums","FilterElementParamType","useUser","i18n","ConfigService","useSearchFilterParamsMap","user","getKeywordValue","keyword","keywordValue","Udp_Tenant_Id","currentTenantId","Udp_Product_Id","config","UNITY_PRODUCT_ID","Udp_Language_Id","language","isFunction","functionToCheck","toString","call","getFunctionValue","functionIndex","functionList","functionToExecute","getParamsMap","params","paramsMap","forEach","param","type","String","name","value","Keyword","Function","getQueryFilterElements","apiMethodInstance","filterElements","bodyStr","body","JSON","parse","filter","searchValue","startsWith","key","replace","push","console","warn","getQueryFilterGroups","filterGroups","getQuerySearchOperator","operator","logicalSearchOperator"],"sources":["../../src/hooks/useSearchFilterParamsMap.js"],"sourcesContent":["import { useCallback } from 'react';\nimport { UdpKeywordEnums } from '../enums/unitySystemEnums';\nimport { FilterElementParamType } from '../enums/searchEnums';\nimport { useUser } from '../utilities/auth/useUser';\nimport i18n from 'i18next';\nimport { ConfigService } from '../configService';\n\nexport const useSearchFilterParamsMap = () => {\n  const user = useUser();\n\n  const getKeywordValue = useCallback(\n    (keyword) => {\n      let keywordValue = '';\n      switch (keyword) {\n        case UdpKeywordEnums.Udp_Tenant_Id:\n          keywordValue = user?.currentTenantId || '';\n          break;\n        case UdpKeywordEnums.Udp_Product_Id:\n          keywordValue = ConfigService.config.UNITY_PRODUCT_ID || '';\n          break;\n        case UdpKeywordEnums.Udp_Language_Id:\n          keywordValue = i18n.language || '';\n          break;\n        default:\n          break;\n      }\n      return keywordValue;\n    },\n    [user]\n  );\n\n  const isFunction = (functionToCheck) => {\n    return (\n      functionToCheck &&\n      {}.toString.call(functionToCheck) === '[object Function]'\n    );\n  };\n\n  const getFunctionValue = useCallback((functionIndex, functionList) => {\n    const functionToExecute = functionList[functionIndex];\n    if (isFunction(functionToExecute)) {\n      return functionToExecute() || '';\n    }\n    return '';\n  }, []);\n\n  /**\n   * Helper function that creates a map that will be used to determine\n   * the filter elements for a data browser query configuration using params.\n   * as a searchValue\n   *\n   * @param {Array<Object>} params - list of param objects to determine the map, example:\n   * [\n        {\n          name: 'tenantName',\n          value: 'ABC Company',\n          type: 'string'\n        },\n        {\n          name: 'tenantId',\n          value: 'UDP_TenantId_ID',\n          type: 'keyword'\n        },\n        {\n          name: 'productId',\n          value: 0,\n          type: 'function'\n        }\n      ]\n   * @param {Array<function>} functionList - list of anonymous functions for the function param to use\n   */\n  const getParamsMap = useCallback(\n    (params = [], functionList = []) => {\n      const paramsMap = {};\n      params.forEach((param) => {\n        switch (param.type) {\n          case FilterElementParamType.String:\n            if (param.name) {\n              paramsMap[param.name] = param.value;\n            }\n            break;\n          case FilterElementParamType.Keyword:\n            if (param.name) {\n              paramsMap[param.name] = getKeywordValue(param.value);\n            }\n            break;\n          case FilterElementParamType.Function:\n            if (param.name) {\n              paramsMap[param.name] = getFunctionValue(\n                param.value,\n                functionList\n              );\n            }\n            break;\n          default:\n            break;\n        }\n      });\n      return paramsMap;\n    },\n    [getFunctionValue, getKeywordValue]\n  );\n\n  const getQueryFilterElements = useCallback(\n    (apiMethodInstance, params = []) => {\n      if (!apiMethodInstance) return [];\n      let filterElements = [];\n      try {\n        const bodyStr = apiMethodInstance.body;\n        const body = JSON.parse(bodyStr);\n        // Parameters for getParamsMap needs to be an array of params and an array of anonymous functions\n        // Example is at the top called FILTER_PARAMS and FUNCTION_LIST\n        const paramsMap = getParamsMap(params);\n        // Checks for any filter elements that have been configured with params. and\n        // will use paramsMap to grab filter element\n        body?.filterElements?.forEach((filter) => {\n          if (filter.searchValue.startsWith('params.')) {\n            const key = filter.searchValue.replace('params.', '');\n            if (paramsMap[key]) {\n              filter.searchValue = paramsMap[key];\n              filterElements.push(filter);\n            }\n          } else {\n            filterElements.push(filter);\n          }\n        });\n      } catch {\n        console.warn('Error parsing apiMethodInstance body');\n      }\n      return filterElements;\n    },\n    [getParamsMap]\n  );\n\n  const getQueryFilterGroups = useCallback(\n    (apiMethodInstance, params = []) => {\n      if (!apiMethodInstance) return [];\n      let filterGroups = [];\n      try {\n        const bodyStr = apiMethodInstance.body;\n        const body = JSON.parse(bodyStr);\n        filterGroups = [...body.filterGroups]\n      } catch {\n        console.warn('Error parsing apiMethodInstance body');\n      }\n      return filterGroups;\n    },\n    []\n  );\n\n  const getQuerySearchOperator = useCallback(\n    (apiMethodInstance, params = []) => {\n      if (!apiMethodInstance) return [];\n      let operator = 0;\n      try {\n        const bodyStr = apiMethodInstance.body;\n        const body = JSON.parse(bodyStr);\n        operator = body.logicalSearchOperator\n      } catch {\n        console.warn('Error parsing apiMethodInstance body');\n      }\n      return operator;\n    },\n    []\n  );\n\n  return { getParamsMap, getQueryFilterElements, getQueryFilterGroups, getQuerySearchOperator };\n};\n"],"mappings":"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"}