2 lines
4.8 KiB
JavaScript
2 lines
4.8 KiB
JavaScript
import{d as A,w as D,b as o,e as K,s as S,c as l,A as y,g as t,t as r,f as q,n as C,F as j,r as N,h as Q,z as B,j as T,T as U,x as V,l as d}from"./runtime-dom.esm-bundler.js";import{_ as E}from"./_plugin-vue_export-helper.js";const F={class:"user-question-card",role:"dialog","aria-modal":"true","aria-label":"需要你回答一个问题"},O={class:"user-question-windowbar"},L={class:"user-question-traffic","aria-label":"窗口控制"},G={class:"user-question-header"},H={class:"user-question-title-block"},J={key:0,class:"user-question-kicker-row"},P={class:"user-question-kicker"},R={class:"user-question-nav","aria-label":"问题切换"},W=["disabled"],X=["disabled"],Y={key:0,class:"user-question-context"},Z={key:1,class:"user-question-options"},ee=["onClick"],te={class:"user-question-option__label"},se={key:0,class:"user-question-option__desc"},ie={class:"user-question-textarea-wrap"},ne=["onKeydown"],oe={class:"user-question-footer"},ae=["disabled"],ue={class:"user-question-actions"},le=["disabled"],re=A({__name:"UserQuestionDialog",props:{visible:{type:Boolean},questions:{},activeIndex:{},submittingIds:{}},emits:["minimize","update:active-index","submit","dismiss"],setup(c,{emit:I}){const n=c,m=I,a=V({}),f=(s,e)=>String((s==null?void 0:s.question_id)||`idx_${e}`);D(()=>n.questions,s=>{(s||[]).forEach((e,i)=>{const _=f(e,i);a[_]||(a[_]={selected_option_id:"",text:""})})},{immediate:!0,deep:!0});const v=d(()=>{const s=Math.max(0,(n.questions||[]).length-1);return Math.min(Math.max(0,Number(n.activeIndex||0)),s)}),u=d(()=>n.questions[v.value]||{}),h=d(()=>Array.isArray(u.value.options)?u.value.options:[]),k=d(()=>f(u.value,v.value)),p=d(()=>(a[k.value]||(a[k.value]={selected_option_id:"",text:""}),a[k.value])),b=d(()=>(n.submittingIds||[]).length>0),M=s=>{const e=n.questions[s],i=a[f(e,s)];return!!(i&&(i.selected_option_id||i.text.trim()))},g=d(()=>(n.questions||[]).every((s,e)=>M(e)));function w(s){m("update:active-index",v.value+s)}function $(s){p.value.selected_option_id=p.value.selected_option_id===s?"":s}function x(){if(!g.value||b.value)return;const s=(n.questions||[]).map((e,i)=>{const _=a[f(e,i)]||{selected_option_id:"",text:""};return{question_id:e.question_id,selected_option_id:_.selected_option_id||void 0,text:_.text.trim()}});m("submit",s)}function z(){var e;if(b.value)return;const s=String(((e=u.value)==null?void 0:e.question_id)||"").trim();s&&m("dismiss",s)}return(s,e)=>(o(),K(U,{name:"user-question-fade",appear:""},{default:S(()=>[c.visible&&c.questions.length?(o(),l("div",{key:0,class:"user-question-overlay",onClick:e[4]||(e[4]=y(i=>m("minimize"),["self"]))},[t("section",F,[t("header",O,[t("div",L,[t("button",{type:"button",class:"traffic-dot traffic-dot--close","aria-label":"暂时收起",onClick:e[0]||(e[0]=i=>m("minimize"))})]),e[5]||(e[5]=t("div",{class:"user-question-window-title"},"需要你确认",-1))]),t("header",G,[t("div",H,[c.questions.length>1?(o(),l("div",J,[t("span",P,"问题 "+r(v.value+1)+" / "+r(c.questions.length),1),t("span",R,[t("button",{type:"button",disabled:v.value<=0,onClick:e[1]||(e[1]=i=>w(-1)),"aria-label":"上一个问题"},[...e[6]||(e[6]=[t("svg",{viewBox:"0 0 20 20",fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round"},[t("path",{d:"M12 5l-5 5 5 5"})],-1)])],8,W),t("button",{type:"button",disabled:v.value>=c.questions.length-1,onClick:e[2]||(e[2]=i=>w(1)),"aria-label":"下一个问题"},[...e[7]||(e[7]=[t("svg",{viewBox:"0 0 20 20",fill:"none",stroke:"currentColor","stroke-linecap":"round","stroke-linejoin":"round"},[t("path",{d:"M8 5l5 5-5 5"})],-1)])],8,X)])])):q("",!0),t("h2",null,r(u.value.question),1)])]),t("div",{class:C(["user-question-body",{"user-question-body--no-options":!h.value.length}])},[u.value.context?(o(),l("p",Y,r(u.value.context),1)):q("",!0),h.value.length?(o(),l("div",Z,[(o(!0),l(j,null,N(h.value,i=>(o(),l("button",{key:i.id,type:"button",class:C(["user-question-option",{active:p.value.selected_option_id===i.id}]),onClick:_=>$(i.id)},[t("span",te,r(i.label),1),i.description?(o(),l("span",se,r(i.description),1)):q("",!0)],10,ee))),128))])):q("",!0),t("div",ie,[Q(t("textarea",{"onUpdate:modelValue":e[3]||(e[3]=i=>p.value.text=i),class:"user-question-textarea",rows:"3",placeholder:"输入文字回答…",spellcheck:"false",onKeydown:[B(y(x,["meta","prevent"]),["enter"]),B(y(x,["ctrl","prevent"]),["enter"])]},null,40,ne),[[T,p.value.text]])])],2),t("footer",oe,[t("button",{type:"button",class:"user-question-btn ghost",disabled:b.value,title:"不回答当前这个问题,AI 将改为在对话中直接提问",onClick:z}," ✕ 不回答 ",8,ae),e[8]||(e[8]=t("div",{class:"user-question-spacer"},null,-1)),t("div",ue,[t("button",{type:"button",class:"user-question-btn primary",disabled:!g.value||b.value,onClick:x},r(b.value?"提交中...":"确定"),9,le)])])])])):q("",!0)]),_:1}))}}),ve=E(re,[["__scopeId","data-v-600bab99"]]);export{ve as default};
|