dou-ui 0.1.0-alpha.2 → 0.1.0-alpha.4
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.
- package/dist/components/button/button.js.map +1 -1
- package/dist/components/button/button.vue_vue_type_script_setup_true_lang.js +2 -1
- package/dist/components/button/button.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/calendar-view/calendar-view.js.map +1 -1
- package/dist/components/calendar-view/calendar-view.vue_vue_type_script_setup_true_lang.js +7 -2
- package/dist/components/calendar-view/calendar-view.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/card/card.js.map +1 -1
- package/dist/components/card/card.vue_vue_type_script_setup_true_lang.js +45 -19
- package/dist/components/card/card.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/cascader/cascader.js.map +1 -1
- package/dist/components/cascader/cascader.vue_vue_type_script_setup_true_lang.js +3 -3
- package/dist/components/cascader/cascader.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/chat-artifact/chat-artifact.js.map +1 -1
- package/dist/components/chat-artifact/chat-artifact.vue_vue_type_script_setup_true_lang.js +8 -2
- package/dist/components/chat-artifact/chat-artifact.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/chat-attachments/chat-attachments.js.map +1 -1
- package/dist/components/chat-attachments/chat-attachments.vue_vue_type_script_setup_true_lang.js +11 -2
- package/dist/components/chat-attachments/chat-attachments.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/chat-attachments/chat-attachments2.js.map +1 -1
- package/dist/components/chat-confirm/chat-confirm.js.map +1 -1
- package/dist/components/chat-confirm/chat-confirm.vue_vue_type_script_setup_true_lang.js +40 -17
- package/dist/components/chat-confirm/chat-confirm.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/chat-context-meter/chat-context-meter.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/components/chat-context-meter/chat-context-meter.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/chat-context-meter/chat-context-meter2.js.map +1 -1
- package/dist/components/chat-input/chat-input.js.map +1 -1
- package/dist/components/chat-input/chat-input.vue_vue_type_script_setup_true_lang.js +75 -7
- package/dist/components/chat-input/chat-input.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/chat-input/chat-input2.js.map +1 -1
- package/dist/components/chat-list/chat-list.js +9 -4
- package/dist/components/chat-list/chat-list.js.map +1 -1
- package/dist/components/chat-list/chat-list.vue_vue_type_script_setup_true_lang.js +34 -0
- package/dist/components/chat-list/chat-list.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/chat-list/chat-list2.js +6 -0
- package/dist/components/chat-list/chat-list2.js.map +1 -0
- package/dist/components/chat-list/index.js +1 -1
- package/dist/components/chat-message/chat-message.js.map +1 -1
- package/dist/components/chat-message/chat-message.vue_vue_type_script_setup_true_lang.js +119 -39
- package/dist/components/chat-message/chat-message.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/chat-message/chat-message2.js.map +1 -1
- package/dist/components/chat-message/style.js +6 -0
- package/dist/components/chat-plan/chat-plan.js +9 -4
- package/dist/components/chat-plan/chat-plan.js.map +1 -1
- package/dist/components/chat-plan/chat-plan.vue_vue_type_script_setup_true_lang.js +64 -32
- package/dist/components/chat-plan/chat-plan.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/chat-plan/chat-plan2.js +6 -0
- package/dist/components/chat-plan/chat-plan2.js.map +1 -0
- package/dist/components/chat-plan/index.js +1 -1
- package/dist/components/chat-plan/style.js +1 -0
- package/dist/components/chat-question/chat-question.js +6 -0
- package/dist/components/chat-question/chat-question.js.map +1 -0
- package/dist/components/chat-question/chat-question.vue_vue_type_script_setup_true_lang.js +116 -0
- package/dist/components/chat-question/chat-question.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/chat-question/index.js +7 -0
- package/dist/components/chat-question/index.js.map +1 -0
- package/dist/components/chat-question/style.d.ts +1 -0
- package/dist/components/chat-question/style.js +2 -0
- package/dist/components/chat-reasoning/chat-reasoning.js.map +1 -1
- package/dist/components/chat-reasoning/chat-reasoning.vue_vue_type_script_setup_true_lang.js +4 -4
- package/dist/components/chat-reasoning/chat-reasoning.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/chat-sources/chat-citation.js.map +1 -1
- package/dist/components/chat-sources/chat-citation.vue_vue_type_script_setup_true_lang.js +52 -14
- package/dist/components/chat-sources/chat-citation.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/chat-sources/chat-sources.js.map +1 -1
- package/dist/components/chat-sources/chat-sources.vue_vue_type_script_setup_true_lang.js +6 -4
- package/dist/components/chat-sources/chat-sources.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/chat-sources/chat-sources2.js.map +1 -1
- package/dist/components/chat-sources/index.js +1 -1
- package/dist/components/chat-steps/chat-steps.js +9 -4
- package/dist/components/chat-steps/chat-steps.js.map +1 -1
- package/dist/components/chat-steps/chat-steps.vue_vue_type_script_setup_true_lang.js +20 -13
- package/dist/components/chat-steps/chat-steps.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/chat-steps/chat-steps2.js +6 -0
- package/dist/components/chat-steps/chat-steps2.js.map +1 -0
- package/dist/components/chat-steps/index.js +1 -1
- package/dist/components/chat-steps/style.js +1 -0
- package/dist/components/chat-tool-call/chat-tool-call.js.map +1 -1
- package/dist/components/chat-tool-call/chat-tool-call.vue_vue_type_script_setup_true_lang.js +38 -12
- package/dist/components/chat-tool-call/chat-tool-call.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/chat-tool-call/chat-tool-call2.js.map +1 -1
- package/dist/components/chat-tool-call/style.js +1 -0
- package/dist/components/code-block/code-block.js.map +1 -1
- package/dist/components/code-block/code-block.vue_vue_type_script_setup_true_lang.js +37 -5
- package/dist/components/code-block/code-block.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/collapse/collapse-item.js.map +1 -1
- package/dist/components/collapse/collapse-item.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/components/collapse/collapse-item.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/collapse/collapse-transition.js +3 -1
- package/dist/components/collapse/collapse-transition.js.map +1 -1
- package/dist/components/collapse/index.js +1 -2
- package/dist/components/collapse/index.js.map +1 -1
- package/dist/components/color-mode/color-mode-button.js.map +1 -1
- package/dist/components/color-mode/color-mode-button.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/components/color-mode/color-mode-button.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/color-mode/color-mode-select.js.map +1 -1
- package/dist/components/color-mode/color-mode-select.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/components/color-mode/color-mode-select.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/color-mode/color-mode-switch.js.map +1 -1
- package/dist/components/color-mode/color-mode-switch.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/components/color-mode/color-mode-switch.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/color-panel/color-panel.js.map +1 -1
- package/dist/components/color-panel/color-panel.vue_vue_type_script_setup_true_lang.js +5 -5
- package/dist/components/color-panel/color-panel.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/color-picker/color-picker.js.map +1 -1
- package/dist/components/color-picker/color-picker.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/components/color-picker/color-picker.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/comment-thread/comment-thread.js.map +1 -1
- package/dist/components/comment-thread/comment-thread.vue_vue_type_script_setup_true_lang.js +19 -15
- package/dist/components/comment-thread/comment-thread.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/comment-thread/style.js +2 -0
- package/dist/components/config-provider/use-config.js +5 -2
- package/dist/components/config-provider/use-config.js.map +1 -1
- package/dist/components/context-menu/context-menu.js.map +1 -1
- package/dist/components/context-menu/context-menu.vue_vue_type_script_setup_true_lang.js +26 -11
- package/dist/components/context-menu/context-menu.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/context-menu/index.js +2 -0
- package/dist/components/context-menu/index.js.map +1 -1
- package/dist/components/copy-button/copy-button.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/descriptions/descriptions.js.map +1 -1
- package/dist/components/descriptions/descriptions.vue_vue_type_script_setup_true_lang.js +3 -1
- package/dist/components/descriptions/descriptions.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/descriptions/descriptions2.js.map +1 -1
- package/dist/components/dialog/functional.js +3 -7
- package/dist/components/dialog/functional.js.map +1 -1
- package/dist/components/dialog/index.js +4 -3
- package/dist/components/dialog/index.js.map +1 -1
- package/dist/components/dropdown/dropdown-button.js.map +1 -1
- package/dist/components/dropdown/dropdown-button.vue_vue_type_script_setup_true_lang.js +5 -5
- package/dist/components/dropdown/dropdown-button.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/dropdown/dropdown-group.js +6 -0
- package/dist/components/dropdown/dropdown-group.js.map +1 -0
- package/dist/components/dropdown/dropdown-group.vue_vue_type_script_setup_true_lang.js +42 -0
- package/dist/components/dropdown/dropdown-group.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/dropdown/dropdown-item.js.map +1 -1
- package/dist/components/dropdown/dropdown-item.vue_vue_type_script_setup_true_lang.js +31 -9
- package/dist/components/dropdown/dropdown-item.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/dropdown/dropdown-items.js.map +1 -1
- package/dist/components/dropdown/dropdown-items.vue_vue_type_script_setup_true_lang.js +77 -52
- package/dist/components/dropdown/dropdown-items.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/dropdown/dropdown-radio-group.js.map +1 -1
- package/dist/components/dropdown/dropdown-radio-group.vue_vue_type_script_setup_true_lang.js +23 -5
- package/dist/components/dropdown/dropdown-radio-group.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/dropdown/dropdown-sub.js.map +1 -1
- package/dist/components/dropdown/dropdown-sub.vue_vue_type_script_setup_true_lang.js +5 -4
- package/dist/components/dropdown/dropdown-sub.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/dropdown/dropdown.js.map +1 -1
- package/dist/components/dropdown/dropdown.vue_vue_type_script_setup_true_lang.js +2 -1
- package/dist/components/dropdown/dropdown.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/dropdown/dropdown2.js.map +1 -1
- package/dist/components/dropdown/index.js +4 -5
- package/dist/components/dropdown/index.js.map +1 -1
- package/dist/components/dropdown/item-components.js +11 -0
- package/dist/components/dropdown/item-components.js.map +1 -0
- package/dist/components/dropdown/menu-entries.js +14 -0
- package/dist/components/dropdown/menu-entries.js.map +1 -0
- package/dist/components/dropdown/menu-keys.js +1 -1
- package/dist/components/dropdown/menu-keys.js.map +1 -1
- package/dist/components/ellipsis/ellipsis.js.map +1 -1
- package/dist/components/ellipsis/ellipsis.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/components/ellipsis/ellipsis.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/image/image.js.map +1 -1
- package/dist/components/image/image.vue_vue_type_script_setup_true_lang.js +10 -1
- package/dist/components/image/image.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/image-cropper/image-cropper.js.map +1 -1
- package/dist/components/image-cropper/image-cropper.vue_vue_type_script_setup_true_lang.js +10 -10
- package/dist/components/image-cropper/image-cropper.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/infinite-scroll/infinite-scroll.js.map +1 -1
- package/dist/components/infinite-scroll/infinite-scroll.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/components/infinite-scroll/infinite-scroll.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/input-date/segment-field.js.map +1 -1
- package/dist/components/input-date/segment-field.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/components/input-date/segment-field.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/input-date/style.js +1 -0
- package/dist/components/input-time/style.js +1 -0
- package/dist/components/layout/layout-aside-trigger.js.map +1 -1
- package/dist/components/layout/layout-aside-trigger.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/components/layout/layout-aside-trigger.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/layout/layout-aside.js.map +1 -1
- package/dist/components/layout/layout-aside.vue_vue_type_script_setup_true_lang.js +3 -3
- package/dist/components/layout/layout-aside.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/layout/layout-footer.js.map +1 -1
- package/dist/components/layout/layout-footer.vue_vue_type_script_setup_true_lang.js +5 -1
- package/dist/components/layout/layout-footer.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/layout/layout.js.map +1 -1
- package/dist/components/link/link.js.map +1 -1
- package/dist/components/link/link.vue_vue_type_script_setup_true_lang.js +116 -31
- package/dist/components/link/link.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/markdown/index.js +9 -0
- package/dist/components/markdown/index.js.map +1 -0
- package/dist/components/markdown/markdown.js +6 -0
- package/dist/components/markdown/markdown.js.map +1 -0
- package/dist/components/markdown/markdown.vue_vue_type_script_setup_true_lang.js +225 -0
- package/dist/components/markdown/markdown.vue_vue_type_script_setup_true_lang.js.map +1 -0
- package/dist/components/markdown/parse-block.js +577 -0
- package/dist/components/markdown/parse-block.js.map +1 -0
- package/dist/components/markdown/parse-inline.js +626 -0
- package/dist/components/markdown/parse-inline.js.map +1 -0
- package/dist/components/markdown/parser.js +308 -0
- package/dist/components/markdown/parser.js.map +1 -0
- package/dist/components/markdown/render.js +424 -0
- package/dist/components/markdown/render.js.map +1 -0
- package/dist/components/markdown/style.d.ts +1 -0
- package/dist/components/markdown/style.js +10 -0
- package/dist/components/markdown/url.js +16 -0
- package/dist/components/markdown/url.js.map +1 -0
- package/dist/components/menu/menu-actions.js +65 -0
- package/dist/components/menu/menu-actions.js.map +1 -0
- package/dist/components/menu/menu-item.js.map +1 -1
- package/dist/components/menu/menu-item.vue_vue_type_script_setup_true_lang.js +52 -13
- package/dist/components/menu/menu-item.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/menu/menu-list.js.map +1 -1
- package/dist/components/menu/menu-list.vue_vue_type_script_setup_true_lang.js +33 -18
- package/dist/components/menu/menu-list.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/menu/menu-popup.js.map +1 -1
- package/dist/components/menu/menu-popup.vue_vue_type_script_setup_true_lang.js +60 -19
- package/dist/components/menu/menu-popup.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/menu/menu.js +17 -13
- package/dist/components/menu/menu.js.map +1 -1
- package/dist/components/menu/menu.vue_vue_type_script_setup_true_lang.js +9 -2
- package/dist/components/menu/menu.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/menu/menu2.js.map +1 -1
- package/dist/components/menubar/menubar.js.map +1 -1
- package/dist/components/node-graph/layout.js +251 -38
- package/dist/components/node-graph/layout.js.map +1 -1
- package/dist/components/node-graph/node-graph-legend.js.map +1 -1
- package/dist/components/node-graph/node-graph-legend.vue_vue_type_script_setup_true_lang.js +5 -5
- package/dist/components/node-graph/node-graph-legend.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/node-graph/node-graph.js.map +1 -1
- package/dist/components/node-graph/node-graph.vue_vue_type_script_setup_true_lang.js +3 -3
- package/dist/components/node-graph/node-graph.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/pagination/pagination-gap.js.map +1 -1
- package/dist/components/pagination/pagination-gap.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/components/pagination/pagination-gap.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/pagination/pagination.js.map +1 -1
- package/dist/components/pagination/pagination.vue_vue_type_script_setup_true_lang.js +7 -7
- package/dist/components/pagination/pagination.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/popconfirm/index.js +2 -0
- package/dist/components/popconfirm/index.js.map +1 -1
- package/dist/components/popconfirm/popconfirm.js.map +1 -1
- package/dist/components/popconfirm/popconfirm.vue_vue_type_script_setup_true_lang.js +6 -2
- package/dist/components/popconfirm/popconfirm.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/popover/index.js +2 -0
- package/dist/components/popover/index.js.map +1 -1
- package/dist/components/popover/popover.js.map +1 -1
- package/dist/components/popover/popover.vue_vue_type_script_setup_true_lang.js +12 -5
- package/dist/components/popover/popover.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/progress-group/progress-group.js.map +1 -1
- package/dist/components/progress-group/progress-group.vue_vue_type_script_setup_true_lang.js +11 -4
- package/dist/components/progress-group/progress-group.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/qrcode/qrcode.js.map +1 -1
- package/dist/components/qrcode/qrcode.vue_vue_type_script_setup_true_lang.js +10 -2
- package/dist/components/qrcode/qrcode.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/select/select.js.map +1 -1
- package/dist/components/select/select.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/components/select/select.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/slider/slider.js.map +1 -1
- package/dist/components/slider/slider.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/components/slider/slider.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/status-dot/index.js +7 -0
- package/dist/components/status-dot/index.js.map +1 -0
- package/dist/components/status-dot/status-dot.js +26 -0
- package/dist/components/status-dot/status-dot.js.map +1 -0
- package/dist/components/status-dot/status-dot.vue_vue_type_script_lang.js +43 -0
- package/dist/components/status-dot/status-dot.vue_vue_type_script_lang.js.map +1 -0
- package/dist/components/status-dot/status-dot2.js +6 -0
- package/dist/components/status-dot/status-dot2.js.map +1 -0
- package/dist/components/status-dot/style.d.ts +1 -0
- package/dist/components/status-dot/style.js +2 -0
- package/dist/components/steps/steps.js.map +1 -1
- package/dist/components/steps/steps.vue_vue_type_script_setup_true_lang.js +6 -6
- package/dist/components/steps/steps.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/table/table.js.map +1 -1
- package/dist/components/table/table.vue_vue_type_script_setup_true_lang.js +19 -14
- package/dist/components/table/table.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/tabs/tab-panel.vue_vue_type_script_setup_true_lang.js +1 -0
- package/dist/components/tabs/tab-panel.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/tabs/tabs.js.map +1 -1
- package/dist/components/tabs/tabs.vue_vue_type_script_setup_true_lang.js +117 -47
- package/dist/components/tabs/tabs.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/tabs/tabs2.js.map +1 -1
- package/dist/components/tag/tag.js.map +1 -1
- package/dist/components/tag/tag.vue_vue_type_script_setup_true_lang.js +21 -4
- package/dist/components/tag/tag.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/timeline/style.js +1 -0
- package/dist/components/timeline/timeline-item.js.map +1 -1
- package/dist/components/timeline/timeline-item.vue_vue_type_script_setup_true_lang.js +6 -2
- package/dist/components/timeline/timeline-item.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/toast/index.js +5 -4
- package/dist/components/toast/index.js.map +1 -1
- package/dist/components/toast/store.js +1 -9
- package/dist/components/toast/store.js.map +1 -1
- package/dist/components/tooltip/index.js +2 -0
- package/dist/components/tooltip/index.js.map +1 -1
- package/dist/components/tooltip/tooltip.js.map +1 -1
- package/dist/components/tooltip/tooltip.vue_vue_type_script_setup_true_lang.js +55 -8
- package/dist/components/tooltip/tooltip.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/tour/tour.js.map +1 -1
- package/dist/components/tour/tour.vue_vue_type_script_setup_true_lang.js +3 -3
- package/dist/components/tour/tour.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/transfer/transfer-list.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/tree/tree.vue_vue_type_script_setup_true_lang.js +1 -1
- package/dist/components/tree-select/tree-select.js.map +1 -1
- package/dist/components/tree-select/tree-select.vue_vue_type_script_setup_true_lang.js +3 -3
- package/dist/components/tree-select/tree-select.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/upload/upload.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/components/upload/upload.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/upload/upload2.js.map +1 -1
- package/dist/components/user/user.js.map +1 -1
- package/dist/components/user/user.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/components/user/user.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/virtual-list/virtual-list.js +7 -1
- package/dist/components/virtual-list/virtual-list.js.map +1 -1
- package/dist/components/virtual-list/virtual-list.vue_vue_type_script_setup_true_lang.js +2 -7
- package/dist/components/virtual-list/virtual-list.vue_vue_type_script_setup_true_lang.js.map +1 -1
- package/dist/components/virtual-list/virtual-list2.js.map +1 -1
- package/dist/composables/use-popup.js +30 -5
- package/dist/composables/use-popup.js.map +1 -1
- package/dist/index.js +26 -19
- package/dist/index.js.map +1 -1
- package/dist/locale/en.js +14 -8
- package/dist/locale/en.js.map +1 -1
- package/dist/locale/zh-cn.js +14 -8
- package/dist/locale/zh-cn.js.map +1 -1
- package/dist/locale/zh-tw.js +14 -8
- package/dist/locale/zh-tw.js.map +1 -1
- package/dist/plugin.js +25 -14
- package/dist/plugin.js.map +1 -1
- package/dist/style.css +1 -1
- package/dist/types/components/button/button.d.ts +5 -1
- package/dist/types/components/calendar-view/calendar-view.d.ts +6 -0
- package/dist/types/components/calendar-view/calendar-view.vue.d.ts +1 -0
- package/dist/types/components/calendar-view/index.d.ts +3 -0
- package/dist/types/components/card/card.d.ts +6 -1
- package/dist/types/components/chat-artifact/chat-artifact.d.ts +2 -1
- package/dist/types/components/chat-attachments/chat-attachments.d.ts +2 -2
- package/dist/types/components/chat-confirm/chat-confirm.d.ts +7 -2
- package/dist/types/components/chat-input/chat-input.d.ts +33 -3
- package/dist/types/components/chat-input/chat-input.vue.d.ts +7 -0
- package/dist/types/components/chat-input/index.d.ts +20 -0
- package/dist/types/components/chat-list/chat-list.d.ts +19 -1
- package/dist/types/components/chat-list/index.d.ts +3 -3
- package/dist/types/components/chat-message/chat-message.d.ts +58 -5
- package/dist/types/components/chat-message/chat-message.vue.d.ts +7 -3
- package/dist/types/components/chat-message/index.d.ts +15 -4
- package/dist/types/components/chat-plan/chat-plan.d.ts +19 -2
- package/dist/types/components/chat-plan/chat-plan.vue.d.ts +2 -0
- package/dist/types/components/chat-plan/index.d.ts +6 -0
- package/dist/types/components/chat-question/chat-question.d.ts +43 -0
- package/dist/types/components/chat-question/chat-question.vue.d.ts +18 -0
- package/dist/types/components/chat-question/index.d.ts +43 -0
- package/dist/types/components/chat-sources/chat-sources.d.ts +6 -1
- package/dist/types/components/chat-steps/chat-steps.d.ts +10 -4
- package/dist/types/components/chat-steps/chat-steps.vue.d.ts +1 -1
- package/dist/types/components/chat-steps/index.d.ts +3 -3
- package/dist/types/components/chat-tool-call/chat-tool-call.d.ts +12 -3
- package/dist/types/components/chat-tool-call/chat-tool-call.vue.d.ts +1 -0
- package/dist/types/components/chat-tool-call/index.d.ts +3 -0
- package/dist/types/components/checkbox/index.d.ts +5 -5
- package/dist/types/components/code-block/code-block.d.ts +11 -0
- package/dist/types/components/code-block/code-block.vue.d.ts +3 -1
- package/dist/types/components/code-block/index.d.ts +9 -3
- package/dist/types/components/collapse/collapse-transition.d.ts +2 -7
- package/dist/types/components/collapse/collapse.vue.d.ts +1 -1
- package/dist/types/components/collapse/index.d.ts +5 -6
- package/dist/types/components/comment-thread/comment-thread.d.ts +6 -0
- package/dist/types/components/comment-thread/comment-thread.vue.d.ts +1 -0
- package/dist/types/components/comment-thread/index.d.ts +3 -0
- package/dist/types/components/context-menu/context-menu.d.ts +37 -4
- package/dist/types/components/context-menu/context-menu.vue.d.ts +2 -0
- package/dist/types/components/context-menu/index.d.ts +5 -0
- package/dist/types/components/copy-button/copy-button.vue.d.ts +1 -1
- package/dist/types/components/copy-button/index.d.ts +1 -1
- package/dist/types/components/descriptions/descriptions.d.ts +9 -1
- package/dist/types/components/descriptions/descriptions.vue.d.ts +1 -0
- package/dist/types/components/descriptions/index.d.ts +3 -0
- package/dist/types/components/dialog/functional.d.ts +0 -3
- package/dist/types/components/dialog/index.d.ts +1 -1
- package/dist/types/components/dropdown/dropdown-group.vue.d.ts +13 -0
- package/dist/types/components/dropdown/dropdown-items.vue.d.ts +2 -2
- package/dist/types/components/dropdown/dropdown-radio-group.vue.d.ts +8 -4
- package/dist/types/components/dropdown/dropdown.d.ts +28 -6
- package/dist/types/components/dropdown/dropdown.vue.d.ts +1 -1
- package/dist/types/components/dropdown/index.d.ts +10 -81
- package/dist/types/components/dropdown/item-components.d.ts +103 -0
- package/dist/types/components/dropdown/menu-entries.d.ts +4 -0
- package/dist/types/components/image/image.d.ts +9 -0
- package/dist/types/components/index.d.ts +3 -0
- package/dist/types/components/layout/index.d.ts +12 -6
- package/dist/types/components/layout/layout-aside.vue.d.ts +1 -1
- package/dist/types/components/layout/layout-footer.vue.d.ts +4 -2
- package/dist/types/components/layout/layout.d.ts +4 -0
- package/dist/types/components/link/index.d.ts +3 -0
- package/dist/types/components/link/link.d.ts +24 -3
- package/dist/types/components/link/link.vue.d.ts +1 -0
- package/dist/types/components/markdown/index.d.ts +58 -0
- package/dist/types/components/markdown/markdown.d.ts +251 -0
- package/dist/types/components/markdown/markdown.vue.d.ts +22 -0
- package/dist/types/components/markdown/parse-block.d.ts +61 -0
- package/dist/types/components/markdown/parse-inline.d.ts +19 -0
- package/dist/types/components/markdown/parser.d.ts +22 -0
- package/dist/types/components/markdown/render.d.ts +84 -0
- package/dist/types/components/markdown/url.d.ts +10 -0
- package/dist/types/components/masonry/index.d.ts +3 -3
- package/dist/types/components/menu/index.d.ts +11 -3
- package/dist/types/components/menu/menu-actions.d.ts +26 -0
- package/dist/types/components/menu/menu-item.vue.d.ts +6 -0
- package/dist/types/components/menu/menu.d.ts +48 -5
- package/dist/types/components/menu/menu.vue.d.ts +4 -1
- package/dist/types/components/menubar/menubar.d.ts +1 -1
- package/dist/types/components/node-graph/layout.d.ts +42 -0
- package/dist/types/components/node-graph/node-graph.d.ts +1 -1
- package/dist/types/components/popover/index.d.ts +3 -3
- package/dist/types/components/popover/popover.vue.d.ts +1 -1
- package/dist/types/components/progress-group/index.d.ts +3 -0
- package/dist/types/components/progress-group/progress-group.d.ts +7 -0
- package/dist/types/components/progress-group/progress-group.vue.d.ts +1 -0
- package/dist/types/components/qrcode/index.d.ts +3 -0
- package/dist/types/components/qrcode/qrcode.d.ts +5 -0
- package/dist/types/components/qrcode/qrcode.vue.d.ts +1 -0
- package/dist/types/components/select/index.d.ts +3 -3
- package/dist/types/components/select/select.vue.d.ts +1 -1
- package/dist/types/components/sortable/index.d.ts +3 -3
- package/dist/types/components/status-dot/index.d.ts +51 -0
- package/dist/types/components/status-dot/status-dot.d.ts +46 -0
- package/dist/types/components/status-dot/status-dot.vue.d.ts +46 -0
- package/dist/types/components/steps/steps.d.ts +1 -1
- package/dist/types/components/switch/index.d.ts +3 -3
- package/dist/types/components/table/index.d.ts +4 -3
- package/dist/types/components/table/table.d.ts +6 -1
- package/dist/types/components/tabs/index.d.ts +3 -0
- package/dist/types/components/tabs/tabs.d.ts +16 -3
- package/dist/types/components/tabs/tabs.vue.d.ts +1 -0
- package/dist/types/components/timeline/index.d.ts +3 -3
- package/dist/types/components/timeline/timeline-item.vue.d.ts +1 -1
- package/dist/types/components/toast/index.d.ts +0 -2
- package/dist/types/components/toast/store.d.ts +0 -4
- package/dist/types/components/virtual-list/index.d.ts +3 -3
- package/dist/types/components/virtual-list/virtual-list.d.ts +2 -0
- package/dist/types/composables/use-popup.d.ts +15 -5
- package/dist/types/index.d.ts +1 -0
- package/dist/types/locale/types.d.ts +20 -7
- package/dist/types/utils/app-context.d.ts +14 -0
- package/dist/types/utils/only-child.d.ts +3 -1
- package/dist/types/utils/pointer.d.ts +5 -0
- package/dist/types/utils/safe-url.d.ts +14 -0
- package/dist/types/utils/status-check.d.ts +8 -0
- package/dist/utils/app-context.js +22 -0
- package/dist/utils/app-context.js.map +1 -0
- package/dist/utils/install.js +5 -0
- package/dist/utils/install.js.map +1 -1
- package/dist/utils/only-child.js +56 -5
- package/dist/utils/only-child.js.map +1 -1
- package/dist/utils/pointer.js +6 -1
- package/dist/utils/pointer.js.map +1 -1
- package/dist/utils/safe-url.js +57 -0
- package/dist/utils/safe-url.js.map +1 -0
- package/dist/utils/status-check.js +27 -0
- package/dist/utils/status-check.js.map +1 -0
- package/package.json +3 -3
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
import { useNamespace } from "../../utils/namespace.js";
|
|
2
2
|
import { useLocale } from "../config-provider/use-config.js";
|
|
3
|
+
import { checkedUrl, opensNewTab } from "../../utils/safe-url.js";
|
|
4
|
+
import { DouPopover } from "../popover/index.js";
|
|
3
5
|
import { sourceSite } from "./chat-sources.js";
|
|
4
|
-
import
|
|
5
|
-
import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, defineComponent, normalizeClass, openBlock, resolveDynamicComponent, toDisplayString, unref, withCtx } from "vue";
|
|
6
|
+
import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, defineComponent, normalizeClass, openBlock, ref, resolveDynamicComponent, toDisplayString, unref, withCtx } from "vue";
|
|
6
7
|
import { GlobeIcon } from "@dou-ui/icons";
|
|
7
8
|
// src/components/chat-sources/chat-citation.vue?vue&type=script&setup=true&lang.ts
|
|
8
9
|
var _hoisted_1 = ["src"];
|
|
10
|
+
var _hoisted_2 = [
|
|
11
|
+
"href",
|
|
12
|
+
"target",
|
|
13
|
+
"rel"
|
|
14
|
+
];
|
|
9
15
|
var chat_citation_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
10
16
|
name: "DouChatCitation",
|
|
11
17
|
__name: "chat-citation",
|
|
@@ -17,19 +23,39 @@ var chat_citation_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ de
|
|
|
17
23
|
const props = __props;
|
|
18
24
|
const ns = useNamespace("chat-citation");
|
|
19
25
|
const { t } = useLocale();
|
|
26
|
+
const href = computed(() => checkedUrl("DouChatCitation", props.source?.url));
|
|
27
|
+
const newTab = computed(() => !!href.value && opensNewTab(href.value));
|
|
20
28
|
const site = computed(() => props.source ? sourceSite(props.source) : "");
|
|
21
29
|
const label = computed(() => props.source ? t("chat.citation", {
|
|
22
30
|
index: props.index,
|
|
23
31
|
title: props.source.title
|
|
24
32
|
}) : String(props.index));
|
|
33
|
+
const open = ref(false);
|
|
34
|
+
let byFocus = false;
|
|
35
|
+
function onFocus(event) {
|
|
36
|
+
if (open.value || !event.target.matches(":focus-visible")) return;
|
|
37
|
+
byFocus = true;
|
|
38
|
+
open.value = true;
|
|
39
|
+
}
|
|
40
|
+
function onOpen(value) {
|
|
41
|
+
if (!value) byFocus = false;
|
|
42
|
+
}
|
|
43
|
+
function onBlur(event) {
|
|
44
|
+
const to = event.relatedTarget;
|
|
45
|
+
if (!byFocus || to?.closest(`.${ns.e("popover")}`)) return;
|
|
46
|
+
byFocus = false;
|
|
47
|
+
open.value = false;
|
|
48
|
+
}
|
|
25
49
|
return (_ctx, _cache) => {
|
|
26
|
-
return __props.source ? (openBlock(), createBlock(
|
|
50
|
+
return __props.source ? (openBlock(), createBlock(unref(DouPopover), {
|
|
27
51
|
key: 0,
|
|
28
52
|
trigger: "hover",
|
|
29
53
|
placement: "top",
|
|
30
54
|
width: 300,
|
|
31
55
|
"show-delay": 150,
|
|
32
|
-
class: normalizeClass(unref(ns).e("popover"))
|
|
56
|
+
class: normalizeClass(unref(ns).e("popover")),
|
|
57
|
+
open: open.value,
|
|
58
|
+
"onUpdate:open": [_cache[0] || (_cache[0] = ($event) => open.value = $event), onOpen]
|
|
33
59
|
}, {
|
|
34
60
|
content: withCtx(() => [
|
|
35
61
|
createElementVNode("span", { class: normalizeClass(unref(ns).e("site")) }, [__props.source.icon ? (openBlock(), createElementBlock("img", {
|
|
@@ -41,23 +67,35 @@ var chat_citation_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ de
|
|
|
41
67
|
key: 1,
|
|
42
68
|
class: normalizeClass(unref(ns).e("favicon"))
|
|
43
69
|
}, null, 8, ["class"])), createTextVNode(" " + toDisplayString(site.value), 1)], 2),
|
|
44
|
-
|
|
45
|
-
__props.source.description ? (openBlock(), createElementBlock("span", {
|
|
70
|
+
href.value ? (openBlock(), createElementBlock("a", {
|
|
46
71
|
key: 0,
|
|
72
|
+
class: normalizeClass([unref(ns).e("title"), unref(ns).e("link")]),
|
|
73
|
+
href: href.value,
|
|
74
|
+
target: newTab.value ? "_blank" : void 0,
|
|
75
|
+
rel: newTab.value ? "noopener noreferrer" : void 0,
|
|
76
|
+
onBlur
|
|
77
|
+
}, toDisplayString(__props.source.title), 43, _hoisted_2)) : (openBlock(), createElementBlock("span", {
|
|
78
|
+
key: 1,
|
|
79
|
+
class: normalizeClass(unref(ns).e("title"))
|
|
80
|
+
}, toDisplayString(__props.source.title), 3)),
|
|
81
|
+
__props.source.description ? (openBlock(), createElementBlock("span", {
|
|
82
|
+
key: 2,
|
|
47
83
|
class: normalizeClass(unref(ns).e("description"))
|
|
48
84
|
}, toDisplayString(__props.source.description), 3)) : createCommentVNode("", true)
|
|
49
85
|
]),
|
|
50
|
-
default: withCtx(() => [(openBlock(), createBlock(resolveDynamicComponent(
|
|
86
|
+
default: withCtx(() => [(openBlock(), createBlock(resolveDynamicComponent(href.value ? "a" : "span"), {
|
|
51
87
|
class: normalizeClass(unref(ns).b()),
|
|
52
|
-
href:
|
|
53
|
-
target:
|
|
54
|
-
rel:
|
|
55
|
-
tabindex:
|
|
56
|
-
"aria-label": label.value
|
|
88
|
+
href: href.value,
|
|
89
|
+
target: newTab.value ? "_blank" : void 0,
|
|
90
|
+
rel: newTab.value ? "noopener noreferrer" : void 0,
|
|
91
|
+
tabindex: href.value ? void 0 : 0,
|
|
92
|
+
"aria-label": label.value,
|
|
93
|
+
onFocus,
|
|
94
|
+
onBlur
|
|
57
95
|
}, {
|
|
58
96
|
default: withCtx(() => [createTextVNode(toDisplayString(__props.index), 1)]),
|
|
59
97
|
_: 1
|
|
60
|
-
},
|
|
98
|
+
}, 40, [
|
|
61
99
|
"class",
|
|
62
100
|
"href",
|
|
63
101
|
"target",
|
|
@@ -66,7 +104,7 @@ var chat_citation_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ de
|
|
|
66
104
|
"aria-label"
|
|
67
105
|
]))]),
|
|
68
106
|
_: 1
|
|
69
|
-
}, 8, ["class"])) : (openBlock(), createElementBlock("span", {
|
|
107
|
+
}, 8, ["class", "open"])) : (openBlock(), createElementBlock("span", {
|
|
70
108
|
key: 1,
|
|
71
109
|
class: normalizeClass(unref(ns).b())
|
|
72
110
|
}, toDisplayString(__props.index), 3));
|
package/dist/components/chat-sources/chat-citation.vue_vue_type_script_setup_true_lang.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-citation.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createBlock","
|
|
1
|
+
{"version":3,"file":"chat-citation.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createBlock","_unref","_normalizeClass","_withCtx","_createElementVNode","_createElementBlock","_createTextVNode","_toDisplayString","_createCommentVNode","_resolveDynamicComponent"],"sources":["../../../src/components/chat-sources/chat-citation.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { GlobeIcon } from '@dou-ui/icons'\nimport { computed, ref } from 'vue'\nimport { useNamespace } from '../../utils/namespace'\nimport { checkedUrl, opensNewTab } from '../../utils/safe-url'\nimport { useLocale } from '../config-provider/use-config'\nimport { DouPopover } from '../popover'\nimport { sourceSite } from './chat-sources'\nimport type { ChatCitationProps } from './chat-sources'\n\ndefineOptions({ name: 'DouChatCitation' })\n\nconst props = defineProps<ChatCitationProps>()\n\nconst ns = useNamespace('chat-citation')\nconst { t } = useLocale()\n// unsafe addresses such as `javascript:` are shown without a link\nconst href = computed(() => checkedUrl('DouChatCitation', props.source?.url))\nconst newTab = computed(() => !!href.value && opensNewTab(href.value))\nconst site = computed(() => (props.source ? sourceSite(props.source) : ''))\nconst label = computed(() =>\n props.source\n ? t('chat.citation', { index: props.index, title: props.source.title })\n : String(props.index),\n)\n\n/*\n * Hover shows the card; a tap opens it first, and the title in it is the\n * link (a second tap on the number follows it too). Focus from the\n * keyboard shows the card, and it goes when focus leaves for somewhere\n * other than the card.\n */\nconst open = ref(false)\nlet byFocus = false\nfunction onFocus(event: FocusEvent) {\n if (open.value || !(event.target as Element).matches(':focus-visible')) return\n byFocus = true\n open.value = true\n}\nfunction onOpen(value: boolean) {\n if (!value) byFocus = false\n}\nfunction onBlur(event: FocusEvent) {\n const to = event.relatedTarget as Element | null\n if (!byFocus || to?.closest(`.${ns.e('popover')}`)) return\n byFocus = false\n open.value = false\n}\n</script>\n\n<template>\n <DouPopover\n v-if=\"source\"\n trigger=\"hover\"\n placement=\"top\"\n :width=\"300\"\n :show-delay=\"150\"\n :class=\"ns.e('popover')\"\n v-model:open=\"open\"\n @update:open=\"onOpen\"\n >\n <component\n :is=\"href ? 'a' : 'span'\"\n :class=\"ns.b()\"\n :href=\"href\"\n :target=\"newTab ? '_blank' : undefined\"\n :rel=\"newTab ? 'noopener noreferrer' : undefined\"\n :tabindex=\"href ? undefined : 0\"\n :aria-label=\"label\"\n @focus=\"onFocus\"\n @blur=\"onBlur\"\n >{{ index }}</component\n >\n <template #content>\n <span :class=\"ns.e('site')\">\n <img v-if=\"source.icon\" :class=\"ns.e('favicon')\" :src=\"source.icon\" alt=\"\" />\n <GlobeIcon v-else :class=\"ns.e('favicon')\" />\n {{ site }}\n </span>\n <a\n v-if=\"href\"\n :class=\"[ns.e('title'), ns.e('link')]\"\n :href=\"href\"\n :target=\"newTab ? '_blank' : undefined\"\n :rel=\"newTab ? 'noopener noreferrer' : undefined\"\n @blur=\"onBlur\"\n >{{ source.title }}</a\n >\n <span v-else :class=\"ns.e('title')\">{{ source.title }}</span>\n <span v-if=\"source.description\" :class=\"ns.e('description')\">{{ source.description }}</span>\n </template>\n </DouPopover>\n <span v-else :class=\"ns.b()\">{{ index }}</span>\n</template>\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-sources.js","names":[],"sources":["../../../src/components/chat-sources/chat-sources.ts"],"sourcesContent":["export interface ChatSource {\n /** Unique within the list. Defaults to the position. */\n key?: string | number\n title: string\n
|
|
1
|
+
{"version":3,"file":"chat-sources.js","names":[],"sources":["../../../src/components/chat-sources/chat-sources.ts"],"sourcesContent":["export interface ChatSource {\n /** Unique within the list. Defaults to the position. */\n key?: string | number\n title: string\n /**\n * Where the source lives. Without it the source is shown but not linked.\n * Only http(s), mailto, tel and relative addresses become links; others,\n * such as `javascript:`, are shown without a link. http(s) and relative\n * links open in a new tab.\n */\n url?: string\n /** A short name for the site, e.g. `weather.sh.cn`. Defaults to the host of `url`. */\n site?: string\n /** A line of the text it was quoted from, shown in the citation preview. */\n description?: string\n /** A small image for the site, such as its favicon. */\n icon?: string\n}\n\nexport interface ChatSourcesProps {\n /** The sources, in citation order: the first is `[1]`. */\n items?: ChatSource[]\n /** Show at most this many, followed by a \"+N\" button that shows the rest. */\n max?: number\n}\n\nexport interface ChatSourcesSlots {\n /** Replaces the inside of each source. */\n item?: (props: { source: ChatSource; index: number }) => unknown\n}\n\nexport interface ChatCitationProps {\n /** The number shown, counted from 1. */\n index: number\n /** The source it points to. Shown in a preview on hover or focus. */\n source?: ChatSource\n}\n\n/** The host of a URL without `www.`, or an empty string when it does not parse. */\nexport function sourceSite(source: Pick<ChatSource, 'site' | 'url'>): string {\n if (source.site) return source.site\n if (!source.url) return ''\n try {\n return new URL(source.url).host.replace(/^www\\./, '')\n } catch {\n return ''\n }\n}\n"],"mappings":";;AAuCA,SAAgB,WAAW,QAAkD;CAC3E,IAAI,OAAO,MAAM,OAAO,OAAO;CAC/B,IAAI,CAAC,OAAO,KAAK,OAAO;CACxB,IAAI;EACF,OAAO,IAAI,IAAI,OAAO,GAAG,CAAC,CAAC,KAAK,QAAQ,UAAU,EAAE;CACtD,QAAQ;EACN,OAAO;CACT;AACF"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { useNamespace } from "../../utils/namespace.js";
|
|
2
2
|
import { useLocale } from "../config-provider/use-config.js";
|
|
3
|
+
import { checkedUrl, opensNewTab } from "../../utils/safe-url.js";
|
|
3
4
|
import { sourceSite } from "./chat-sources.js";
|
|
4
5
|
import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, defineComponent, normalizeClass, openBlock, ref, renderList, renderSlot, resolveDynamicComponent, toDisplayString, unref, withCtx } from "vue";
|
|
5
6
|
import { GlobeIcon } from "@dou-ui/icons";
|
|
@@ -21,6 +22,7 @@ var chat_sources_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
|
|
|
21
22
|
const expanded = ref(false);
|
|
22
23
|
const visible = computed(() => props.max === void 0 || expanded.value ? props.items : props.items.slice(0, props.max));
|
|
23
24
|
const hidden = computed(() => props.items.length - visible.value.length);
|
|
25
|
+
const hrefs = computed(() => visible.value.map((source) => checkedUrl("DouChatSources", source.url)));
|
|
24
26
|
return (_ctx, _cache) => {
|
|
25
27
|
return openBlock(), createElementBlock("div", { class: normalizeClass(unref(ns).b()) }, [createElementVNode("ol", {
|
|
26
28
|
class: normalizeClass(unref(ns).e("list")),
|
|
@@ -29,11 +31,11 @@ var chat_sources_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ def
|
|
|
29
31
|
return openBlock(), createElementBlock("li", {
|
|
30
32
|
key: source.key ?? index,
|
|
31
33
|
class: normalizeClass(unref(ns).e("item"))
|
|
32
|
-
}, [(openBlock(), createBlock(resolveDynamicComponent(
|
|
34
|
+
}, [(openBlock(), createBlock(resolveDynamicComponent(hrefs.value[index] ? "a" : "span"), {
|
|
33
35
|
class: normalizeClass(unref(ns).e("link")),
|
|
34
|
-
href:
|
|
35
|
-
target:
|
|
36
|
-
rel:
|
|
36
|
+
href: hrefs.value[index],
|
|
37
|
+
target: hrefs.value[index] && unref(opensNewTab)(hrefs.value[index]) ? "_blank" : void 0,
|
|
38
|
+
rel: hrefs.value[index] && unref(opensNewTab)(hrefs.value[index]) ? "noopener noreferrer" : void 0,
|
|
37
39
|
title: source.title
|
|
38
40
|
}, {
|
|
39
41
|
default: withCtx(() => [renderSlot(_ctx.$slots, "item", {
|
package/dist/components/chat-sources/chat-sources.vue_vue_type_script_setup_true_lang.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-sources.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_normalizeClass","_unref","_createElementVNode","_Fragment","_renderList","_createBlock","_resolveDynamicComponent","_withCtx","_renderSlot","_toDisplayString","_createCommentVNode"],"sources":["../../../src/components/chat-sources/chat-sources.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { GlobeIcon } from '@dou-ui/icons'\nimport { computed, ref } from 'vue'\nimport { useNamespace } from '../../utils/namespace'\nimport { useLocale } from '../config-provider/use-config'\nimport { sourceSite } from './chat-sources'\nimport type { ChatSourcesProps, ChatSourcesSlots } from './chat-sources'\n\ndefineOptions({ name: 'DouChatSources' })\n\nconst props = withDefaults(defineProps<ChatSourcesProps>(), {\n items: () => [],\n})\ndefineSlots<ChatSourcesSlots>()\n\nconst ns = useNamespace('chat-sources')\nconst { t } = useLocale()\n\nconst expanded = ref(false)\nconst visible = computed(() =>\n props.max === undefined || expanded.value ? props.items : props.items.slice(0, props.max),\n)\nconst hidden = computed(() => props.items.length - visible.value.length)\n</script>\n\n<template>\n <div :class=\"ns.b()\">\n <ol :class=\"ns.e('list')\" :aria-label=\"t('chat.sources')\">\n <li v-for=\"(source, index) in visible\" :key=\"source.key ?? index\" :class=\"ns.e('item')\">\n <component\n :is=\"
|
|
1
|
+
{"version":3,"file":"chat-sources.vue_vue_type_script_setup_true_lang.js","names":["_openBlock","_createElementBlock","_normalizeClass","_unref","_createElementVNode","_Fragment","_renderList","_createBlock","_resolveDynamicComponent","_withCtx","_renderSlot","_toDisplayString","_createCommentVNode"],"sources":["../../../src/components/chat-sources/chat-sources.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { GlobeIcon } from '@dou-ui/icons'\nimport { computed, ref } from 'vue'\nimport { useNamespace } from '../../utils/namespace'\nimport { checkedUrl, opensNewTab } from '../../utils/safe-url'\nimport { useLocale } from '../config-provider/use-config'\nimport { sourceSite } from './chat-sources'\nimport type { ChatSourcesProps, ChatSourcesSlots } from './chat-sources'\n\ndefineOptions({ name: 'DouChatSources' })\n\nconst props = withDefaults(defineProps<ChatSourcesProps>(), {\n items: () => [],\n})\ndefineSlots<ChatSourcesSlots>()\n\nconst ns = useNamespace('chat-sources')\nconst { t } = useLocale()\n\nconst expanded = ref(false)\nconst visible = computed(() =>\n props.max === undefined || expanded.value ? props.items : props.items.slice(0, props.max),\n)\nconst hidden = computed(() => props.items.length - visible.value.length)\n// unsafe addresses such as `javascript:` are shown without a link\nconst hrefs = computed(() =>\n visible.value.map((source) => checkedUrl('DouChatSources', source.url)),\n)\n</script>\n\n<template>\n <div :class=\"ns.b()\">\n <ol :class=\"ns.e('list')\" :aria-label=\"t('chat.sources')\">\n <li v-for=\"(source, index) in visible\" :key=\"source.key ?? index\" :class=\"ns.e('item')\">\n <component\n :is=\"hrefs[index] ? 'a' : 'span'\"\n :class=\"ns.e('link')\"\n :href=\"hrefs[index]\"\n :target=\"hrefs[index] && opensNewTab(hrefs[index]) ? '_blank' : undefined\"\n :rel=\"hrefs[index] && opensNewTab(hrefs[index]) ? 'noopener noreferrer' : undefined\"\n :title=\"source.title\"\n >\n <slot name=\"item\" :source=\"source\" :index=\"index\">\n <span :class=\"ns.e('index')\">{{ index + 1 }}</span>\n <img v-if=\"source.icon\" :class=\"ns.e('favicon')\" :src=\"source.icon\" alt=\"\" />\n <GlobeIcon v-else :class=\"ns.e('favicon')\" />\n <span :class=\"ns.e('site')\">{{ sourceSite(source) || source.title }}</span>\n <span v-if=\"sourceSite(source)\" :class=\"ns.e('title')\">{{ source.title }}</span>\n </slot>\n </component>\n </li>\n <li v-if=\"hidden > 0\">\n <button type=\"button\" :class=\"[ns.e('link'), ns.e('more')]\" @click=\"expanded = true\">\n +{{ hidden }}\n </button>\n </li>\n </ol>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;EAWA,MAAM,QAAQ;EAKd,MAAM,KAAK,aAAa,cAAc;EACtC,MAAM,EAAE,MAAM,UAAU;EAExB,MAAM,WAAW,IAAI,KAAK;EAC1B,MAAM,UAAU,eACd,MAAM,QAAQ,KAAA,KAAa,SAAS,QAAQ,MAAM,QAAQ,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,CAC1F;EACA,MAAM,SAAS,eAAe,MAAM,MAAM,SAAS,QAAQ,MAAM,MAAM;EAEvE,MAAM,QAAQ,eACZ,QAAQ,MAAM,KAAK,WAAW,WAAW,kBAAkB,OAAO,GAAG,CAAC,CACxE;;GAIE,OAAAA,UAAA,GAAAC,mBA0BM,OAAA,EA1BA,OAAKC,eAAEC,MAAA,EAAA,CAAE,CAAC,EAAC,CAAA,E,IACfC,mBAwBK,MAAA;IAxBA,OAAKF,eAAEC,MAAA,EAAA,CAAE,CAAC,EAAC,MAAA,CAAA;IAAW,cAAYA,MAAA,CAAA,CAAC,CAAA,cAAA;G,KACtCH,UAAA,IAAA,GAAAC,mBAiBKI,UAAA,MAAAC,WAjByB,QAAA,QAAlB,QAAQ,UAAK;IAAzB,OAAAN,UAAA,GAAAC,mBAiBK,MAAA;KAjBmC,KAAK,OAAO,OAAO;KAAQ,OAAKC,eAAEC,MAAA,EAAA,CAAE,CAAC,EAAC,MAAA,CAAA;I,KAC5EH,UAAA,GAAAO,YAeYC,wBAdL,MAAA,MAAM,SAAK,MAAA,MAAA,GAAA;KACf,OAAKN,eAAEC,MAAA,EAAA,CAAE,CAAC,EAAC,MAAA,CAAA;KACX,MAAM,MAAA,MAAM;KACZ,QAAQ,MAAA,MAAM,UAAUA,MAAA,WAAA,CAAW,CAAC,MAAA,MAAM,MAAK,IAAA,WAAgB,KAAA;KAC/D,KAAK,MAAA,MAAM,UAAUA,MAAA,WAAA,CAAW,CAAC,MAAA,MAAM,MAAK,IAAA,wBAA6B,KAAA;KACzE,OAAO,OAAO;;KAEf,SAAAM,cAMO,CANPC,WAMO,KAAA,QAAA,QAAA;MANoB;MAAgB;KAA3C,SAMO;MALLN,mBAAmD,QAAA,EAA5C,OAAKF,eAAEC,MAAA,EAAA,CAAE,CAAC,EAAC,OAAA,CAAA,EAAc,GAAAQ,gBAAA,QAAK,CAAA,GAAA,CAAA;MAC1B,OAAO,QAAlBX,UAAA,GAAAC,mBAA6E,OAAA;;OAApD,OAAKC,eAAEC,MAAA,EAAA,CAAE,CAAC,EAAC,SAAA,CAAA;OAAc,KAAK,OAAO;OAAM,KAAI;M,6BACxEH,UAAA,GAAAO,YAA6CJ,MAAA,SAAA,GAAA;;OAA1B,OAAKD,eAAEC,MAAA,EAAA,CAAE,CAAC,EAAC,SAAA,CAAA;;MAC9BC,mBAA2E,QAAA,EAApE,OAAKF,eAAEC,MAAA,EAAA,CAAE,CAAC,EAAC,MAAA,CAAA,EAAa,GAAAQ,gBAAAR,MAAA,UAAA,CAAU,CAAC,MAAM,KAAK,OAAO,KAAK,GAAA,CAAA;MACrDA,MAAA,UAAA,CAAU,CAAC,MAAM,KAA7BH,UAAA,GAAAC,mBAAgF,QAAA;;OAA/C,OAAKC,eAAEC,MAAA,EAAA,CAAE,CAAC,EAAC,OAAA,CAAA;MAAc,GAAAQ,gBAAA,OAAO,KAAK,GAAA,CAAA,K;;;;;;;;;;G,WAIlE,OAAA,QAAM,KAAhBX,UAAA,GAAAC,mBAIK,MAAA,YAAA,CAHHG,mBAES,UAAA;IAFD,MAAK;IAAU,OAAKF,eAAA,CAAGC,MAAA,EAAA,CAAE,CAAC,EAAC,MAAA,GAAUA,MAAA,EAAA,CAAE,CAAC,EAAC,MAAA,CAAA,CAAA;IAAY,SAAK,OAAA,OAAA,OAAA,MAAA,WAAE,SAAA,QAAQ;GAAS,GAAA,OAClFQ,gBAAG,OAAA,KAAM,GAAA,CAAA,C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-sources2.js","names":["_sfc_main"],"sources":["../../../src/components/chat-sources/chat-sources.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { GlobeIcon } from '@dou-ui/icons'\nimport { computed, ref } from 'vue'\nimport { useNamespace } from '../../utils/namespace'\nimport { useLocale } from '../config-provider/use-config'\nimport { sourceSite } from './chat-sources'\nimport type { ChatSourcesProps, ChatSourcesSlots } from './chat-sources'\n\ndefineOptions({ name: 'DouChatSources' })\n\nconst props = withDefaults(defineProps<ChatSourcesProps>(), {\n items: () => [],\n})\ndefineSlots<ChatSourcesSlots>()\n\nconst ns = useNamespace('chat-sources')\nconst { t } = useLocale()\n\nconst expanded = ref(false)\nconst visible = computed(() =>\n props.max === undefined || expanded.value ? props.items : props.items.slice(0, props.max),\n)\nconst hidden = computed(() => props.items.length - visible.value.length)\n</script>\n\n<template>\n <div :class=\"ns.b()\">\n <ol :class=\"ns.e('list')\" :aria-label=\"t('chat.sources')\">\n <li v-for=\"(source, index) in visible\" :key=\"source.key ?? index\" :class=\"ns.e('item')\">\n <component\n :is=\"
|
|
1
|
+
{"version":3,"file":"chat-sources2.js","names":["_sfc_main"],"sources":["../../../src/components/chat-sources/chat-sources.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { GlobeIcon } from '@dou-ui/icons'\nimport { computed, ref } from 'vue'\nimport { useNamespace } from '../../utils/namespace'\nimport { checkedUrl, opensNewTab } from '../../utils/safe-url'\nimport { useLocale } from '../config-provider/use-config'\nimport { sourceSite } from './chat-sources'\nimport type { ChatSourcesProps, ChatSourcesSlots } from './chat-sources'\n\ndefineOptions({ name: 'DouChatSources' })\n\nconst props = withDefaults(defineProps<ChatSourcesProps>(), {\n items: () => [],\n})\ndefineSlots<ChatSourcesSlots>()\n\nconst ns = useNamespace('chat-sources')\nconst { t } = useLocale()\n\nconst expanded = ref(false)\nconst visible = computed(() =>\n props.max === undefined || expanded.value ? props.items : props.items.slice(0, props.max),\n)\nconst hidden = computed(() => props.items.length - visible.value.length)\n// unsafe addresses such as `javascript:` are shown without a link\nconst hrefs = computed(() =>\n visible.value.map((source) => checkedUrl('DouChatSources', source.url)),\n)\n</script>\n\n<template>\n <div :class=\"ns.b()\">\n <ol :class=\"ns.e('list')\" :aria-label=\"t('chat.sources')\">\n <li v-for=\"(source, index) in visible\" :key=\"source.key ?? index\" :class=\"ns.e('item')\">\n <component\n :is=\"hrefs[index] ? 'a' : 'span'\"\n :class=\"ns.e('link')\"\n :href=\"hrefs[index]\"\n :target=\"hrefs[index] && opensNewTab(hrefs[index]) ? '_blank' : undefined\"\n :rel=\"hrefs[index] && opensNewTab(hrefs[index]) ? 'noopener noreferrer' : undefined\"\n :title=\"source.title\"\n >\n <slot name=\"item\" :source=\"source\" :index=\"index\">\n <span :class=\"ns.e('index')\">{{ index + 1 }}</span>\n <img v-if=\"source.icon\" :class=\"ns.e('favicon')\" :src=\"source.icon\" alt=\"\" />\n <GlobeIcon v-else :class=\"ns.e('favicon')\" />\n <span :class=\"ns.e('site')\">{{ sourceSite(source) || source.title }}</span>\n <span v-if=\"sourceSite(source)\" :class=\"ns.e('title')\">{{ source.title }}</span>\n </slot>\n </component>\n </li>\n <li v-if=\"hidden > 0\">\n <button type=\"button\" :class=\"[ns.e('link'), ns.e('more')]\" @click=\"expanded = true\">\n +{{ hidden }}\n </button>\n </li>\n </ol>\n </div>\n</template>\n"],"mappings":""}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { withInstall } from "../../utils/install.js";
|
|
2
|
-
import chat_sources_default from "./chat-sources2.js";
|
|
3
2
|
import chat_citation_default from "./chat-citation.js";
|
|
3
|
+
import chat_sources_default from "./chat-sources2.js";
|
|
4
4
|
// src/components/chat-sources/index.ts
|
|
5
5
|
var DouChatSources = withInstall(chat_sources_default);
|
|
6
6
|
var DouChatCitation = withInstall(chat_citation_default);
|
|
@@ -1,6 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
// src/components/chat-steps/chat-steps.ts
|
|
2
|
+
/**
|
|
3
|
+
* Whether the steps are running, as they show it: `live` when set, else
|
|
4
|
+
* whether a step is `running`. ChatMessage reads the same for `aria-busy`.
|
|
5
|
+
*/
|
|
6
|
+
function stepsLive(items, live) {
|
|
7
|
+
return live ?? !!items?.some((step) => step.status === "running");
|
|
8
|
+
}
|
|
9
|
+
export { stepsLive };
|
|
5
10
|
|
|
6
11
|
//# sourceMappingURL=chat-steps.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-steps.js","names":[
|
|
1
|
+
{"version":3,"file":"chat-steps.js","names":[],"sources":["../../../src/components/chat-steps/chat-steps.ts"],"sourcesContent":["import type { Component } from 'vue'\n\nexport type ChatStepStatus = 'running' | 'done' | 'error'\n\nexport interface ChatStep {\n /** Unique within the list. Defaults to the position. */\n key?: string | number\n /** What the step does, e.g. \"Searched the web\". */\n label: string\n /** What it was about, e.g. the query or the file name, shown quieter after the label. */\n detail?: string\n /** Defaults to `done`. */\n status?: ChatStepStatus\n /** An icon component for the step. A neutral dot when omitted. */\n icon?: Component\n}\n\nexport interface ChatStepsProps {\n /** The steps so far, in order. */\n items?: ChatStep[]\n /**\n * The work is going on now. While it is, the summary line names the\n * running step; afterwards it counts the steps. Defaults to whether any\n * step is `running`. Off once the turn has ended or been stopped: a\n * `running` step holds still, a solid dot in place of the spinner.\n */\n live?: boolean\n /** Replaces the summary line. */\n title?: string\n /** Expanded or not. Bound with `v-model:open`; folded by default. */\n open?: boolean\n}\n\nexport interface ChatStepsEmits {\n 'update:open': [open: boolean]\n}\n\nexport interface ChatStepsSlots {\n /** Replaces each step's text. */\n step?: (props: { step: ChatStep; index: number }) => unknown\n /** Content under each step, e.g. a tool call's result. */\n detail?: (props: { step: ChatStep; index: number }) => unknown\n /** Replaces the summary line. */\n title?: (props: { live: boolean; count: number }) => unknown\n}\n\n/**\n * Whether the steps are running, as they show it: `live` when set, else\n * whether a step is `running`. ChatMessage reads the same for `aria-busy`.\n */\nexport function stepsLive(items: readonly ChatStep[] | undefined, live?: boolean): boolean {\n return live ?? !!items?.some((step) => step.status === 'running')\n}\n"],"mappings":";;;;;AAkDA,SAAgB,UAAU,OAAwC,MAAyB;CACzF,OAAO,QAAQ,CAAC,CAAC,OAAO,MAAM,SAAS,KAAK,WAAW,SAAS;AAClE"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { useNamespace } from "../../utils/namespace.js";
|
|
2
2
|
import { useLocale } from "../config-provider/use-config.js";
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import {
|
|
3
|
+
import { DouSpinner } from "../spinner/index.js";
|
|
4
|
+
import { DouShimmer } from "../shimmer/index.js";
|
|
5
|
+
import { DouCollapseTransition } from "../collapse/collapse-transition.js";
|
|
6
|
+
import { DouStatusDot } from "../status-dot/index.js";
|
|
7
|
+
import { stepsLive } from "./chat-steps.js";
|
|
6
8
|
import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, normalizeClass, openBlock, ref, renderList, renderSlot, resolveDynamicComponent, toDisplayString, unref, useId, useSlots, vShow, withCtx, withDirectives } from "vue";
|
|
7
9
|
import { AlertCircleIcon, ChevronDownIcon } from "@dou-ui/icons";
|
|
8
10
|
// src/components/chat-steps/chat-steps.vue?vue&type=script&setup=true&lang.ts
|
|
@@ -17,7 +19,7 @@ var chat_steps_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
|
|
|
17
19
|
__name: "chat-steps",
|
|
18
20
|
props: {
|
|
19
21
|
items: { default: () => [] },
|
|
20
|
-
|
|
22
|
+
live: {
|
|
21
23
|
type: Boolean,
|
|
22
24
|
default: void 0
|
|
23
25
|
},
|
|
@@ -44,17 +46,19 @@ var chat_steps_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
|
|
|
44
46
|
const current = computed(() => {
|
|
45
47
|
for (let i = props.items.length - 1; i >= 0; i--) if (props.items[i].status === "running") return props.items[i];
|
|
46
48
|
});
|
|
47
|
-
const
|
|
49
|
+
const live = computed(() => stepsLive(props.items, props.live));
|
|
48
50
|
const summary = computed(() => {
|
|
49
51
|
if (props.title) return props.title;
|
|
50
|
-
if (
|
|
51
|
-
|
|
52
|
+
if (live.value) return current.value?.label ?? t("chat.working");
|
|
53
|
+
const count = props.items.length;
|
|
54
|
+
const finished = props.items.every((step) => (step.status ?? "done") === "done");
|
|
55
|
+
return t(finished ? "chat.stepsDone" : "chat.stepsTotal", { count });
|
|
52
56
|
});
|
|
53
57
|
return (_ctx, _cache) => {
|
|
54
58
|
return openBlock(), createElementBlock("div", { class: normalizeClass([
|
|
55
59
|
unref(ns).b(),
|
|
56
60
|
unref(ns).is("open", open.value),
|
|
57
|
-
unref(ns).is("running",
|
|
61
|
+
unref(ns).is("running", live.value)
|
|
58
62
|
]) }, [createElementVNode("button", {
|
|
59
63
|
id: `${unref(id)}-trigger`,
|
|
60
64
|
type: "button",
|
|
@@ -63,12 +67,12 @@ var chat_steps_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
|
|
|
63
67
|
"aria-controls": `${unref(id)}-panel`,
|
|
64
68
|
onClick: toggle
|
|
65
69
|
}, [createElementVNode("span", { class: normalizeClass(unref(ns).e("title")) }, [renderSlot(_ctx.$slots, "title", {
|
|
66
|
-
|
|
70
|
+
live: live.value,
|
|
67
71
|
count: __props.items.length
|
|
68
|
-
}, () => [createVNode(
|
|
72
|
+
}, () => [createVNode(unref(DouShimmer), { active: live.value }, {
|
|
69
73
|
default: withCtx(() => [createTextVNode(toDisplayString(summary.value), 1)]),
|
|
70
74
|
_: 1
|
|
71
|
-
}, 8, ["active"])])], 2), createVNode(unref(ChevronDownIcon), { class: normalizeClass(unref(ns).e("arrow")) }, null, 8, ["class"])], 10, _hoisted_1), createVNode(unref(
|
|
75
|
+
}, 8, ["active"])])], 2), createVNode(unref(ChevronDownIcon), { class: normalizeClass(unref(ns).e("arrow")) }, null, 8, ["class"])], 10, _hoisted_1), createVNode(unref(DouCollapseTransition), null, {
|
|
72
76
|
default: withCtx(() => [withDirectives(createElementVNode("div", {
|
|
73
77
|
id: `${unref(id)}-panel`,
|
|
74
78
|
role: "region",
|
|
@@ -78,11 +82,14 @@ var chat_steps_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defin
|
|
|
78
82
|
return openBlock(), createElementBlock("li", {
|
|
79
83
|
key: step.key ?? index,
|
|
80
84
|
class: normalizeClass([unref(ns).e("step"), unref(ns).is(step.status ?? "done")])
|
|
81
|
-
}, [createElementVNode("span", { class: normalizeClass(unref(ns).e("mark")) }, [step.status === "running" ? (openBlock(), createBlock(
|
|
85
|
+
}, [createElementVNode("span", { class: normalizeClass(unref(ns).e("mark")) }, [step.status === "running" ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [live.value ? (openBlock(), createBlock(unref(DouSpinner), {
|
|
82
86
|
key: 0,
|
|
83
87
|
size: "sm",
|
|
84
88
|
label: unref(t)("chat.stepRunning")
|
|
85
|
-
}, null, 8, ["label"])) :
|
|
89
|
+
}, null, 8, ["label"])) : (openBlock(), createBlock(unref(DouStatusDot), {
|
|
90
|
+
key: 1,
|
|
91
|
+
label: unref(t)("chat.stepRunning")
|
|
92
|
+
}, null, 8, ["label"]))], 64)) : step.status === "error" ? (openBlock(), createBlock(unref(AlertCircleIcon), {
|
|
86
93
|
key: 1,
|
|
87
94
|
label: unref(t)("chat.stepError")
|
|
88
95
|
}, null, 8, ["label"])) : step.icon ? (openBlock(), createBlock(resolveDynamicComponent(step.icon), { key: 2 })) : (openBlock(), createElementBlock("span", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-steps.vue_vue_type_script_setup_true_lang.js","names":["_useSlots","_openBlock","_createElementBlock","_normalizeClass","_unref","_createElementVNode","_renderSlot","_createVNode","
|
|
1
|
+
{"version":3,"file":"chat-steps.vue_vue_type_script_setup_true_lang.js","names":["_useSlots","_openBlock","_createElementBlock","_normalizeClass","_unref","_createElementVNode","_renderSlot","_createVNode","_withCtx","_createTextVNode","_toDisplayString","CollapseTransition","_withDirectives","_Fragment","_renderList","_createBlock","_resolveDynamicComponent","_createCommentVNode","_vShow"],"sources":["../../../src/components/chat-steps/chat-steps.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { AlertCircleIcon, ChevronDownIcon } from '@dou-ui/icons'\nimport { computed, ref, useId } from 'vue'\nimport { useNamespace } from '../../utils/namespace'\nimport { DouCollapseTransition as CollapseTransition } from '../collapse/collapse-transition'\nimport { useLocale } from '../config-provider/use-config'\nimport { DouShimmer } from '../shimmer'\nimport { DouSpinner } from '../spinner'\nimport { DouStatusDot } from '../status-dot'\nimport { stepsLive } from './chat-steps'\nimport type { ChatStepsEmits, ChatStepsProps, ChatStepsSlots } from './chat-steps'\n\ndefineOptions({ name: 'DouChatSteps' })\n\nconst props = withDefaults(defineProps<ChatStepsProps>(), {\n items: () => [],\n live: undefined,\n open: undefined,\n})\nconst emit = defineEmits<ChatStepsEmits>()\nconst slots = defineSlots<ChatStepsSlots>()\n\nconst ns = useNamespace('chat-steps')\nconst { t } = useLocale()\nconst id = useId()\n\nconst inner = ref(false)\nconst open = computed(() => props.open ?? inner.value)\nfunction toggle() {\n inner.value = !open.value\n emit('update:open', inner.value)\n}\n\n// the last running step; a loop, since `findLast` needs a newer lib than the build targets\nconst current = computed(() => {\n for (let i = props.items.length - 1; i >= 0; i--) {\n if (props.items[i]!.status === 'running') return props.items[i]\n }\n return undefined\n})\nconst live = computed(() => stepsLive(props.items, props.live))\nconst summary = computed(() => {\n if (props.title) return props.title\n if (live.value) return current.value?.label ?? t('chat.working')\n // a stopped run with steps left unfinished doesn't read as done\n const count = props.items.length\n const finished = props.items.every((step) => (step.status ?? 'done') === 'done')\n return t(finished ? 'chat.stepsDone' : 'chat.stepsTotal', { count })\n})\n</script>\n\n<template>\n <div :class=\"[ns.b(), ns.is('open', open), ns.is('running', live)]\">\n <button\n :id=\"`${id}-trigger`\"\n type=\"button\"\n :class=\"ns.e('header')\"\n :aria-expanded=\"open\"\n :aria-controls=\"`${id}-panel`\"\n @click=\"toggle\"\n >\n <span :class=\"ns.e('title')\">\n <slot name=\"title\" :live=\"live\" :count=\"items.length\">\n <DouShimmer :active=\"live\">{{ summary }}</DouShimmer>\n </slot>\n </span>\n <ChevronDownIcon :class=\"ns.e('arrow')\" />\n </button>\n <CollapseTransition>\n <div\n v-show=\"open\"\n :id=\"`${id}-panel`\"\n role=\"region\"\n :class=\"ns.e('panel')\"\n :aria-labelledby=\"`${id}-trigger`\"\n >\n <ol :class=\"ns.e('list')\">\n <li\n v-for=\"(step, index) in items\"\n :key=\"step.key ?? index\"\n :class=\"[ns.e('step'), ns.is(step.status ?? 'done')]\"\n >\n <span :class=\"ns.e('mark')\">\n <template v-if=\"step.status === 'running'\">\n <DouSpinner v-if=\"live\" size=\"sm\" :label=\"t('chat.stepRunning')\" />\n <DouStatusDot v-else :label=\"t('chat.stepRunning')\" />\n </template>\n <AlertCircleIcon v-else-if=\"step.status === 'error'\" :label=\"t('chat.stepError')\" />\n <component :is=\"step.icon\" v-else-if=\"step.icon\" />\n <span v-else :class=\"ns.e('dot')\" />\n </span>\n <div :class=\"ns.e('body')\">\n <div :class=\"ns.e('line')\">\n <slot name=\"step\" :step=\"step\" :index=\"index\">\n <span :class=\"ns.e('label')\">{{ step.label }}</span>\n <span v-if=\"step.detail\" :class=\"ns.e('detail')\">{{ step.detail }}</span>\n </slot>\n </div>\n <div v-if=\"slots.detail\" :class=\"ns.e('extra')\">\n <slot name=\"detail\" :step=\"step\" :index=\"index\" />\n </div>\n </div>\n </li>\n </ol>\n </div>\n </CollapseTransition>\n </div>\n</template>\n"],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import chat_steps_vue_vue_type_script_setup_true_lang_default from "./chat-steps.vue_vue_type_script_setup_true_lang.js";
|
|
2
|
+
// src/components/chat-steps/chat-steps.vue
|
|
3
|
+
var chat_steps_default = chat_steps_vue_vue_type_script_setup_true_lang_default;
|
|
4
|
+
export { chat_steps_default as default };
|
|
5
|
+
|
|
6
|
+
//# sourceMappingURL=chat-steps2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-steps2.js","names":["_sfc_main"],"sources":["../../../src/components/chat-steps/chat-steps.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { AlertCircleIcon, ChevronDownIcon } from '@dou-ui/icons'\nimport { computed, ref, useId } from 'vue'\nimport { useNamespace } from '../../utils/namespace'\nimport { DouCollapseTransition as CollapseTransition } from '../collapse/collapse-transition'\nimport { useLocale } from '../config-provider/use-config'\nimport { DouShimmer } from '../shimmer'\nimport { DouSpinner } from '../spinner'\nimport { DouStatusDot } from '../status-dot'\nimport { stepsLive } from './chat-steps'\nimport type { ChatStepsEmits, ChatStepsProps, ChatStepsSlots } from './chat-steps'\n\ndefineOptions({ name: 'DouChatSteps' })\n\nconst props = withDefaults(defineProps<ChatStepsProps>(), {\n items: () => [],\n live: undefined,\n open: undefined,\n})\nconst emit = defineEmits<ChatStepsEmits>()\nconst slots = defineSlots<ChatStepsSlots>()\n\nconst ns = useNamespace('chat-steps')\nconst { t } = useLocale()\nconst id = useId()\n\nconst inner = ref(false)\nconst open = computed(() => props.open ?? inner.value)\nfunction toggle() {\n inner.value = !open.value\n emit('update:open', inner.value)\n}\n\n// the last running step; a loop, since `findLast` needs a newer lib than the build targets\nconst current = computed(() => {\n for (let i = props.items.length - 1; i >= 0; i--) {\n if (props.items[i]!.status === 'running') return props.items[i]\n }\n return undefined\n})\nconst live = computed(() => stepsLive(props.items, props.live))\nconst summary = computed(() => {\n if (props.title) return props.title\n if (live.value) return current.value?.label ?? t('chat.working')\n // a stopped run with steps left unfinished doesn't read as done\n const count = props.items.length\n const finished = props.items.every((step) => (step.status ?? 'done') === 'done')\n return t(finished ? 'chat.stepsDone' : 'chat.stepsTotal', { count })\n})\n</script>\n\n<template>\n <div :class=\"[ns.b(), ns.is('open', open), ns.is('running', live)]\">\n <button\n :id=\"`${id}-trigger`\"\n type=\"button\"\n :class=\"ns.e('header')\"\n :aria-expanded=\"open\"\n :aria-controls=\"`${id}-panel`\"\n @click=\"toggle\"\n >\n <span :class=\"ns.e('title')\">\n <slot name=\"title\" :live=\"live\" :count=\"items.length\">\n <DouShimmer :active=\"live\">{{ summary }}</DouShimmer>\n </slot>\n </span>\n <ChevronDownIcon :class=\"ns.e('arrow')\" />\n </button>\n <CollapseTransition>\n <div\n v-show=\"open\"\n :id=\"`${id}-panel`\"\n role=\"region\"\n :class=\"ns.e('panel')\"\n :aria-labelledby=\"`${id}-trigger`\"\n >\n <ol :class=\"ns.e('list')\">\n <li\n v-for=\"(step, index) in items\"\n :key=\"step.key ?? index\"\n :class=\"[ns.e('step'), ns.is(step.status ?? 'done')]\"\n >\n <span :class=\"ns.e('mark')\">\n <template v-if=\"step.status === 'running'\">\n <DouSpinner v-if=\"live\" size=\"sm\" :label=\"t('chat.stepRunning')\" />\n <DouStatusDot v-else :label=\"t('chat.stepRunning')\" />\n </template>\n <AlertCircleIcon v-else-if=\"step.status === 'error'\" :label=\"t('chat.stepError')\" />\n <component :is=\"step.icon\" v-else-if=\"step.icon\" />\n <span v-else :class=\"ns.e('dot')\" />\n </span>\n <div :class=\"ns.e('body')\">\n <div :class=\"ns.e('line')\">\n <slot name=\"step\" :step=\"step\" :index=\"index\">\n <span :class=\"ns.e('label')\">{{ step.label }}</span>\n <span v-if=\"step.detail\" :class=\"ns.e('detail')\">{{ step.detail }}</span>\n </slot>\n </div>\n <div v-if=\"slots.detail\" :class=\"ns.e('extra')\">\n <slot name=\"detail\" :step=\"step\" :index=\"index\" />\n </div>\n </div>\n </li>\n </ol>\n </div>\n </CollapseTransition>\n </div>\n</template>\n"],"mappings":""}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { withInstall } from "../../utils/install.js";
|
|
2
|
-
import chat_steps_default from "./chat-
|
|
2
|
+
import chat_steps_default from "./chat-steps2.js";
|
|
3
3
|
// src/components/chat-steps/index.ts
|
|
4
4
|
var DouChatSteps = withInstall(chat_steps_default);
|
|
5
5
|
export { DouChatSteps, DouChatSteps as default };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-tool-call.js","names":[],"sources":["../../../src/components/chat-tool-call/chat-tool-call.ts"],"sourcesContent":["
|
|
1
|
+
{"version":3,"file":"chat-tool-call.js","names":[],"sources":["../../../src/components/chat-tool-call/chat-tool-call.ts"],"sourcesContent":["/**\n * The same words as ChatPlan: `pending` hasn't started, `waiting` is paused on\n * someone else, such as the person allowing the call; `withdrawn` means the\n * call was taken back before it ran, as with ChatConfirm; the rest follow the run.\n */\nexport type ChatToolCallStatus = 'pending' | 'running' | 'waiting' | 'done' | 'error' | 'withdrawn'\n\nexport interface ChatToolCallProps {\n /** The tool's name, e.g. `search_web`. */\n name?: string\n /** A readable line shown instead of the name, e.g. \"Searching the web\". */\n title?: string\n status?: ChatToolCallStatus\n /** What the tool was called with. Objects are shown as formatted JSON. */\n input?: unknown\n /** What it returned, or the error. Objects are shown as formatted JSON. */\n output?: unknown\n /** Expanded or not. Bound with `v-model:open`. */\n open?: boolean\n /**\n * The run is going on now. Off once the turn has ended or been stopped: a\n * `running` call holds still, a solid dot in place of the spinner.\n */\n live?: boolean\n}\n\nexport interface ChatToolCallEmits {\n 'update:open': [open: boolean]\n}\n\nexport interface ChatToolCallSlots {\n /** Replaces the tool icon. */\n icon?: () => unknown\n /** Replaces the title. */\n title?: () => unknown\n /** Replaces the input section. */\n input?: () => unknown\n /** Replaces the output section. */\n output?: () => unknown\n /** Extra content in the panel, after the output. */\n default?: () => unknown\n /** Under the header, always visible: e.g. allow / deny buttons for a `waiting` call. */\n actions?: () => unknown\n}\n\n/** Show a value the way a person reads it: strings as they are, the rest as JSON. */\nexport function formatToolValue(value: unknown): string {\n if (typeof value === 'string') return value\n try {\n return JSON.stringify(value, null, 2) ?? String(value)\n } catch {\n return String(value)\n }\n}\n"],"mappings":";;AA8CA,SAAgB,gBAAgB,OAAwB;CACtD,IAAI,OAAO,UAAU,UAAU,OAAO;CACtC,IAAI;EACF,OAAO,KAAK,UAAU,OAAO,MAAM,CAAC,KAAK,OAAO,KAAK;CACvD,QAAQ;EACN,OAAO,OAAO,KAAK;CACrB;AACF"}
|
package/dist/components/chat-tool-call/chat-tool-call.vue_vue_type_script_setup_true_lang.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { useNamespace } from "../../utils/namespace.js";
|
|
2
2
|
import { useLocale } from "../config-provider/use-config.js";
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
3
|
+
import { devWarn, useStatusCheck } from "../../utils/status-check.js";
|
|
4
|
+
import { DouSpinner } from "../spinner/index.js";
|
|
5
|
+
import { DouCollapseTransition } from "../collapse/collapse-transition.js";
|
|
6
|
+
import { DouStatusDot } from "../status-dot/index.js";
|
|
5
7
|
import { formatToolValue } from "./chat-tool-call.js";
|
|
6
|
-
import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, normalizeClass, openBlock, ref, renderSlot, resolveDynamicComponent, toDisplayString, unref, useId, useSlots, vShow, withCtx, withDirectives } from "vue";
|
|
7
|
-
import { AlertCircleIcon, CheckCircleIcon, ChevronDownIcon, ClockIcon, WrenchIcon } from "@dou-ui/icons";
|
|
8
|
+
import { Fragment, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, normalizeClass, openBlock, ref, renderSlot, resolveDynamicComponent, toDisplayString, unref, useId, useSlots, vShow, watchEffect, withCtx, withDirectives } from "vue";
|
|
9
|
+
import { AlertCircleIcon, CheckCircleIcon, ChevronDownIcon, ClockIcon, ClockPauseIcon, UndoIcon, WrenchIcon } from "@dou-ui/icons";
|
|
8
10
|
// src/components/chat-tool-call/chat-tool-call.vue?vue&type=script&setup=true&lang.ts
|
|
9
11
|
var _hoisted_1 = ["id", "aria-labelledby"];
|
|
10
12
|
var chat_tool_call_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ defineComponent({
|
|
@@ -13,12 +15,16 @@ var chat_tool_call_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
|
|
|
13
15
|
props: {
|
|
14
16
|
name: {},
|
|
15
17
|
title: {},
|
|
16
|
-
status: { default: "
|
|
18
|
+
status: { default: "done" },
|
|
17
19
|
input: {},
|
|
18
20
|
output: {},
|
|
19
21
|
open: {
|
|
20
22
|
type: Boolean,
|
|
21
23
|
default: void 0
|
|
24
|
+
},
|
|
25
|
+
live: {
|
|
26
|
+
type: Boolean,
|
|
27
|
+
default: true
|
|
22
28
|
}
|
|
23
29
|
},
|
|
24
30
|
emits: ["update:open"],
|
|
@@ -38,11 +44,25 @@ var chat_tool_call_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
|
|
|
38
44
|
const hasInput = computed(() => !!slots.input || props.input !== void 0);
|
|
39
45
|
const hasOutput = computed(() => !!slots.output || props.output !== void 0);
|
|
40
46
|
const expandable = computed(() => hasInput.value || hasOutput.value || !!slots.default);
|
|
47
|
+
useStatusCheck("DouChatToolCall", () => [props.status], [
|
|
48
|
+
"pending",
|
|
49
|
+
"running",
|
|
50
|
+
"waiting",
|
|
51
|
+
"done",
|
|
52
|
+
"error",
|
|
53
|
+
"withdrawn"
|
|
54
|
+
], { success: "done" });
|
|
55
|
+
if (process.env.NODE_ENV !== "production") watchEffect(() => {
|
|
56
|
+
if (props.status !== "pending" || !slots.actions) return;
|
|
57
|
+
devWarn("[dou-ui] DouChatToolCall: `pending` now means not started; use `waiting` for a call that waits for approval.");
|
|
58
|
+
});
|
|
41
59
|
const statusText = computed(() => ({
|
|
42
60
|
pending: t("chat.toolPending"),
|
|
43
61
|
running: t("chat.toolRunning"),
|
|
44
|
-
|
|
45
|
-
|
|
62
|
+
waiting: t("chat.toolWaiting"),
|
|
63
|
+
done: t("chat.toolDone"),
|
|
64
|
+
error: t("chat.toolError"),
|
|
65
|
+
withdrawn: t("chat.toolWithdrawn")
|
|
46
66
|
})[props.status]);
|
|
47
67
|
return (_ctx, _cache) => {
|
|
48
68
|
return openBlock(), createElementBlock("div", { class: normalizeClass([
|
|
@@ -67,19 +87,25 @@ var chat_tool_call_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
|
|
|
67
87
|
key: 1,
|
|
68
88
|
class: normalizeClass(unref(ns).e("name"))
|
|
69
89
|
}, toDisplayString(__props.name), 3))])], 2),
|
|
70
|
-
createElementVNode("span", { class: normalizeClass(unref(ns).e("status")) }, [__props.status === "running" ? (openBlock(), createBlock(
|
|
90
|
+
createElementVNode("span", { class: normalizeClass(unref(ns).e("status")) }, [__props.status === "running" ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [__props.live ? (openBlock(), createBlock(unref(DouSpinner), {
|
|
71
91
|
key: 0,
|
|
72
92
|
size: "sm",
|
|
73
93
|
"aria-hidden": "true"
|
|
74
|
-
})) : __props.status === "pending" ? (openBlock(), createBlock(unref(ClockIcon), {
|
|
94
|
+
})) : (openBlock(), createBlock(unref(DouStatusDot), { key: 1 }))], 64)) : __props.status === "pending" ? (openBlock(), createBlock(unref(ClockIcon), {
|
|
75
95
|
key: 1,
|
|
76
96
|
"aria-hidden": "true"
|
|
77
|
-
})) : __props.status === "
|
|
97
|
+
})) : __props.status === "waiting" ? (openBlock(), createBlock(unref(ClockPauseIcon), {
|
|
78
98
|
key: 2,
|
|
79
99
|
"aria-hidden": "true"
|
|
80
|
-
})) : (openBlock(), createBlock(unref(
|
|
100
|
+
})) : __props.status === "done" ? (openBlock(), createBlock(unref(CheckCircleIcon), {
|
|
81
101
|
key: 3,
|
|
82
102
|
"aria-hidden": "true"
|
|
103
|
+
})) : __props.status === "withdrawn" ? (openBlock(), createBlock(unref(UndoIcon), {
|
|
104
|
+
key: 4,
|
|
105
|
+
"aria-hidden": "true"
|
|
106
|
+
})) : (openBlock(), createBlock(unref(AlertCircleIcon), {
|
|
107
|
+
key: 5,
|
|
108
|
+
"aria-hidden": "true"
|
|
83
109
|
})), createElementVNode("span", { class: normalizeClass(unref(ns).e("status-text")) }, toDisplayString(statusText.value), 3)], 2),
|
|
84
110
|
expandable.value ? (openBlock(), createBlock(unref(ChevronDownIcon), {
|
|
85
111
|
key: 0,
|
|
@@ -94,7 +120,7 @@ var chat_tool_call_vue_vue_type_script_setup_true_lang_default = /*@__PURE__*/ d
|
|
|
94
120
|
"aria-expanded",
|
|
95
121
|
"aria-controls"
|
|
96
122
|
])),
|
|
97
|
-
createVNode(unref(
|
|
123
|
+
createVNode(unref(DouCollapseTransition), null, {
|
|
98
124
|
default: withCtx(() => [expandable.value ? withDirectives((openBlock(), createElementBlock("div", {
|
|
99
125
|
key: 0,
|
|
100
126
|
id: `${unref(id)}-panel`,
|