{"version":3,"file":"breadcrumb-item.mjs","sources":["../../../components/breadcrumb/breadcrumb-item.tsx"],"sourcesContent":["import { defineComponent, VNode, inject, ref, computed, getCurrentInstance, onMounted, onBeforeUpdate } from 'vue';\nimport { ChevronRightIcon as TdChevronRightIcon } from 'tdesign-icons-vue-next';\n\nimport props from './breadcrumb-item-props';\nimport Tooltip from '../tooltip/index';\nimport { isTextEllipsis } from '../utils/dom';\nimport { usePrefixClass } from '../hooks/useConfig';\nimport { useGlobalIcon } from '../hooks/useGlobalIcon';\nimport { useTNodeJSX, useContent } from '../hooks/tnode';\nimport { isFunction } from 'lodash-es';\n\ninterface LocalTBreadcrumb {\n  separator: (() => void) | string;\n  theme: string;\n  slots: {\n    separator: VNode | string;\n  };\n  maxItemWidth: string;\n}\n\nconst localTBreadcrumbOrigin: LocalTBreadcrumb = {\n  separator: '',\n  theme: 'light',\n  slots: { separator: '' },\n  maxItemWidth: undefined,\n};\n\nexport default defineComponent({\n  name: 'TBreadcrumbItem',\n  inheritAttrs: false,\n  props,\n  setup(props, { attrs }) {\n    const renderContent = useContent();\n    const renderTNodeJSX = useTNodeJSX();\n\n    const breadcrumbText = ref<HTMLElement>();\n    const localTBreadcrumb = inject('tBreadcrumb', localTBreadcrumbOrigin);\n    const themeClassName = ref(localTBreadcrumb?.theme);\n    const isCutOff = ref(false);\n    const COMPONENT_NAME = usePrefixClass('breadcrumb__item');\n    const separatorClass = usePrefixClass('breadcrumb__separator');\n    const disableClass = usePrefixClass('is-disabled');\n    const linkClass = usePrefixClass('link');\n    const maxLengthClass = usePrefixClass('breadcrumb__inner');\n    const textFlowClass = usePrefixClass('breadcrumb--text-overflow');\n\n    const { ChevronRightIcon } = useGlobalIcon({ ChevronRightIcon: TdChevronRightIcon });\n    const maxWithStyle = computed(() => {\n      const maxItemWidth = localTBreadcrumb?.maxItemWidth;\n      const maxWith: string = props.maxWidth || maxItemWidth || '120';\n      return { maxWidth: `${maxWith}px` };\n    });\n\n    onMounted(() => {\n      isCutOff.value = isTextEllipsis(breadcrumbText.value);\n    });\n    onBeforeUpdate(() => {\n      isCutOff.value = isTextEllipsis(breadcrumbText.value);\n    });\n\n    const separatorPropContent = localTBreadcrumb?.separator;\n    const separatorSlot = localTBreadcrumb?.slots?.separator;\n    const separatorContent = separatorPropContent || separatorSlot || (\n      <ChevronRightIcon {...{ color: 'rgba(0,0,0,.3)' }} />\n    );\n    const { proxy } = getCurrentInstance();\n\n    const handleClick = () => {\n      const router = props.router || proxy.$router;\n\n      if (props.to && router) {\n        props.replace ? router.replace(props.to) : router.push(props.to);\n      } else {\n        window.location.href = props.href;\n      }\n    };\n    const bindEvent = (e: MouseEvent) => {\n      if (!props.disabled) {\n        e.preventDefault();\n        if (props.target === '_blank') {\n          props.href ? window.open(props.href) : window.open(props.to as string);\n        } else {\n          handleClick();\n        }\n      }\n    };\n\n    return () => {\n      const itemClass = [COMPONENT_NAME.value, themeClassName.value];\n      const textClass = [textFlowClass.value];\n\n      if (props.disabled) {\n        textClass.push(disableClass.value);\n      }\n\n      const listeners = {\n        onClick: (e: MouseEvent) => {\n          if (props.disabled) {\n            e.stopPropagation();\n            return;\n          }\n        },\n      };\n\n      const content = renderContent('default', 'content');\n\n      const textContent = (\n        <span {...{ class: maxLengthClass.value, style: maxWithStyle.value }}>\n          {renderTNodeJSX('icon')}\n          <span ref={breadcrumbText} class={`${maxLengthClass.value}-text`}>\n            {content}\n          </span>\n        </span>\n      );\n      let itemContent = <span {...{ class: textClass, ...listeners }}>{textContent}</span>;\n\n      if ((props.href || props.to) && !props.disabled) {\n        textClass.push(linkClass.value);\n        itemContent = (\n          <a class={textClass} href={props.href} target={props.target} {...listeners} onClick={bindEvent}>\n            {textContent}\n          </a>\n        );\n      }\n      return (\n        <div class={itemClass} {...attrs} onClick={!props.disabled && props.onClick}>\n          {isCutOff.value ? <Tooltip content={() => content}>{itemContent}</Tooltip> : itemContent}\n          <span\n            class={separatorClass.value}\n            style={{\n              textOverflow: isCutOff.value ? 'ellipsis' : 'clip',\n            }}\n          >\n            {isFunction(separatorContent) ? separatorContent() : separatorContent}\n          </span>\n        </div>\n      );\n    };\n  },\n});\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","localTBreadcrumbOrigin","separator","theme","slots","maxItemWidth","defineComponent","name","inheritAttrs","props","setup","_localTBreadcrumb$slo","attrs","_ref","renderContent","useContent","renderTNodeJSX","useTNodeJSX","breadcrumbText","ref","localTBreadcrumb","inject","themeClassName","isCutOff","COMPONENT_NAME","usePrefixClass","separatorClass","disableClass","linkClass","maxLengthClass","textFlowClass","_useGlobalIcon","useGlobalIcon","ChevronRightIcon","TdChevronRightIcon","maxWithStyle","computed","maxWith","maxWidth","concat","onMounted","value","isTextEllipsis","onBeforeUpdate","separatorPropContent","separatorSlot","separatorContent","_createVNode","color","_getCurrentInstance","getCurrentInstance","proxy","handleClick","router","$router","to","replace","push","window","location","href","bindEvent","e","disabled","preventDefault","target","open","itemClass","textClass","listeners","onClick","stopPropagation","content","textContent","style","itemContent","_objectSpread","_mergeProps","_default","textOverflow","isFunction"],"mappings":"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"}