{"version":3,"file":"useUdpGridFilterModel.mjs","names":["useLocation","useMemo","UdpSearchEnums","useUdpGridFilterModel","$","_c","search","t0","URLSearchParams","searchParams","constructedFilterModel","forEach","value","key","startsWith","UdpQueryParamPrefix","paramBody","replace","lastHyphenIndex","lastIndexOf","field","substring","rawOp","operator","_temp","toLowerCase","filterType","values","split","filterKey","parsedValue","parseFilterValue","agGridOperator","condition","type","conditions","push","filterModel","isDate","isNaN","Date","parse","includes","parseFloat","Number","_","char","toUpperCase"],"sources":["../../src/hooks/useUdpGridFilterModel.js"],"sourcesContent":["import { useLocation } from 'react-router-dom';\nimport { useMemo } from 'react';\nimport { UdpSearchEnums } from '../enums/unitySystemEnums';\n\nexport const useUdpGridFilterModel = () => {\n  const { search } = useLocation();\n  const searchParams = useMemo(() => new URLSearchParams(search), [search]);\n\n  const filterModel = useMemo(() => {\n    const constructedFilterModel = {};\n\n    searchParams.forEach((value, key) => {\n      if (key.startsWith(`${UdpSearchEnums.UdpQueryParamPrefix}-`)) {\n        const paramBody = key.replace(\n          `${UdpSearchEnums.UdpQueryParamPrefix}-`,\n          ''\n        );\n        const lastHyphenIndex = paramBody.lastIndexOf('-');\n\n        if (lastHyphenIndex !== -1) {\n          const field = paramBody.substring(0, lastHyphenIndex);\n          const rawOp = paramBody.substring(lastHyphenIndex + 1);\n          const operator = rawOp.replace(/_([a-z])/g, (_, char) =>\n            char.toUpperCase()\n          );\n\n          if (operator.toLowerCase() === 'in') {\n            constructedFilterModel[field] = {\n              filterType: 'set',\n              values: value.split(',')\n            };\n          } else {\n            // Determine Filter Type & Parse Value\n            const { filterType, filterKey, parsedValue } =\n              parseFilterValue(value);\n\n            const agGridOperator =\n              operator === 'isNull'\n                ? value === 'true'\n                  ? 'blank'\n                  : 'notBlank'\n                : operator;\n\n            const condition = {\n              filterType,\n              type: agGridOperator,\n              ...(filterKey !== null && { [filterKey]: parsedValue })\n            };\n\n            if (constructedFilterModel[field]) {\n              constructedFilterModel[field].conditions.push(condition);\n            } else {\n              constructedFilterModel[field] = {\n                filterType: filterType,\n                operator: 'OR',\n                conditions: [condition]\n              };\n            }\n          }\n        }\n      }\n    });\n    return constructedFilterModel;\n  }, [searchParams]);\n\n  return filterModel;\n};\n\nconst parseFilterValue = (value) => {\n  if (value === 'true' || value === 'false') {\n    return { filterType: 'text', filterKey: null, parsedValue: null };\n  }\n\n  const isDate =\n    !isNaN(Date.parse(value)) && (value.includes('-') || value.includes('/'));\n\n  if (isDate) {\n    return {\n      filterType: 'date',\n      filterKey: 'dateFrom',\n      parsedValue: value\n    };\n  }\n\n  if (!isNaN(value) && !isNaN(parseFloat(value))) {\n    return {\n      filterType: 'number',\n      filterKey: 'filter',\n      parsedValue: Number(value)\n    };\n  }\n\n  return {\n    filterType: 'text',\n    filterKey: 'filter',\n    parsedValue: value\n  };\n};\n"],"mappings":";;;;;AAIA,MAAaG,8BAAwB;CAAA,MAAAC,IAAAC,EAAA,EAAA;CACnC,MAAA,EAAAC,WAAmBN,aAAa;CAAC,IAAAO;AAAA,KAAAH,EAAA,OAAAE,QAAA;AACEC,OAAA,IAAIC,gBAAgBF,OAAO;AAAAF,IAAA,KAAAE;AAAAF,IAAA,KAAAG;OAAAA,MAAAH,EAAA;CAA9D,MAAAK,eAAmCF;CAAuC,IAAAG;AAAA,KAAAN,EAAA,OAAAK,cAAA;AAGxEC,2BAA+B,EAAE;AAEjCD,eAAYE,SAASC,OAAAC,QAAA;AACnB,OAAIA,IAAGC,WAAY,GAAGZ,eAAca,oBAAoB,GAAI,EAAA;IAC1D,MAAAC,YAAkBH,IAAGI,QACnB,GAAGf,eAAca,oBAAoB,IACrC,GACD;IACD,MAAAG,kBAAwBF,UAASG,YAAa,IAAI;AAElD,QAAID,oBAAoB,IAAE;KACxB,MAAAE,QAAcJ,UAASK,UAAW,GAAGH,gBAAgB;KAErD,MAAAK,WADcP,UAASK,UAAWH,kBAAkB,EAAE,CAChCD,QAAS,aAAaO,MAE3C;AAED,SAAID,SAAQE,aAAc,KAAK,KAC7Bf,wBAAuBU,SAAS;MAAAM,YAClB;MAAKC,QACTf,MAAKgB,MAAO,IAAG;MAFI;UAAA;MAM7B,MAAA,EAAAF,YAAAG,WAAAC,gBACEC,iBAAiBnB,MAAM;MASzB,MAAAqB,YAAkB;OAAAP;OAAAQ,MANhBX,aAAa,WACTX,UAAU,SAAV,UAAA,aADJW;OAQoB,GAChBM,cAAc,QAAd,GAAyBA,YAAYC,aAAa;OACvD;AAED,UAAIpB,uBAAuBU,OACzBV,wBAAuBU,OAAMe,WAAWC,KAAMH,UAAU;UAExDvB,wBAAuBU,SAAS;OAAAM;OAAAH,UAEpB;OAAIY,YACF,CAACF,UAAS;OAHK;;;;IASrC;AAAA7B,IAAA,KAAAK;AAAAL,IAAA,KAAAM;OAAAA,0BAAAN,EAAA;AAEe,QADjBM;;AAMJ,MAAMqB,oBAAoBnB,UAAU;AAClC,KAAIA,UAAU,UAAUA,UAAU,QAChC,QAAO;EAAEc,YAAY;EAAQG,WAAW;EAAMC,aAAa;EAAM;AAMnE,KAFE,CAACS,MAAMC,KAAKC,MAAM7B,MAAM,CAAC,KAAKA,MAAM8B,SAAS,IAAI,IAAI9B,MAAM8B,SAAS,IAAI,EAGxE,QAAO;EACLhB,YAAY;EACZG,WAAW;EACXC,aAAalB;EACd;AAGH,KAAI,CAAC2B,MAAM3B,MAAM,IAAI,CAAC2B,MAAMI,WAAW/B,MAAM,CAAC,CAC5C,QAAO;EACLc,YAAY;EACZG,WAAW;EACXC,aAAac,OAAOhC,MAAK;EAC1B;AAGH,QAAO;EACLc,YAAY;EACZG,WAAW;EACXC,aAAalB;EACd;;AA5FkC,SAAAY,MAAAqB,GAAAC,MAAA;AAAA,QAmBzBA,KAAIC,aAAc"}