Files
qhmes/web-dist/js/AiWriter-D1KjTNLm.js
2026-06-16 18:19:57 +08:00

6 lines
10 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
var ue=Object.defineProperty;var q=Object.getOwnPropertySymbols;var ce=Object.prototype.hasOwnProperty,ve=Object.prototype.propertyIsEnumerable;var Q=(l,a,e)=>a in l?ue(l,a,{enumerable:!0,configurable:!0,writable:!0,value:e}):l[a]=e,Y=(l,a)=>{for(var e in a||(a={}))ce.call(a,e)&&Q(l,e,a[e]);if(q)for(var e of q(a))ve.call(a,e)&&Q(l,e,a[e]);return l};var C=(l,a,e)=>new Promise((s,r)=>{var y=o=>{try{w(e.next(o))}catch(i){r(i)}},b=o=>{try{w(e.throw(o))}catch(i){r(i)}},w=o=>o.done?s(o.value):Promise.resolve(o.value).then(y,b);w((e=e.apply(l,a)).next())});import de from"./AiWriterLeft-CwutOeSK.js";import{cq as K,T as pe,d as H,av as fe,s as me,aw as ge,a$ as he,f7 as ye,bU as be,M as _e,au as we}from"./index-X7Y8jykP.js";import{M as ke,m as Oe,a as Te,H as A}from"./style-D_IZwlkj.js";import Se from"./JMarkdownEditor-Cta_PblS.js";import{F as Ce}from"./FormOutlined-Y84itqS0.js";import{f,e as Ee,o as xe,C as N,z as d,Q as E,y as k,H as M,G as j,r as p,A as h,c as Me,K as De,E as S,F as He,D as Ne,u as x,n as F}from"./vue-vendor-DNhG1Cve.js";import{C as Le}from"./CopyOutlined-Dpp8TC22.js";import"./emoji-mart-vue-fast-R0uJEDq-.js";import"./index-C9_hfRup.js";import"./index-BDvqZ5j4.js";import"./BasicModal-xH56XuRZ.js";import"./ModalHeader-Sr8KwhJJ.js";import"./useTimeout-D5AmIBZw.js";import"./index-BzChaRPg.js";import"./useWindowSizeFn-C-0M9_Ul.js";import"./index-ByCwbQDV.js";import"./index-Upeu4GGa.js";import"./index-C4wWpZeQ.js";import"./index-M9QP6cvf.js";import"./Skeleton-CimgOdM7.js";import"./useScrollTo-0FPEw5-K.js";import"./useIntersectionObserver-BGOgyKyu.js";import"./useAppInject-DPZGPcR3.js";import"./index-CuWaQdlK.js";import"./index-DO7ZhK45.js";import"./onMountedOrActivated-DhSdLlqP.js";var ze={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M893.3 293.3L730.7 130.7c-7.5-7.5-16.7-13-26.7-16V112H144c-17.7 0-32 14.3-32 32v736c0 17.7 14.3 32 32 32h736c17.7 0 32-14.3 32-32V338.5c0-17-6.7-33.2-18.7-45.2zM384 184h256v104H384V184zm456 656H184V184h136v136c0 17.7 14.3 32 32 32h320c17.7 0 32-14.3 32-32V205.8l136 136V840zM512 442c-79.5 0-144 64.5-144 144s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144zm0 224c-44.2 0-80-35.8-80-80s35.8-80 80-80 80 35.8 80 80-35.8 80-80 80z"}}]},name:"save",theme:"outlined"};function X(l){for(var a=1;a<arguments.length;a++){var e=arguments[a]!=null?Object(arguments[a]):{},s=Object.keys(e);typeof Object.getOwnPropertySymbols=="function"&&(s=s.concat(Object.getOwnPropertySymbols(e).filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),s.forEach(function(r){Re(l,r,e[r])})}return l}function Re(l,a,e){return a in l?Object.defineProperty(l,a,{value:e,enumerable:!0,configurable:!0,writable:!0}):l[a]=e,l}var $=function(a,e){var s=X({},a,e.attrs);return f(K,X({},s,{icon:ze}),null)};$.displayName="SaveOutlined";$.inheritAttrs=!1;var Ve={icon:{tag:"svg",attrs:{viewBox:"64 64 896 896",focusable:"false"},children:[{tag:"path",attrs:{d:"M848 359.3H627.7L825.8 109c4.1-5.3.4-13-6.3-13H436c-2.8 0-5.5 1.5-6.9 4L170 547.5c-3.1 5.3.7 12 6.9 12h174.4l-89.4 357.6c-1.9 7.8 7.5 13.3 13.3 7.7L853.5 373c5.2-4.9 1.7-13.7-5.5-13.7zM378.2 732.5l60.3-241H281.1l189.6-327.4h224.6L487 427.4h211L378.2 732.5z"}}]},name:"thunderbolt",theme:"outlined"};function Z(l){for(var a=1;a<arguments.length;a++){var e=arguments[a]!=null?Object(arguments[a]):{},s=Object.keys(e);typeof Object.getOwnPropertySymbols=="function"&&(s=s.concat(Object.getOwnPropertySymbols(e).filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),s.forEach(function(r){Pe(l,r,e[r])})}return l}function Pe(l,a,e){return a in l?Object.defineProperty(l,a,{value:e,enumerable:!0,configurable:!0,writable:!0}):l[a]=e,l}var B=function(a,e){var s=Z({},a,e.attrs);return f(K,Z({},s,{icon:Ve}),null)};B.displayName="ThunderboltOutlined";B.inheritAttrs=!1;const Ae={class:"writer-wrap"},je={class:"sidebar"},Fe={class:"preview-header"},$e={class:"preview-header-left"},Be={class:"preview-title-text"},Ie={class:"preview-actions"},We=["innerHTML"],Ue={key:1,class:"markdown-editor-container"},_="CURRENT",Ge=Ee({__name:"AiWriter",setup(l){const{createMessage:a}=me(),e=p(""),s=p(null),r=p(!1),y=p(!1),b=p(!1),w=p(!1),o=p(),i=p([]),L=p(""),m=p(_),D=p(null),z=p(!1),R=new ke({html:!0,linkify:!0,highlight(n,t){if(!!(t&&A.getLanguage(t))){const g=t!=null?t:"";return U(A.highlight(n,{language:g}).value,g)}return U(A.highlightAuto(n).value,"")}});R.use(Oe,{attrs:{target:"_blank",rel:"noopener"}}),R.use(Te,{blockClass:"katexmath-block rounded-md p-[10px]",errorColor:" #cc0000"});const ee=Me(()=>{let n=e.value||L.value;return r.value&&(n+=' <span class="typing-dot"></span><span class="typing-dot" style="animation-delay: 0.2s"></span><span class="typing-dot" style="animation-delay: 0.4s"></span>'),R.render(n)});function te(){r.value||(y.value=!y.value)}function ae(){if(!e.value){a.warning("暂无内容可复制");return}be(e.value)?a.success("复制成功"):a.error("复制失败")}function V(){const n=s.value;n&&(n.scrollTop=n.scrollHeight)}function I(n,t=""){return C(this,null,function*(){y.value=!1,n.responseMode="streaming",e.value="",r.value=!0,m.value=_,t||(o.value=n);try{const g=(yield H.post({url:"/airag/chat/genAiWriter",params:Y({},n),timeout:3e5,adapter:"fetch",responseType:"stream"},{isTransformResponse:!1}).catch(c=>{a.warn(c.message?c.message:"请求出错请稍后重试")})).getReader(),O=new TextDecoder("UTF-8");let v="";for(;;){const{done:c,value:ie}=yield g.read();if(c)break;let oe=O.decode(ie,{stream:!0});v+=oe;const J=v.split(`
`);v=J.pop()||"";for(const T of J)if(T.startsWith("data:")){const P=T.replace("data:","").trim();if(!P)continue;if(!P.endsWith("}")){v=v+T;continue}v="",W(P)}else{if(!T)continue;if(!T.endsWith("}")){v=v+T;continue}v="",W(T)}}}catch(u){e.value+=`
[生成出错]`}finally{r.value=!1}})}function W(n){try{let t=JSON.parse(n);if(t.event=="NODE_FINISHED"){z.value=!0;return}t.event=="MESSAGE"&&(L.value="",z.value?(e.value=t.data.message,z.value=!1):e.value+=t.data.message,r.value=!0,b.value=!0,F(V)),t.event=="MESSAGE_END"&&(r.value=!1,m.value===_&&(D.value=e.value),F(V)),t.event=="ERROR"&&(e.value=t.data.message?t.data.message:"生成失败请稍后重试",r.value=!1,b.value=!1,F(V)),t.event==="NODE_STARTED"&&(!t.data||t.data.type!=="end")&&(t.data.type==="llm"||t.data.type==="reply")&&(L.value="正在构建响应内容"),t.event=="FLOW_FINISHED"&&(t.data&&!t.data.success&&(e.value=t.data.message?t.data.message:"生成失败请稍后重试"),r.value=!1,b.value=!1)}catch(t){}}function U(n,t){return`<pre class="code-block-wrapper"><div class="code-block-header"><span class="code-block-header__lang">${t}</span><span class="code-block-header__copy">复制代码</span></div><code class="hljs code-block-body ${t}">${n}</code></pre>`}function ne(){return C(this,null,function*(){if(!e.value){a.warning("暂无内容可润色");return}if(r.value||b.value)return;b.value=!0;const n={prompt:e.value,originalContent:"",length:o.value.length,format:o.value.format,tone:o.value.tone,language:o.value.language,activeMode:"polish"};try{yield I(n,"polish")}finally{b.value=!1}})}function le(){return C(this,null,function*(){if(!e.value){a.warning("暂无内容可保存");return}if(!w.value)try{w.value=!0,yield H.post({url:"/airag/app/save/article/write",params:{content:e.value}}),m.value===_&&(D.value=e.value),G()}catch(n){a.error("保存失败请稍后重试")}finally{w.value=!1}})}function G(){i.value=[],H.get({url:"/airag/app/list/article/write"},{isTransformResponse:!1}).then(n=>{n.success&&(i.value=n.result)})}function re(){return C(this,null,function*(){if(m.value===_)return;const n=i.value.find(u=>u.version===m.value);n&&_e.confirm({title:"删除版本",content:"是否确认删除该版本",okText:"确定",cancelText:"取消",onOk(){return C(this,null,function*(){var u;try{yield H.delete({url:"/airag/app/delete/article/write",params:{version:n.version}},{joinParamsToUrl:!0}),i.value=i.value.filter(g=>g.version!==n.version),m.value=_,e.value=(u=D.value)!=null?u:""}catch(g){a.error("删除失败请稍后重试")}})}})})}function se(n){var u;if(n===_){m.value=n,e.value=(u=D.value)!=null?u:"";return}const t=i.value.find(g=>g.version===n);t&&(m.value=n,e.value=t.content)}return xe(()=>{G()}),(n,t)=>{const u=ge,g=fe,O=De("a-button"),v=pe;return d(),N("div",Ae,[E("div",je,[f(de,{onGenerate:I})]),E("div",{class:"preview",ref_key:"previewRef",ref:s},[E("div",Fe,[E("div",$e,[E("span",Be,j(y.value?"编辑":"预览"),1),i.value&&i.value.length?(d(),k(g,{key:0,value:m.value,"onUpdate:value":t[0]||(t[0]=c=>m.value=c),size:"small",class:"version-select",onChange:se},{default:h(()=>[f(u,{value:_},{default:h(()=>[...t[3]||(t[3]=[S("当前内容",-1)])]),_:1}),(d(!0),N(He,null,Ne(i.value,c=>(d(),k(u,{key:c.version,value:c.version},{default:h(()=>[S(j(c.version),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])):M("",!0),i.value&&i.value.length&&m.value!==_?(d(),k(O,{key:1,type:"link",size:"small",class:"preview-action-btn version-delete-btn",onClick:re},{default:h(()=>[f(x(he)),t[4]||(t[4]=S(" 删除 ",-1))]),_:1})):M("",!0)]),E("div",Ie,[r.value?M("",!0):(d(),k(O,{key:0,type:"link",size:"small",class:"preview-action-btn custom-save-btn",onClick:te},{default:h(()=>[y.value?(d(),k(x(ye),{key:1})):(d(),k(x(Ce),{key:0})),S(" "+j(y.value?"完成":"编辑"),1)]),_:1})),r.value?M("",!0):(d(),k(O,{key:1,type:"link",size:"small",class:"preview-action-btn custom-save-btn",loading:b.value,onClick:ne},{default:h(()=>[f(x(B),{class:"preview-actions-icon",style:{position:"relative",top:"1px"}}),t[5]||(t[5]=S(" 润色 ",-1))]),_:1},8,["loading"])),f(v,{title:"保存草稿"},{default:h(()=>[r.value?M("",!0):(d(),k(O,{key:0,type:"link",size:"small",class:"preview-action-btn custom-save-btn",loading:w.value,onClick:le},{default:h(()=>[f(x($),{class:"preview-actions-icon"}),t[6]||(t[6]=S(" 保存 ",-1))]),_:1},8,["loading"]))]),_:1}),f(v,{title:"复制内容"},{default:h(()=>[f(O,{type:"link",size:"small",class:"preview-action-btn custom-save-btn",onClick:ae},{default:h(()=>[f(x(Le),{class:"preview-actions-icon"}),t[7]||(t[7]=S(" 复制 ",-1))]),_:1})]),_:1})])]),y.value?(d(),N("div",Ue,[f(Se,{value:e.value,"onUpdate:value":t[2]||(t[2]=c=>e.value=c),height:"100vh",preview:{mode:"view",action:[]}},null,8,["value"])])):(d(),N("div",{key:0,innerHTML:ee.value,class:"markdown-container",onClick:t[1]||(t[1]=c=>!r.value)},null,8,We))],512)])}}}),_t=we(Ge,[["__scopeId","data-v-dab18462"]]);export{_t as default};