{"version":3,"sources":["../src/breadcrumb.tsx"],"sourcesContent":["import type {\n  CSSUIObject,\n  CSSUIProps,\n  HTMLUIProps,\n  ThemeProps,\n  Token,\n} from \"@yamada-ui/core\"\nimport type { IconProps } from \"@yamada-ui/icon\"\nimport type { ReactElement, ReactNode } from \"react\"\nimport {\n  forwardRef,\n  omitThemeProps,\n  ui,\n  useComponentMultiStyle,\n} from \"@yamada-ui/core\"\nimport { Icon } from \"@yamada-ui/icon\"\nimport { useValue } from \"@yamada-ui/use-value\"\nimport {\n  createContext,\n  cx,\n  getValidChildren,\n  isNumber,\n  runIfFunc,\n} from \"@yamada-ui/utils\"\nimport { cloneElement, Fragment, useCallback, useMemo } from \"react\"\n\ninterface BreadcrumbContext {\n  styles: { [key: string]: CSSUIObject | undefined }\n  separatorProps?: BreadcrumbSeparatorProps\n}\n\nconst [BreadcrumbProvider, useBreadcrumb] = createContext<BreadcrumbContext>({\n  name: \"BreadcrumbContext\",\n  errorMessage: `useBreadcrumb returned is 'undefined'. Seems you forgot to wrap the components in \"<Breadcrumb />\" `,\n})\n\nexport interface BreadcrumbGenerateItem extends BreadcrumbLinkProps {\n  name?: ReactNode\n  ellipsisPage?: boolean\n  /**\n   *\n   * @deprecated Use `ellipsisPage` instead.\n   */\n  isEllipsisPage?: boolean\n  containerProps?: Omit<BreadcrumbItemProps, \"isLastChild\" | \"lastChild\">\n}\n\ninterface BreadcrumbOptions {\n  /**\n   * The icon to be used in the ellipsis.\n   */\n  ellipsis?:\n    | ((props: { items: BreadcrumbGenerateItem[] }) => ReactNode)\n    | ReactNode\n  /**\n   * Number of elements visible on the end(right) edges.\n   */\n  endBoundaries?: Token<number>\n  /**\n   * The left and right margin applied to the separator.\n   *\n   * @default '2'\n   */\n  gap?: CSSUIProps[\"mx\"]\n  /**\n   * If provided, generate breadcrumb items based on items.\n   */\n  items?: BreadcrumbGenerateItem[]\n  /**\n   * The visual separator between each breadcrumb item.\n   *\n   * @default '/'\n   */\n  separator?: ReactElement | string\n  /**\n   * Number of elements visible on the start(left) edges.\n   */\n  startBoundaries?: Token<number>\n  /**\n   * Props for ol element.\n   */\n  listProps?: HTMLUIProps<\"ol\">\n  /**\n   * Props for separator element.\n   */\n  separatorProps?: BreadcrumbSeparatorProps\n}\n\nexport interface BreadcrumbProps\n  extends Omit<HTMLUIProps<\"nav\">, \"gap\">,\n    ThemeProps<\"Breadcrumb\">,\n    BreadcrumbOptions {}\n\n/**\n * `Breadcrumb` is a component that helps users understand the hierarchy of a website.\n *\n * @see Docs https://yamada-ui.com/components/navigation/breadcrumb\n */\nexport const Breadcrumb = forwardRef<BreadcrumbProps, \"nav\">((props, ref) => {\n  const [styles, mergedProps] = useComponentMultiStyle(\"Breadcrumb\", props)\n\n  const {\n    className,\n    children,\n    ellipsis,\n    endBoundaries: _endBoundaries,\n    gap = \"fallback(2, 0.5rem)\",\n    items = [],\n    separator = \"/\",\n    startBoundaries: _startBoundaries,\n    listProps,\n    separatorProps,\n    ...rest\n  } = omitThemeProps(mergedProps)\n  let startBoundaries = useValue(_startBoundaries)\n  let endBoundaries = useValue(_endBoundaries)\n\n  if (startBoundaries === 0) startBoundaries = 1\n  if (endBoundaries === 0) endBoundaries = 1\n\n  if (startBoundaries) endBoundaries ??= 1\n  if (endBoundaries) startBoundaries ??= 1\n\n  const hasBoundaries = isNumber(startBoundaries) && isNumber(endBoundaries)\n  const exceed =\n    hasBoundaries && startBoundaries! + endBoundaries! < items.length\n\n  const css: CSSUIObject = {\n    alignItems: \"center\",\n    display: \"flex\",\n    ...styles.container,\n  }\n\n  const validChildren = getValidChildren(children)\n  const hasChildren = validChildren.length\n\n  const customEllipsis = useCallback(\n    (providedItems?: BreadcrumbGenerateItem[]) => {\n      if (!ellipsis) return null\n\n      const resolvedItems =\n        providedItems ??\n        items.slice(startBoundaries!, items.length - endBoundaries!)\n\n      return runIfFunc(ellipsis, { items: resolvedItems })\n    },\n    [ellipsis, endBoundaries, items, startBoundaries],\n  )\n\n  const cloneChildren = useMemo(() => {\n    if (hasChildren) {\n      return validChildren.map((child, index) =>\n        cloneElement(child, {\n          gap,\n          lastChild: validChildren.length === index + 1,\n          separator,\n        }),\n      )\n    } else {\n      let hiddenEllipsis: BreadcrumbGenerateItem[] = []\n\n      return items.map((item, index) => {\n        const {\n          name,\n          isCurrentPage,\n          currentPage = isCurrentPage,\n          isEllipsisPage,\n          ellipsisPage = isEllipsisPage,\n          containerProps,\n          ...rest\n        } = item\n        const lastChild = items.length === index + 1\n        const props: BreadcrumbItemProps = {\n          currentPage,\n          gap,\n          separator,\n          ...containerProps,\n        }\n\n        if (!hasBoundaries && ellipsisPage) {\n          hiddenEllipsis.push(item)\n\n          return lastChild ? (\n            <BreadcrumbItem key={index} {...props} lastChild>\n              {customEllipsis([item]) ?? <BreadcrumbEllipsis />}\n            </BreadcrumbItem>\n          ) : null\n        }\n\n        if (hasBoundaries && exceed) {\n          const lastIndex = items.length - index - 1\n\n          if (startBoundaries! <= index && endBoundaries! <= lastIndex) {\n            if (startBoundaries === index) {\n              return (\n                <BreadcrumbItem key={index} {...props}>\n                  {customEllipsis() ?? <BreadcrumbEllipsis />}\n                </BreadcrumbItem>\n              )\n            } else {\n              return null\n            }\n          }\n        }\n\n        if (hiddenEllipsis.length) {\n          const resolvedEllipsis = customEllipsis(hiddenEllipsis) ?? (\n            <BreadcrumbEllipsis />\n          )\n\n          hiddenEllipsis = []\n\n          return (\n            <Fragment key={index}>\n              <BreadcrumbItem {...props}>{resolvedEllipsis}</BreadcrumbItem>\n\n              <BreadcrumbItem {...props} lastChild={lastChild}>\n                <BreadcrumbLink {...rest}>{name}</BreadcrumbLink>\n              </BreadcrumbItem>\n            </Fragment>\n          )\n        } else {\n          return (\n            <BreadcrumbItem key={index} {...props} lastChild={lastChild}>\n              <BreadcrumbLink {...rest}>{name}</BreadcrumbLink>\n            </BreadcrumbItem>\n          )\n        }\n      })\n    }\n  }, [\n    hasChildren,\n    validChildren,\n    separator,\n    gap,\n    items,\n    hasBoundaries,\n    exceed,\n    startBoundaries,\n    endBoundaries,\n    customEllipsis,\n  ])\n\n  return (\n    <BreadcrumbProvider value={{ styles, separatorProps }}>\n      <ui.nav\n        ref={ref}\n        className={cx(\"ui-breadcrumb\", className)}\n        aria-label=\"Breadcrumb\"\n        __css={styles.container}\n        {...rest}\n      >\n        <ui.ol className=\"ui-breadcrumb__list\" {...listProps} __css={css}>\n          {cloneChildren}\n        </ui.ol>\n      </ui.nav>\n    </BreadcrumbProvider>\n  )\n})\n\nBreadcrumb.displayName = \"Breadcrumb\"\nBreadcrumb.__ui__ = \"Breadcrumb\"\n\ninterface BreadcrumbItemOptions\n  extends Pick<BreadcrumbProps, \"gap\" | \"separator\" | \"separatorProps\"> {\n  /**\n   * If `true`, change to span element.\n   *\n   * @default false\n   */\n  currentPage?: boolean\n  /**\n   * If `true`, change to span element.\n   *\n   * @default false\n   *\n   * @deprecated Use `currentPage` instead.\n   */\n  isCurrentPage?: boolean\n  /**\n   * If `true`, not show separator.\n   *\n   * @default false\n   *\n   * @deprecated Use `lastChild` instead.\n   */\n  isLastChild?: boolean\n  /**\n   * If `true`, not show separator.\n   *\n   * @default false\n   */\n  lastChild?: boolean\n}\n\nexport interface BreadcrumbItemProps\n  extends Omit<HTMLUIProps<\"li\">, \"gap\">,\n    BreadcrumbItemOptions {}\n\nexport const BreadcrumbItem = forwardRef<BreadcrumbItemProps, \"li\">(\n  (\n    {\n      className,\n      children,\n      isCurrentPage,\n      currentPage = isCurrentPage,\n      gap,\n      isLastChild,\n      lastChild = isLastChild,\n      separator,\n      separatorProps,\n      ...rest\n    },\n    ref,\n  ) => {\n    const { styles, separatorProps: groupSeparatorProps } = useBreadcrumb()\n    const validChildren = getValidChildren(children)\n    const cloneChildren = validChildren.map((child) => {\n      if (child.type === BreadcrumbLink) {\n        return cloneElement(child, {\n          currentPage,\n        })\n      }\n\n      if (child.type === BreadcrumbSeparator) {\n        return cloneElement(child, {\n          children: child.props.children || separator,\n          gap,\n          ...groupSeparatorProps,\n          ...separatorProps,\n        })\n      }\n\n      return child\n    })\n\n    const css: CSSUIObject = {\n      alignItems: \"center\",\n      display: \"inline-flex\",\n      ...styles.item,\n    }\n\n    return (\n      <ui.li\n        ref={ref}\n        className={cx(\"ui-breadcrumb__item\", className)}\n        __css={css}\n        {...rest}\n      >\n        {cloneChildren}\n\n        {!lastChild ? (\n          <BreadcrumbSeparator\n            gap={gap}\n            {...groupSeparatorProps}\n            {...separatorProps}\n          >\n            {separator}\n          </BreadcrumbSeparator>\n        ) : null}\n      </ui.li>\n    )\n  },\n)\n\nBreadcrumbItem.displayName = \"BreadcrumbItem\"\nBreadcrumbItem.__ui__ = \"BreadcrumbItem\"\n\ninterface BreadcrumbLinkOptions {\n  /**\n   * If `true`, change to span element.\n   *\n   * @default false\n   */\n  currentPage?: boolean\n  /**\n   * If `true`, change to span element.\n   *\n   * @default false\n   *\n   * @deprecated Use `currentPage` instead.\n   */\n  isCurrentPage?: boolean\n}\n\nexport interface BreadcrumbLinkProps\n  extends HTMLUIProps<\"a\">,\n    BreadcrumbLinkOptions {}\n\nexport const BreadcrumbLink = forwardRef<BreadcrumbLinkProps, \"a\">(\n  (\n    {\n      href,\n      className,\n      children,\n      isCurrentPage,\n      currentPage = isCurrentPage,\n      ...rest\n    },\n    ref,\n  ) => {\n    const { styles } = useBreadcrumb()\n\n    return (\n      <ui.a\n        ref={ref}\n        as={!currentPage ? \"a\" : \"span\"}\n        href={!currentPage ? href : undefined}\n        className={cx(\"ui-breadcrumb__link\", className)}\n        aria-current={currentPage ? \"page\" : undefined}\n        __css={styles.link}\n        {...rest}\n      >\n        {children}\n      </ui.a>\n    )\n  },\n)\nBreadcrumbLink.displayName = \"BreadcrumbLink\"\nBreadcrumbLink.__ui__ = \"BreadcrumbLink\"\n\ninterface BreadcrumbSeparatorOptions {\n  /**\n   * The CSS `margin-inline-start`, and `margin-inline-end` property.\n   */\n  gap?: CSSUIProps[\"mx\"]\n}\n\nexport interface BreadcrumbSeparatorProps\n  extends Omit<HTMLUIProps<\"span\">, \"gap\">,\n    BreadcrumbSeparatorOptions {}\n\nexport const BreadcrumbSeparator = forwardRef<BreadcrumbSeparatorProps, \"span\">(\n  ({ children, gap: mx, ...rest }, ref) => {\n    const { styles } = useBreadcrumb()\n    const css: CSSUIObject = {\n      mx,\n      ...styles.separator,\n    }\n\n    return (\n      <ui.span\n        ref={ref}\n        className=\"ui-breadcrumb__item__separator\"\n        __css={css}\n        {...rest}\n      >\n        {children}\n      </ui.span>\n    )\n  },\n)\n\nBreadcrumbSeparator.displayName = \"BreadcrumbSeparator\"\nBreadcrumbSeparator.__ui__ = \"BreadcrumbSeparator\"\n\ninterface BreadcrumbEllipsisOptions {}\n\nexport interface BreadcrumbEllipsisProps\n  extends IconProps,\n    BreadcrumbEllipsisOptions {}\n\nexport const BreadcrumbEllipsis = forwardRef<BreadcrumbEllipsisProps, \"span\">(\n  ({ className, children, ...rest }, ref) => {\n    const { styles } = useBreadcrumb()\n    const css: CSSUIObject = {\n      ...styles.ellipsis,\n    }\n\n    return (\n      children ?? (\n        <Icon\n          ref={ref}\n          className={cx(\"ui-breadcrumb__item__ellipsis\", className)}\n          aria-label=\"ellipsis\"\n          stroke=\"currentColor\"\n          strokeLinecap=\"round\"\n          strokeLinejoin=\"round\"\n          strokeWidth=\"1.5\"\n          viewBox=\"0 0 36 24\"\n          xmlns=\"http://www.w3.org/2000/svg\"\n          __css={css}\n          {...rest}\n        >\n          <circle cx=\"10\" cy=\"12\" fill=\"currentColor\" r=\"2\" />\n          <circle cx=\"20\" cy=\"12\" fill=\"currentColor\" r=\"2\" />\n          <circle cx=\"30\" cy=\"12\" fill=\"currentColor\" r=\"2\" />\n        </Icon>\n      )\n    )\n  },\n)\n\nBreadcrumbEllipsis.displayName = \"BreadcrumbEllipsis\"\nBreadcrumbEllipsis.__ui__ = \"BreadcrumbEllipsis\"\n"],"mappings":"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","names":["rest","props"]}