{"version":3,"file":"useFolderNavigation.mjs","sources":["../../../../../../admin/src/future/pages/Assets/hooks/useFolderNavigation.ts"],"sourcesContent":["import { useCallback, useEffect } from 'react';\n\nimport { useQueryParams } from '@strapi/admin/strapi-admin';\n\nimport type { Folder } from '../../../../../../shared/contracts/folders';\n\nconst parseFolderIdFromQuery = (folder: string | undefined): number | null => {\n if (!folder) {\n return null;\n }\n\n const id = Number(folder);\n\n return Number.isFinite(id) ? id : null;\n};\n\nexport const useFolderNavigation = () => {\n const [{ query }, setQuery] = useQueryParams<{ folder?: string }>();\n\n const currentFolderId = parseFolderIdFromQuery(query?.folder);\n\n const navigateToFolder = (folder: Folder) => {\n setQuery({ folder: String(folder.id) });\n };\n\n /**\n * Move to the Media Library root by removing the `folder` query param.\n * `setQuery(_, 'remove')` deletes the keys present on the first argument\n * (value is ignored), so any other query state (filters, pagination, etc.)\n * is preserved.\n */\n const navigateToRoot = useCallback(() => {\n setQuery({ folder: '' }, 'remove');\n }, [setQuery]);\n\n // Malformed ?folder= values (e.g. abc) parse as null; strip the param from the URL.\n // Deleted/missing folders (404) are handled in AssetsPage — that needs a fetch.\n useEffect(() => {\n if (query?.folder && currentFolderId === null) {\n navigateToRoot();\n }\n }, [query?.folder, currentFolderId, navigateToRoot]);\n\n /**\n * Convenience for the FolderTree sidebar: a single entry point that handles\n * both \"go home\" and \"go to folder X\" without forcing the caller to know\n * whether to call navigateToFolder or navigateToRoot.\n */\n const navigateToFolderId = (folderId: number | null) => {\n if (folderId == null) {\n navigateToRoot();\n } else {\n setQuery({ folder: String(folderId) });\n }\n };\n\n return {\n currentFolderId,\n navigateToFolder,\n navigateToRoot,\n navigateToFolderId,\n };\n};\n"],"names":["parseFolderIdFromQuery","folder","id","Number","isFinite","useFolderNavigation","query","setQuery","useQueryParams","currentFolderId","navigateToFolder","String","navigateToRoot","useCallback","useEffect","navigateToFolderId","folderId"],"mappings":";;;AAMA,MAAMA,yBAAyB,CAACC,MAAAA,GAAAA;AAC9B,IAAA,IAAI,CAACA,MAAAA,EAAQ;QACX,OAAO,IAAA;AACT,IAAA;AAEA,IAAA,MAAMC,KAAKC,MAAAA,CAAOF,MAAAA,CAAAA;AAElB,IAAA,OAAOE,MAAAA,CAAOC,QAAQ,CAACF,EAAAA,CAAAA,GAAMA,EAAAA,GAAK,IAAA;AACpC,CAAA;MAEaG,mBAAAA,GAAsB,IAAA;AACjC,IAAA,MAAM,CAAC,EAAEC,KAAK,EAAE,EAAEC,SAAS,GAAGC,cAAAA,EAAAA;IAE9B,MAAMC,eAAAA,GAAkBT,uBAAuBM,KAAAA,EAAOL,MAAAA,CAAAA;AAEtD,IAAA,MAAMS,mBAAmB,CAACT,MAAAA,GAAAA;QACxBM,QAAAA,CAAS;YAAEN,MAAAA,EAAQU,MAAAA,CAAOV,OAAOC,EAAE;AAAE,SAAA,CAAA;AACvC,IAAA,CAAA;AAEA;;;;;MAMA,MAAMU,iBAAiBC,WAAAA,CAAY,IAAA;QACjCN,QAAAA,CAAS;YAAEN,MAAAA,EAAQ;SAAG,EAAG,QAAA,CAAA;IAC3B,CAAA,EAAG;AAACM,QAAAA;AAAS,KAAA,CAAA;;;IAIbO,SAAAA,CAAU,IAAA;QACR,IAAIR,KAAAA,EAAOL,MAAAA,IAAUQ,eAAAA,KAAoB,IAAA,EAAM;AAC7CG,YAAAA,cAAAA,EAAAA;AACF,QAAA;IACF,CAAA,EAAG;QAACN,KAAAA,EAAOL,MAAAA;AAAQQ,QAAAA,eAAAA;AAAiBG,QAAAA;AAAe,KAAA,CAAA;AAEnD;;;;MAKA,MAAMG,qBAAqB,CAACC,QAAAA,GAAAA;AAC1B,QAAA,IAAIA,YAAY,IAAA,EAAM;AACpBJ,YAAAA,cAAAA,EAAAA;QACF,CAAA,MAAO;YACLL,QAAAA,CAAS;AAAEN,gBAAAA,MAAAA,EAAQU,MAAAA,CAAOK,QAAAA;AAAU,aAAA,CAAA;AACtC,QAAA;AACF,IAAA,CAAA;IAEA,OAAO;AACLP,QAAAA,eAAAA;AACAC,QAAAA,gBAAAA;AACAE,QAAAA,cAAAA;AACAG,QAAAA;AACF,KAAA;AACF;;;;"}