{"version":3,"file":"Breadcrumb.cjs","sources":["../../../../../../packages/components/breadcrumb/src/Breadcrumb.tsx"],"sourcesContent":["import type { CustomSlotsType, VueNode } from '@antdv/types';\nimport type { Route } from './interface';\nimport type { BreadcrumbItemProps } from './props';\nimport { devWarning, flattenChildren, getPropsSlot } from '@antdv/utils';\nimport { cloneVNode, defineComponent } from 'vue';\nimport useConfigInject from '../../config-provider/src/hooks/useConfigInject';\nimport Menu from '../../menu';\nimport useStyle from '../style';\nimport BreadcrumbItem from './BreadcrumbItem';\nimport { breadcrumbProps } from './props';\n\nfunction getBreadcrumbName(route: Route, params: unknown) {\n  if (!route.breadcrumbName)\n    return null;\n\n  const paramsKeys = Object.keys(params).join('|');\n  const name = route.breadcrumbName.replace(\n    new RegExp(`:(${paramsKeys})`, 'g'),\n    (replacement, key) => params[key] || replacement,\n  );\n  return name;\n}\nfunction defaultItemRender(opt: {\n  route: Route\n  params: unknown\n  routes: Route[]\n  paths: string[]\n}): VueNode {\n  const { route, params, routes, paths } = opt;\n  const isLastItem = routes.indexOf(route) === routes.length - 1;\n  const name = getBreadcrumbName(route, params);\n  return isLastItem ? <span>{name}</span> : <a href={`#/${paths.join('/')}`}>{name}</a>;\n}\n\nexport default defineComponent({\n  compatConfig: { MODE: 3 },\n  name: 'ABreadcrumb',\n  inheritAttrs: false,\n  props: breadcrumbProps(),\n  slots: Object as CustomSlotsType<{\n    separator: any\n    itemRender: { route: Route, params: any, routes: Route[], paths: string[] }\n    default: any\n  }>,\n  setup(props, { slots, attrs }) {\n    const { prefixCls, direction } = useConfigInject('breadcrumb', props);\n    const [wrapSSR, hashId] = useStyle(prefixCls);\n    const getPath = (path: string, params: unknown) => {\n      path = (path || '').replace(/^\\//, '');\n      Object.keys(params).forEach((key) => {\n        path = path.replace(`:${key}`, params[key]);\n      });\n      return path;\n    };\n\n    const addChildPath = (paths: string[], childPath: string, params: unknown) => {\n      const originalPaths = [...paths];\n      const path = getPath(childPath || '', params);\n      if (path)\n        originalPaths.push(path);\n\n      return originalPaths;\n    };\n\n    const genForRoutes = ({\n      routes = [],\n      params = {},\n      separator,\n      itemRender = defaultItemRender,\n    }: any) => {\n      const paths = [];\n      return routes.map((route: Route) => {\n        const path = getPath(route.path, params);\n\n        if (path)\n          paths.push(path);\n\n        const tempPaths = [...paths];\n        // generated overlay by route.children\n        let overlay = null;\n        if (route.children && route.children.length) {\n          overlay = (\n            <Menu\n              items={route.children.map(child => ({\n                key: child.path || child.breadcrumbName,\n                label: itemRender({\n                  route: child,\n                  params,\n                  routes,\n                  paths: addChildPath(tempPaths, child.path, params),\n                }),\n              }))}\n            >\n            </Menu>\n          );\n        }\n        const itemProps: BreadcrumbItemProps = { separator };\n        if (overlay)\n          itemProps.overlay = overlay;\n\n        return (\n          <BreadcrumbItem {...itemProps} key={path || route.breadcrumbName}>\n            {itemRender({ route, params, routes, paths: tempPaths })}\n          </BreadcrumbItem>\n        );\n      });\n    };\n    return () => {\n      let crumbs: VueNode[];\n\n      const { routes, params = {} } = props;\n\n      const children = flattenChildren(getPropsSlot(slots, props));\n      const separator = getPropsSlot(slots, props, 'separator') ?? '/';\n\n      const itemRender = props.itemRender || slots.itemRender || defaultItemRender;\n      if (routes && routes.length > 0) {\n        // generated by route\n        crumbs = genForRoutes({\n          routes,\n          params,\n          separator,\n          itemRender,\n        });\n      } else if (children.length) {\n        crumbs = children.map((element, index) => {\n          devWarning(\n            typeof element.type === 'object'\n              && (element.type.__ANT_BREADCRUMB_ITEM || element.type.__ANT_BREADCRUMB_SEPARATOR),\n            'Breadcrumb',\n            'Only accepts Breadcrumb.Item and Breadcrumb.Separator as it\\'s children',\n          );\n          return cloneVNode(element, { separator, key: index });\n        });\n      }\n\n      const breadcrumbClassName = {\n        [prefixCls.value]: true,\n        [`${prefixCls.value}-rtl`]: direction.value === 'rtl',\n        [`${attrs.class}`]: !!attrs.class,\n        [hashId.value]: true,\n      };\n\n      return wrapSSR(\n        <nav {...attrs} class={breadcrumbClassName}>\n          <ol>{crumbs}</ol>\n        </nav>,\n      );\n    };\n  },\n});\n"],"names":["getBreadcrumbName","route","params","breadcrumbName","paramsKeys","Object","keys","join","name","replace","RegExp","replacement","key","defaultItemRender","opt","routes","paths","isLastItem","indexOf","length","_createVNode","defineComponent","compatConfig","MODE","inheritAttrs","props","breadcrumbProps","slots","setup","attrs","prefixCls","direction","useConfigInject","wrapSSR","hashId","useStyle","getPath","path","forEach","addChildPath","childPath","originalPaths","push","genForRoutes","separator","itemRender","map","tempPaths","overlay","children","Menu","child","label","itemProps","BreadcrumbItem","default","crumbs","flattenChildren","getPropsSlot","element","index","devWarning","type","__ANT_BREADCRUMB_ITEM","__ANT_BREADCRUMB_SEPARATOR","cloneVNode","breadcrumbClassName","value","class"],"mappings":"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"}