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 apiCommonSections from '~/../../spec/common-client-libs-sections.json' import RevVersionDropdown from '~/components/RefVersionDropdown' import { useMenuActiveRefId } from '~/hooks/useMenuState' import { RefIdOptions, RefKeyOptions } from './NavigationMenu' const FunctionLink = ({ title, id, icon, library, slug, }: { title: string name?: string id: string icon?: string product?: string library: string slug: string }) => { const router = useRouter() const activeAccordianItem = useMenuActiveRefId() const active = activeAccordianItem === id return (
  • {icon && } {title}
  • ) } const SideMenuTitle = ({ title }: { title: string }) => { return ( {title} ) } const Divider = () => { return
    } interface INavigationMenuRefList { currentLevel: string id: RefIdOptions lib: RefKeyOptions commonSections: any[] // to do type up } const NavigationMenuRefList: React.FC = ({ currentLevel, id, lib, commonSections, }) => { const router = useRouter() let sections = commonSections // console.log('sections', sections) if (!sections) console.error('no common sections imported') const menu = NavItems[id] const databaseFunctions = find(sections, { title: 'Database' }) ? find(sections, { title: 'Database' }).items : [] const filterIds = databaseFunctions.length > 0 ? find(databaseFunctions, { id: 'using-filters', }) && find(databaseFunctions, { id: 'using-filters', }).items.map((x) => x.id) : [] const modifierIds = databaseFunctions.length > 0 ? find(databaseFunctions, { id: 'using-modifiers', }) && find(databaseFunctions, { id: 'using-modifiers', }).items.map((x) => x.id) : [] // console.log(filterIds) // console.log(modifierIds) return (
    Back to Main Menu
    {id} {menu.title}
    {/* )} */}
      {sections.map((fn: any) => { const RenderLink = (props) => { const activeAccordianItem = useMenuActiveRefId() let active = false const isFilter = filterIds && filterIds.length > 0 && filterIds.includes(activeAccordianItem) const isModifier = modifierIds && modifierIds.length > 0 && 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.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 (
  • {x.icon && ( {x.icon} )} {x.name}
  • ) })} */}
    ) } export default memo(NavigationMenuRefList)