UNPKG

analytica-frontend-lib

Version:

Repositório público dos componentes utilizados nas plataformas da Analytica Ensino

1 lines 1.82 kB
{"version":3,"sources":["../src/components/BreadcrumbMenu/useUrlParams.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport { useLocation } from 'react-router-dom';\n\n/**\n * Configuração para extração de parâmetros da URL\n */\nexport interface UrlParamsConfig {\n /** Mapa de nome do parâmetro para seu índice no path */\n [key: string]: number;\n}\n\n/**\n * Hook genérico para extrair parâmetros de uma URL baseado em índices\n *\n * @param config - Configuração com os índices dos parâmetros no path\n * @returns Objeto com os parâmetros extraídos\n *\n * @example\n * ```tsx\n * // URL: /desempenho/lista-temas/123/subtemas/456\n * // Path segments: ['desempenho', 'lista-temas', '123', 'subtemas', '456']\n * const params = useUrlParams({\n * subjectId: 2, // índice 2 = '123'\n * topicId: 4, // índice 4 = '456'\n * });\n *\n * console.log(params); // { subjectId: '123', topicId: '456' }\n * ```\n */\nexport const useUrlParams = <T extends UrlParamsConfig>(\n config: T\n): Record<keyof T, string | undefined> => {\n const location = useLocation();\n\n return useMemo(() => {\n const segments = location.pathname.split('/').filter(Boolean);\n const params: Record<string, string | undefined> = {};\n\n for (const [key, index] of Object.entries(config)) {\n params[key] = segments[index];\n }\n\n return params as Record<keyof T, string | undefined>;\n }, [location.pathname, config]);\n};\n"],"mappings":";AAAA,SAAS,eAAe;AACxB,SAAS,mBAAmB;AA4BrB,IAAM,eAAe,CAC1B,WACwC;AACxC,QAAM,WAAW,YAAY;AAE7B,SAAO,QAAQ,MAAM;AACnB,UAAM,WAAW,SAAS,SAAS,MAAM,GAAG,EAAE,OAAO,OAAO;AAC5D,UAAM,SAA6C,CAAC;AAEpD,eAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,MAAM,GAAG;AACjD,aAAO,GAAG,IAAI,SAAS,KAAK;AAAA,IAC9B;AAEA,WAAO;AAAA,EACT,GAAG,CAAC,SAAS,UAAU,MAAM,CAAC;AAChC;","names":[]}