{"version":3,"file":"timeline-item.mjs","sources":["../../src/timeline/timeline-item.tsx"],"sourcesContent":["import { defineComponent, inject } from 'vue';\nimport TimeLineItemProps from './time-line-item-props';\nimport { usePrefixClass } from '../hooks/useConfig';\nimport { useContent, useTNodeJSX } from '../hooks/tnode';\nimport { TimelineInjectKey, DEFAULT_PROVIDER } from './hooks';\nimport Loading from '../loading';\n\nconst DEFAULT_THEME = ['default', 'primary', 'success', 'warning', 'error'];\n\nexport default defineComponent({\n  name: 'XTimelineItem',\n  props: {\n    ...TimeLineItemProps,\n    index: {\n      type: Number,\n    },\n  },\n\n  setup(props) {\n    const COMPONENT_NAME = usePrefixClass('timeline-item');\n    // unit test need default value\n\n    const TimelineProvider = inject(TimelineInjectKey, DEFAULT_PROVIDER);\n    const renderContent = useContent();\n    const renderTNodeJSX = useTNodeJSX();\n\n    // 计算节点模式 CSS 类名\n    const getPositionClassName = (index: number) => {\n      const { layout, renderAlign } = TimelineProvider.value;\n      // TimelineItem.labelAlign > Timeline.labelAlign\n      const timelineItemAlign = props.labelAlign ?? renderAlign;\n      // 横向布局 以及 纵向布局对应为不同的样式名\n      const left = layout === 'horizontal' ? 'top' : 'left';\n      const right = layout === 'horizontal' ? 'bottom' : 'right';\n      // 单独设置则单独生效\n      if (timelineItemAlign === 'alternate') {\n        return index % 2 === 0 ? `${COMPONENT_NAME.value}-${left}` : `${COMPONENT_NAME.value}-${right}`;\n      }\n      if (timelineItemAlign === 'left' || timelineItemAlign === 'top') {\n        return `${COMPONENT_NAME.value}-${left}`;\n      }\n      if (timelineItemAlign === 'right' || timelineItemAlign === 'bottom') {\n        return `${COMPONENT_NAME.value}-${right}`;\n      }\n      return '';\n    };\n\n    return () => {\n      const { mode, theme, itemsStatus, reverse } = TimelineProvider.value;\n      const { loading, dotColor, index } = props;\n\n      const labelNode = renderTNodeJSX('label');\n      const dotElement = renderTNodeJSX('dot');\n\n      const dotContentClass = `${COMPONENT_NAME.value}__dot-content`;\n      if (dotElement?.props) {\n        const classes = dotElement?.props?.class;\n        dotElement.props.class = classes ? [dotContentClass, classes].join(' ') : dotContentClass;\n      }\n\n      return (\n        <li class={[`${COMPONENT_NAME.value}`, `${getPositionClassName(props.index)}`]}>\n          {mode === 'alternate' && labelNode && (\n            <div class={[`${COMPONENT_NAME.value}__label`, `${COMPONENT_NAME.value}__label--${mode}`]}>{labelNode}</div>\n          )}\n          <div class={`${COMPONENT_NAME.value}__wrapper`}>\n            <div\n              class={{\n                [`${COMPONENT_NAME.value}__dot`]: true,\n                [`${COMPONENT_NAME.value}__dot--custom`]: !!dotElement || (!dotElement && loading),\n                [`${COMPONENT_NAME.value}__dot--${dotColor}`]: DEFAULT_THEME.includes(dotColor),\n              }}\n              style={{ borderColor: !DEFAULT_THEME.includes(dotColor) && dotColor }}\n            >\n              {!dotElement && loading && <Loading size=\"12px\" class={dotContentClass} />}\n              {dotElement}\n            </div>\n            <div\n              class={{\n                [`${COMPONENT_NAME.value}__tail`]: true,\n                [`${COMPONENT_NAME.value}__tail--theme-${theme}`]: true,\n                [`${COMPONENT_NAME.value}__tail--status-${itemsStatus[index]}`]: reverse,\n              }}\n            />\n          </div>\n          <div class={`${COMPONENT_NAME.value}__content`}>\n            {renderContent('default', 'content')}\n            {mode === 'same' && labelNode && (\n              <div class={[`${COMPONENT_NAME.value}__label`, `${COMPONENT_NAME.value}__label--${mode}`]}>\n                {labelNode}\n              </div>\n            )}\n          </div>\n        </li>\n      );\n    };\n  },\n});\n"],"names":["name","props","index","type","dotElement","_createVNode"],"mappings":"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"}