{"version":3,"file":"OutlineItem.mjs","sources":["../../../../src/components/OutlineItem/OutlineItem.tsx"],"sourcesContent":["'use client'\nimport { forwardRef, useMemo } from 'react'\nimport * as React from 'react'\n\nimport {\n  ChevronSmallDownIcon,\n  ChevronSmallRightIcon,\n  isBezierIcon,\n} from '@channel.io/bezier-icons'\nimport classNames from 'classnames'\n\nimport { createContext } from '~/src/utils/react'\nimport { isEmpty, isNil } from '~/src/utils/type'\n\nimport { BaseButton } from '~/src/components/BaseButton'\nimport { Icon } from '~/src/components/Icon'\nimport { Text } from '~/src/components/Text'\n\nimport {\n  type OutlineItemContextProps,\n  type OutlineItemProps,\n} from './OutlineItem.types'\n\nimport styles from './OutlineItem.module.scss'\n\nconst [OutlineItemContextProvider, useOutlineItemContext] = createContext<\n  OutlineItemContextProps | undefined\n>(undefined)\n\nconst DEFAULT_INDENT = 16\n\nexport const OUTLINE_ITEM_TEST_ID = 'bezier-outline-item'\n\nexport const OutlineItem = forwardRef<HTMLElement, OutlineItemProps>(\n  function OutlineItem(\n    {\n      children,\n      style,\n      className,\n      as,\n      open = false,\n      disableChevron = false,\n      active = false,\n      focused = false,\n      clickable: clickableProp = false,\n      leftContent,\n      content,\n      rightContent,\n      href,\n      onClick,\n      ...rest\n    },\n    forwardedRef\n  ) {\n    const context = useOutlineItemContext()\n    const isRoot = isNil(context)\n    const indent = isRoot ? 0 : context.indent + DEFAULT_INDENT\n\n    const isLink = !isEmpty(href)\n    const isButton = !isNil(onClick)\n    const Comp = isLink ? 'a' : isButton ? BaseButton : ((as ?? 'div') as 'div')\n    const clickable = isLink || clickableProp || isButton\n\n    return (\n      <>\n        <Comp\n          {...(isLink && {\n            href,\n            target: '_blank',\n            rel: 'noopener noreferrer',\n          })}\n          // @ts-expect-error\n          ref={forwardedRef}\n          style={\n            {\n              ...style,\n              '--b-outline-item-indent': `${indent}px`,\n            } as React.CSSProperties\n          }\n          className={classNames(\n            styles.OutlineItem,\n            active && styles.active,\n            focused && styles.focused,\n            clickable && styles.clickable,\n            className\n          )}\n          data-testid={OUTLINE_ITEM_TEST_ID}\n          onClick={onClick}\n          {...rest}\n        >\n          {!disableChevron && (\n            <div className={styles.Chevron}>\n              {!isNil(children) && (\n                <Icon\n                  className={styles.Icon}\n                  source={open ? ChevronSmallDownIcon : ChevronSmallRightIcon}\n                  size=\"s\"\n                  color=\"text-neutral-lighter\"\n                />\n              )}\n            </div>\n          )}\n\n          {leftContent && (\n            <div className={styles.LeftContent}>\n              {isBezierIcon(leftContent) ? (\n                <Icon\n                  className={styles.Icon}\n                  size=\"s\"\n                  source={leftContent}\n                  color=\"text-neutral-lighter\"\n                />\n              ) : (\n                leftContent\n              )}\n            </div>\n          )}\n\n          <Text\n            className={styles.Content}\n            typo=\"14\"\n            truncated\n          >\n            {content}\n          </Text>\n\n          {rightContent}\n        </Comp>\n\n        <OutlineItemContextProvider\n          value={useMemo(() => ({ indent }), [indent])}\n        >\n          {open && children}\n        </OutlineItemContextProvider>\n      </>\n    )\n  }\n)\n"],"names":["OutlineItemContextProvider","useOutlineItemContext","createContext","undefined","DEFAULT_INDENT","OUTLINE_ITEM_TEST_ID","OutlineItem","forwardRef","children","style","className","as","open","disableChevron","active","focused","clickable","clickableProp","leftContent","content","rightContent","href","onClick","rest","forwardedRef","context","isRoot","isNil","indent","isLink","isEmpty","isButton","Comp","BaseButton","_jsxs","_Fragment","target","rel","ref","classNames","styles","_jsx","Chevron","Icon","source","ChevronSmallDownIcon","ChevronSmallRightIcon","size","color","LeftContent","isBezierIcon","Text","Content","typo","truncated","value","useMemo"],"mappings":"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"}