import { PHASE_1_COMPONENTS } from '../../router/adapters/backendMenuAdapter.js'
|
|
const RELEASED_COMPONENT_PATHS = new Set(Object.values(PHASE_1_COMPONENTS))
|
|
function isIframe(url) {
|
return url.startsWith('/outside/iframe/')
|
}
|
|
const isNavigableMenuItem = (menuItem) => {
|
if (!menuItem.path || !menuItem.path.trim()) {
|
return false
|
}
|
if (!menuItem.meta?.isHide) {
|
return true
|
}
|
return menuItem.meta?.isFullPage === true
|
}
|
const normalizePath = (path) => {
|
return path.startsWith('/') ? path : `/${path}`
|
}
|
|
const hasReleasedComponent = (menuItem) => {
|
if (!menuItem || typeof menuItem !== 'object') {
|
return false
|
}
|
const componentPath = typeof menuItem.component === 'string' ? menuItem.component.trim() : ''
|
return RELEASED_COMPONENT_PATHS.has(componentPath)
|
}
|
|
const getFirstMenuPath = (menuList) => {
|
if (!Array.isArray(menuList) || menuList.length === 0) {
|
return ''
|
}
|
for (const menuItem of menuList) {
|
if (!isNavigableMenuItem(menuItem)) {
|
continue
|
}
|
if (menuItem.children?.length) {
|
const childPath = getFirstMenuPath(menuItem.children)
|
if (childPath) {
|
return childPath
|
}
|
}
|
if (hasReleasedComponent(menuItem)) {
|
return normalizePath(menuItem.path)
|
}
|
}
|
return ''
|
}
|
export { getFirstMenuPath, isIframe, isNavigableMenuItem }
|