{"version":3,"file":"ellipsis.mjs","sources":["../../src/typography/ellipsis.tsx"],"sourcesContent":["import { defineComponent, computed, ref, h } from 'vue';\nimport { usePrefixClass } from '../hooks/useClass';\nimport { useConfig } from '../config-provider/useConfig';\n\nimport props from './paragraph-props';\n\nimport type { TypographyEllipsis } from './type';\n\nexport default defineComponent({\n  name: 'TEllipsis',\n  props: {\n    ...props,\n    renderCopy: Function,\n  },\n  setup(props, { slots }) {\n    const COMPONENT_NAME = usePrefixClass('typography');\n    const { globalConfig } = useConfig('typography');\n\n    const content = computed(() => {\n      return props.content || slots?.default();\n    });\n\n    const ellipsisState = computed((): TypographyEllipsis => {\n      const { ellipsis } = props;\n      return {\n        row: 1,\n        expandable: false,\n        ...(typeof ellipsis === 'object' ? ellipsis : null),\n      };\n    });\n\n    const ellipsisStyles = computed((): any => {\n      const ellipsis = ellipsisState.value;\n      const def: Record<string, any> = {\n        overflow: props.ellipsis ? 'hidden' : 'visible',\n        textOverflow: props.ellipsis ? 'ellipsis' : 'initial',\n        whiteSpace: props.ellipsis ? 'normal' : 'nowrap',\n        display: '-webkit-box',\n        WebkitLineClamp: ellipsis.row,\n        WebkitBoxOrient: 'vertical',\n      };\n\n      if (isExpand.value) {\n        def.overflow = 'visible';\n        def.whiteSpace = 'normal';\n        def.display = 'initial';\n      }\n      return def;\n    });\n\n    const isExpand = ref(false);\n\n    const onExpand = () => {\n      isExpand.value = true;\n      if (typeof props.ellipsis === 'object') props.ellipsis.onExpand?.(true);\n    };\n\n    const onCollapse = () => {\n      isExpand.value = false;\n      if (typeof props.ellipsis === 'object') props.ellipsis.onExpand?.(false);\n    };\n\n    const renderSuffix = (expanded: boolean) => {\n      const { suffix } = ellipsisState.value;\n      if (!suffix) return null;\n      if (typeof suffix === 'function') return suffix(h, { expanded });\n      return suffix;\n    };\n\n    const renderEllipsisExpand = () => {\n      const { suffix } = ellipsisState.value;\n      const symbolStyle = {\n        textDecoration: 'none',\n        whiteSpace: 'nowrap' as const,\n        flex: 1,\n        marginRight: props.renderCopy ? '8px' : 0,\n      };\n      const moreNode = (\n        <span class={`${COMPONENT_NAME.value}-ellipsis-symbol`} onClick={onExpand} style={symbolStyle}>\n          {suffix ? renderSuffix(false) : globalConfig.value?.expandText || '展开'}\n        </span>\n      );\n\n      const { expandable, collapsible } = ellipsisState.value;\n      if (!isExpand.value && expandable) {\n        return moreNode;\n      }\n      if (expandable && isExpand.value && collapsible) {\n        return (\n          <span class={`${COMPONENT_NAME.value}-ellipsis-symbol`} onClick={onCollapse} style={symbolStyle}>\n            {globalConfig.value?.collapseText || '收起'}\n          </span>\n        );\n      }\n    };\n\n    return () => {\n      return (\n        <div\n          style={{\n            display: 'flex',\n            alignItems: 'flex-end',\n          }}\n        >\n          <p style={props.ellipsis ? ellipsisStyles.value : {}}>{content.value}</p>\n          {renderEllipsisExpand()}\n          {props.renderCopy?.()}\n        </div>\n      );\n    };\n  },\n});\n"],"names":["defineComponent","name","props","_objectSpread","renderCopy","Function","setup","slots","_ref","COMPONENT_NAME","usePrefixClass","_useConfig","useConfig","globalConfig","content","computed","default","ellipsisState","ellipsis","row","expandable","_typeof","ellipsisStyles","value","def","overflow","textOverflow","whiteSpace","display","WebkitLineClamp","WebkitBoxOrient","isExpand","ref","onExpand","_props2$ellipsis$onEx","_props2$ellipsis","onCollapse","_props2$ellipsis$onEx2","_props2$ellipsis2","renderSuffix","expanded","suffix","h","renderEllipsisExpand","_globalConfig$value","symbolStyle","textDecoration","flex","marginRight","moreNode","expandText","_ellipsisState$value","collapsible","_globalConfig$value2","_createVNode","concat","collapseText","_props2$renderCopy","alignItems"],"mappings":"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"}