@incremark/chat-vue 0.4.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (97) hide show
  1. package/LICENSE +22 -0
  2. package/dist/chunk-X3YI3YOK.js +3809 -0
  3. package/dist/chunk-X3YI3YOK.js.map +1 -0
  4. package/dist/components/base/action-button/action-button.vue.d.ts +28 -0
  5. package/dist/components/base/action-button/index.d.ts +5 -0
  6. package/dist/components/base/action-button/types/index.d.ts +9 -0
  7. package/dist/components/base/im-button/im-button.vue.d.ts +30 -0
  8. package/dist/components/base/im-button/index.d.ts +2 -0
  9. package/dist/components/base/im-button/types/index.d.ts +27 -0
  10. package/dist/components/base/im-dropdown/im-dropdown.vue.d.ts +24 -0
  11. package/dist/components/base/im-dropdown/index.d.ts +5 -0
  12. package/dist/components/base/im-dropdown/types/index.d.ts +27 -0
  13. package/dist/components/base/im-popover/im-popover.vue.d.ts +38 -0
  14. package/dist/components/base/im-popover/index.d.ts +2 -0
  15. package/dist/components/base/im-popover/types/index.d.ts +25 -0
  16. package/dist/components/base/im-tooltip/im-tooltip.vue.d.ts +20 -0
  17. package/dist/components/base/im-tooltip/index.d.ts +2 -0
  18. package/dist/components/base/im-tooltip/types/index.d.ts +12 -0
  19. package/dist/components/base/index.d.ts +8 -0
  20. package/dist/components/chain-of-thought/chain-of-thought-step.vue.d.ts +25 -0
  21. package/dist/components/chain-of-thought/chain-of-thought.vue.d.ts +32 -0
  22. package/dist/components/chain-of-thought/composables/index.d.ts +4 -0
  23. package/dist/components/chain-of-thought/composables/useChainOfThought.d.ts +7 -0
  24. package/dist/components/chain-of-thought/index.d.ts +6 -0
  25. package/dist/components/chain-of-thought/types/index.d.ts +76 -0
  26. package/dist/components/error-message/error-message.vue.d.ts +22 -0
  27. package/dist/components/error-message/index.d.ts +5 -0
  28. package/dist/components/error-message/types/index.d.ts +22 -0
  29. package/dist/components/file-preview/composables/index.d.ts +1 -0
  30. package/dist/components/file-preview/composables/useFileType.d.ts +40 -0
  31. package/dist/components/file-preview/file-preview.vue.d.ts +13 -0
  32. package/dist/components/file-preview/index.d.ts +5 -0
  33. package/dist/components/file-preview/types/index.d.ts +44 -0
  34. package/dist/components/index.d.ts +34 -0
  35. package/dist/components/message-actions/composables/index.d.ts +5 -0
  36. package/dist/components/message-actions/composables/useCopyAction.d.ts +20 -0
  37. package/dist/components/message-actions/index.d.ts +11 -0
  38. package/dist/components/message-actions/message-action-copy.vue.d.ts +7 -0
  39. package/dist/components/message-actions/message-action-feedback.vue.d.ts +14 -0
  40. package/dist/components/message-actions/message-action-more.vue.d.ts +10 -0
  41. package/dist/components/message-actions/message-action.vue.d.ts +21 -0
  42. package/dist/components/message-actions/message-actions.vue.d.ts +23 -0
  43. package/dist/components/message-actions/types/index.d.ts +107 -0
  44. package/dist/components/message-bubble/index.d.ts +2 -0
  45. package/dist/components/message-bubble/message-bubble.vue.d.ts +27 -0
  46. package/dist/components/message-bubble/types/index.d.ts +37 -0
  47. package/dist/components/message-renderer/index.d.ts +6 -0
  48. package/dist/components/message-renderer/part-renderer.vue.d.ts +19 -0
  49. package/dist/components/message-renderer/types/index.d.ts +37 -0
  50. package/dist/components/reasoning-message/index.d.ts +5 -0
  51. package/dist/components/reasoning-message/reasoning-message.vue.d.ts +8 -0
  52. package/dist/components/reasoning-message/types/index.d.ts +38 -0
  53. package/dist/components/sender/components/sender-action-button.vue.d.ts +24 -0
  54. package/dist/components/sender/components/sender-attachments.vue.d.ts +11 -0
  55. package/dist/components/sender/components/sender-file-button.vue.d.ts +11 -0
  56. package/dist/components/sender/components/sender-submit-button.vue.d.ts +21 -0
  57. package/dist/components/sender/composables/index.d.ts +2 -0
  58. package/dist/components/sender/composables/useSender.d.ts +31 -0
  59. package/dist/components/sender/index.d.ts +7 -0
  60. package/dist/components/sender/sender.vue.d.ts +66 -0
  61. package/dist/components/sender/types/index.d.ts +174 -0
  62. package/dist/components/sender-input/index.d.ts +1 -0
  63. package/dist/components/sender-input/sender-input.vue.d.ts +36 -0
  64. package/dist/components/sender-input/types/index.d.ts +24 -0
  65. package/dist/components/source-reference/index.d.ts +5 -0
  66. package/dist/components/source-reference/source-reference.vue.d.ts +20 -0
  67. package/dist/components/source-reference/types/index.d.ts +13 -0
  68. package/dist/components/suggestion/index.d.ts +6 -0
  69. package/dist/components/suggestion/suggestion-item.vue.d.ts +21 -0
  70. package/dist/components/suggestion/suggestion.vue.d.ts +22 -0
  71. package/dist/components/suggestion/types/index.d.ts +27 -0
  72. package/dist/components/svg-icon/index.d.ts +1 -0
  73. package/dist/components/svg-icon/svg-icon.vue.d.ts +13 -0
  74. package/dist/components/text-message/index.d.ts +5 -0
  75. package/dist/components/text-message/text-message.vue.d.ts +6 -0
  76. package/dist/components/text-message/types/index.d.ts +32 -0
  77. package/dist/components/tool-call/index.d.ts +5 -0
  78. package/dist/components/tool-call/tool-call.vue.d.ts +18 -0
  79. package/dist/components/tool-call/types/index.d.ts +81 -0
  80. package/dist/components/welcome/index.d.ts +5 -0
  81. package/dist/components/welcome/types/index.d.ts +19 -0
  82. package/dist/components/welcome/welcome.vue.d.ts +28 -0
  83. package/dist/components.js +3 -0
  84. package/dist/components.js.map +1 -0
  85. package/dist/composables/index.d.ts +2 -0
  86. package/dist/composables/useCollapsible.d.ts +4 -0
  87. package/dist/composables/useUIAdapter.d.ts +14 -0
  88. package/dist/index.d.ts +7 -0
  89. package/dist/index.js +30 -0
  90. package/dist/index.js.map +1 -0
  91. package/dist/provider/ChatProvider.vue.d.ts +14 -0
  92. package/dist/provider/index.d.ts +4 -0
  93. package/dist/types/adapter.d.ts +64 -0
  94. package/dist/types/index.d.ts +5 -0
  95. package/dist/types/message.d.ts +5 -0
  96. package/dist/types/parts.d.ts +5 -0
  97. package/package.json +83 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["src/components/svg-icon/svg-icon.vue","sfc-template:/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/svg-icon/svg-icon.vue?type=template","../src/components/svg-icon/svg-icon.vue","../src/components/chain-of-thought/composables/useChainOfThought.ts","../src/composables/useCollapsible.ts","src/components/base/im-button/im-button.vue","sfc-template:/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/base/im-button/im-button.vue?type=template","../src/components/base/im-button/im-button.vue","src/components/base/im-popover/im-popover.vue","sfc-template:/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/base/im-popover/im-popover.vue?type=template","../src/components/base/im-popover/im-popover.vue","src/components/base/im-tooltip/im-tooltip.vue","sfc-template:/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/base/im-tooltip/im-tooltip.vue?type=template","../src/components/base/im-tooltip/im-tooltip.vue","../src/composables/useUIAdapter.ts","src/components/chain-of-thought/chain-of-thought-step.vue","sfc-template:/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/chain-of-thought/chain-of-thought-step.vue?type=template","../src/components/chain-of-thought/chain-of-thought-step.vue","src/components/reasoning-message/reasoning-message.vue","sfc-template:/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/reasoning-message/reasoning-message.vue?type=template","../src/components/reasoning-message/reasoning-message.vue","src/components/text-message/text-message.vue","sfc-template:/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/text-message/text-message.vue?type=template","../src/components/text-message/text-message.vue","src/components/chain-of-thought/chain-of-thought.vue","sfc-template:/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/chain-of-thought/chain-of-thought.vue?type=template","../src/components/chain-of-thought/chain-of-thought.vue","src/components/tool-call/tool-call.vue","sfc-template:/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/tool-call/tool-call.vue?type=template","../src/components/tool-call/tool-call.vue","src/components/message-renderer/part-renderer.vue","sfc-template:/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/message-renderer/part-renderer.vue?type=template","../src/components/message-renderer/part-renderer.vue","src/components/source-reference/source-reference.vue","sfc-template:/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/source-reference/source-reference.vue?type=template","../src/components/source-reference/source-reference.vue","../src/components/file-preview/composables/useFileType.ts","src/components/file-preview/file-preview.vue","sfc-template:/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/file-preview/file-preview.vue?type=template","../src/components/file-preview/file-preview.vue","src/components/message-bubble/message-bubble.vue","sfc-template:/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/message-bubble/message-bubble.vue?type=template","../src/components/message-bubble/message-bubble.vue","src/components/base/action-button/action-button.vue","sfc-template:/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/base/action-button/action-button.vue?type=template","../src/components/base/action-button/action-button.vue","src/components/message-actions/message-action.vue","sfc-template:/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/message-actions/message-action.vue?type=template","../src/components/message-actions/message-action.vue","../src/components/message-actions/composables/useCopyAction.ts","src/components/message-actions/message-action-copy.vue","sfc-template:/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/message-actions/message-action-copy.vue?type=template","../src/components/message-actions/message-action-copy.vue","src/components/message-actions/message-action-feedback.vue","sfc-template:/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/message-actions/message-action-feedback.vue?type=template","../src/components/message-actions/message-action-feedback.vue","src/components/base/im-dropdown/im-dropdown.vue","sfc-template:/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/base/im-dropdown/im-dropdown.vue?type=template","../src/components/base/im-dropdown/im-dropdown.vue","src/components/message-actions/message-action-more.vue","sfc-template:/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/message-actions/message-action-more.vue?type=template","../src/components/message-actions/message-action-more.vue","src/components/message-actions/message-actions.vue","sfc-template:/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/message-actions/message-actions.vue?type=template","../src/components/message-actions/message-actions.vue","src/components/sender-input/sender-input.vue","sfc-template:/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/sender-input/sender-input.vue?type=template","../src/components/sender-input/sender-input.vue","src/components/sender/components/sender-submit-button.vue","sfc-template:/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/sender/components/sender-submit-button.vue?type=template","../src/components/sender/components/sender-submit-button.vue","../src/components/sender/composables/useSender.ts","src/components/sender/sender.vue","sfc-template:/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/sender/sender.vue?type=template","../src/components/sender/sender.vue","src/components/sender/components/sender-action-button.vue","sfc-template:/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/sender/components/sender-action-button.vue?type=template","../src/components/sender/components/sender-action-button.vue","src/components/sender/components/sender-file-button.vue","sfc-template:/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/sender/components/sender-file-button.vue?type=template","../src/components/sender/components/sender-file-button.vue","src/components/sender/components/sender-attachments.vue","sfc-template:/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/sender/components/sender-attachments.vue?type=template","../src/components/sender/components/sender-attachments.vue","src/components/suggestion/suggestion-item.vue","sfc-template:/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/suggestion/suggestion-item.vue?type=template","../src/components/suggestion/suggestion-item.vue","src/components/suggestion/suggestion.vue","sfc-template:/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/suggestion/suggestion.vue?type=template","../src/components/suggestion/suggestion.vue","src/components/error-message/error-message.vue","sfc-template:/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/error-message/error-message.vue?type=template","../src/components/error-message/error-message.vue","src/components/welcome/welcome.vue","sfc-template:/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/welcome/welcome.vue?type=template","../src/components/welcome/welcome.vue"],"names":["_openBlock","_createElementBlock","_normalizeClass","_renderSlot","svg_icon_default","createImBem","computed","render","im_button_default","_useModel","ref","offsetMiddleware","arrowMiddleware","_hoisted_1","_Fragment","_createElementVNode","_createBlock","_Teleport","_createVNode","_Transition","_withCtx","_normalizeStyle","_createCommentVNode","im_popover_default","_toDisplayString","im_tooltip_default","_createTextVNode","chain_of_thought_step_default","reasoning_message_default","text_message_default","_withDirectives","_renderList","_createSlots","_resolveDynamicComponent","_mergeProps","_vShow","chain_of_thought_default","_normalizeProps","tool_call_default","part_renderer_default","source_reference_default","_hoisted_2","file_preview_default","message_bubble_default","action_button_default","message_action_default","toRef","Icon","message_action_copy_default","h","message_action_feedback_default","im_dropdown_default","message_action_more_default","useSlots","message_actions_default","watch","sender_input_default","sender_submit_button_default","provide","sender_default","sender_action_button_default","inject","suggestion_item_default","suggestion_default","error_message_default","welcome_default"],"mappings":"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","file":"chunk-X3YI3YOK.js","sourcesContent":["<script setup lang=\"ts\">\nimport { createImBem } from '@incremark/shared';\n\nconst bem = createImBem('svg-icon');\n</script>\n\n<template>\n <span :class=\"bem()\">\n <slot />\n </span>\n</template>\n","import { renderSlot as _renderSlot, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return (_openBlock(), _createElementBlock(\"span\", {\n class: _normalizeClass($setup.bem())\n }, [\n _renderSlot(_ctx.$slots, \"default\")\n ], 2 /* CLASS */))\n}","import script from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/svg-icon/svg-icon.vue?type=script\";import { render } from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/svg-icon/svg-icon.vue?type=template\"; script.render = render;script.__file = \"src/components/svg-icon/svg-icon.vue\";export default script;","/**\n * useChainOfThought - ChainOfThought 组件逻辑\n */\n\nimport { computed } from 'vue';\nimport { formatDuration } from '@incremark/shared';\nimport type { ChainOfThoughtProps } from '../types';\n\nexport function useChainOfThought(props: ChainOfThoughtProps) {\n const duration = computed(() => {\n if (!props.startTime) return null;\n const end = props.endTime || Date.now();\n return formatDuration(end - props.startTime, props.locale);\n });\n\n return { duration };\n}\n","import { ref } from 'vue';\n\nexport function useCollapsible(defaultExpanded = true) {\n const expanded = ref(defaultExpanded);\n const toggle = () => {\n expanded.value = !expanded.value;\n };\n return { expanded, toggle };\n}\n","<script setup lang=\"ts\">\n/**\n * ImButton - 按钮组件\n *\n * 支持 6 种变体: solid, outline, soft, subtle, ghost, link\n * 支持 5 种颜色: primary, neutral, success, warning, error\n * 支持 5 种尺寸: xs, sm, md, lg, xl\n */\n\nimport { computed } from 'vue';\nimport { createImBem } from '@incremark/shared';\nimport type { ImButtonProps } from './types';\n\nconst props = withDefaults(defineProps<ImButtonProps>(), {\n variant: 'solid',\n color: 'primary',\n size: 'md',\n disabled: false,\n loading: false,\n block: false,\n square: false,\n circle: false,\n active: false\n});\n\nconst emit = defineEmits<{\n click: [event: MouseEvent];\n}>();\n\nconst bem = createImBem('button');\n\nconst rootClass = computed(() => [\n bem(),\n bem('', props.variant),\n bem('', props.color),\n bem('', props.size),\n props.block && bem('', 'block'),\n props.square && bem('', 'square'),\n props.circle && bem('', 'circle'),\n props.loading && bem('', 'loading'),\n props.disabled && bem('', 'disabled'),\n props.active && bem('', 'active')\n]);\n\nconst handleClick = (event: MouseEvent) => {\n if (!props.disabled && !props.loading) {\n emit('click', event);\n }\n};\n</script>\n\n<template>\n <button\n :class=\"rootClass\"\n :disabled=\"disabled || loading\"\n type=\"button\"\n @click=\"handleClick\"\n >\n <span v-if=\"loading\" :class=\"bem('spinner')\" />\n <slot v-else name=\"icon\" />\n <slot />\n </button>\n</template>\n","import { normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, renderSlot as _renderSlot } from \"vue\"\n\nconst _hoisted_1 = [\"disabled\"]\n\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return (_openBlock(), _createElementBlock(\"button\", {\n class: _normalizeClass($setup.rootClass),\n disabled: $props.disabled || $props.loading,\n type: \"button\",\n onClick: $setup.handleClick\n }, [\n ($props.loading)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: _normalizeClass($setup.bem('spinner'))\n }, null, 2 /* CLASS */))\n : _renderSlot(_ctx.$slots, \"icon\", { key: 1 }),\n _renderSlot(_ctx.$slots, \"default\")\n ], 10 /* CLASS, PROPS */, _hoisted_1))\n}","import script from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/base/im-button/im-button.vue?type=script\";import { render } from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/base/im-button/im-button.vue?type=template\"; script.render = render;script.__file = \"src/components/base/im-button/im-button.vue\";export default script;","<script setup lang=\"ts\">\n/**\n * ImPopover - 基础浮动层组件\n * 基于 @floating-ui/vue 实现\n * 支持 hover/click/focus/manual 触发方式\n */\n\nimport { ref, computed, watch, CSSProperties } from 'vue';\nimport { useFloating, offset as offsetMiddleware, flip, shift, arrow as arrowMiddleware, autoUpdate } from '@floating-ui/vue';\nimport { onClickOutside } from '@vueuse/core';\nimport { createImBem } from '@incremark/shared';\nimport type { ImPopoverProps } from './types';\n\nconst props = withDefaults(defineProps<ImPopoverProps>(), {\n trigger: 'click',\n placement: 'bottom',\n offset: 8,\n arrow: false,\n disabled: false,\n strategy: 'absolute',\n to: 'body',\n teleportDisabled: false\n});\n\nconst visible = defineModel<boolean>('visible', { default: false });\n\nconst bem = createImBem('popover');\n\nconst referenceEl = ref<HTMLElement | null>(null);\nconst floatingEl = ref<HTMLElement | null>(null);\nconst arrowEl = ref<HTMLElement | null>(null);\n\n// 构建 middleware\nconst middleware = computed(() => {\n const list = [offsetMiddleware(props.offset), flip(), shift({ padding: 8 })];\n if (props.arrow) {\n list.push(arrowMiddleware({ element: arrowEl }));\n }\n return list;\n});\n\nconst { floatingStyles, middlewareData, placement: finalPlacement, isPositioned } = useFloating(referenceEl, floatingEl, {\n placement: computed(() => props.placement),\n strategy: computed(() => props.strategy),\n middleware,\n whileElementsMounted: autoUpdate\n});\n\n// 合并 floatingStyles 和 visibility 控制\nconst popoverStyles = computed<CSSProperties>(() => ({\n ...floatingStyles.value,\n // 在位置计算完成前隐藏,避免从角落飘入\n visibility: isPositioned.value ? 'visible' : 'hidden'\n}));\n\nconst arrowStyles = computed(() => {\n if (!props.arrow) return {};\n const { x, y } = middlewareData.value.arrow || {};\n const side = finalPlacement.value.split('-')[0];\n const staticSide = { top: 'bottom', right: 'left', bottom: 'top', left: 'right' }[side]!;\n return {\n left: x != null ? `${x}px` : '',\n top: y != null ? `${y}px` : '',\n [staticSide]: '-5px'\n };\n});\n\nconst teleportTarget = computed(() => {\n const { to } = props;\n return typeof to === 'function' ? to() : to;\n});\n\n// 触发逻辑\nlet hideTimeout: ReturnType<typeof setTimeout> | null = null;\n\nconst show = () => {\n if (hideTimeout) {\n clearTimeout(hideTimeout);\n hideTimeout = null;\n }\n if (!props.disabled) visible.value = true;\n};\n\nconst hide = () => {\n visible.value = false;\n};\n\nconst delayedHide = () => {\n hideTimeout = setTimeout(() => {\n hide();\n }, 100);\n};\n\nconst toggle = () => {\n if (!props.disabled) visible.value = !visible.value;\n};\n\n// 点击外部关闭\nonClickOutside(floatingEl, (e) => {\n if (props.trigger === 'click' && visible.value) {\n if (referenceEl.value?.contains(e.target as Node)) return;\n hide();\n }\n}, { ignore: [referenceEl] });\n\n// hover 模式下 popover 内容的事件处理\nconst onFloatingMouseenter = () => {\n if (props.trigger === 'hover') {\n show();\n }\n};\n\nconst onFloatingMouseleave = () => {\n if (props.trigger === 'hover') {\n delayedHide();\n }\n};\n\n// 触发器事件\nconst onTriggerClick = () => {\n if (props.trigger === 'click') {\n toggle();\n }\n};\n\nconst onTriggerMouseenter = () => {\n if (props.trigger === 'hover') {\n show();\n }\n};\n\nconst onTriggerMouseleave = () => {\n if (props.trigger === 'hover') {\n delayedHide();\n }\n};\n\nconst onTriggerFocus = () => {\n if (props.trigger === 'focus') {\n show();\n }\n};\n\nconst onTriggerBlur = () => {\n if (props.trigger === 'focus') {\n hide();\n }\n};\n\n// 暴露方法\ndefineExpose({\n show,\n hide,\n toggle\n});\n</script>\n\n<template>\n <span\n ref=\"referenceEl\"\n class=\"im-popover-trigger\"\n @click=\"onTriggerClick\"\n @mouseenter=\"onTriggerMouseenter\"\n @mouseleave=\"onTriggerMouseleave\"\n @focusin=\"onTriggerFocus\"\n @focusout=\"onTriggerBlur\"\n >\n <slot />\n </span>\n <Teleport :to=\"teleportTarget\" :disabled=\"teleportDisabled\">\n <Transition name=\"im-popover-fade\">\n <div\n v-if=\"visible\"\n ref=\"floatingEl\"\n :class=\"bem()\"\n :style=\"popoverStyles\"\n :data-placement=\"finalPlacement\"\n @mouseenter=\"onFloatingMouseenter\"\n @mouseleave=\"onFloatingMouseleave\"\n >\n <slot name=\"content\" />\n <div v-if=\"arrow\" ref=\"arrowEl\" :class=\"bem('arrow')\" :style=\"arrowStyles\" />\n </div>\n </Transition>\n </Teleport>\n</template>\n","import { renderSlot as _renderSlot, createElementVNode as _createElementVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, Transition as _Transition, withCtx as _withCtx, createVNode as _createVNode, Teleport as _Teleport, createBlock as _createBlock, Fragment as _Fragment } from \"vue\"\n\nconst _hoisted_1 = [\"data-placement\"]\n\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createElementVNode(\"span\", {\n ref: \"referenceEl\",\n class: \"im-popover-trigger\",\n onClick: $setup.onTriggerClick,\n onMouseenter: $setup.onTriggerMouseenter,\n onMouseleave: $setup.onTriggerMouseleave,\n onFocusin: $setup.onTriggerFocus,\n onFocusout: $setup.onTriggerBlur\n }, [\n _renderSlot(_ctx.$slots, \"default\")\n ], 544 /* NEED_HYDRATION, NEED_PATCH */),\n (_openBlock(), _createBlock(_Teleport, {\n to: $setup.teleportTarget,\n disabled: $props.teleportDisabled\n }, [\n _createVNode(_Transition, { name: \"im-popover-fade\" }, {\n default: _withCtx(() => [\n ($setup.visible)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n ref: \"floatingEl\",\n class: _normalizeClass($setup.bem()),\n style: _normalizeStyle($setup.popoverStyles),\n \"data-placement\": $setup.finalPlacement,\n onMouseenter: $setup.onFloatingMouseenter,\n onMouseleave: $setup.onFloatingMouseleave\n }, [\n _renderSlot(_ctx.$slots, \"content\"),\n ($props.arrow)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n ref: \"arrowEl\",\n class: _normalizeClass($setup.bem('arrow')),\n style: _normalizeStyle($setup.arrowStyles)\n }, null, 6 /* CLASS, STYLE */))\n : _createCommentVNode(\"v-if\", true)\n ], 46 /* CLASS, STYLE, PROPS, NEED_HYDRATION */, _hoisted_1))\n : _createCommentVNode(\"v-if\", true)\n ]),\n _: 3 /* FORWARDED */\n })\n ], 8 /* PROPS */, [\"to\", \"disabled\"]))\n ], 64 /* STABLE_FRAGMENT */))\n}","import script from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/base/im-popover/im-popover.vue?type=script\";import { render } from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/base/im-popover/im-popover.vue?type=template\"; script.render = render;script.__file = \"src/components/base/im-popover/im-popover.vue\";export default script;","<script setup lang=\"ts\">\n/**\n * ImTooltip - 提示组件\n * 基于 ImPopover 实现,hover 触发,深色背景\n */\n\nimport { createImBem } from '@incremark/shared';\nimport { ImPopover } from '../im-popover';\nimport type { ImTooltipProps } from './types';\n\nconst props = withDefaults(defineProps<ImTooltipProps>(), {\n placement: 'top',\n to: 'body',\n teleportDisabled: false\n});\n\nconst bem = createImBem('tooltip');\n</script>\n\n<template>\n <ImPopover\n v-if=\"content\"\n trigger=\"hover\"\n :placement=\"placement\"\n :offset=\"8\"\n :arrow=\"true\"\n :to=\"to\"\n :teleport-disabled=\"teleportDisabled\"\n >\n <slot />\n <template #content>\n <div :class=\"bem()\">\n {{ content }}\n </div>\n </template>\n </ImPopover>\n <slot v-else />\n</template>\n","import { renderSlot as _renderSlot, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return ($props.content)\n ? (_openBlock(), _createBlock($setup[\"ImPopover\"], {\n key: 0,\n trigger: \"hover\",\n placement: $props.placement,\n offset: 8,\n arrow: true,\n to: $props.to,\n \"teleport-disabled\": $props.teleportDisabled\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: _normalizeClass($setup.bem())\n }, _toDisplayString($props.content), 3 /* TEXT, CLASS */)\n ]),\n default: _withCtx(() => [\n _renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3 /* FORWARDED */\n }, 8 /* PROPS */, [\"placement\", \"to\", \"teleport-disabled\"]))\n : _renderSlot(_ctx.$slots, \"default\", { key: 1 })\n}","import script from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/base/im-tooltip/im-tooltip.vue?type=script\";import { render } from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/base/im-tooltip/im-tooltip.vue?type=template\"; script.render = render;script.__file = \"src/components/base/im-tooltip/im-tooltip.vue\";export default script;","/**\n * useUIAdapter - UI 适配器注入与获取\n */\n\nimport { inject, provide, type InjectionKey } from 'vue';\nimport type { UIAdapter } from '../types/adapter';\nimport { ImButton } from '../components/base/im-button';\nimport { ImTooltip } from '../components/base/im-tooltip';\n\nconst UI_ADAPTER_KEY: InjectionKey<UIAdapter> = Symbol('ui-adapter');\n\n/**\n * 默认 adapter,使用内置组件\n */\nconst defaultAdapter: UIAdapter = {\n Button: ImButton,\n Tooltip: ImTooltip,\n icons: {}\n};\n\n/**\n * 提供 UI 适配器\n * @param adapter 自定义适配器,会与默认适配器合并\n */\nexport function provideUIAdapter(adapter?: Partial<UIAdapter>) {\n const merged: UIAdapter = {\n ...defaultAdapter,\n ...adapter,\n icons: {\n ...defaultAdapter.icons,\n ...adapter?.icons\n }\n };\n provide(UI_ADAPTER_KEY, merged);\n}\n\n/**\n * 获取 UI 适配器\n * @returns UI 适配器对象\n */\nexport function useUIAdapter(): UIAdapter {\n return inject(UI_ADAPTER_KEY, defaultAdapter);\n}\n","<script setup lang=\"ts\">\n/**\n * ChainOfThoughtStep - 步骤组件\n *\n * 结构:图标 + 内容区(header/body/footer)\n * 根据状态显示默认图标,也支持自定义图标\n */\n\nimport { computed, useSlots } from 'vue';\nimport { createImBem } from '@incremark/shared';\nimport { Icon } from '@iconify/vue';\nimport { useCollapsible } from '../../composables';\nimport { SvgIcon } from '../svg-icon';\nimport type { ChainOfThoughtStepProps } from './types';\n\nconst props = withDefaults(defineProps<ChainOfThoughtStepProps>(), {\n status: 'pending',\n showDivider: false,\n collapsible: false,\n defaultExpanded: true\n});\n\nconst slots = useSlots();\nconst bem = createImBem('cot-step');\n\nconst { expanded, toggle: baseToggle } = useCollapsible(props.defaultExpanded);\nconst toggle = () => {\n if (props.collapsible) baseToggle();\n};\n\nconst hasHeader = computed(() => !!props.label || !!slots.header);\nconst hasFooter = computed(() => !!slots.footer);\n</script>\n\n<template>\n <div :class=\"bem(undefined, { [status]: true, collapsible, collapsed: collapsible && !expanded })\">\n <!-- 图标位置 -->\n <SvgIcon :class=\"bem('icon', { 'with-divider': showDivider })\">\n <slot name=\"icon\">\n <!-- 默认图标 -->\n <Icon v-if=\"status === 'pending'\" icon=\"ph:circle\" />\n <Icon v-else-if=\"status === 'active'\" icon=\"ph:spinner\" :class=\"bem('spinner')\" />\n <Icon v-else-if=\"status === 'complete'\" icon=\"ph:check-circle\" />\n <Icon v-else-if=\"status === 'error'\" icon=\"ph:x-circle\" />\n </slot>\n </SvgIcon>\n\n <!-- 内容区域 -->\n <div :class=\"bem('content')\">\n <!-- Header: label prop 或 header slot -->\n <div v-if=\"hasHeader\" :class=\"bem('header')\" @click=\"toggle\">\n <slot name=\"header\">{{ label }}</slot>\n <SvgIcon v-if=\"collapsible\" :class=\"bem('chevron')\">\n <Icon icon=\"ph:caret-right\" />\n </SvgIcon>\n </div>\n\n <!-- Body: 默认 slot -->\n <div v-if=\"$slots.default && (!collapsible || expanded)\" :class=\"bem('body')\">\n <slot />\n </div>\n\n <!-- Footer: footer slot -->\n <div v-if=\"hasFooter && (!collapsible || expanded)\" :class=\"bem('footer')\">\n <slot name=\"footer\" />\n </div>\n </div>\n </div>\n</template>\n","import { createCommentVNode as _createCommentVNode, renderSlot as _renderSlot, openBlock as _openBlock, createBlock as _createBlock, normalizeClass as _normalizeClass, withCtx as _withCtx, createVNode as _createVNode, toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode } from \"vue\"\n\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass($setup.bem(undefined, { [$props.status]: true, collapsible: $props.collapsible, collapsed: $props.collapsible && !$setup.expanded }))\n }, [\n _createCommentVNode(\" 图标位置 \"),\n _createVNode($setup[\"SvgIcon\"], {\n class: _normalizeClass($setup.bem('icon', { 'with-divider': $props.showDivider }))\n }, {\n default: _withCtx(() => [\n _renderSlot(_ctx.$slots, \"icon\", {}, () => [\n _createCommentVNode(\" 默认图标 \"),\n ($props.status === 'pending')\n ? (_openBlock(), _createBlock($setup[\"Icon\"], {\n key: 0,\n icon: \"ph:circle\"\n }))\n : ($props.status === 'active')\n ? (_openBlock(), _createBlock($setup[\"Icon\"], {\n key: 1,\n icon: \"ph:spinner\",\n class: _normalizeClass($setup.bem('spinner'))\n }, null, 8 /* PROPS */, [\"class\"]))\n : ($props.status === 'complete')\n ? (_openBlock(), _createBlock($setup[\"Icon\"], {\n key: 2,\n icon: \"ph:check-circle\"\n }))\n : ($props.status === 'error')\n ? (_openBlock(), _createBlock($setup[\"Icon\"], {\n key: 3,\n icon: \"ph:x-circle\"\n }))\n : _createCommentVNode(\"v-if\", true)\n ])\n ]),\n _: 3 /* FORWARDED */\n }, 8 /* PROPS */, [\"class\"]),\n _createCommentVNode(\" 内容区域 \"),\n _createElementVNode(\"div\", {\n class: _normalizeClass($setup.bem('content'))\n }, [\n _createCommentVNode(\" Header: label prop 或 header slot \"),\n ($setup.hasHeader)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass($setup.bem('header')),\n onClick: $setup.toggle\n }, [\n _renderSlot(_ctx.$slots, \"header\", {}, () => [\n _createTextVNode(_toDisplayString($props.label), 1 /* TEXT */)\n ]),\n ($props.collapsible)\n ? (_openBlock(), _createBlock($setup[\"SvgIcon\"], {\n key: 0,\n class: _normalizeClass($setup.bem('chevron'))\n }, {\n default: _withCtx(() => [\n _createVNode($setup[\"Icon\"], { icon: \"ph:caret-right\" })\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"class\"]))\n : _createCommentVNode(\"v-if\", true)\n ], 2 /* CLASS */))\n : _createCommentVNode(\"v-if\", true),\n _createCommentVNode(\" Body: 默认 slot \"),\n (_ctx.$slots.default && (!$props.collapsible || $setup.expanded))\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: _normalizeClass($setup.bem('body'))\n }, [\n _renderSlot(_ctx.$slots, \"default\")\n ], 2 /* CLASS */))\n : _createCommentVNode(\"v-if\", true),\n _createCommentVNode(\" Footer: footer slot \"),\n ($setup.hasFooter && (!$props.collapsible || $setup.expanded))\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 2,\n class: _normalizeClass($setup.bem('footer'))\n }, [\n _renderSlot(_ctx.$slots, \"footer\")\n ], 2 /* CLASS */))\n : _createCommentVNode(\"v-if\", true)\n ], 2 /* CLASS */)\n ], 2 /* CLASS */))\n}","import script from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/chain-of-thought/chain-of-thought-step.vue?type=script\";import { render } from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/chain-of-thought/chain-of-thought-step.vue?type=template\"; script.render = render;script.__file = \"src/components/chain-of-thought/chain-of-thought-step.vue\";export default script;","<script setup lang=\"ts\">\n/**\n * ReasoningMessage - 推理内容渲染器\n *\n * 只负责渲染推理内容(Markdown),不包含折叠逻辑\n * 折叠功能请使用 ChainOfThought 组件包裹\n */\n\nimport { computed } from 'vue';\nimport { IncremarkContent } from '@incremark/vue';\nimport { createImBem } from '@incremark/shared';\nimport type { ReasoningMessageProps } from './types';\n\nconst props = withDefaults(defineProps<ReasoningMessageProps>(), {\n streaming: false,\n plainText: false,\n blockquote: false\n});\n\nconst bem = createImBem('reasoning');\n\nconst incremarkOptions = computed(() => ({\n gfm: true,\n htmlTree: true,\n containers: true,\n math: true,\n ...props.incremarkOptions\n}));\n</script>\n\n<template>\n <div :class=\"bem(undefined, { blockquote })\">\n <template v-if=\"plainText\">{{ content }}</template>\n <IncremarkContent\n v-else\n :content=\"content\"\n :is-finished=\"!streaming\"\n :incremark-options=\"incremarkOptions\"\n :custom-containers=\"customContainers\"\n :custom-code-blocks=\"customCodeBlocks\"\n :code-block-configs=\"codeBlockConfigs\"\n :pending-class=\"pendingClass\"\n />\n </div>\n</template>\n","import { toDisplayString as _toDisplayString, createTextVNode as _createTextVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode, createBlock as _createBlock, normalizeClass as _normalizeClass } from \"vue\"\n\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass($setup.bem(undefined, { blockquote: $props.blockquote }))\n }, [\n ($props.plainText)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createTextVNode(_toDisplayString($props.content), 1 /* TEXT */)\n ], 64 /* STABLE_FRAGMENT */))\n : (_openBlock(), _createBlock($setup[\"IncremarkContent\"], {\n key: 1,\n content: $props.content,\n \"is-finished\": !$props.streaming,\n \"incremark-options\": $setup.incremarkOptions,\n \"custom-containers\": $props.customContainers,\n \"custom-code-blocks\": $props.customCodeBlocks,\n \"code-block-configs\": $props.codeBlockConfigs,\n \"pending-class\": $props.pendingClass\n }, null, 8 /* PROPS */, [\"content\", \"is-finished\", \"incremark-options\", \"custom-containers\", \"custom-code-blocks\", \"code-block-configs\", \"pending-class\"]))\n ], 2 /* CLASS */))\n}","import script from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/reasoning-message/reasoning-message.vue?type=script\";import { render } from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/reasoning-message/reasoning-message.vue?type=template\"; script.render = render;script.__file = \"src/components/reasoning-message/reasoning-message.vue\";export default script;","<script setup lang=\"ts\">\n/**\n * TextMessage - 文本消息渲染器\n *\n * 支持 Markdown 和纯文本两种格式\n * 集成 IncremarkContent 实现增量渲染\n */\n\nimport { computed } from 'vue';\nimport { IncremarkContent } from '@incremark/vue';\nimport { createImBem } from '@incremark/shared';\nimport type { TextMessageProps } from './types';\n\nconst props = withDefaults(defineProps<TextMessageProps>(), {\n streaming: false\n});\n\nconst bem = createImBem('text-message');\n\nconst incremarkOptions = computed(() => ({\n gfm: true,\n htmlTree: true,\n containers: true,\n math: true,\n ...props.incremarkOptions\n}));\n\nconst isMarkdown = computed(() => props.part.format !== 'plain');\n</script>\n\n<template>\n <!-- Markdown 格式 -->\n <IncremarkContent\n v-if=\"isMarkdown\"\n :content=\"part.content\"\n :is-finished=\"!streaming\"\n :incremark-options=\"incremarkOptions\"\n :custom-containers=\"customContainers\"\n :custom-code-blocks=\"customCodeBlocks\"\n :code-block-configs=\"codeBlockConfigs\"\n :pending-class=\"pendingClass\"\n />\n\n <!-- 纯文本格式 -->\n <div v-else :class=\"bem('plain')\">\n {{ part.content }}\n </div>\n</template>\n","import { createCommentVNode as _createCommentVNode, openBlock as _openBlock, createBlock as _createBlock, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, Fragment as _Fragment, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createCommentVNode(\" Markdown 格式 \"),\n ($setup.isMarkdown)\n ? (_openBlock(), _createBlock($setup[\"IncremarkContent\"], {\n key: 0,\n content: $props.part.content,\n \"is-finished\": !$props.streaming,\n \"incremark-options\": $setup.incremarkOptions,\n \"custom-containers\": $props.customContainers,\n \"custom-code-blocks\": $props.customCodeBlocks,\n \"code-block-configs\": $props.codeBlockConfigs,\n \"pending-class\": $props.pendingClass\n }, null, 8 /* PROPS */, [\"content\", \"is-finished\", \"incremark-options\", \"custom-containers\", \"custom-code-blocks\", \"code-block-configs\", \"pending-class\"]))\n : (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createCommentVNode(\" 纯文本格式 \"),\n _createElementVNode(\"div\", {\n class: _normalizeClass($setup.bem('plain'))\n }, _toDisplayString($props.part.content), 3 /* TEXT, CLASS */)\n ], 2112 /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */))\n ], 2112 /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */))\n}","import script from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/text-message/text-message.vue?type=script\";import { render } from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/text-message/text-message.vue?type=template\"; script.render = render;script.__file = \"src/components/text-message/text-message.vue\";export default script;","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { Icon } from '@iconify/vue';\nimport { createImBem } from '@incremark/shared';\nimport { useChainOfThought } from './composables';\nimport ChainOfThoughtStep from './chain-of-thought-step.vue';\nimport { SvgIcon } from '../svg-icon';\nimport { ReasoningMessage } from '../reasoning-message';\nimport { TextMessage } from '../text-message';\nimport type { ChainOfThoughtProps, ComponentRegistry } from './types';\n\nconst defaultComponents: ComponentRegistry = {\n reasoning: ReasoningMessage,\n text: TextMessage\n};\n\nconst props = withDefaults(defineProps<ChainOfThoughtProps>(), {\n title: '思考过程',\n loading: false,\n loadingAnimation: 'pulse',\n locale: 'zh'\n});\n\nconst expanded = defineModel<boolean>('expanded', { default: true });\nconst bem = createImBem('cot');\nconst { duration } = useChainOfThought(props);\n\nconst mergedComponents = computed(() => ({\n ...defaultComponents,\n ...props.components\n}));\n\nconst contentStyle = computed(() => {\n if (!props.maxHeight) return undefined;\n return {\n maxHeight: typeof props.maxHeight === 'number' ? `${props.maxHeight}px` : props.maxHeight,\n overflowY: 'auto' as const\n };\n});\n\nfunction toggle() {\n expanded.value = !expanded.value;\n}\n</script>\n\n<template>\n <div :class=\"bem()\">\n <div :class=\"bem('header')\" @click=\"toggle\">\n <SvgIcon v-if=\"loading\" :class=\"bem('icon', { loading: true, [loadingAnimation]: true })\">\n <slot name=\"loading-icon\"><Icon icon=\"ph:brain\" /></slot>\n </SvgIcon>\n <SvgIcon v-else-if=\"$slots.icon\" :class=\"bem('icon')\">\n <slot name=\"icon\" />\n </SvgIcon>\n <div :class=\"bem('title')\">\n {{ title }}\n <span v-if=\"duration\" :class=\"bem('duration')\">{{ duration }}</span>\n </div>\n <SvgIcon :class=\"bem('chevron', { expanded })\">\n <Icon icon=\"ph:caret-right\" />\n </SvgIcon>\n </div>\n\n <div v-show=\"expanded\" :class=\"bem('content')\" :style=\"contentStyle\">\n <template v-if=\"steps?.length\">\n <ChainOfThoughtStep\n v-for=\"(step, index) in steps\"\n :key=\"index\"\n :label=\"step.label\"\n :status=\"step.status\"\n :show-divider=\"step.showDivider\"\n :collapsible=\"step.collapsible\"\n :default-expanded=\"step.defaultExpanded\"\n >\n <template v-if=\"step.icon\" #icon>\n <component :is=\"step.icon\" />\n </template>\n <component\n v-if=\"mergedComponents[step.type]\"\n :is=\"mergedComponents[step.type]\"\n v-bind=\"step.data || {}\"\n />\n <div v-else>Unknown step type: {{ step.type }}</div>\n </ChainOfThoughtStep>\n </template>\n <slot v-else />\n </div>\n </div>\n</template>\n","import { renderSlot as _renderSlot, createVNode as _createVNode, normalizeClass as _normalizeClass, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode, createElementVNode as _createElementVNode, renderList as _renderList, Fragment as _Fragment, resolveDynamicComponent as _resolveDynamicComponent, mergeProps as _mergeProps, createSlots as _createSlots, vShow as _vShow, normalizeStyle as _normalizeStyle, withDirectives as _withDirectives } from \"vue\"\n\nconst _hoisted_1 = { key: 1 }\n\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass($setup.bem())\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass($setup.bem('header')),\n onClick: $setup.toggle\n }, [\n ($props.loading)\n ? (_openBlock(), _createBlock($setup[\"SvgIcon\"], {\n key: 0,\n class: _normalizeClass($setup.bem('icon', { loading: true, [$props.loadingAnimation]: true }))\n }, {\n default: _withCtx(() => [\n _renderSlot(_ctx.$slots, \"loading-icon\", {}, () => [\n _createVNode($setup[\"Icon\"], { icon: \"ph:brain\" })\n ])\n ]),\n _: 3 /* FORWARDED */\n }, 8 /* PROPS */, [\"class\"]))\n : (_ctx.$slots.icon)\n ? (_openBlock(), _createBlock($setup[\"SvgIcon\"], {\n key: 1,\n class: _normalizeClass($setup.bem('icon'))\n }, {\n default: _withCtx(() => [\n _renderSlot(_ctx.$slots, \"icon\")\n ]),\n _: 3 /* FORWARDED */\n }, 8 /* PROPS */, [\"class\"]))\n : _createCommentVNode(\"v-if\", true),\n _createElementVNode(\"div\", {\n class: _normalizeClass($setup.bem('title'))\n }, [\n _createTextVNode(_toDisplayString($props.title) + \" \", 1 /* TEXT */),\n ($setup.duration)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: _normalizeClass($setup.bem('duration'))\n }, _toDisplayString($setup.duration), 3 /* TEXT, CLASS */))\n : _createCommentVNode(\"v-if\", true)\n ], 2 /* CLASS */),\n _createVNode($setup[\"SvgIcon\"], {\n class: _normalizeClass($setup.bem('chevron', { expanded: $setup.expanded }))\n }, {\n default: _withCtx(() => [\n _createVNode($setup[\"Icon\"], { icon: \"ph:caret-right\" })\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"class\"])\n ], 2 /* CLASS */),\n _withDirectives(_createElementVNode(\"div\", {\n class: _normalizeClass($setup.bem('content')),\n style: _normalizeStyle($setup.contentStyle)\n }, [\n ($props.steps?.length)\n ? (_openBlock(true), _createElementBlock(_Fragment, { key: 0 }, _renderList($props.steps, (step, index) => {\n return (_openBlock(), _createBlock($setup[\"ChainOfThoughtStep\"], {\n key: index,\n label: step.label,\n status: step.status,\n \"show-divider\": step.showDivider,\n collapsible: step.collapsible,\n \"default-expanded\": step.defaultExpanded\n }, _createSlots({\n default: _withCtx(() => [\n ($setup.mergedComponents[step.type])\n ? (_openBlock(), _createBlock(_resolveDynamicComponent($setup.mergedComponents[step.type]), _mergeProps({\n key: 0,\n ref_for: true\n }, step.data || {}), null, 16 /* FULL_PROPS */))\n : (_openBlock(), _createElementBlock(\"div\", _hoisted_1, \"Unknown step type: \" + _toDisplayString(step.type), 1 /* TEXT */))\n ]),\n _: 2 /* DYNAMIC */\n }, [\n (step.icon)\n ? {\n name: \"icon\",\n fn: _withCtx(() => [\n (_openBlock(), _createBlock(_resolveDynamicComponent(step.icon)))\n ]),\n key: \"0\"\n }\n : undefined\n ]), 1032 /* PROPS, DYNAMIC_SLOTS */, [\"label\", \"status\", \"show-divider\", \"collapsible\", \"default-expanded\"]))\n }), 128 /* KEYED_FRAGMENT */))\n : _renderSlot(_ctx.$slots, \"default\", { key: 1 })\n ], 6 /* CLASS, STYLE */), [\n [_vShow, $setup.expanded]\n ])\n ], 2 /* CLASS */))\n}","import script from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/chain-of-thought/chain-of-thought.vue?type=script\";import { render } from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/chain-of-thought/chain-of-thought.vue?type=template\"; script.render = render;script.__file = \"src/components/chain-of-thought/chain-of-thought.vue\";export default script;","<script setup lang=\"ts\">\n/**\n * ToolCall - 工具调用渲染器\n *\n * 支持自定义工具渲染器注册\n * 支持自定义输出渲染器注册\n * 根据工具状态显示不同 UI\n */\n\nimport { computed, ref } from 'vue';\nimport { Icon } from '@iconify/vue';\nimport { createImBem } from '@incremark/shared';\nimport { TOOL_CALL_STATES } from '@incremark/chat-core';\nimport { SvgIcon } from '../svg-icon';\nimport type { ToolCallProps, ToolRendererProps, OutputRendererProps, StateLabels, StateCategories } from './types';\n\nconst props = withDefaults(defineProps<ToolCallProps>(), {\n showArgs: true,\n showOutput: true,\n defaultExpanded: true\n});\n\nconst expanded = ref(props.defaultExpanded);\n\nfunction toggle() {\n expanded.value = !expanded.value;\n}\n\nconst bem = createImBem('tool-call');\n\n// 默认状态分类\nconst defaultStateCategories: StateCategories = {\n loading: [TOOL_CALL_STATES.INPUT_STREAMING, TOOL_CALL_STATES.EXECUTING],\n complete: [TOOL_CALL_STATES.OUTPUT_AVAILABLE],\n error: [TOOL_CALL_STATES.OUTPUT_ERROR],\n denied: [TOOL_CALL_STATES.OUTPUT_DENIED],\n approval: [TOOL_CALL_STATES.APPROVAL_REQUESTED]\n};\n\n// 合并状态分类\nconst mergedCategories = computed(() => ({\n loading: [...(defaultStateCategories.loading || []), ...(props.stateCategories?.loading || [])],\n complete: [...(defaultStateCategories.complete || []), ...(props.stateCategories?.complete || [])],\n error: [...(defaultStateCategories.error || []), ...(props.stateCategories?.error || [])],\n denied: [...(defaultStateCategories.denied || []), ...(props.stateCategories?.denied || [])],\n approval: [...(defaultStateCategories.approval || []), ...(props.stateCategories?.approval || [])]\n}));\n\n// 获取对应的工具渲染器\nconst toolRenderer = computed(() => {\n if (props.tools?.[props.part.toolName]) {\n return props.tools[props.part.toolName];\n }\n return props.defaultRenderer;\n});\n\n// 获取对应的输出渲染器\nconst outputRenderer = computed(() => {\n return props.outputRenderers?.[props.part.toolName];\n});\n\n// 传递给渲染器的 props\nconst rendererProps = computed<ToolRendererProps>(() => ({\n toolCallId: props.part.toolCallId,\n toolName: props.part.toolName,\n args: props.part.args,\n state: props.part.state,\n output: props.part.output,\n error: props.part.error\n}));\n\n// 传递给输出渲染器的 props\nconst outputRendererProps = computed<OutputRendererProps>(() => ({\n toolName: props.part.toolName,\n output: props.part.output\n}));\n\n// 状态判断 - 基于 stateCategories\nconst isLoading = computed(() => mergedCategories.value.loading.includes(props.part.state));\nconst isComplete = computed(() => mergedCategories.value.complete.includes(props.part.state));\nconst isError = computed(() => mergedCategories.value.error.includes(props.part.state));\nconst isDenied = computed(() => mergedCategories.value.denied.includes(props.part.state));\nconst isAwaitingApproval = computed(() => mergedCategories.value.approval.includes(props.part.state));\n\n// 格式化参数显示\nconst formattedArgs = computed(() => {\n try {\n return JSON.stringify(props.part.args, null, 2);\n } catch {\n return String(props.part.args);\n }\n});\n\n// 格式化结果显示\nconst formattedOutput = computed(() => {\n if (props.part.output === undefined) return '';\n try {\n return JSON.stringify(props.part.output, null, 2);\n } catch {\n return String(props.part.output);\n }\n});\n\n// 默认状态标签\nconst defaultStateLabels: StateLabels = {\n [TOOL_CALL_STATES.INPUT_STREAMING]: 'Streaming...',\n [TOOL_CALL_STATES.INPUT_AVAILABLE]: 'Ready',\n [TOOL_CALL_STATES.APPROVAL_REQUESTED]: 'Awaiting Approval',\n [TOOL_CALL_STATES.APPROVAL_RESPONDED]: 'Approved',\n [TOOL_CALL_STATES.EXECUTING]: 'Executing...',\n [TOOL_CALL_STATES.OUTPUT_AVAILABLE]: 'Completed',\n [TOOL_CALL_STATES.OUTPUT_ERROR]: 'Error',\n [TOOL_CALL_STATES.OUTPUT_DENIED]: 'Denied'\n};\n\n// 合并状态标签\nconst stateLabel = computed(() => {\n const labels = { ...defaultStateLabels, ...props.stateLabels };\n return labels[props.part.state] || props.part.state;\n});\n</script>\n\n<template>\n <div\n :class=\"[\n bem(),\n bem('', props.part.state),\n { [bem('', 'loading')]: isLoading }\n ]\"\n :data-tool-name=\"part.toolName\"\n :data-tool-state=\"part.state\"\n >\n <!-- 自定义渲染器 -->\n <component\n v-if=\"toolRenderer\"\n :is=\"toolRenderer\"\n v-bind=\"rendererProps\"\n />\n\n <!-- 默认渲染器 -->\n <template v-else>\n <!-- 头部:工具名称 + 状态 -->\n <div :class=\"bem('header')\" @click=\"toggle\">\n <div :class=\"bem('header-left')\">\n <SvgIcon :class=\"bem('chevron', { expanded })\">\n <Icon icon=\"ph:caret-right\" />\n </SvgIcon>\n <span :class=\"bem('name')\">{{ part.toolName }}</span>\n </div>\n <span :class=\"[bem('state'), bem('state', part.state)]\">\n {{ stateLabel }}\n </span>\n </div>\n\n <template v-if=\"expanded\">\n <!-- 参数 -->\n <div v-if=\"showArgs && Object.keys(part.args).length > 0\" :class=\"bem('args')\">\n <pre>{{ formattedArgs }}</pre>\n </div>\n\n <!-- 结果:优先使用自定义输出渲染器 -->\n <div v-if=\"showOutput && isComplete && part.output !== undefined\" :class=\"bem('output')\">\n <component\n v-if=\"outputRenderer\"\n :is=\"outputRenderer\"\n v-bind=\"outputRendererProps\"\n />\n <pre v-else>{{ formattedOutput }}</pre>\n </div>\n\n <!-- 错误 -->\n <div v-if=\"isError && part.error\" :class=\"bem('error')\">\n {{ part.error }}\n </div>\n\n <!-- 拒绝 -->\n <div v-if=\"isDenied\" :class=\"bem('denied')\">\n 用户已拒绝执行此操作\n </div>\n\n <!-- 等待审批 -->\n <div v-if=\"isAwaitingApproval\" :class=\"bem('approval')\">\n <slot name=\"approval\">\n <span>此操作需要您的确认</span>\n </slot>\n </div>\n </template>\n </template>\n </div>\n</template>\n","import { createCommentVNode as _createCommentVNode, resolveDynamicComponent as _resolveDynamicComponent, normalizeProps as _normalizeProps, guardReactiveProps as _guardReactiveProps, openBlock as _openBlock, createBlock as _createBlock, mergeProps as _mergeProps, createVNode as _createVNode, normalizeClass as _normalizeClass, withCtx as _withCtx, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, renderSlot as _renderSlot, Fragment as _Fragment } from \"vue\"\n\nconst _hoisted_1 = [\"data-tool-name\", \"data-tool-state\"]\nconst _hoisted_2 = { key: 1 }\n\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([\n $setup.bem(),\n $setup.bem('', $setup.props.part.state),\n { [$setup.bem('', 'loading')]: $setup.isLoading }\n ]),\n \"data-tool-name\": $props.part.toolName,\n \"data-tool-state\": $props.part.state\n }, [\n _createCommentVNode(\" 自定义渲染器 \"),\n ($setup.toolRenderer)\n ? (_openBlock(), _createBlock(_resolveDynamicComponent($setup.toolRenderer), _normalizeProps(_mergeProps({ key: 0 }, $setup.rendererProps)), null, 16 /* FULL_PROPS */))\n : (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createCommentVNode(\" 默认渲染器 \"),\n _createCommentVNode(\" 头部:工具名称 + 状态 \"),\n _createElementVNode(\"div\", {\n class: _normalizeClass($setup.bem('header')),\n onClick: $setup.toggle\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass($setup.bem('header-left'))\n }, [\n _createVNode($setup[\"SvgIcon\"], {\n class: _normalizeClass($setup.bem('chevron', { expanded: $setup.expanded }))\n }, {\n default: _withCtx(() => [\n _createVNode($setup[\"Icon\"], { icon: \"ph:caret-right\" })\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"class\"]),\n _createElementVNode(\"span\", {\n class: _normalizeClass($setup.bem('name'))\n }, _toDisplayString($props.part.toolName), 3 /* TEXT, CLASS */)\n ], 2 /* CLASS */),\n _createElementVNode(\"span\", {\n class: _normalizeClass([$setup.bem('state'), $setup.bem('state', $props.part.state)])\n }, _toDisplayString($setup.stateLabel), 3 /* TEXT, CLASS */)\n ], 2 /* CLASS */),\n ($setup.expanded)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createCommentVNode(\" 参数 \"),\n ($props.showArgs && Object.keys($props.part.args).length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass($setup.bem('args'))\n }, [\n _createElementVNode(\"pre\", null, _toDisplayString($setup.formattedArgs), 1 /* TEXT */)\n ], 2 /* CLASS */))\n : _createCommentVNode(\"v-if\", true),\n _createCommentVNode(\" 结果:优先使用自定义输出渲染器 \"),\n ($props.showOutput && $setup.isComplete && $props.part.output !== undefined)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: _normalizeClass($setup.bem('output'))\n }, [\n ($setup.outputRenderer)\n ? (_openBlock(), _createBlock(_resolveDynamicComponent($setup.outputRenderer), _normalizeProps(_mergeProps({ key: 0 }, $setup.outputRendererProps)), null, 16 /* FULL_PROPS */))\n : (_openBlock(), _createElementBlock(\"pre\", _hoisted_2, _toDisplayString($setup.formattedOutput), 1 /* TEXT */))\n ], 2 /* CLASS */))\n : _createCommentVNode(\"v-if\", true),\n _createCommentVNode(\" 错误 \"),\n ($setup.isError && $props.part.error)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 2,\n class: _normalizeClass($setup.bem('error'))\n }, _toDisplayString($props.part.error), 3 /* TEXT, CLASS */))\n : _createCommentVNode(\"v-if\", true),\n _createCommentVNode(\" 拒绝 \"),\n ($setup.isDenied)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 3,\n class: _normalizeClass($setup.bem('denied'))\n }, \" 用户已拒绝执行此操作 \", 2 /* CLASS */))\n : _createCommentVNode(\"v-if\", true),\n _createCommentVNode(\" 等待审批 \"),\n ($setup.isAwaitingApproval)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 4,\n class: _normalizeClass($setup.bem('approval'))\n }, [\n _renderSlot(_ctx.$slots, \"approval\", {}, () => [\n _cache[0] || (_cache[0] = _createElementVNode(\"span\", null, \"此操作需要您的确认\", -1 /* CACHED */))\n ])\n ], 2 /* CLASS */))\n : _createCommentVNode(\"v-if\", true)\n ], 64 /* STABLE_FRAGMENT */))\n : _createCommentVNode(\"v-if\", true)\n ], 64 /* STABLE_FRAGMENT */))\n ], 10 /* CLASS, PROPS */, _hoisted_1))\n}","import script from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/tool-call/tool-call.vue?type=script\";import { render } from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/tool-call/tool-call.vue?type=template\"; script.render = render;script.__file = \"src/components/tool-call/tool-call.vue\";export default script;","<script setup lang=\"ts\">\n/**\n * PartRenderer - Part 类型分发渲染器\n *\n * 根据 Part 类型渲染对应的组件\n * 支持通过 parts prop 注册自定义 Part 组件\n * 支持通过 slot 覆盖特定类型的渲染\n */\n\nimport { computed } from 'vue';\nimport { createImBem } from '@incremark/shared';\nimport TextMessage from '../text-message/text-message.vue';\nimport ReasoningMessage from '../reasoning-message/reasoning-message.vue';\nimport ToolCall from '../tool-call/tool-call.vue';\nimport type { PartRendererProps } from './types';\n\nconst props = withDefaults(defineProps<PartRendererProps>(), {\n streaming: false\n});\n\nconst bem = createImBem('part-renderer');\n\n// 获取自定义组件\nconst customComponent = computed(() => {\n return props.parts?.[props.part.type];\n});\n\n// 是否为内置类型\nconst isBuiltinType = computed(() => {\n return ['text', 'reasoning', 'tool-call'].includes(props.part.type);\n});\n</script>\n\n<template>\n <!-- 优先使用 slot 覆盖 -->\n <slot :name=\"part.type\" :part=\"part\" :streaming=\"streaming\">\n <!-- 自定义组件 -->\n <component\n v-if=\"customComponent\"\n :is=\"customComponent\"\n :part=\"part\"\n :streaming=\"streaming\"\n />\n\n <!-- TextPart -->\n <TextMessage\n v-else-if=\"part.type === 'text'\"\n :part=\"part\"\n :streaming=\"streaming\"\n :incremark-options=\"incremarkOptions\"\n :custom-containers=\"customContainers\"\n :custom-code-blocks=\"customCodeBlocks\"\n :code-block-configs=\"codeBlockConfigs\"\n :pending-class=\"pendingClass\"\n />\n\n <!-- ReasoningPart -->\n <ReasoningMessage\n v-else-if=\"part.type === 'reasoning'\"\n :content=\"part.content\"\n :streaming=\"streaming\"\n :incremark-options=\"incremarkOptions\"\n :custom-containers=\"customContainers\"\n :custom-code-blocks=\"customCodeBlocks\"\n :code-block-configs=\"codeBlockConfigs\"\n :pending-class=\"pendingClass\"\n />\n\n <!-- ToolCallPart -->\n <ToolCall\n v-else-if=\"part.type === 'tool-call'\"\n :part=\"part\"\n />\n\n <!-- 未知类型 -->\n <div v-else :class=\"bem('unknown')\">\n Unknown Part Type: {{ part.type }}\n </div>\n </slot>\n</template>\n","import { createCommentVNode as _createCommentVNode, renderSlot as _renderSlot, resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, createVNode as _createVNode, Fragment as _Fragment, createElementBlock as _createElementBlock, toDisplayString as _toDisplayString, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode } from \"vue\"\n\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createCommentVNode(\" 优先使用 slot 覆盖 \"),\n _renderSlot(_ctx.$slots, $props.part.type, {\n part: $props.part,\n streaming: $props.streaming\n }, () => [\n _createCommentVNode(\" 自定义组件 \"),\n ($setup.customComponent)\n ? (_openBlock(), _createBlock(_resolveDynamicComponent($setup.customComponent), {\n key: 0,\n part: $props.part,\n streaming: $props.streaming\n }, null, 8 /* PROPS */, [\"part\", \"streaming\"]))\n : ($props.part.type === 'text')\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createCommentVNode(\" TextPart \"),\n _createVNode($setup[\"TextMessage\"], {\n part: $props.part,\n streaming: $props.streaming,\n \"incremark-options\": $props.incremarkOptions,\n \"custom-containers\": $props.customContainers,\n \"custom-code-blocks\": $props.customCodeBlocks,\n \"code-block-configs\": $props.codeBlockConfigs,\n \"pending-class\": $props.pendingClass\n }, null, 8 /* PROPS */, [\"part\", \"streaming\", \"incremark-options\", \"custom-containers\", \"custom-code-blocks\", \"code-block-configs\", \"pending-class\"])\n ], 2112 /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */))\n : ($props.part.type === 'reasoning')\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 2 }, [\n _createCommentVNode(\" ReasoningPart \"),\n _createVNode($setup[\"ReasoningMessage\"], {\n content: $props.part.content,\n streaming: $props.streaming,\n \"incremark-options\": $props.incremarkOptions,\n \"custom-containers\": $props.customContainers,\n \"custom-code-blocks\": $props.customCodeBlocks,\n \"code-block-configs\": $props.codeBlockConfigs,\n \"pending-class\": $props.pendingClass\n }, null, 8 /* PROPS */, [\"content\", \"streaming\", \"incremark-options\", \"custom-containers\", \"custom-code-blocks\", \"code-block-configs\", \"pending-class\"])\n ], 2112 /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */))\n : ($props.part.type === 'tool-call')\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 3 }, [\n _createCommentVNode(\" ToolCallPart \"),\n _createVNode($setup[\"ToolCall\"], { part: $props.part }, null, 8 /* PROPS */, [\"part\"])\n ], 2112 /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */))\n : (_openBlock(), _createElementBlock(_Fragment, { key: 4 }, [\n _createCommentVNode(\" 未知类型 \"),\n _createElementVNode(\"div\", {\n class: _normalizeClass($setup.bem('unknown'))\n }, \" Unknown Part Type: \" + _toDisplayString($props.part.type), 3 /* TEXT, CLASS */)\n ], 2112 /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */))\n ])\n ], 2112 /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */))\n}","import script from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/message-renderer/part-renderer.vue?type=script\";import { render } from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/message-renderer/part-renderer.vue?type=template\"; script.render = render;script.__file = \"src/components/message-renderer/part-renderer.vue\";export default script;","<script setup lang=\"ts\">\n/**\n * SourceReference - 来源引用渲染器\n */\n\nimport { computed } from 'vue';\nimport { Icon } from '@iconify/vue';\nimport { createImBem } from '@incremark/shared';\nimport SvgIcon from '../svg-icon/svg-icon.vue';\nimport type { SourceReferenceProps } from './types';\n\nconst props = withDefaults(defineProps<SourceReferenceProps>(), {\n openInNewTab: true\n});\n\nconst bem = createImBem('source-reference');\n\nconst isUrl = computed(() => props.part.sourceType === 'url');\nconst isDocument = computed(() => props.part.sourceType === 'document');\n\nconst linkTarget = computed(() => props.openInNewTab ? '_blank' : undefined);\nconst linkRel = computed(() => props.openInNewTab ? 'noopener noreferrer' : undefined);\n\n// 文件类型图标和颜色映射\ninterface FileTypeInfo {\n icon: string;\n color: string;\n}\n\n// 常见文件类型映射(基于 mediaType 或文件扩展名)\nconst fileTypeMap: Record<string, FileTypeInfo> = {\n // PDF - 红色\n 'application/pdf': { icon: 'mdi:file-pdf-box', color: '#FF4B4B' },\n\n // Word - 蓝色\n 'application/msword': { icon: 'mdi:file-word', color: '#2B579A' },\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': { icon: 'mdi:file-word', color: '#2B579A' },\n\n // Excel - 绿色\n 'application/vnd.ms-excel': { icon: 'mdi:file-excel', color: '#217346' },\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': { icon: 'mdi:file-excel', color: '#217346' },\n\n // PowerPoint - 橙色\n 'application/vnd.ms-powerpoint': { icon: 'mdi:file-powerpoint', color: '#D24726' },\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation': { icon: 'mdi:file-powerpoint', color: '#D24726' },\n\n // 图片 - 紫色\n 'image/jpeg': { icon: 'mdi:file-image', color: '#9B59B6' },\n 'image/png': { icon: 'mdi:file-image', color: '#9B59B6' },\n 'image/gif': { icon: 'mdi:file-image', color: '#9B59B6' },\n 'image/webp': { icon: 'mdi:file-image', color: '#9B59B6' },\n 'image/svg+xml': { icon: 'mdi:file-image', color: '#9B59B6' },\n\n // 视频 - 深紫色\n 'video/mp4': { icon: 'mdi:file-video', color: '#8E44AD' },\n 'video/webm': { icon: 'mdi:file-video', color: '#8E44AD' },\n 'video/quicktime': { icon: 'mdi:file-video', color: '#8E44AD' },\n\n // 音频 - 青色\n 'audio/mpeg': { icon: 'mdi:file-music', color: '#1ABC9C' },\n 'audio/wav': { icon: 'mdi:file-music', color: '#1ABC9C' },\n 'audio/ogg': { icon: 'mdi:file-music', color: '#1ABC9C' },\n\n // 压缩文件 - 黄色\n 'application/zip': { icon: 'mdi:file-zip', color: '#F39C12' },\n 'application/x-rar-compressed': { icon: 'mdi:file-zip', color: '#F39C12' },\n 'application/x-7z-compressed': { icon: 'mdi:file-zip', color: '#F39C12' },\n 'application/x-tar': { icon: 'mdi:file-zip', color: '#F39C12' },\n\n // 文本 - 灰色\n 'text/plain': { icon: 'mdi:file-document-outline', color: '#7F8C8D' },\n 'text/html': { icon: 'mdi:file-code', color: '#7F8C8D' },\n 'text/css': { icon: 'mdi:file-code', color: '#7F8C8D' },\n 'text/javascript': { icon: 'mdi:file-code', color: '#7F8C8D' },\n\n // JSON/XML\n 'application/json': { icon: 'mdi:file-code', color: '#7F8C8D' },\n 'application/xml': { icon: 'mdi:file-code', color: '#7F8C8D' },\n 'text/xml': { icon: 'mdi:file-code', color: '#7F8C8D' },\n\n // Markdown\n 'text/markdown': { icon: 'mdi:language-markdown', color: '#7F8C8D' },\n\n // 代码文件\n 'application/x-sh': { icon: 'mdi:file-code', color: '#7F8C8D' },\n 'application/x-python': { icon: 'mdi:language-python', color: '#7F8C8D' },\n};\n\n// 根据 URL 扩展名推断文件类型\nconst getFileTypeFromUrl = (url: string): FileTypeInfo | undefined => {\n const extension = url.split('.').pop()?.toLowerCase();\n if (!extension) return undefined;\n\n const extMap: Record<string, FileTypeInfo> = {\n 'pdf': { icon: 'mdi:file-pdf-box', color: '#FF4B4B' },\n 'doc': { icon: 'mdi:file-word', color: '#2B579A' },\n 'docx': { icon: 'mdi:file-word', color: '#2B579A' },\n 'xls': { icon: 'mdi:file-excel', color: '#217346' },\n 'xlsx': { icon: 'mdi:file-excel', color: '#217346' },\n 'ppt': { icon: 'mdi:file-powerpoint', color: '#D24726' },\n 'pptx': { icon: 'mdi:file-powerpoint', color: '#D24726' },\n 'jpg': { icon: 'mdi:file-image', color: '#9B59B6' },\n 'jpeg': { icon: 'mdi:file-image', color: '#9B59B6' },\n 'png': { icon: 'mdi:file-image', color: '#9B59B6' },\n 'gif': { icon: 'mdi:file-image', color: '#9B59B6' },\n 'webp': { icon: 'mdi:file-image', color: '#9B59B6' },\n 'svg': { icon: 'mdi:file-image', color: '#9B59B6' },\n 'mp4': { icon: 'mdi:file-video', color: '#8E44AD' },\n 'webm': { icon: 'mdi:file-video', color: '#8E44AD' },\n 'mov': { icon: 'mdi:file-video', color: '#8E44AD' },\n 'mp3': { icon: 'mdi:file-music', color: '#1ABC9C' },\n 'wav': { icon: 'mdi:file-music', color: '#1ABC9C' },\n 'zip': { icon: 'mdi:file-zip', color: '#F39C12' },\n 'rar': { icon: 'mdi:file-zip', color: '#F39C12' },\n '7z': { icon: 'mdi:file-zip', color: '#F39C12' },\n 'txt': { icon: 'mdi:file-document-outline', color: '#7F8C8D' },\n 'md': { icon: 'mdi:language-markdown', color: '#7F8C8D' },\n 'json': { icon: 'mdi:file-code', color: '#7F8C8D' },\n 'xml': { icon: 'mdi:file-code', color: '#7F8C8D' },\n 'html': { icon: 'mdi:file-code', color: '#7F8C8D' },\n 'css': { icon: 'mdi:file-code', color: '#7F8C8D' },\n 'js': { icon: 'mdi:file-code', color: '#7F8C8D' },\n 'ts': { icon: 'mdi:file-code', color: '#7F8C8D' },\n 'py': { icon: 'mdi:language-python', color: '#7F8C8D' },\n 'sh': { icon: 'mdi:file-code', color: '#7F8C8D' },\n };\n\n return extMap[extension];\n};\n\n// 获取文件类型信息\nconst fileTypeInfo = computed<FileTypeInfo | undefined>(() => {\n // 如果是文档类型,优先使用 mediaType\n if (isDocument.value && props.part.mediaType) {\n return fileTypeMap[props.part.mediaType];\n }\n\n // 如果是 URL 类型,尝试从 URL 推断文件类型\n if (isUrl.value && props.part.url) {\n return getFileTypeFromUrl(props.part.url);\n }\n\n return undefined;\n});\n\n// 获取图标\nconst defaultIcon = computed(() => {\n // 如果有特定文件类型图标,使用它\n if (fileTypeInfo.value) {\n return fileTypeInfo.value.icon;\n }\n\n // 默认图标\n if (isUrl.value) return 'mdi:link-variant';\n if (isDocument.value) return 'mdi:file-document-outline';\n return undefined;\n});\n\n// 获取图标颜色\nconst iconColor = computed(() => {\n return fileTypeInfo.value?.color;\n});\n\nconst hasDefaultIcon = computed(() => defaultIcon.value !== undefined);\n</script>\n\n<template>\n <div :class=\"[bem(), bem('', part.sourceType)]\">\n <!-- URL 类型 -->\n <a\n v-if=\"isUrl && part.url\"\n :href=\"part.url\"\n :target=\"linkTarget\"\n :rel=\"linkRel\"\n :class=\"bem('link')\"\n >\n <!-- 图标插槽,优先使用外部定制 -->\n <slot name=\"icon\">\n <SvgIcon v-if=\"hasDefaultIcon\" :class=\"bem('icon')\" :style=\"{ color: iconColor }\">\n <Icon :icon=\"defaultIcon!\" />\n </SvgIcon>\n </slot>\n <span :class=\"bem('title')\">{{ part.title || part.url }}</span>\n </a>\n\n <!-- 文档类型 -->\n <div v-else-if=\"isDocument\" :class=\"bem('document')\">\n <slot name=\"icon\">\n <SvgIcon v-if=\"hasDefaultIcon\" :class=\"bem('icon')\" :style=\"{ color: iconColor }\">\n <Icon :icon=\"defaultIcon!\" />\n </SvgIcon>\n </slot>\n <span :class=\"bem('title')\">{{ part.title }}</span>\n <span v-if=\"part.mediaType\" :class=\"bem('type')\">{{ part.mediaType }}</span>\n </div>\n\n <!-- 支持完全自定义内容 -->\n <slot />\n </div>\n</template>\n","import { createCommentVNode as _createCommentVNode, renderSlot as _renderSlot, createVNode as _createVNode, normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, Fragment as _Fragment } from \"vue\"\n\nconst _hoisted_1 = [\"href\", \"target\", \"rel\"]\n\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([$setup.bem(), $setup.bem('', $props.part.sourceType)])\n }, [\n _createCommentVNode(\" URL 类型 \"),\n ($setup.isUrl && $props.part.url)\n ? (_openBlock(), _createElementBlock(\"a\", {\n key: 0,\n href: $props.part.url,\n target: $setup.linkTarget,\n rel: $setup.linkRel,\n class: _normalizeClass($setup.bem('link'))\n }, [\n _createCommentVNode(\" 图标插槽,优先使用外部定制 \"),\n _renderSlot(_ctx.$slots, \"icon\", {}, () => [\n ($setup.hasDefaultIcon)\n ? (_openBlock(), _createBlock($setup[\"SvgIcon\"], {\n key: 0,\n class: _normalizeClass($setup.bem('icon')),\n style: _normalizeStyle({ color: $setup.iconColor })\n }, {\n default: _withCtx(() => [\n _createVNode($setup[\"Icon\"], {\n icon: $setup.defaultIcon!\n }, null, 8 /* PROPS */, [\"icon\"])\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"class\", \"style\"]))\n : _createCommentVNode(\"v-if\", true)\n ]),\n _createElementVNode(\"span\", {\n class: _normalizeClass($setup.bem('title'))\n }, _toDisplayString($props.part.title || $props.part.url), 3 /* TEXT, CLASS */)\n ], 10 /* CLASS, PROPS */, _hoisted_1))\n : ($setup.isDocument)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createCommentVNode(\" 文档类型 \"),\n _createElementVNode(\"div\", {\n class: _normalizeClass($setup.bem('document'))\n }, [\n _renderSlot(_ctx.$slots, \"icon\", {}, () => [\n ($setup.hasDefaultIcon)\n ? (_openBlock(), _createBlock($setup[\"SvgIcon\"], {\n key: 0,\n class: _normalizeClass($setup.bem('icon')),\n style: _normalizeStyle({ color: $setup.iconColor })\n }, {\n default: _withCtx(() => [\n _createVNode($setup[\"Icon\"], {\n icon: $setup.defaultIcon!\n }, null, 8 /* PROPS */, [\"icon\"])\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"class\", \"style\"]))\n : _createCommentVNode(\"v-if\", true)\n ]),\n _createElementVNode(\"span\", {\n class: _normalizeClass($setup.bem('title'))\n }, _toDisplayString($props.part.title), 3 /* TEXT, CLASS */),\n ($props.part.mediaType)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: _normalizeClass($setup.bem('type'))\n }, _toDisplayString($props.part.mediaType), 3 /* TEXT, CLASS */))\n : _createCommentVNode(\"v-if\", true)\n ], 2 /* CLASS */)\n ], 2112 /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */))\n : _createCommentVNode(\"v-if\", true),\n _createCommentVNode(\" 支持完全自定义内容 \"),\n _renderSlot(_ctx.$slots, \"default\")\n ], 2 /* CLASS */))\n}","import script from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/source-reference/source-reference.vue?type=script\";import { render } from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/source-reference/source-reference.vue?type=template\"; script.render = render;script.__file = \"src/components/source-reference/source-reference.vue\";export default script;","/**\n * 文件类型判断和图标映射 composable\n */\n\nimport { computed, type Ref } from 'vue';\nimport type { FileCategory } from '../types';\n\n/**\n * 文件类型配置\n */\nexport interface FileTypeConfig {\n /** 文件分类 */\n category: FileCategory;\n /** 图标名称(Iconify) */\n icon: string;\n /** 主题颜色 */\n color: string;\n /** 背景颜色 */\n bgColor: string;\n}\n\n/**\n * MIME 类型到分类的映射\n */\nconst mimeTypeMap: Record<string, FileCategory> = {\n // PDF\n 'application/pdf': 'pdf',\n // Word\n 'application/msword': 'word',\n 'application/vnd.openxmlformats-officedocument.wordprocessingml.document': 'word',\n // Excel\n 'application/vnd.ms-excel': 'excel',\n 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet': 'excel',\n 'text/csv': 'excel',\n // PPT\n 'application/vnd.ms-powerpoint': 'ppt',\n 'application/vnd.openxmlformats-officedocument.presentationml.presentation': 'ppt',\n // Archive\n 'application/zip': 'archive',\n 'application/x-rar-compressed': 'archive',\n 'application/x-7z-compressed': 'archive',\n 'application/gzip': 'archive',\n 'application/x-tar': 'archive',\n // Code\n 'application/javascript': 'code',\n 'application/typescript': 'code',\n 'application/json': 'code',\n 'application/xml': 'code',\n 'text/html': 'code',\n 'text/css': 'code',\n 'text/javascript': 'code',\n 'text/xml': 'code',\n // Text\n 'text/plain': 'text',\n 'text/markdown': 'text',\n 'text/rtf': 'text',\n};\n\n/**\n * 文件扩展名到分类的映射\n */\nconst extensionMap: Record<string, FileCategory> = {\n // PDF\n pdf: 'pdf',\n // Word\n doc: 'word',\n docx: 'word',\n odt: 'word',\n // Excel\n xls: 'excel',\n xlsx: 'excel',\n csv: 'excel',\n ods: 'excel',\n // PPT\n ppt: 'ppt',\n pptx: 'ppt',\n odp: 'ppt',\n // Archive\n zip: 'archive',\n rar: 'archive',\n '7z': 'archive',\n gz: 'archive',\n tar: 'archive',\n // Code\n js: 'code',\n ts: 'code',\n jsx: 'code',\n tsx: 'code',\n vue: 'code',\n py: 'code',\n java: 'code',\n c: 'code',\n cpp: 'code',\n h: 'code',\n go: 'code',\n rs: 'code',\n rb: 'code',\n php: 'code',\n swift: 'code',\n kt: 'code',\n json: 'code',\n xml: 'code',\n html: 'code',\n css: 'code',\n scss: 'code',\n less: 'code',\n yaml: 'code',\n yml: 'code',\n sh: 'code',\n sql: 'code',\n // Text\n txt: 'text',\n md: 'text',\n rtf: 'text',\n log: 'text',\n};\n\n/**\n * 分类到配置的映射\n * 使用 vscode-icons 系列图标,视觉更统一\n */\nconst categoryConfig: Record<FileCategory, Omit<FileTypeConfig, 'category'>> = {\n image: {\n icon: 'vscode-icons:file-type-image',\n color: 'var(--incremark-base-colors-purple-6)',\n bgColor: 'var(--incremark-base-colors-purple-1)',\n },\n video: {\n icon: 'vscode-icons:file-type-video',\n color: 'var(--incremark-base-colors-pink-6)',\n bgColor: 'var(--incremark-base-colors-pink-1)',\n },\n audio: {\n icon: 'vscode-icons:file-type-audio',\n color: 'var(--incremark-base-colors-cyan-6)',\n bgColor: 'var(--incremark-base-colors-cyan-1)',\n },\n pdf: {\n icon: 'vscode-icons:file-type-pdf2',\n color: 'var(--incremark-base-colors-red-6)',\n bgColor: 'var(--incremark-base-colors-red-1)',\n },\n word: {\n icon: 'vscode-icons:file-type-word',\n color: 'var(--incremark-base-colors-blue-6)',\n bgColor: 'var(--incremark-base-colors-blue-1)',\n },\n excel: {\n icon: 'vscode-icons:file-type-excel',\n color: 'var(--incremark-base-colors-green-6)',\n bgColor: 'var(--incremark-base-colors-green-1)',\n },\n ppt: {\n icon: 'vscode-icons:file-type-powerpoint',\n color: 'var(--incremark-base-colors-orange-6)',\n bgColor: 'var(--incremark-base-colors-orange-1)',\n },\n archive: {\n icon: 'vscode-icons:file-type-zip',\n color: 'var(--incremark-base-colors-yellow-6)',\n bgColor: 'var(--incremark-base-colors-yellow-1)',\n },\n code: {\n icon: 'vscode-icons:file-type-typescript',\n color: 'var(--incremark-base-colors-indigo-6)',\n bgColor: 'var(--incremark-base-colors-indigo-1)',\n },\n text: {\n icon: 'vscode-icons:file-type-text',\n color: 'var(--incremark-color-neutral-6)',\n bgColor: 'var(--incremark-color-neutral-2)',\n },\n unknown: {\n icon: 'vscode-icons:default-file',\n color: 'var(--incremark-color-neutral-6)',\n bgColor: 'var(--incremark-color-neutral-2)',\n },\n};\n\n/**\n * 从文件名获取扩展名\n */\nfunction getExtension(filename: string): string {\n const parts = filename.toLowerCase().split('.');\n return parts.length > 1 ? parts[parts.length - 1] : '';\n}\n\n/**\n * 判断文件分类\n */\nexport function getFileCategory(mimeType?: string, filename?: string): FileCategory {\n // 优先通过 MIME 类型判断\n if (mimeType) {\n // 检查前缀(image/*, video/*, audio/*)\n if (mimeType.startsWith('image/')) return 'image';\n if (mimeType.startsWith('video/')) return 'video';\n if (mimeType.startsWith('audio/')) return 'audio';\n\n // 检查完整 MIME 类型\n const categoryByMime = mimeTypeMap[mimeType];\n if (categoryByMime) return categoryByMime;\n }\n\n // 其次通过文件扩展名判断\n if (filename) {\n const ext = getExtension(filename);\n const categoryByExt = extensionMap[ext];\n if (categoryByExt) return categoryByExt;\n }\n\n return 'unknown';\n}\n\n/**\n * 获取文件类型配置\n */\nexport function getFileTypeConfig(mimeType?: string, filename?: string): FileTypeConfig {\n const category = getFileCategory(mimeType, filename);\n return {\n category,\n ...categoryConfig[category],\n };\n}\n\n/**\n * 文件类型 composable\n */\nexport function useFileType(\n mimeType: Ref<string | undefined>,\n filename: Ref<string | undefined>\n) {\n const config = computed(() => getFileTypeConfig(mimeType.value, filename.value));\n\n const category = computed(() => config.value.category);\n const icon = computed(() => config.value.icon);\n const color = computed(() => config.value.color);\n const bgColor = computed(() => config.value.bgColor);\n\n const isImage = computed(() => category.value === 'image');\n const isVideo = computed(() => category.value === 'video');\n const isAudio = computed(() => category.value === 'audio');\n const isPreviewable = computed(() => isImage.value || isVideo.value || isAudio.value);\n\n return {\n config,\n category,\n icon,\n color,\n bgColor,\n isImage,\n isVideo,\n isAudio,\n isPreviewable,\n };\n}\n","<script setup lang=\"ts\">\n/**\n * FilePreview - 文件预览渲染器\n *\n * 支持两种使用场景:\n * 1. 消息渲染:传入 part(FilePart)\n * 2. 附件预览:传入 file(FileInfo)\n */\n\nimport { computed, toRef } from 'vue';\nimport { createImBem } from '@incremark/shared';\nimport { formatFileSize } from '@incremark/shared';\nimport { Icon } from '@iconify/vue';\nimport { ImButton } from '../base/im-button';\nimport { useFileType } from './composables/useFileType';\nimport type { FilePreviewProps } from './types';\n\nconst props = withDefaults(defineProps<FilePreviewProps>(), {\n maxWidth: 400,\n maxHeight: 300,\n compact: false,\n removable: false,\n});\n\nconst emit = defineEmits<{\n remove: [];\n}>();\n\nconst bem = createImBem('file-preview');\n\n// 统一获取文件信息\nconst filename = computed(() => props.file?.name ?? props.part?.filename ?? '文件');\nconst mimeType = computed(() => props.file?.type ?? props.part?.mediaType);\nconst fileSize = computed(() => props.file?.size);\n\n// 文件类型判断\nconst mimeTypeRef = toRef(() => mimeType.value);\nconst filenameRef = toRef(() => filename.value);\nconst { icon, isImage, isVideo, isAudio } = useFileType(mimeTypeRef, filenameRef);\n\n// 预览 URL\nconst previewUrl = computed(() => {\n // 附件预览场景\n if (props.file?.url) {\n return props.file.url;\n }\n // 消息渲染场景\n if (props.part) {\n if (props.part.data.startsWith('data:') || props.part.data.startsWith('http')) {\n return props.part.data;\n }\n return `data:${props.part.mediaType};base64,${props.part.data}`;\n }\n return '';\n});\n\nconst previewStyle = computed(() => ({\n maxWidth: `${props.maxWidth}px`,\n maxHeight: `${props.maxHeight}px`,\n}));\n\nconst handleRemove = () => {\n emit('remove');\n};\n</script>\n\n<template>\n <div :class=\"[bem(), compact && bem('', 'compact')]\">\n <!-- 紧凑模式:用于附件列表 -->\n <template v-if=\"compact\">\n <!-- 图片缩略图 -->\n <div v-if=\"isImage && previewUrl\" :class=\"bem('thumbnail')\">\n <img :src=\"previewUrl\" :alt=\"filename\" :class=\"bem('thumbnail-img')\" />\n </div>\n <!-- 文件图标(vscode-icons 自带颜色) -->\n <div v-else :class=\"bem('icon-box')\">\n <Icon :icon=\"icon\" :class=\"bem('icon')\" />\n </div>\n\n <!-- 文件信息 -->\n <div :class=\"bem('info')\">\n <span :class=\"bem('name')\">{{ filename }}</span>\n <span v-if=\"fileSize\" :class=\"bem('size')\">{{ formatFileSize(fileSize) }}</span>\n </div>\n\n <!-- 删除按钮 -->\n <ImButton\n v-if=\"removable\"\n variant=\"ghost\"\n color=\"neutral\"\n size=\"xs\"\n circle\n :class=\"bem('remove')\"\n aria-label=\"删除\"\n @click=\"handleRemove\"\n >\n <template #icon>\n <Icon icon=\"mdi:close\" />\n </template>\n </ImButton>\n </template>\n\n <!-- 标准模式:用于消息预览 -->\n <template v-else>\n <!-- 图片预览 -->\n <img\n v-if=\"isImage && previewUrl\"\n :src=\"previewUrl\"\n :alt=\"filename\"\n :class=\"bem('image')\"\n :style=\"previewStyle\"\n />\n\n <!-- 视频预览 -->\n <video\n v-else-if=\"isVideo && previewUrl\"\n :src=\"previewUrl\"\n :class=\"bem('video')\"\n :style=\"previewStyle\"\n controls\n />\n\n <!-- 音频预览 -->\n <audio\n v-else-if=\"isAudio && previewUrl\"\n :src=\"previewUrl\"\n :class=\"bem('audio')\"\n controls\n />\n\n <!-- 其他文件 -->\n <div v-else :class=\"bem('file')\">\n <div :class=\"bem('icon-box')\">\n <Icon :icon=\"icon\" :class=\"bem('icon')\" />\n </div>\n <div :class=\"bem('file-info')\">\n <span :class=\"bem('filename')\">{{ filename }}</span>\n <span v-if=\"mimeType\" :class=\"bem('type')\">{{ mimeType }}</span>\n </div>\n </div>\n </template>\n </div>\n</template>\n","import { createCommentVNode as _createCommentVNode, normalizeClass as _normalizeClass, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createVNode as _createVNode, Fragment as _Fragment, toDisplayString as _toDisplayString, withCtx as _withCtx, createBlock as _createBlock, normalizeStyle as _normalizeStyle } from \"vue\"\n\nconst _hoisted_1 = [\"src\", \"alt\"]\nconst _hoisted_2 = [\"src\", \"alt\"]\nconst _hoisted_3 = [\"src\"]\nconst _hoisted_4 = [\"src\"]\n\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([$setup.bem(), $props.compact && $setup.bem('', 'compact')])\n }, [\n _createCommentVNode(\" 紧凑模式:用于附件列表 \"),\n ($props.compact)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n _createCommentVNode(\" 图片缩略图 \"),\n ($setup.isImage && $setup.previewUrl)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass($setup.bem('thumbnail'))\n }, [\n _createElementVNode(\"img\", {\n src: $setup.previewUrl,\n alt: $setup.filename,\n class: _normalizeClass($setup.bem('thumbnail-img'))\n }, null, 10 /* CLASS, PROPS */, _hoisted_1)\n ], 2 /* CLASS */))\n : (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createCommentVNode(\" 文件图标(vscode-icons 自带颜色) \"),\n _createElementVNode(\"div\", {\n class: _normalizeClass($setup.bem('icon-box'))\n }, [\n _createVNode($setup[\"Icon\"], {\n icon: $setup.icon,\n class: _normalizeClass($setup.bem('icon'))\n }, null, 8 /* PROPS */, [\"icon\", \"class\"])\n ], 2 /* CLASS */)\n ], 2112 /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */)),\n _createCommentVNode(\" 文件信息 \"),\n _createElementVNode(\"div\", {\n class: _normalizeClass($setup.bem('info'))\n }, [\n _createElementVNode(\"span\", {\n class: _normalizeClass($setup.bem('name'))\n }, _toDisplayString($setup.filename), 3 /* TEXT, CLASS */),\n ($setup.fileSize)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: _normalizeClass($setup.bem('size'))\n }, _toDisplayString($setup.formatFileSize($setup.fileSize)), 3 /* TEXT, CLASS */))\n : _createCommentVNode(\"v-if\", true)\n ], 2 /* CLASS */),\n _createCommentVNode(\" 删除按钮 \"),\n ($props.removable)\n ? (_openBlock(), _createBlock($setup[\"ImButton\"], {\n key: 2,\n variant: \"ghost\",\n color: \"neutral\",\n size: \"xs\",\n circle: \"\",\n class: _normalizeClass($setup.bem('remove')),\n \"aria-label\": \"删除\",\n onClick: $setup.handleRemove\n }, {\n icon: _withCtx(() => [\n _createVNode($setup[\"Icon\"], { icon: \"mdi:close\" })\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"class\"]))\n : _createCommentVNode(\"v-if\", true)\n ], 64 /* STABLE_FRAGMENT */))\n : (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createCommentVNode(\" 标准模式:用于消息预览 \"),\n _createCommentVNode(\" 图片预览 \"),\n ($setup.isImage && $setup.previewUrl)\n ? (_openBlock(), _createElementBlock(\"img\", {\n key: 0,\n src: $setup.previewUrl,\n alt: $setup.filename,\n class: _normalizeClass($setup.bem('image')),\n style: _normalizeStyle($setup.previewStyle)\n }, null, 14 /* CLASS, STYLE, PROPS */, _hoisted_2))\n : ($setup.isVideo && $setup.previewUrl)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createCommentVNode(\" 视频预览 \"),\n _createElementVNode(\"video\", {\n src: $setup.previewUrl,\n class: _normalizeClass($setup.bem('video')),\n style: _normalizeStyle($setup.previewStyle),\n controls: \"\"\n }, null, 14 /* CLASS, STYLE, PROPS */, _hoisted_3)\n ], 2112 /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */))\n : ($setup.isAudio && $setup.previewUrl)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 2 }, [\n _createCommentVNode(\" 音频预览 \"),\n _createElementVNode(\"audio\", {\n src: $setup.previewUrl,\n class: _normalizeClass($setup.bem('audio')),\n controls: \"\"\n }, null, 10 /* CLASS, PROPS */, _hoisted_4)\n ], 2112 /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */))\n : (_openBlock(), _createElementBlock(_Fragment, { key: 3 }, [\n _createCommentVNode(\" 其他文件 \"),\n _createElementVNode(\"div\", {\n class: _normalizeClass($setup.bem('file'))\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass($setup.bem('icon-box'))\n }, [\n _createVNode($setup[\"Icon\"], {\n icon: $setup.icon,\n class: _normalizeClass($setup.bem('icon'))\n }, null, 8 /* PROPS */, [\"icon\", \"class\"])\n ], 2 /* CLASS */),\n _createElementVNode(\"div\", {\n class: _normalizeClass($setup.bem('file-info'))\n }, [\n _createElementVNode(\"span\", {\n class: _normalizeClass($setup.bem('filename'))\n }, _toDisplayString($setup.filename), 3 /* TEXT, CLASS */),\n ($setup.mimeType)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: _normalizeClass($setup.bem('type'))\n }, _toDisplayString($setup.mimeType), 3 /* TEXT, CLASS */))\n : _createCommentVNode(\"v-if\", true)\n ], 2 /* CLASS */)\n ], 2 /* CLASS */)\n ], 2112 /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */))\n ], 64 /* STABLE_FRAGMENT */))\n ], 2 /* CLASS */))\n}","import script from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/file-preview/file-preview.vue?type=script\";import { render } from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/file-preview/file-preview.vue?type=template\"; script.render = render;script.__file = \"src/components/file-preview/file-preview.vue\";export default script;","<script setup lang=\"ts\">\n/**\n * MessageBubble - 消息气泡容器\n *\n * 用于包裹各种消息内容(TextMessage、ToolCall 等)\n * 提供 avatar、header、footer 插槽供用户自定义\n */\n\nimport { computed } from 'vue'\nimport { createImBem } from '@incremark/shared'\nimport type { MessageBubbleProps } from './types'\n\nconst props = withDefaults(defineProps<MessageBubbleProps>(), {\n placement: 'start',\n variant: 'filled',\n shape: 'default',\n width: 'block',\n loading: false,\n streaming: false\n})\n\nconst bem = createImBem('message-bubble')\n\nconst rootClass = computed(() => [\n bem(),\n bem('', props.placement),\n bem('', props.width),\n props.loading && bem('', 'loading'),\n props.streaming && bem('', 'streaming')\n])\n\nconst contentClass = computed(() => [\n bem('content'),\n bem('content', props.variant),\n bem('content', props.shape)\n])\n</script>\n\n<template>\n <div :class=\"rootClass\">\n <!-- 头像插槽 -->\n <div v-if=\"$slots.avatar\" :class=\"bem('avatar')\">\n <slot name=\"avatar\" />\n </div>\n\n <!-- 主体区域 -->\n <div :class=\"bem('main')\">\n <!-- 头部插槽 -->\n <div v-if=\"$slots.header\" :class=\"bem('header')\">\n <slot name=\"header\" />\n </div>\n\n <!-- 内容区域 -->\n <div :class=\"contentClass\">\n <slot />\n </div>\n\n <!-- 底部插槽 -->\n <div v-if=\"$slots.footer\" :class=\"bem('footer')\">\n <slot name=\"footer\" />\n </div>\n </div>\n </div>\n</template>\n","import { createCommentVNode as _createCommentVNode, renderSlot as _renderSlot, normalizeClass as _normalizeClass, openBlock as _openBlock, createElementBlock as _createElementBlock, createElementVNode as _createElementVNode } from \"vue\"\n\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass($setup.rootClass)\n }, [\n _createCommentVNode(\" 头像插槽 \"),\n (_ctx.$slots.avatar)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass($setup.bem('avatar'))\n }, [\n _renderSlot(_ctx.$slots, \"avatar\")\n ], 2 /* CLASS */))\n : _createCommentVNode(\"v-if\", true),\n _createCommentVNode(\" 主体区域 \"),\n _createElementVNode(\"div\", {\n class: _normalizeClass($setup.bem('main'))\n }, [\n _createCommentVNode(\" 头部插槽 \"),\n (_ctx.$slots.header)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass($setup.bem('header'))\n }, [\n _renderSlot(_ctx.$slots, \"header\")\n ], 2 /* CLASS */))\n : _createCommentVNode(\"v-if\", true),\n _createCommentVNode(\" 内容区域 \"),\n _createElementVNode(\"div\", {\n class: _normalizeClass($setup.contentClass)\n }, [\n _renderSlot(_ctx.$slots, \"default\")\n ], 2 /* CLASS */),\n _createCommentVNode(\" 底部插槽 \"),\n (_ctx.$slots.footer)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: _normalizeClass($setup.bem('footer'))\n }, [\n _renderSlot(_ctx.$slots, \"footer\")\n ], 2 /* CLASS */))\n : _createCommentVNode(\"v-if\", true)\n ], 2 /* CLASS */)\n ], 2 /* CLASS */))\n}","import script from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/message-bubble/message-bubble.vue?type=script\";import { render } from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/message-bubble/message-bubble.vue?type=template\"; script.render = render;script.__file = \"src/components/message-bubble/message-bubble.vue\";export default script;","<script setup lang=\"ts\">\n/**\n * ActionButton - 操作按钮 wrapper\n * 统一封装按钮意图,各 adapter 内部转换为具体 props\n */\n\nimport { computed } from 'vue';\nimport { useUIAdapter } from '../../../composables/useUIAdapter';\nimport type { ActionButtonProps } from './types';\n\nconst props = withDefaults(defineProps<ActionButtonProps>(), {\n intent: 'action',\n size: 'sm',\n square: false,\n circle: false,\n disabled: false,\n loading: false,\n active: false,\n});\n\nconst emit = defineEmits<{\n click: [event: MouseEvent];\n}>();\n\nconst { Button } = useUIAdapter();\n\n/**\n * 将 intent 转换为内置 ImButton 的 props\n * 其他 adapter 可以通过 options prop 获取原始意图\n */\nconst buttonProps = computed(() => {\n // 意图到样式的映射\n const intentMap: Record<string, { variant: string; color: string }> = {\n action: { variant: 'ghost', color: 'neutral' },\n primary: { variant: 'solid', color: 'primary' },\n secondary: { variant: 'outline', color: 'neutral' },\n danger: { variant: 'solid', color: 'error' },\n };\n\n const { variant, color } = intentMap[props.intent] || intentMap.action;\n\n return {\n variant,\n color,\n size: props.size,\n square: props.square,\n circle: props.circle,\n disabled: props.disabled,\n loading: props.loading,\n active: props.active,\n // 传递原始 options,供自定义 adapter 使用\n options: {\n intent: props.intent,\n size: props.size,\n square: props.square,\n circle: props.circle,\n disabled: props.disabled,\n loading: props.loading,\n active: props.active,\n },\n };\n});\n\nconst handleClick = (event: MouseEvent) => {\n if (!props.disabled && !props.loading) {\n emit('click', event);\n }\n};\n</script>\n\n<template>\n <component\n :is=\"Button\"\n v-bind=\"buttonProps\"\n :aria-label=\"ariaLabel\"\n :aria-pressed=\"props.active\"\n @click=\"handleClick\"\n >\n <template #icon>\n <slot name=\"icon\" />\n </template>\n <slot />\n </component>\n</template>\n","import { renderSlot as _renderSlot, resolveDynamicComponent as _resolveDynamicComponent, mergeProps as _mergeProps, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return (_openBlock(), _createBlock(_resolveDynamicComponent($setup.Button), _mergeProps($setup.buttonProps, {\n \"aria-label\": $props.ariaLabel,\n \"aria-pressed\": $setup.props.active,\n onClick: $setup.handleClick\n }), {\n icon: _withCtx(() => [\n _renderSlot(_ctx.$slots, \"icon\")\n ]),\n default: _withCtx(() => [\n _renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3 /* FORWARDED */\n }, 16 /* FULL_PROPS */, [\"aria-label\", \"aria-pressed\"]))\n}","import script from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/base/action-button/action-button.vue?type=script\";import { render } from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/base/action-button/action-button.vue?type=template\"; script.render = render;script.__file = \"src/components/base/action-button/action-button.vue\";export default script;","<script setup lang=\"ts\">\n/**\n * MessageAction - 通用消息操作按钮\n */\n\nimport { computed } from 'vue';\nimport { createImBem } from '@incremark/shared';\nimport { useUIAdapter } from '../../composables/useUIAdapter';\nimport { ActionButton } from '../base/action-button';\nimport { SvgIcon } from '../svg-icon';\nimport type { MessageActionProps } from './types';\n\nconst props = withDefaults(defineProps<MessageActionProps>(), {\n loading: false,\n disabled: false\n});\n\nconst emit = defineEmits<{\n click: [event: MouseEvent];\n}>();\n\nconst bem = createImBem('message-action');\nconst { Tooltip } = useUIAdapter();\n\nconst rootClass = computed(() => [\n bem(),\n props.loading && bem('', 'loading'),\n props.disabled && bem('', 'disabled')\n]);\n\nconst handleClick = (event: MouseEvent) => {\n if (!props.disabled && !props.loading) {\n emit('click', event);\n }\n};\n</script>\n\n<template>\n <component\n :is=\"Tooltip\"\n :content=\"tooltip\"\n >\n <ActionButton\n :class=\"rootClass\"\n intent=\"action\"\n size=\"sm\"\n square\n :disabled=\"disabled\"\n :loading=\"loading\"\n :aria-label=\"label || tooltip\"\n @click=\"handleClick\"\n >\n <slot>\n <SvgIcon v-if=\"icon\" :class=\"bem('icon')\">\n <component :is=\"icon\" />\n </SvgIcon>\n </slot>\n </ActionButton>\n </component>\n</template>\n","import { renderSlot as _renderSlot, resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, normalizeClass as _normalizeClass, withCtx as _withCtx, createCommentVNode as _createCommentVNode, createVNode as _createVNode } from \"vue\"\n\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return (_openBlock(), _createBlock(_resolveDynamicComponent($setup.Tooltip), { content: $props.tooltip }, {\n default: _withCtx(() => [\n _createVNode($setup[\"ActionButton\"], {\n class: _normalizeClass($setup.rootClass),\n intent: \"action\",\n size: \"sm\",\n square: \"\",\n disabled: $props.disabled,\n loading: $props.loading,\n \"aria-label\": $props.label || $props.tooltip,\n onClick: $setup.handleClick\n }, {\n default: _withCtx(() => [\n _renderSlot(_ctx.$slots, \"default\", {}, () => [\n ($props.icon)\n ? (_openBlock(), _createBlock($setup[\"SvgIcon\"], {\n key: 0,\n class: _normalizeClass($setup.bem('icon'))\n }, {\n default: _withCtx(() => [\n (_openBlock(), _createBlock(_resolveDynamicComponent($props.icon)))\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"class\"]))\n : _createCommentVNode(\"v-if\", true)\n ])\n ]),\n _: 3 /* FORWARDED */\n }, 8 /* PROPS */, [\"class\", \"disabled\", \"loading\", \"aria-label\"])\n ]),\n _: 3 /* FORWARDED */\n }, 8 /* PROPS */, [\"content\"]))\n}","import script from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/message-actions/message-action.vue?type=script\";import { render } from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/message-actions/message-action.vue?type=template\"; script.render = render;script.__file = \"src/components/message-actions/message-action.vue\";export default script;","/**\n * useCopyAction - 复制操作逻辑\n */\n\nimport { ref, type Ref } from 'vue';\n\nexport interface UseCopyActionOptions {\n /** 复制成功后重置状态的延迟时间 (ms) */\n resetDelay?: number;\n}\n\nexport interface UseCopyActionReturn {\n /** 是否已复制 */\n copied: Ref<boolean>;\n /** 执行复制 */\n copy: () => Promise<void>;\n}\n\n/**\n * 复制操作 composable\n * @param text 要复制的文本 (响应式)\n * @param options 配置选项\n */\nexport function useCopyAction(\n text: Ref<string>,\n options: UseCopyActionOptions = {}\n): UseCopyActionReturn {\n const { resetDelay = 2000 } = options;\n\n const copied = ref(false);\n\n const copy = async () => {\n try {\n await navigator.clipboard.writeText(text.value);\n copied.value = true;\n setTimeout(() => {\n copied.value = false;\n }, resetDelay);\n } catch (err) {\n console.error('Failed to copy text:', err);\n }\n };\n\n return { copied, copy };\n}\n","<script setup lang=\"ts\">\n/**\n * MessageActionCopy - 复制操作按钮\n */\n\nimport { computed, toRef, h } from 'vue';\nimport { Icon } from '@iconify/vue';\nimport { useUIAdapter } from '../../composables/useUIAdapter';\nimport { useCopyAction } from './composables/useCopyAction';\nimport MessageAction from './message-action.vue';\nimport type { MessageActionCopyProps } from './types';\n\nconst props = withDefaults(defineProps<MessageActionCopyProps>(), {\n tooltip: '复制',\n copiedTooltip: '已复制'\n});\n\nconst { icons } = useUIAdapter();\nconst { copied, copy } = useCopyAction(toRef(props, 'text'));\n\n// 默认图标使用 Phosphor\nconst defaultCopyIcon = h(Icon, { icon: 'ph:copy' });\nconst defaultCheckIcon = h(Icon, { icon: 'ph:check' });\n\nconst currentIcon = computed(() => {\n if (copied.value) {\n return icons?.check || defaultCheckIcon;\n }\n return icons?.copy || defaultCopyIcon;\n});\n\nconst currentTooltip = computed(() => {\n return copied.value ? props.copiedTooltip : props.tooltip;\n});\n</script>\n\n<template>\n <MessageAction\n :icon=\"currentIcon\"\n :tooltip=\"currentTooltip\"\n :label=\"currentTooltip\"\n @click=\"copy\"\n />\n</template>\n","import { openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return (_openBlock(), _createBlock($setup[\"MessageAction\"], {\n icon: $setup.currentIcon,\n tooltip: $setup.currentTooltip,\n label: $setup.currentTooltip,\n onClick: $setup.copy\n }, null, 8 /* PROPS */, [\"icon\", \"tooltip\", \"label\", \"onClick\"]))\n}","import script from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/message-actions/message-action-copy.vue?type=script\";import { render } from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/message-actions/message-action-copy.vue?type=template\"; script.render = render;script.__file = \"src/components/message-actions/message-action-copy.vue\";export default script;","<script setup lang=\"ts\">\n/**\n * MessageActionFeedback - 反馈操作按钮 (点赞/点踩)\n */\n\nimport { computed, h } from 'vue';\nimport { Icon } from '@iconify/vue';\nimport { createImBem } from '@incremark/shared';\nimport { useUIAdapter } from '../../composables/useUIAdapter';\nimport MessageAction from './message-action.vue';\nimport type { MessageActionFeedbackProps, FeedbackValue } from './types';\n\nconst props = withDefaults(defineProps<MessageActionFeedbackProps>(), {\n value: 'default',\n likeTooltip: '有帮助',\n dislikeTooltip: '没帮助'\n});\n\nconst emit = defineEmits<{\n 'update:value': [value: FeedbackValue];\n change: [value: FeedbackValue];\n}>();\n\nconst bem = createImBem('message-action-feedback');\nconst { icons } = useUIAdapter();\n\n// 默认图标使用 Phosphor\nconst defaultThumbUp = h(Icon, { icon: 'ph:thumbs-up' });\nconst defaultThumbUpFill = h(Icon, { icon: 'ph:thumbs-up-fill' });\nconst defaultThumbDown = h(Icon, { icon: 'ph:thumbs-down' });\nconst defaultThumbDownFill = h(Icon, { icon: 'ph:thumbs-down-fill' });\n\nconst likeIcon = computed(() => {\n if (props.value === 'like') {\n return icons?.thumbUpFilled || defaultThumbUpFill;\n }\n return icons?.thumbUp || defaultThumbUp;\n});\n\nconst dislikeIcon = computed(() => {\n if (props.value === 'dislike') {\n return icons?.thumbDownFilled || defaultThumbDownFill;\n }\n return icons?.thumbDown || defaultThumbDown;\n});\n\nconst handleLike = () => {\n const newValue: FeedbackValue = props.value === 'like' ? 'default' : 'like';\n emit('update:value', newValue);\n emit('change', newValue);\n};\n\nconst handleDislike = () => {\n const newValue: FeedbackValue = props.value === 'dislike' ? 'default' : 'dislike';\n emit('update:value', newValue);\n emit('change', newValue);\n};\n\nconst showLike = computed(() => props.value === 'default' || props.value === 'like');\nconst showDislike = computed(() => props.value === 'default' || props.value === 'dislike');\n</script>\n\n<template>\n <span :class=\"bem()\">\n <MessageAction\n v-if=\"showLike\"\n :icon=\"likeIcon\"\n :tooltip=\"likeTooltip\"\n :label=\"likeTooltip\"\n :class=\"[bem('like'), value === 'like' && bem('like', 'active')]\"\n @click=\"handleLike\"\n />\n <MessageAction\n v-if=\"showDislike\"\n :icon=\"dislikeIcon\"\n :tooltip=\"dislikeTooltip\"\n :label=\"dislikeTooltip\"\n :class=\"[bem('dislike'), value === 'dislike' && bem('dislike', 'active')]\"\n @click=\"handleDislike\"\n />\n </span>\n</template>\n","import { normalizeClass as _normalizeClass, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return (_openBlock(), _createElementBlock(\"span\", {\n class: _normalizeClass($setup.bem())\n }, [\n ($setup.showLike)\n ? (_openBlock(), _createBlock($setup[\"MessageAction\"], {\n key: 0,\n icon: $setup.likeIcon,\n tooltip: $props.likeTooltip,\n label: $props.likeTooltip,\n class: _normalizeClass([$setup.bem('like'), $props.value === 'like' && $setup.bem('like', 'active')]),\n onClick: $setup.handleLike\n }, null, 8 /* PROPS */, [\"icon\", \"tooltip\", \"label\", \"class\"]))\n : _createCommentVNode(\"v-if\", true),\n ($setup.showDislike)\n ? (_openBlock(), _createBlock($setup[\"MessageAction\"], {\n key: 1,\n icon: $setup.dislikeIcon,\n tooltip: $props.dislikeTooltip,\n label: $props.dislikeTooltip,\n class: _normalizeClass([$setup.bem('dislike'), $props.value === 'dislike' && $setup.bem('dislike', 'active')]),\n onClick: $setup.handleDislike\n }, null, 8 /* PROPS */, [\"icon\", \"tooltip\", \"label\", \"class\"]))\n : _createCommentVNode(\"v-if\", true)\n ], 2 /* CLASS */))\n}","import script from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/message-actions/message-action-feedback.vue?type=script\";import { render } from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/message-actions/message-action-feedback.vue?type=template\"; script.render = render;script.__file = \"src/components/message-actions/message-action-feedback.vue\";export default script;","<script setup lang=\"ts\">\n/**\n * ImDropdown - 下拉菜单组件\n * 基于 ImPopover 实现,click 触发\n */\n\nimport { ref } from 'vue';\nimport { createImBem } from '@incremark/shared';\nimport { ImPopover } from '../im-popover';\nimport { SvgIcon } from '../../svg-icon';\nimport type { ImDropdownProps, DropdownItem } from './types';\n\nconst props = withDefaults(defineProps<ImDropdownProps>(), {\n placement: 'bottom-start',\n offset: 4,\n disabled: false,\n to: 'body',\n teleportDisabled: false\n});\n\nconst emit = defineEmits<{\n select: [item: DropdownItem];\n}>();\n\nconst bem = createImBem('dropdown');\nconst visible = ref(false);\n\nconst handleSelect = (item: DropdownItem) => {\n if (item.disabled || item.divider) return;\n emit('select', item);\n visible.value = false;\n};\n</script>\n\n<template>\n <ImPopover\n v-model:visible=\"visible\"\n trigger=\"click\"\n :placement=\"placement\"\n :offset=\"offset\"\n :disabled=\"disabled\"\n :to=\"to\"\n :teleport-disabled=\"teleportDisabled\"\n >\n <slot />\n <template #content>\n <div :class=\"bem('menu')\">\n <template v-for=\"item in items\" :key=\"item.key\">\n <div v-if=\"item.divider\" :class=\"bem('divider')\" />\n <div\n v-else\n :class=\"[bem('item'), { [bem('item', 'disabled')]: item.disabled }]\"\n @click=\"handleSelect(item)\"\n >\n <span v-if=\"item.icon\" :class=\"bem('icon')\">\n <SvgIcon>\n <component :is=\"item.icon\" />\n </SvgIcon>\n </span>\n <span :class=\"bem('label')\">{{ item.label }}</span>\n </div>\n </template>\n </div>\n </template>\n </ImPopover>\n</template>\n","import { renderSlot as _renderSlot, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode, resolveDynamicComponent as _resolveDynamicComponent, createBlock as _createBlock, withCtx as _withCtx, createVNode as _createVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode } from \"vue\"\n\nconst _hoisted_1 = [\"onClick\"]\n\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return (_openBlock(), _createBlock($setup[\"ImPopover\"], {\n visible: $setup.visible,\n \"onUpdate:visible\": _cache[0] || (_cache[0] = $event => (($setup.visible) = $event)),\n trigger: \"click\",\n placement: $props.placement,\n offset: $props.offset,\n disabled: $props.disabled,\n to: $props.to,\n \"teleport-disabled\": $props.teleportDisabled\n }, {\n content: _withCtx(() => [\n _createElementVNode(\"div\", {\n class: _normalizeClass($setup.bem('menu'))\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.items, (item) => {\n return (_openBlock(), _createElementBlock(_Fragment, {\n key: item.key\n }, [\n (item.divider)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass($setup.bem('divider'))\n }, null, 2 /* CLASS */))\n : (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: _normalizeClass([$setup.bem('item'), { [$setup.bem('item', 'disabled')]: item.disabled }]),\n onClick: $event => ($setup.handleSelect(item))\n }, [\n (item.icon)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: _normalizeClass($setup.bem('icon'))\n }, [\n _createVNode($setup[\"SvgIcon\"], null, {\n default: _withCtx(() => [\n (_openBlock(), _createBlock(_resolveDynamicComponent(item.icon)))\n ]),\n _: 2 /* DYNAMIC */\n }, 1024 /* DYNAMIC_SLOTS */)\n ], 2 /* CLASS */))\n : _createCommentVNode(\"v-if\", true),\n _createElementVNode(\"span\", {\n class: _normalizeClass($setup.bem('label'))\n }, _toDisplayString(item.label), 3 /* TEXT, CLASS */)\n ], 10 /* CLASS, PROPS */, _hoisted_1))\n ], 64 /* STABLE_FRAGMENT */))\n }), 128 /* KEYED_FRAGMENT */))\n ], 2 /* CLASS */)\n ]),\n default: _withCtx(() => [\n _renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3 /* FORWARDED */\n }, 8 /* PROPS */, [\"visible\", \"placement\", \"offset\", \"disabled\", \"to\", \"teleport-disabled\"]))\n}","import script from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/base/im-dropdown/im-dropdown.vue?type=script\";import { render } from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/base/im-dropdown/im-dropdown.vue?type=template\"; script.render = render;script.__file = \"src/components/base/im-dropdown/im-dropdown.vue\";export default script;","<script setup lang=\"ts\">\n/**\n * MessageActionMore - 更多操作按钮(带 dropdown)\n */\n\nimport { h } from 'vue';\nimport { Icon } from '@iconify/vue';\nimport { createImBem } from '@incremark/shared';\nimport { useUIAdapter } from '../../composables/useUIAdapter';\nimport { ImDropdown } from '../base/im-dropdown';\nimport { ActionButton } from '../base/action-button';\nimport { SvgIcon } from '../svg-icon';\nimport type { MessageActionMoreProps, MoreActionItem } from './types';\nimport type { DropdownItem } from '../base/im-dropdown';\n\nconst props = withDefaults(defineProps<MessageActionMoreProps>(), {\n tooltip: '更多'\n});\n\nconst emit = defineEmits<{\n select: [item: MoreActionItem];\n}>();\n\nconst bem = createImBem('message-action-more');\nconst { Tooltip } = useUIAdapter();\n\n// 默认图标\nconst defaultMoreIcon = h(Icon, { icon: 'ph:dots-three' });\n\n// 转换为 dropdown items\nconst dropdownItems = computed<DropdownItem[]>(() => {\n return props.items.map<DropdownItem>(item => ({\n key: item.key,\n label: item.label,\n icon: item.icon,\n disabled: item.disabled,\n divider: item.divider\n }));\n});\n\nconst handleSelect = (dropdownItem: DropdownItem) => {\n const item = props.items.find(i => i.key === dropdownItem.key);\n if (item) {\n emit('select', item);\n }\n};\n</script>\n\n<script lang=\"ts\">\nimport { computed } from 'vue';\n</script>\n\n<template>\n <ImDropdown\n :items=\"dropdownItems\"\n placement=\"bottom-end\"\n @select=\"handleSelect\"\n >\n <component :is=\"Tooltip\" :content=\"tooltip\">\n <ActionButton\n :class=\"bem()\"\n intent=\"action\"\n size=\"sm\"\n square\n :aria-label=\"tooltip\"\n >\n <SvgIcon :class=\"bem('icon')\">\n <component :is=\"defaultMoreIcon\" />\n </SvgIcon>\n </ActionButton>\n </component>\n </ImDropdown>\n</template>\n","import { resolveDynamicComponent as _resolveDynamicComponent, openBlock as _openBlock, createBlock as _createBlock, normalizeClass as _normalizeClass, withCtx as _withCtx, createVNode as _createVNode } from \"vue\"\n\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return (_openBlock(), _createBlock($setup[\"ImDropdown\"], {\n items: $setup.dropdownItems,\n placement: \"bottom-end\",\n onSelect: $setup.handleSelect\n }, {\n default: _withCtx(() => [\n (_openBlock(), _createBlock(_resolveDynamicComponent($setup.Tooltip), { content: $props.tooltip }, {\n default: _withCtx(() => [\n _createVNode($setup[\"ActionButton\"], {\n class: _normalizeClass($setup.bem()),\n intent: \"action\",\n size: \"sm\",\n square: \"\",\n \"aria-label\": $props.tooltip\n }, {\n default: _withCtx(() => [\n _createVNode($setup[\"SvgIcon\"], {\n class: _normalizeClass($setup.bem('icon'))\n }, {\n default: _withCtx(() => [\n (_openBlock(), _createBlock(_resolveDynamicComponent($setup.defaultMoreIcon)))\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"class\"])\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"class\", \"aria-label\"])\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"content\"]))\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"items\"]))\n}","import script from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/message-actions/message-action-more.vue?type=script\";import { render } from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/message-actions/message-action-more.vue?type=template\"; script.render = render;script.__file = \"src/components/message-actions/message-action-more.vue\";export default script;","<script setup lang=\"ts\">\n/**\n * MessageActions - 消息操作容器组件\n * 支持配置方式和 slot 方式\n */\n\nimport { computed, useSlots } from 'vue';\nimport { createImBem } from '@incremark/shared';\nimport MessageAction from './message-action.vue';\nimport MessageActionCopy from './message-action-copy.vue';\nimport MessageActionFeedback from './message-action-feedback.vue';\nimport MessageActionMore from './message-action-more.vue';\nimport type { MessageActionsProps, ActionItem, FeedbackValue, MoreActionItem } from './types';\n\nconst props = withDefaults(defineProps<MessageActionsProps>(), {\n variant: 'borderless',\n maxVisible: Infinity\n});\n\nconst emit = defineEmits<{\n action: [item: ActionItem];\n 'update:feedbackValue': [value: FeedbackValue];\n}>();\n\nconst slots = useSlots();\nconst bem = createImBem('message-actions');\n\nconst rootClass = computed(() => [\n bem(),\n bem('', props.variant)\n]);\n\n// 是否使用配置方式\nconst useConfigMode = computed(() => {\n return props.actions && props.actions.length > 0 && !slots.default;\n});\n\n// 可见的操作项\nconst visibleActions = computed(() => {\n if (!props.actions) return [];\n return props.actions.slice(0, props.maxVisible);\n});\n\n// 折叠到\"更多\"的操作项\nconst moreActions = computed<MoreActionItem[]>(() => {\n if (!props.actions || props.actions.length <= props.maxVisible) return [];\n return props.actions.slice(props.maxVisible).map(item => ({\n key: item.key,\n label: item.label || item.tooltip || item.key,\n icon: item.icon,\n disabled: item.disabled\n }));\n});\n\n// 处理操作点击\nconst handleAction = (item: ActionItem) => {\n if (item.handler) {\n item.handler();\n }\n emit('action', item);\n};\n\n// 处理更多菜单选择\nconst handleMoreSelect = (moreItem: MoreActionItem) => {\n const item = props.actions?.find(a => a.key === moreItem.key);\n if (item) {\n handleAction(item);\n }\n};\n\n// 处理反馈变化\nconst handleFeedbackChange = (value: FeedbackValue) => {\n emit('update:feedbackValue', value);\n};\n</script>\n\n<template>\n <div :class=\"rootClass\">\n <!-- 配置方式 -->\n <template v-if=\"useConfigMode\">\n <template v-for=\"item in visibleActions\" :key=\"item.key\">\n <!-- 复制类型 -->\n <MessageActionCopy\n v-if=\"item.type === 'copy' && item.copyText\"\n :text=\"item.copyText\"\n :tooltip=\"item.tooltip\"\n />\n <!-- 反馈类型 -->\n <MessageActionFeedback\n v-else-if=\"item.type === 'feedback'\"\n :value=\"feedbackValue\"\n @update:value=\"handleFeedbackChange\"\n />\n <!-- 自定义类型 -->\n <MessageAction\n v-else\n :icon=\"item.icon\"\n :tooltip=\"item.tooltip\"\n :disabled=\"item.disabled\"\n @click=\"handleAction(item)\"\n />\n </template>\n <!-- 更多操作 -->\n <MessageActionMore\n v-if=\"moreActions.length > 0\"\n :items=\"moreActions\"\n @select=\"handleMoreSelect\"\n />\n </template>\n <!-- slot 方式 -->\n <slot v-else />\n </div>\n</template>\n","import { createCommentVNode as _createCommentVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, createVNode as _createVNode, renderSlot as _renderSlot, normalizeClass as _normalizeClass } from \"vue\"\n\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass($setup.rootClass)\n }, [\n _createCommentVNode(\" 配置方式 \"),\n ($setup.useConfigMode)\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 0 }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($setup.visibleActions, (item) => {\n return (_openBlock(), _createElementBlock(_Fragment, {\n key: item.key\n }, [\n _createCommentVNode(\" 复制类型 \"),\n (item.type === 'copy' && item.copyText)\n ? (_openBlock(), _createBlock($setup[\"MessageActionCopy\"], {\n key: 0,\n text: item.copyText,\n tooltip: item.tooltip\n }, null, 8 /* PROPS */, [\"text\", \"tooltip\"]))\n : (item.type === 'feedback')\n ? (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createCommentVNode(\" 反馈类型 \"),\n _createVNode($setup[\"MessageActionFeedback\"], {\n value: $props.feedbackValue,\n \"onUpdate:value\": $setup.handleFeedbackChange\n }, null, 8 /* PROPS */, [\"value\"])\n ], 2112 /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */))\n : (_openBlock(), _createElementBlock(_Fragment, { key: 2 }, [\n _createCommentVNode(\" 自定义类型 \"),\n _createVNode($setup[\"MessageAction\"], {\n icon: item.icon,\n tooltip: item.tooltip,\n disabled: item.disabled,\n onClick: $event => ($setup.handleAction(item))\n }, null, 8 /* PROPS */, [\"icon\", \"tooltip\", \"disabled\", \"onClick\"])\n ], 2112 /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */))\n ], 64 /* STABLE_FRAGMENT */))\n }), 128 /* KEYED_FRAGMENT */)),\n _createCommentVNode(\" 更多操作 \"),\n ($setup.moreActions.length > 0)\n ? (_openBlock(), _createBlock($setup[\"MessageActionMore\"], {\n key: 0,\n items: $setup.moreActions,\n onSelect: $setup.handleMoreSelect\n }, null, 8 /* PROPS */, [\"items\"]))\n : _createCommentVNode(\"v-if\", true)\n ], 64 /* STABLE_FRAGMENT */))\n : (_openBlock(), _createElementBlock(_Fragment, { key: 1 }, [\n _createCommentVNode(\" slot 方式 \"),\n _renderSlot(_ctx.$slots, \"default\")\n ], 2112 /* STABLE_FRAGMENT, DEV_ROOT_FRAGMENT */))\n ], 2 /* CLASS */))\n}","import script from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/message-actions/message-actions.vue?type=script\";import { render } from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/message-actions/message-actions.vue?type=template\"; script.render = render;script.__file = \"src/components/message-actions/message-actions.vue\";export default script;","<script setup lang=\"ts\">\n/**\n * SenderInput - 消息输入框组件\n * 基于 Tiptap 编辑器,支持 Markdown 输入和快捷键提交\n */\n\nimport { computed, nextTick, ref, watch } from 'vue';\nimport { createImBem } from '@incremark/shared';\nimport { EditorContent, useEditor } from '@tiptap/vue-3';\nimport { Document } from '@tiptap/extension-document';\nimport { Paragraph } from '@tiptap/extension-paragraph';\nimport { Text } from '@tiptap/extension-text';\nimport { Placeholder, UndoRedo } from '@tiptap/extensions';\nimport { Markdown } from '@tiptap/markdown';\nimport type { SenderInputEmits, SenderInputProps } from './types';\n\nconst defaultPlaceholder = 'Type something...';\n\nconst props = withDefaults(defineProps<SenderInputProps>(), {\n placeholder: defaultPlaceholder,\n disabled: false,\n bordered: false,\n submitType: 'enter',\n});\n\nconst emit = defineEmits<SenderInputEmits>();\n\nconst modelValue = defineModel<string>('modelValue', { default: '' });\n\nconst bem = createImBem('sender-input');\n\n// 用于追踪内容变化来源,避免循环更新\nconst modelValueChangeByEditor = ref(false);\nconst setContentByModelValue = ref(false);\n\n/**\n * 处理键盘提交事件\n * @returns true 表示已处理(阻止 Tiptap 继续处理),false 表示未处理\n */\nconst handleKeyDown = (event: KeyboardEvent): boolean => {\n if (props.disabled) return false;\n\n const isEnter = event.key === 'Enter';\n const hasShift = event.shiftKey;\n const hasMeta = event.metaKey || event.ctrlKey;\n\n if (!isEnter) return false;\n\n // Cmd/Ctrl + Enter 总是提交\n if (hasMeta) {\n event.preventDefault();\n emit('submit');\n return true;\n }\n\n // 根据 submitType 决定行为\n if (props.submitType === 'enter' && !hasShift) {\n event.preventDefault();\n emit('submit');\n return true;\n } else if (props.submitType === 'shiftEnter' && hasShift) {\n event.preventDefault();\n emit('submit');\n return true;\n }\n\n // manual 模式或其他情况,让 Tiptap 继续处理\n return false;\n};\n\nconst editor = useEditor({\n editorProps: {\n editable: () => !props.disabled,\n attributes: {\n class: bem('editor'),\n },\n handleKeyDown: (_view, event) => {\n return handleKeyDown(event);\n },\n handlePaste: (_view, event) => {\n const files = Array.from(event.clipboardData?.files || []);\n if (files.length > 0) {\n emit('pasteFile', files);\n return true;\n }\n return false;\n },\n },\n content: modelValue.value,\n extensions: [\n Markdown,\n Document,\n Paragraph.configure(),\n Text,\n Placeholder.configure({\n placeholder: () => props.placeholder || defaultPlaceholder,\n showOnlyWhenEditable: false,\n }),\n UndoRedo,\n ],\n onFocus: (options) => {\n emit('focus', options.event);\n },\n onBlur: (options) => {\n emit('blur', options.event);\n },\n onUpdate: (options) => {\n if (setContentByModelValue.value) {\n setContentByModelValue.value = false;\n return;\n }\n\n const markdownContent = options.editor.getMarkdown().trim();\n\n if (markdownContent === modelValue.value) {\n return;\n }\n\n modelValueChangeByEditor.value = true;\n modelValue.value = markdownContent;\n },\n});\n\n// 监听 placeholder 变化\nwatch(() => props.placeholder, (newPlaceholder) => {\n const newPlaceholderValue = newPlaceholder || defaultPlaceholder;\n editor.value?.commands.setMeta('placeholder', newPlaceholderValue);\n});\n\n// 监听外部 modelValue 变化\nwatch(modelValue, (newVal) => {\n if (modelValueChangeByEditor.value) {\n modelValueChangeByEditor.value = false;\n return;\n }\n\n const newContent = newVal ?? '';\n setContentByModelValue.value = true;\n editor.value?.commands.setContent(newContent);\n});\n\n// 监听 disabled 变化\nwatch(() => props.disabled, (newDisable) => {\n editor.value?.setEditable(!newDisable);\n});\n\nconst maxHeightValue = computed(() => {\n if (!props.maxHeight) return undefined;\n return typeof props.maxHeight === 'number'\n ? `${props.maxHeight}px`\n : props.maxHeight;\n});\n\nconst handleClick = () => {\n nextTick(() => {\n if (editor.value?.isEditable && !editor.value.isFocused) {\n editor.value?.commands.focus();\n }\n });\n};\n\n// 暴露方法\nconst focus = () => {\n editor.value?.commands.focus();\n};\n\nconst blur = () => {\n editor.value?.commands.blur();\n};\n\nconst clear = () => {\n editor.value?.commands.clearContent();\n modelValue.value = '';\n};\n\nconst insert = (text: string) => {\n editor.value?.commands.insertContent(text);\n};\n\ndefineExpose({\n focus,\n blur,\n clear,\n insert,\n});\n</script>\n\n<template>\n <EditorContent\n :class=\"bem('', {\n bordered: props.bordered,\n disabled: props.disabled,\n })\"\n :style=\"{\n '--im-sender-input-max-height': maxHeightValue,\n }\"\n :editor=\"editor\"\n @click=\"handleClick\"\n />\n</template>\n","import { normalizeClass as _normalizeClass, normalizeStyle as _normalizeStyle, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return (_openBlock(), _createBlock($setup[\"EditorContent\"], {\n class: _normalizeClass($setup.bem('', {\n bordered: $setup.props.bordered,\n disabled: $setup.props.disabled,\n })),\n style: _normalizeStyle({\n '--im-sender-input-max-height': $setup.maxHeightValue,\n }),\n editor: $setup.editor,\n onClick: $setup.handleClick\n }, null, 8 /* PROPS */, [\"class\", \"style\", \"editor\"]))\n}","import script from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/sender-input/sender-input.vue?type=script\";import { render } from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/sender-input/sender-input.vue?type=template\"; script.render = render;script.__file = \"src/components/sender-input/sender-input.vue\";export default script;","<script setup lang=\"ts\">\n/**\n * SenderSubmitButton - 发送/停止按钮\n * loading 状态下显示停止图标,点击触发 cancel\n */\n\nimport { computed } from 'vue';\nimport { createImBem } from '@incremark/shared';\nimport { Icon } from '@iconify/vue';\nimport ImButton from '../../base/im-button/im-button.vue';\nimport SvgIcon from '../../svg-icon/svg-icon.vue';\nimport type { SenderSubmitButtonProps } from '../types';\n\nconst props = withDefaults(defineProps<SenderSubmitButtonProps>(), {\n disabled: false,\n loading: false,\n});\n\nconst emit = defineEmits<{\n click: [event: MouseEvent];\n}>();\n\nconst bem = createImBem('sender-submit-button');\n\n// loading 时按钮可点击(用于取消),使用 neutral 色\n// 非 loading 时使用 primary 色\nconst buttonColor = computed(() => props.loading ? 'neutral' : 'primary');\n\n// loading 时不禁用按钮(需要能点击取消)\nconst isDisabled = computed(() => props.disabled && !props.loading);\n\nconst handleClick = (event: MouseEvent) => {\n if (!props.loading && props.disabled) {\n return;\n }\n emit('click', event);\n};\n</script>\n\n<template>\n <ImButton\n :class=\"bem('', { loading: props.loading })\"\n variant=\"solid\"\n :color=\"buttonColor\"\n size=\"sm\"\n square\n :disabled=\"isDisabled\"\n :aria-label=\"props.loading ? '停止' : '发送'\"\n @click=\"handleClick\"\n >\n <slot>\n <SvgIcon :class=\"bem('icon')\">\n <Icon :icon=\"props.loading ? 'mdi:stop' : 'mdi:arrow-up'\" />\n </SvgIcon>\n </slot>\n </ImButton>\n</template>\n","import { renderSlot as _renderSlot, createVNode as _createVNode, normalizeClass as _normalizeClass, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return (_openBlock(), _createBlock($setup[\"ImButton\"], {\n class: _normalizeClass($setup.bem('', { loading: $setup.props.loading })),\n variant: \"solid\",\n color: $setup.buttonColor,\n size: \"sm\",\n square: \"\",\n disabled: $setup.isDisabled,\n \"aria-label\": $setup.props.loading ? '停止' : '发送',\n onClick: $setup.handleClick\n }, {\n default: _withCtx(() => [\n _renderSlot(_ctx.$slots, \"default\", {}, () => [\n _createVNode($setup[\"SvgIcon\"], {\n class: _normalizeClass($setup.bem('icon'))\n }, {\n default: _withCtx(() => [\n _createVNode($setup[\"Icon\"], {\n icon: $setup.props.loading ? 'mdi:stop' : 'mdi:arrow-up'\n }, null, 8 /* PROPS */, [\"icon\"])\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"class\"])\n ])\n ]),\n _: 3 /* FORWARDED */\n }, 8 /* PROPS */, [\"class\", \"color\", \"disabled\", \"aria-label\"]))\n}","import script from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/sender/components/sender-submit-button.vue?type=script\";import { render } from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/sender/components/sender-submit-button.vue?type=template\"; script.render = render;script.__file = \"src/components/sender/components/sender-submit-button.vue\";export default script;","/**\n * useSender - Sender 组件核心逻辑\n */\n\nimport { computed, type Ref, type ComputedRef } from 'vue';\nimport type { SenderProps, SenderMessage, SenderEmits, SenderInputRef, SenderAttachment } from '../types';\n\nlet attachmentId = 0;\n\nexport interface UseSenderOptions {\n props: SenderProps;\n emit: SenderEmits;\n modelValue: Ref<string>;\n attachments: Ref<SenderAttachment[]>;\n inputRef: Ref<SenderInputRef | undefined>;\n}\n\nexport interface UseSenderReturn {\n /** 是否可以提交 */\n canSubmit: ComputedRef<boolean>;\n /** 提交消息 */\n submit: () => void;\n /** 取消发送 */\n cancel: () => void;\n /** 聚焦输入框 */\n focus: () => void;\n /** 失焦输入框 */\n blur: () => void;\n /** 清空输入框 */\n clear: () => void;\n /** 添加文件 */\n addFiles: (files: File[]) => void;\n /** 移除附件 */\n removeAttachment: (id: string) => void;\n}\n\n/**\n * 检查文件类型是否匹配 accept\n */\nfunction isFileTypeAccepted(file: File, accept?: string): boolean {\n if (!accept) return true;\n\n const acceptTypes = accept.split(',').map(t => t.trim());\n\n return acceptTypes.some(type => {\n if (type.startsWith('.')) {\n // 扩展名匹配\n return file.name.toLowerCase().endsWith(type.toLowerCase());\n } else if (type.endsWith('/*')) {\n // MIME 类型通配符,如 image/*\n const baseType = type.slice(0, -2);\n return file.type.startsWith(baseType);\n } else {\n // 精确 MIME 类型匹配\n return file.type === type;\n }\n });\n}\n\nexport function useSender(options: UseSenderOptions): UseSenderReturn {\n const { props, emit, modelValue, attachments, inputRef } = options;\n\n // 是否可以提交:非禁用、非加载中、内容或附件不为空\n const canSubmit = computed(() => {\n const hasContent = modelValue.value.trim().length > 0;\n const hasAttachments = attachments.value.length > 0;\n return !props.disabled && !props.loading && (hasContent || hasAttachments);\n });\n\n const submit = () => {\n if (!canSubmit.value) return;\n\n const message: SenderMessage = {\n content: modelValue.value.trim(),\n attachments: attachments.value.length > 0 ? [...attachments.value] : undefined,\n };\n\n emit('submit', message);\n\n // 提交后清空\n if (props.clearOnSubmit !== false) {\n modelValue.value = '';\n attachments.value = [];\n inputRef.value?.clear();\n }\n };\n\n const cancel = () => {\n emit('cancel');\n };\n\n const focus = () => {\n inputRef.value?.focus();\n };\n\n const blur = () => {\n inputRef.value?.blur();\n };\n\n const clear = () => {\n modelValue.value = '';\n attachments.value = [];\n inputRef.value?.clear();\n };\n\n const addFiles = (files: File[]) => {\n for (const file of files) {\n // 检查文件类型\n if (!isFileTypeAccepted(file, props.accept)) {\n emit('fileError', { type: 'type', file, message: `不支持的文件类型: ${file.type || file.name}` });\n continue;\n }\n\n // 检查文件大小\n if (props.maxSize && file.size > props.maxSize) {\n emit('fileError', { type: 'size', file, message: `文件过大: ${file.name}` });\n continue;\n }\n\n // 检查文件数量\n if (props.maxFiles && attachments.value.length >= props.maxFiles) {\n emit('fileError', { type: 'count', file, message: `最多只能上传 ${props.maxFiles} 个文件` });\n break;\n }\n\n // 创建附件\n const attachment: SenderAttachment = {\n id: `attachment-${++attachmentId}`,\n name: file.name,\n size: file.size,\n type: file.type,\n url: URL.createObjectURL(file),\n file,\n };\n\n attachments.value.push(attachment);\n }\n };\n\n const removeAttachment = (id: string) => {\n const index = attachments.value.findIndex(a => a.id === id);\n if (index !== -1) {\n const attachment = attachments.value[index];\n // 释放 blob URL\n if (attachment.url?.startsWith('blob:')) {\n URL.revokeObjectURL(attachment.url);\n }\n attachments.value.splice(index, 1);\n }\n };\n\n return {\n canSubmit,\n submit,\n cancel,\n focus,\n blur,\n clear,\n addFiles,\n removeAttachment,\n };\n}\n","<script setup lang=\"ts\">\n/**\n * Sender - 消息发送组件\n *\n * 布局结构:\n * ┌─────────────────────────────────────────────────┐\n * │ slot:header │\n * ├─────────────────────────────────────────────────┤\n * │ ┌─────────────────────────────────────────┐ │\n * │ │ slot:attachments │ │\n * │ ├─────────────────────────────────────────┤ │\n * │ │ [输入框] │ │\n * │ ├─────────────────────────────────────────┤ │\n * │ │ [prefix] [suffix] │ │\n * │ └─────────────────────────────────────────┘ │\n * ├─────────────────────────────────────────────────┤\n * │ slot:footer │\n * └─────────────────────────────────────────────────┘\n */\n\nimport { computed, provide, ref, toRef } from 'vue';\nimport { createImBem } from '@incremark/shared';\nimport { SenderInput } from '../sender-input';\nimport SenderSubmitButton from './components/sender-submit-button.vue';\nimport { useSender } from './composables';\nimport type { SenderProps, SenderEmits, SenderContext, SenderInputRef, SenderAttachment } from './types';\n\nconst props = withDefaults(defineProps<SenderProps>(), {\n placeholder: 'Type something...',\n disabled: false,\n bordered: true,\n loading: false,\n submitType: 'enter',\n clearOnSubmit: true,\n});\n\nconst emit = defineEmits<SenderEmits>();\n\nconst modelValue = defineModel<string>('modelValue', { default: '' });\nconst attachments = defineModel<SenderAttachment[]>('attachments', { default: () => [] });\n\nconst bem = createImBem('sender');\n\n// 输入框引用\nconst inputRef = ref<SenderInputRef>();\n\n// 使用 composable 管理逻辑\nconst {\n canSubmit,\n submit,\n cancel,\n focus,\n blur,\n clear,\n addFiles,\n removeAttachment,\n} = useSender({\n props,\n emit,\n modelValue,\n attachments,\n inputRef,\n});\n\n// 处理输入框提交事件\nconst handleInputSubmit = () => {\n submit();\n};\n\n// 处理发送按钮点击\nconst handleSubmitClick = () => {\n if (props.loading) {\n cancel();\n } else {\n submit();\n }\n};\n\n// 处理粘贴文件\nconst handlePasteFile = (files: File[]) => {\n addFiles(files);\n};\n\n// 文件配置\nconst fileConfig = computed(() => ({\n accept: props.accept,\n maxFiles: props.maxFiles,\n maxSize: props.maxSize,\n}));\n\n// 提供上下文给子组件\nprovide<SenderContext>('sender', {\n value: modelValue,\n attachments,\n disabled: toRef(props, 'disabled'),\n loading: toRef(props, 'loading'),\n canSubmit,\n submit,\n cancel,\n addFiles,\n removeAttachment,\n fileConfig: fileConfig.value,\n});\n\n// 暴露方法\ndefineExpose({\n focus,\n blur,\n clear,\n submit,\n addFiles,\n removeAttachment,\n});\n</script>\n\n<template>\n <div :class=\"bem()\">\n <!-- Header 插槽 -->\n <slot name=\"header\" />\n\n <!-- 主体内容区 -->\n <div\n :class=\"bem('box', {\n bordered: props.bordered,\n disabled: props.disabled,\n })\"\n >\n <!-- 附件区域插槽 -->\n <slot name=\"attachments\" :attachments=\"attachments\" :remove=\"removeAttachment\" />\n\n <!-- 输入框 -->\n <SenderInput\n ref=\"inputRef\"\n v-model=\"modelValue\"\n :class=\"bem('input')\"\n :placeholder=\"props.placeholder\"\n :disabled=\"props.disabled || props.loading\"\n :max-height=\"props.maxHeight\"\n :submit-type=\"props.submitType\"\n @submit=\"handleInputSubmit\"\n @paste-file=\"handlePasteFile\"\n />\n\n <!-- 工具栏 -->\n <div :class=\"bem('toolbar')\">\n <!-- 左侧操作区 -->\n <div :class=\"bem('prefix')\">\n <slot name=\"prefix\" />\n </div>\n\n <!-- 右侧操作区 -->\n <div :class=\"bem('suffix')\">\n <slot name=\"suffix\" />\n\n <!-- 默认发送按钮 -->\n <SenderSubmitButton\n :disabled=\"!canSubmit\"\n :loading=\"props.loading\"\n @click=\"handleSubmitClick\"\n />\n </div>\n </div>\n </div>\n\n <!-- Footer 插槽 -->\n <slot name=\"footer\" />\n </div>\n</template>\n","import { createCommentVNode as _createCommentVNode, renderSlot as _renderSlot, normalizeClass as _normalizeClass, createVNode as _createVNode, createElementVNode as _createElementVNode, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass($setup.bem())\n }, [\n _createCommentVNode(\" Header 插槽 \"),\n _renderSlot(_ctx.$slots, \"header\"),\n _createCommentVNode(\" 主体内容区 \"),\n _createElementVNode(\"div\", {\n class: _normalizeClass($setup.bem('box', {\n bordered: $setup.props.bordered,\n disabled: $setup.props.disabled,\n }))\n }, [\n _createCommentVNode(\" 附件区域插槽 \"),\n _renderSlot(_ctx.$slots, \"attachments\", {\n attachments: $setup.attachments,\n remove: $setup.removeAttachment\n }),\n _createCommentVNode(\" 输入框 \"),\n _createVNode($setup[\"SenderInput\"], {\n ref: \"inputRef\",\n modelValue: $setup.modelValue,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = $event => (($setup.modelValue) = $event)),\n class: _normalizeClass($setup.bem('input')),\n placeholder: $setup.props.placeholder,\n disabled: $setup.props.disabled || $setup.props.loading,\n \"max-height\": $setup.props.maxHeight,\n \"submit-type\": $setup.props.submitType,\n onSubmit: $setup.handleInputSubmit,\n onPasteFile: $setup.handlePasteFile\n }, null, 8 /* PROPS */, [\"modelValue\", \"class\", \"placeholder\", \"disabled\", \"max-height\", \"submit-type\"]),\n _createCommentVNode(\" 工具栏 \"),\n _createElementVNode(\"div\", {\n class: _normalizeClass($setup.bem('toolbar'))\n }, [\n _createCommentVNode(\" 左侧操作区 \"),\n _createElementVNode(\"div\", {\n class: _normalizeClass($setup.bem('prefix'))\n }, [\n _renderSlot(_ctx.$slots, \"prefix\")\n ], 2 /* CLASS */),\n _createCommentVNode(\" 右侧操作区 \"),\n _createElementVNode(\"div\", {\n class: _normalizeClass($setup.bem('suffix'))\n }, [\n _renderSlot(_ctx.$slots, \"suffix\"),\n _createCommentVNode(\" 默认发送按钮 \"),\n _createVNode($setup[\"SenderSubmitButton\"], {\n disabled: !$setup.canSubmit,\n loading: $setup.props.loading,\n onClick: $setup.handleSubmitClick\n }, null, 8 /* PROPS */, [\"disabled\", \"loading\"])\n ], 2 /* CLASS */)\n ], 2 /* CLASS */)\n ], 2 /* CLASS */),\n _createCommentVNode(\" Footer 插槽 \"),\n _renderSlot(_ctx.$slots, \"footer\")\n ], 2 /* CLASS */))\n}","import script from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/sender/sender.vue?type=script\";import { render } from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/sender/sender.vue?type=template\"; script.render = render;script.__file = \"src/components/sender/sender.vue\";export default script;","<script setup lang=\"ts\">\n/**\n * SenderActionButton - Sender 工具栏操作按钮\n * 用于附件、语音、模式切换等操作\n */\n\nimport { createImBem } from '@incremark/shared';\nimport ActionButton from '../../base/action-button/action-button.vue';\nimport type { SenderActionButtonProps } from '../types';\n\nconst props = withDefaults(defineProps<SenderActionButtonProps>(), {\n disabled: false,\n active: false,\n square: false,\n});\n\nconst emit = defineEmits<{\n click: [event: MouseEvent];\n}>();\n\nconst bem = createImBem('sender-action-button');\n\nconst handleClick = (event: MouseEvent) => {\n if (!props.disabled) {\n emit('click', event);\n }\n};\n</script>\n\n<template>\n <ActionButton\n :class=\"[bem('', { active: props.active })]\"\n intent=\"action\"\n size=\"sm\"\n :square=\"props.square\"\n :disabled=\"props.disabled\"\n :aria-label=\"props.ariaLabel\"\n @click=\"handleClick\"\n >\n <template #icon>\n <slot name=\"icon\" />\n </template>\n <slot />\n </ActionButton>\n</template>\n","import { renderSlot as _renderSlot, normalizeClass as _normalizeClass, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock } from \"vue\"\n\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return (_openBlock(), _createBlock($setup[\"ActionButton\"], {\n class: _normalizeClass([$setup.bem('', { active: $setup.props.active })]),\n intent: \"action\",\n size: \"sm\",\n square: $setup.props.square,\n disabled: $setup.props.disabled,\n \"aria-label\": $setup.props.ariaLabel,\n onClick: $setup.handleClick\n }, {\n icon: _withCtx(() => [\n _renderSlot(_ctx.$slots, \"icon\")\n ]),\n default: _withCtx(() => [\n _renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3 /* FORWARDED */\n }, 8 /* PROPS */, [\"class\", \"square\", \"disabled\", \"aria-label\"]))\n}","import script from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/sender/components/sender-action-button.vue?type=script\";import { render } from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/sender/components/sender-action-button.vue?type=template\"; script.render = render;script.__file = \"src/components/sender/components/sender-action-button.vue\";export default script;","<script setup lang=\"ts\">\n/**\n * SenderFileButton - 文件选择按钮\n */\n\nimport { inject, ref } from 'vue';\nimport { Icon } from '@iconify/vue';\nimport { SvgIcon } from '../../svg-icon';\nimport SenderActionButton from './sender-action-button.vue';\nimport type { SenderContext } from '../types';\n\nconst props = defineProps<{\n /** 接受的文件类型,覆盖 Sender 的 accept */\n accept?: string;\n /** 是否允许多选 */\n multiple?: boolean;\n /** 无障碍标签 */\n ariaLabel?: string;\n}>();\n\nconst sender = inject<SenderContext>('sender');\n\nconst inputRef = ref<HTMLInputElement>();\n\nconst handleClick = () => {\n inputRef.value?.click();\n};\n\nconst handleChange = (event: Event) => {\n const input = event.target as HTMLInputElement;\n const files = Array.from(input.files || []);\n if (files.length > 0) {\n sender?.addFiles(files);\n }\n // 清空 input,允许重复选择同一文件\n input.value = '';\n};\n\nconst acceptValue = props.accept ?? sender?.fileConfig.accept;\n</script>\n\n<template>\n <SenderActionButton\n square\n :aria-label=\"ariaLabel || '添加文件'\"\n :disabled=\"sender?.disabled.value\"\n @click=\"handleClick\"\n >\n <template #icon>\n <SvgIcon>\n <Icon icon=\"mdi:attachment\" />\n </SvgIcon>\n </template>\n </SenderActionButton>\n\n <input\n ref=\"inputRef\"\n type=\"file\"\n :accept=\"acceptValue\"\n :multiple=\"multiple !== false\"\n style=\"display: none\"\n @change=\"handleChange\"\n />\n</template>\n","import { createVNode as _createVNode, withCtx as _withCtx, createElementVNode as _createElementVNode, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"accept\", \"multiple\"]\n\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return (_openBlock(), _createElementBlock(_Fragment, null, [\n _createVNode($setup[\"SenderActionButton\"], {\n square: \"\",\n \"aria-label\": $props.ariaLabel || '添加文件',\n disabled: $setup.sender?.disabled.value,\n onClick: $setup.handleClick\n }, {\n icon: _withCtx(() => [\n _createVNode($setup[\"SvgIcon\"], null, {\n default: _withCtx(() => [\n _createVNode($setup[\"Icon\"], { icon: \"mdi:attachment\" })\n ]),\n _: 1 /* STABLE */\n })\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"aria-label\", \"disabled\"]),\n _createElementVNode(\"input\", {\n ref: \"inputRef\",\n type: \"file\",\n accept: $setup.acceptValue,\n multiple: $props.multiple !== false,\n style: {\"display\":\"none\"},\n onChange: $setup.handleChange\n }, null, 40 /* PROPS, NEED_HYDRATION */, _hoisted_1)\n ], 64 /* STABLE_FRAGMENT */))\n}","import script from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/sender/components/sender-file-button.vue?type=script\";import { render } from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/sender/components/sender-file-button.vue?type=template\"; script.render = render;script.__file = \"src/components/sender/components/sender-file-button.vue\";export default script;","<script setup lang=\"ts\">\n/**\n * SenderAttachments - 附件预览列表\n *\n * 使用 FilePreview 组件渲染附件,支持不同文件类型的图标和颜色\n */\n\nimport { createImBem } from '@incremark/shared';\nimport { FilePreview } from '../../file-preview';\nimport type { SenderAttachment } from '../types';\n\ndefineProps<{\n attachments: SenderAttachment[];\n}>();\n\nconst emit = defineEmits<{\n remove: [id: string];\n}>();\n\nconst bem = createImBem('sender-attachments');\n\nconst handleRemove = (id: string) => {\n emit('remove', id);\n};\n</script>\n\n<template>\n <div v-if=\"attachments.length > 0\" :class=\"bem()\">\n <FilePreview\n v-for=\"attachment in attachments\"\n :key=\"attachment.id\"\n :file=\"{\n name: attachment.name,\n type: attachment.type,\n size: attachment.size,\n url: attachment.url,\n }\"\n compact\n removable\n @remove=\"handleRemove(attachment.id)\"\n />\n </div>\n</template>\n","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, createBlock as _createBlock, normalizeClass as _normalizeClass, createCommentVNode as _createCommentVNode } from \"vue\"\n\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return ($props.attachments.length > 0)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass($setup.bem())\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.attachments, (attachment) => {\n return (_openBlock(), _createBlock($setup[\"FilePreview\"], {\n key: attachment.id,\n file: {\n name: attachment.name,\n type: attachment.type,\n size: attachment.size,\n url: attachment.url,\n },\n compact: \"\",\n removable: \"\",\n onRemove: $event => ($setup.handleRemove(attachment.id))\n }, null, 8 /* PROPS */, [\"file\", \"onRemove\"]))\n }), 128 /* KEYED_FRAGMENT */))\n ], 2 /* CLASS */))\n : _createCommentVNode(\"v-if\", true)\n}","import script from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/sender/components/sender-attachments.vue?type=script\";import { render } from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/sender/components/sender-attachments.vue?type=template\"; script.render = render;script.__file = \"src/components/sender/components/sender-attachments.vue\";export default script;","<script setup lang=\"ts\">\n/**\n * SuggestionItem - 单个建议项组件\n */\n\nimport { Icon } from '@iconify/vue';\nimport { createImBem } from '@incremark/shared';\nimport SvgIcon from '../svg-icon/svg-icon.vue';\nimport type { SuggestionItem } from './types';\n\nconst props = defineProps<{\n item: SuggestionItem;\n}>();\n\nconst emit = defineEmits<{\n click: [item: SuggestionItem];\n}>();\n\nconst bem = createImBem('suggestion-item');\n\nconst handleClick = () => {\n if (!props.item.disabled) {\n emit('click', props.item);\n }\n};\n</script>\n\n<template>\n <button\n type=\"button\"\n :class=\"[bem(), { [bem('', 'disabled')]: item.disabled }]\"\n :disabled=\"item.disabled\"\n @click=\"handleClick\"\n >\n <slot name=\"icon\">\n <SvgIcon v-if=\"item.icon\" :class=\"bem('icon')\">\n <Icon :icon=\"item.icon\" />\n </SvgIcon>\n </slot>\n <span :class=\"bem('content')\">\n <span :class=\"bem('label')\">{{ item.label }}</span>\n <span v-if=\"item.description\" :class=\"bem('description')\">{{ item.description }}</span>\n </span>\n </button>\n</template>\n","import { renderSlot as _renderSlot, createVNode as _createVNode, normalizeClass as _normalizeClass, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock } from \"vue\"\n\nconst _hoisted_1 = [\"disabled\"]\n\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return (_openBlock(), _createElementBlock(\"button\", {\n type: \"button\",\n class: _normalizeClass([$setup.bem(), { [$setup.bem('', 'disabled')]: $props.item.disabled }]),\n disabled: $props.item.disabled,\n onClick: $setup.handleClick\n }, [\n _renderSlot(_ctx.$slots, \"icon\", {}, () => [\n ($props.item.icon)\n ? (_openBlock(), _createBlock($setup[\"SvgIcon\"], {\n key: 0,\n class: _normalizeClass($setup.bem('icon'))\n }, {\n default: _withCtx(() => [\n _createVNode($setup[\"Icon\"], {\n icon: $props.item.icon\n }, null, 8 /* PROPS */, [\"icon\"])\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"class\"]))\n : _createCommentVNode(\"v-if\", true)\n ]),\n _createElementVNode(\"span\", {\n class: _normalizeClass($setup.bem('content'))\n }, [\n _createElementVNode(\"span\", {\n class: _normalizeClass($setup.bem('label'))\n }, _toDisplayString($props.item.label), 3 /* TEXT, CLASS */),\n ($props.item.description)\n ? (_openBlock(), _createElementBlock(\"span\", {\n key: 0,\n class: _normalizeClass($setup.bem('description'))\n }, _toDisplayString($props.item.description), 3 /* TEXT, CLASS */))\n : _createCommentVNode(\"v-if\", true)\n ], 2 /* CLASS */)\n ], 10 /* CLASS, PROPS */, _hoisted_1))\n}","import script from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/suggestion/suggestion-item.vue?type=script\";import { render } from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/suggestion/suggestion-item.vue?type=template\"; script.render = render;script.__file = \"src/components/suggestion/suggestion-item.vue\";export default script;","<script setup lang=\"ts\">\n/**\n * Suggestion - 快捷建议组件\n */\n\nimport { createImBem } from '@incremark/shared';\nimport SuggestionItemVue from './suggestion-item.vue';\nimport type { SuggestionProps, SuggestionItem } from './types';\n\nwithDefaults(defineProps<SuggestionProps>(), {\n vertical: false\n});\n\nconst emit = defineEmits<{\n select: [item: SuggestionItem];\n}>();\n\nconst bem = createImBem('suggestion');\n\nconst handleItemClick = (item: SuggestionItem) => {\n emit('select', item);\n};\n</script>\n\n<template>\n <div :class=\"[bem(), { [bem('', 'vertical')]: vertical }]\">\n <SuggestionItemVue\n v-for=\"(item, index) in items\"\n :key=\"item.id ?? index\"\n :item=\"item\"\n @click=\"handleItemClick\"\n >\n <template #icon>\n <slot name=\"icon\" :item=\"item\" />\n </template>\n </SuggestionItemVue>\n </div>\n</template>\n","import { renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createElementBlock as _createElementBlock, renderSlot as _renderSlot, withCtx as _withCtx, createBlock as _createBlock, normalizeClass as _normalizeClass } from \"vue\"\n\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([$setup.bem(), { [$setup.bem('', 'vertical')]: $props.vertical }])\n }, [\n (_openBlock(true), _createElementBlock(_Fragment, null, _renderList($props.items, (item, index) => {\n return (_openBlock(), _createBlock($setup[\"SuggestionItemVue\"], {\n key: item.id ?? index,\n item: item,\n onClick: $setup.handleItemClick\n }, {\n icon: _withCtx(() => [\n _renderSlot(_ctx.$slots, \"icon\", { item: item })\n ]),\n _: 2 /* DYNAMIC */\n }, 1032 /* PROPS, DYNAMIC_SLOTS */, [\"item\"]))\n }), 128 /* KEYED_FRAGMENT */))\n ], 2 /* CLASS */))\n}","import script from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/suggestion/suggestion.vue?type=script\";import { render } from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/suggestion/suggestion.vue?type=template\"; script.render = render;script.__file = \"src/components/suggestion/suggestion.vue\";export default script;","<script setup lang=\"ts\">\n/**\n * ErrorMessage - 错误消息组件\n */\n\nimport { computed } from 'vue';\nimport { Icon } from '@iconify/vue';\nimport { createImBem } from '@incremark/shared';\nimport SvgIcon from '../svg-icon/svg-icon.vue';\nimport type { ErrorMessageProps, ErrorType } from './types';\n\nconst props = withDefaults(defineProps<ErrorMessageProps>(), {\n type: 'unknown',\n retryable: false,\n retryText: '重试'\n});\n\nconst emit = defineEmits<{\n retry: [];\n}>();\n\nconst bem = createImBem('error-message');\n\n// 根据错误类型获取图标\nconst iconMap: Record<ErrorType, string> = {\n 'network': 'mdi:wifi-off',\n 'rate-limit': 'mdi:clock-alert-outline',\n 'server': 'mdi:server-off',\n 'auth': 'mdi:account-alert-outline',\n 'unknown': 'mdi:alert-circle-outline'\n};\n\nconst icon = computed(() => iconMap[props.type]);\n\n// 默认标题\nconst defaultTitleMap: Record<ErrorType, string> = {\n 'network': '网络错误',\n 'rate-limit': '请求过于频繁',\n 'server': '服务器错误',\n 'auth': '认证失败',\n 'unknown': '出错了'\n};\n\nconst displayTitle = computed(() => props.title || defaultTitleMap[props.type]);\n\nconst handleRetry = () => {\n emit('retry');\n};\n</script>\n\n<template>\n <div :class=\"[bem(), bem('', type)]\">\n <slot name=\"icon\">\n <SvgIcon :class=\"bem('icon')\">\n <Icon :icon=\"icon\" />\n </SvgIcon>\n </slot>\n <div :class=\"bem('content')\">\n <div :class=\"bem('title')\">{{ displayTitle }}</div>\n <div :class=\"bem('message')\">{{ message }}</div>\n </div>\n <button\n v-if=\"retryable\"\n type=\"button\"\n :class=\"bem('retry')\"\n @click=\"handleRetry\"\n >\n <SvgIcon :class=\"bem('retry-icon')\">\n <Icon icon=\"mdi:refresh\" />\n </SvgIcon>\n {{ retryText }}\n </button>\n </div>\n</template>\n","import { renderSlot as _renderSlot, createVNode as _createVNode, normalizeClass as _normalizeClass, withCtx as _withCtx, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createTextVNode as _createTextVNode, openBlock as _openBlock, createElementBlock as _createElementBlock, createCommentVNode as _createCommentVNode } from \"vue\"\n\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass([$setup.bem(), $setup.bem('', $props.type)])\n }, [\n _renderSlot(_ctx.$slots, \"icon\", {}, () => [\n _createVNode($setup[\"SvgIcon\"], {\n class: _normalizeClass($setup.bem('icon'))\n }, {\n default: _withCtx(() => [\n _createVNode($setup[\"Icon\"], { icon: $setup.icon }, null, 8 /* PROPS */, [\"icon\"])\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"class\"])\n ]),\n _createElementVNode(\"div\", {\n class: _normalizeClass($setup.bem('content'))\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass($setup.bem('title'))\n }, _toDisplayString($setup.displayTitle), 3 /* TEXT, CLASS */),\n _createElementVNode(\"div\", {\n class: _normalizeClass($setup.bem('message'))\n }, _toDisplayString($props.message), 3 /* TEXT, CLASS */)\n ], 2 /* CLASS */),\n ($props.retryable)\n ? (_openBlock(), _createElementBlock(\"button\", {\n key: 0,\n type: \"button\",\n class: _normalizeClass($setup.bem('retry')),\n onClick: $setup.handleRetry\n }, [\n _createVNode($setup[\"SvgIcon\"], {\n class: _normalizeClass($setup.bem('retry-icon'))\n }, {\n default: _withCtx(() => [\n _createVNode($setup[\"Icon\"], { icon: \"mdi:refresh\" })\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"class\"]),\n _createTextVNode(\" \" + _toDisplayString($props.retryText), 1 /* TEXT */)\n ], 2 /* CLASS */))\n : _createCommentVNode(\"v-if\", true)\n ], 2 /* CLASS */))\n}","import script from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/error-message/error-message.vue?type=script\";import { render } from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/error-message/error-message.vue?type=template\"; script.render = render;script.__file = \"src/components/error-message/error-message.vue\";export default script;","<script setup lang=\"ts\">\n/**\n * Welcome - 欢迎页组件\n */\n\nimport { Icon } from '@iconify/vue';\nimport { createImBem } from '@incremark/shared';\nimport SvgIcon from '../svg-icon/svg-icon.vue';\nimport { Suggestion } from '../suggestion';\nimport type { SuggestionItem } from '../suggestion/types';\nimport type { WelcomeProps } from './types';\n\nwithDefaults(defineProps<WelcomeProps>(), {\n title: '你好,有什么可以帮你?',\n icon: 'mdi:robot-happy-outline'\n});\n\nconst emit = defineEmits<{\n select: [item: SuggestionItem];\n}>();\n\nconst bem = createImBem('welcome');\n\nconst handleSelect = (item: SuggestionItem) => {\n emit('select', item);\n};\n</script>\n\n<template>\n <div :class=\"bem()\">\n <div :class=\"bem('header')\">\n <slot name=\"icon\">\n <SvgIcon v-if=\"icon\" :class=\"bem('icon')\">\n <Icon :icon=\"icon\" />\n </SvgIcon>\n </slot>\n <h2 :class=\"bem('title')\">{{ title }}</h2>\n <p v-if=\"description\" :class=\"bem('description')\">{{ description }}</p>\n </div>\n\n <div v-if=\"suggestions?.length\" :class=\"bem('suggestions')\">\n <slot name=\"suggestions\" :items=\"suggestions\">\n <Suggestion :items=\"suggestions\" @select=\"handleSelect\" />\n </slot>\n </div>\n\n <div v-if=\"hint || $slots.hint\" :class=\"bem('hint')\">\n <slot name=\"hint\">{{ hint }}</slot>\n </div>\n </div>\n</template>\n","import { renderSlot as _renderSlot, createVNode as _createVNode, normalizeClass as _normalizeClass, withCtx as _withCtx, openBlock as _openBlock, createBlock as _createBlock, createCommentVNode as _createCommentVNode, toDisplayString as _toDisplayString, createElementVNode as _createElementVNode, createElementBlock as _createElementBlock, createTextVNode as _createTextVNode } from \"vue\"\n\nexport function render(_ctx, _cache, $props, $setup, $data, $options) {\n return (_openBlock(), _createElementBlock(\"div\", {\n class: _normalizeClass($setup.bem())\n }, [\n _createElementVNode(\"div\", {\n class: _normalizeClass($setup.bem('header'))\n }, [\n _renderSlot(_ctx.$slots, \"icon\", {}, () => [\n ($props.icon)\n ? (_openBlock(), _createBlock($setup[\"SvgIcon\"], {\n key: 0,\n class: _normalizeClass($setup.bem('icon'))\n }, {\n default: _withCtx(() => [\n _createVNode($setup[\"Icon\"], { icon: $props.icon }, null, 8 /* PROPS */, [\"icon\"])\n ]),\n _: 1 /* STABLE */\n }, 8 /* PROPS */, [\"class\"]))\n : _createCommentVNode(\"v-if\", true)\n ]),\n _createElementVNode(\"h2\", {\n class: _normalizeClass($setup.bem('title'))\n }, _toDisplayString($props.title), 3 /* TEXT, CLASS */),\n ($props.description)\n ? (_openBlock(), _createElementBlock(\"p\", {\n key: 0,\n class: _normalizeClass($setup.bem('description'))\n }, _toDisplayString($props.description), 3 /* TEXT, CLASS */))\n : _createCommentVNode(\"v-if\", true)\n ], 2 /* CLASS */),\n ($props.suggestions?.length)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 0,\n class: _normalizeClass($setup.bem('suggestions'))\n }, [\n _renderSlot(_ctx.$slots, \"suggestions\", { items: $props.suggestions }, () => [\n _createVNode($setup[\"Suggestion\"], {\n items: $props.suggestions,\n onSelect: $setup.handleSelect\n }, null, 8 /* PROPS */, [\"items\"])\n ])\n ], 2 /* CLASS */))\n : _createCommentVNode(\"v-if\", true),\n ($props.hint || _ctx.$slots.hint)\n ? (_openBlock(), _createElementBlock(\"div\", {\n key: 1,\n class: _normalizeClass($setup.bem('hint'))\n }, [\n _renderSlot(_ctx.$slots, \"hint\", {}, () => [\n _createTextVNode(_toDisplayString($props.hint), 1 /* TEXT */)\n ])\n ], 2 /* CLASS */))\n : _createCommentVNode(\"v-if\", true)\n ], 2 /* CLASS */))\n}","import script from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/welcome/welcome.vue?type=script\";import { render } from \"/Users/yishuai/develop/ai/markdown/packages/chat-vue/src/components/welcome/welcome.vue?type=template\"; script.render = render;script.__file = \"src/components/welcome/welcome.vue\";export default script;"]}