import * as Accordion from '@radix-ui/react-accordion'
import Link from 'next/link'
import { useRouter } from 'next/router'
import { IconChevronLeft } from 'ui'
import * as NavItems from './NavigationMenu.constants'
import { find } from 'lodash'
import Image from 'next/image'
import { memo } from 'react'
import clientLibsCommonSections from '~/../../spec/common-client-libs-sections.json'
import RevVersionDropdown from '~/components/RefVersionDropdown'
import { useMenuActiveRefId } from '~/hooks/useMenuState'
const allFunctions = clientLibsCommonSections
const FunctionLink = ({
title,
id,
icon,
product,
library,
slug,
}: {
title: string
name?: string
id: string
icon?: string
product?: string
library: string
slug: string
}) => {
const router = useRouter()
// const { activeRefItem } = useNavigationMenuContext()
const activeAccordianItem = useMenuActiveRefId()
const active = activeAccordianItem === id
return (
{icon &&
}
{title}
)
}
const SideMenuTitle = ({ title }: { title: string }) => {
return (
{title}
)
}
const Divider = () => {
return
}
const NavigationMenuRefList = ({ currentLevel, setLevel, id, lib }) => {
const router = useRouter()
const allCurrentFunctions = allFunctions
// .map((fn: any) => {
// if (fn.items.flat().find((item) => item.libs.includes(lib))) return fn
// })
// .filter((item) => item)
// const introItems = Object.values(clientLibsCommonSections.sections.intro[lib].items)
const menu = NavItems[id]
const databaseFunctions = find(allFunctions, { title: 'Database' }).items
const filterIds = find(databaseFunctions, {
id: 'using-filters',
}).items.map((x) => x.id)
const modifierIds = find(databaseFunctions, {
id: 'using-modifiers',
}).items.map((x) => x.id)
// return (
// <>
// something
// >
// )
return (
{/* {process.env.NEXT_PUBLIC_EXPERIMENTAL_REF !== 'true' && ( */}
Back to Main Menu
{/* )} */}
{/* {process.env.NEXT_PUBLIC_EXPERIMENTAL_REF !== 'true' && ( */}
{menu.title}
{/* )} */}
{/* {introItems.map((item) => (
// @ts-ignore
))} */}
{allCurrentFunctions.map((fn: any) => {
// const toplevelItems = fn.items.filter((item) => !item.parent)
// toplevelItems.map((item) => - {item.title}
)
const RenderLink = (props) => {
const activeAccordianItem = useMenuActiveRefId()
let active = false
//console.log('render link id', props.id)
const isFilter = filterIds.includes(activeAccordianItem)
const isModifier = modifierIds.includes(activeAccordianItem)
if (
(isFilter && !isModifier && props.id === 'using-filters') ||
(activeAccordianItem === 'using-filters' &&
!isModifier &&
!isFilter &&
props.id === 'using-filters')
) {
active = true
} else if (
(isModifier && !isFilter && props.id === 'using-modifiers') ||
(activeAccordianItem === 'using-modifiers' &&
!isFilter &&
!isModifier &&
props.id === 'using-modifiers')
) {
active = true
} else {
active = false
}
return (
{props.items &&
props.items
.filter((item) => item.libs.includes(lib))
.map((item) => {
return
})}
)
}
// handle subtitles with subitems
if (!fn.id) {
return (
<>
{fn.items &&
fn.items
.filter((item) => item.libs.includes(lib))
.map((item) => )}
>
)
} else {
// handle normal links
return (
<>
{fn.items &&
fn.items
.filter((item) => item.libs.includes(lib))
.map((item) => )}
>
)
}
})}
{menu.extras && (
<>
{' '}
Resources
>
)}
{menu.extras?.map((x) => {
return (
)
})}
)
}
export default memo(NavigationMenuRefList)