1
0
mirror of https://gitlab.com/bramw/baserow.git synced 2024-11-25 00:46:46 +00:00
bramw_baserow/web-frontend/modules/builder/utils/routing.js
2023-05-11 15:27:17 +00:00

24 lines
754 B
JavaScript

import pathToRegexp from 'path-to-regexp'
export const resolveApplicationRoute = (pages, fullPath) => {
let found
for (const page of pages) {
const keys = [] // Keys are populated by the next call
const re = pathToRegexp(page.path, keys)
const match = re.exec(fullPath)
if (match) {
// The page path has matched we can stop here our search and return the result
const [path, ...paramValues] = match
// TODO the parameter resolution here is really simple. Should be enough for a
// long time but we can do better here.
const params = Object.fromEntries(
paramValues.map((paramValue, index) => [keys[index].name, paramValue])
)
return [page, path, params]
}
}
return found
}