{"version":3,"file":"useModalQueryParams.mjs","sources":["../../../admin/src/hooks/useModalQueryParams.ts"],"sourcesContent":["import * as React from 'react';\n\nimport { stringify } from 'qs';\n\nimport { useConfig } from './useConfig';\nimport { useTracking } from './useTracking';\n\nimport type { Query, FilterCondition } from '../../../shared/contracts/files';\n\nexport const useModalQueryParams = (initialState?: Partial<Query>) => {\n  const { trackUsage } = useTracking();\n  const {\n    config: { data: config },\n  } = useConfig();\n\n  const [queryObject, setQueryObject] = React.useState<Query>({\n    page: 1,\n    sort: 'updatedAt:DESC',\n    pageSize: 10,\n    filters: {\n      $and: [],\n    },\n    ...initialState,\n  });\n\n  React.useEffect(() => {\n    if (config && 'sort' in config && 'pageSize' in config) {\n      setQueryObject((prevQuery) => ({\n        ...prevQuery,\n        sort: config.sort,\n        pageSize: config.pageSize,\n      }));\n    }\n  }, [config]);\n\n  const handleChangeFilters = (nextFilters: FilterCondition<string>[]) => {\n    if (nextFilters) {\n      trackUsage('didFilterMediaLibraryElements', {\n        location: 'content-manager',\n        filter: Object.keys(nextFilters[nextFilters.length - 1])[0],\n      });\n      setQueryObject((prev) => ({ ...prev, page: 1, filters: { $and: nextFilters } }));\n    }\n  };\n\n  const handleChangePageSize = (pageSize: Query['pageSize']) => {\n    setQueryObject((prev) => ({\n      ...prev,\n      pageSize: typeof pageSize === 'string' ? parseInt(pageSize, 10) : pageSize,\n      page: 1,\n    }));\n  };\n\n  const handeChangePage = (page: Query['page']) => {\n    setQueryObject((prev) => ({ ...prev, page }));\n  };\n\n  const handleChangeSort = (sort: Query['sort']) => {\n    if (sort) {\n      trackUsage('didSortMediaLibraryElements', {\n        location: 'content-manager',\n        sort,\n      });\n      setQueryObject((prev) => ({ ...prev, sort }));\n    }\n  };\n\n  const handleChangeSearch = (_q: Query['_q'] | null) => {\n    if (_q) {\n      setQueryObject((prev) => ({ ...prev, _q, page: 1 }));\n    } else {\n      const newState: Query = { page: 1 };\n\n      Object.keys(queryObject).forEach((key) => {\n        if (!['page', '_q'].includes(key)) {\n          (newState as Record<string, string | number | undefined>)[key] = (\n            queryObject as Record<string, string | number | undefined>\n          )[key];\n        }\n      });\n\n      setQueryObject(newState);\n    }\n  };\n\n  const handleChangeFolder = (folder: Query['folder'], folderPath: Query['folderPath']) => {\n    setQueryObject((prev) => ({ ...prev, folder: folder ?? null, folderPath }));\n  };\n\n  return [\n    { queryObject, rawQuery: stringify(queryObject, { encode: false }) },\n    {\n      onChangeFilters: handleChangeFilters,\n      onChangeFolder: handleChangeFolder,\n      onChangePage: handeChangePage,\n      onChangePageSize: handleChangePageSize,\n      onChangeSort: handleChangeSort,\n      onChangeSearch: handleChangeSearch,\n    },\n  ];\n};\n"],"names":["useModalQueryParams","initialState","trackUsage","useTracking","config","data","useConfig","queryObject","setQueryObject","React","useState","page","sort","pageSize","filters","$and","useEffect","prevQuery","handleChangeFilters","nextFilters","location","filter","Object","keys","length","prev","handleChangePageSize","parseInt","handeChangePage","handleChangeSort","handleChangeSearch","_q","newState","forEach","key","includes","handleChangeFolder","folder","folderPath","rawQuery","stringify","encode","onChangeFilters","onChangeFolder","onChangePage","onChangePageSize","onChangeSort","onChangeSearch"],"mappings":"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"}