import{_ as R,b as u,w as P,d as B,c as $,a,e as r,r as i,F as E,f as H,g as c,h as d,i as J,v as A,E as S,o as h,j as D,k as z,t as F}from"./index-BZ-MVW6h.js";const I={class:"article-publish-container"},W={key:0,class:"theme-description"},X={class:"markdown-editor-container"},G={class:"editor-wrapper"},K={class:"preview-wrapper"},Q=["innerHTML"],Y={__name:"ArticlePublish",setup(Z){const m=u(),b=u(!1),g=u("edit"),k=u([]),N=async()=>{try{const e=await fetch("/api/themes/");if(e.ok){const t=await e.json();k.value=t,console.log("获取主题列表成功:",t)}else console.error("获取主题列表失败:",e.status)}catch(e){console.error("获取主题列表出错:",e)}},o=u({title:"",author:"Xiayan MCP",content:`# 文章标题
这是一篇测试文章,使用Markdown格式编写。
## 二级标题
- 列表项1
- 列表项2
- 列表项3
**粗体文本** *斜体文本*
> 引用内容
\`\`\`python
# Python代码示例
print("Hello, World!")
\`\`\``,theme_id:"default",need_open_comment:!1,only_fans_can_comment:!1,permanent_cover:!1}),U={title:[{required:!0,message:"请输入文章标题",trigger:"blur"},{min:1,max:100,message:"标题长度在 1 到 100 个字符",trigger:"blur"}],author:[{required:!0,message:"请输入作者名称",trigger:"blur"},{min:1,max:50,message:"作者名称长度在 1 到 50 个字符",trigger:"blur"}],theme_id:[{required:!0,message:"请选择文章主题",trigger:"change"}],content:[{required:!0,message:"请输入文章内容",trigger:"blur"}]};P(()=>({title:o.value.title,author:o.value.author,theme_id:o.value.theme_id}),(e,t)=>{if(console.log("表单变化触发更新:",e,t),JSON.stringify(e)===JSON.stringify(t)){console.log("值未变化,跳过更新");return}try{let l=o.value.content;console.log("当前文章内容:",l.substring(0,100)+"...");const s=/^#\s+.+$/m;l.match(s)?(l=l.replace(s,`# ${e.title}`),console.log("已更新标题")):(l=`# ${e.title}
${l}`,console.log("已添加标题")),l=l.replace(/^author:\s+.+$/gm,""),l=l.replace(/^theme:\s+.+$/gm,""),l=l.replace(/\n{3,}/g,`
`);const v=/---\n(.*?)\n---\n/s,f=l.match(v),_=`---
author: ${e.author}
theme: ${e.theme_id}
---
`;if(f)l=l.replace(v,_),console.log("已更新元信息");else{const w=/^#\s+.+\n/m;l=l.replace(w,`$&${_}`),console.log("已添加元信息")}o.value.content=l,console.log("文章内容更新完成"),console.log("更新后内容:",l.substring(0,100)+"...")}catch(l){console.error("更新文章内容时出错:",l)}},{deep:!0});const y=u(""),V=u(!1),q=()=>{let e=o.value.content;return e=e.replace(/\r\n/g,`
`),e=e.replace(/```(\w+)?\n([\s\S]*?)```/g,"<pre><code>$2</code></pre>"),e=e.replace(/^(#{1,6})\s+(.*)$/gm,(t,l,s)=>{const p=Math.min(6,l.length);return`<h${p}>${s}</h${p}>`}),e=e.replace(/\*\*(.*?)\*\*/g,"<strong>$1</strong>"),e=e.replace(/\*(.*?)\*/g,"<em>$1</em>"),e=e.replace(/^-\s+(.*)$/gm,"<li>$1</li>"),e=e.replace(/(<li>.*?<\/li>)+/gs,"<ul>$&</ul>"),e=e.replace(/^(\d+)\.\s+(.*)$/gm,"<li>$2</li>"),e=e.replace(/(<li>.*?<\/li>)+/gs,"<ol>$&</ol>"),e=e.replace(/^>\s+(.*)$/gm,"<blockquote>$1</blockquote>"),e=e.replace(/`([^`]+)`/g,"<code>$1</code>"),e=e.replace(/^(?!<h|<ul|<ol|<li|<blockquote|<pre|<code).*$/gm,"<p>$&</p>"),e=e.replace(/\n{2,}/g,"</p><p>"),e=e.replace(/<p><\/p>/g,""),e},x=async()=>{if(g.value==="preview"){V.value=!0;try{let e=q();try{const t=await fetch(`/api/themes/${o.value.theme_id}/preview`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({sample_content:o.value.content})});t.ok&&(e=(await t.json()).html_content,console.log("主题预览更新成功"))}catch(t){console.error("获取主题预览失败,使用本地预览:",t)}y.value=e}catch(e){console.error("更新预览内容出错:",e),y.value="<p>预览生成失败</p>"}finally{V.value=!1}}};P([()=>o.value.content,()=>o.value.theme_id,()=>g.value],()=>{x()});const j=async()=>{m.value&&await m.value.validate(async e=>{if(e){b.value=!0;try{const t=await fetch("/api/articles/publish",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(o.value)});if(!t.ok)throw new Error(`HTTP error! status: ${t.status}`);const l=await t.json();S.success(l.message||"文章发布成功!"),C()}catch(t){console.error("发布文章失败:",t),S.error("文章发布失败:"+t.message)}finally{b.value=!1}}else return console.log("表单验证失败"),!1})},C=()=>{m.value&&m.value.resetFields()};return B(async()=>{console.log("ArticlePublish组件已挂载"),await N(),x()}),(e,t)=>{const l=i("el-input"),s=i("el-form-item"),p=i("el-option"),v=i("el-select"),f=i("el-checkbox"),_=i("el-radio-button"),w=i("el-radio-group"),M=i("el-tab-pane"),L=i("el-tabs"),T=i("el-button"),O=i("el-form");return h(),$("div",I,[a(O,{model:o.value,rules:U,ref_key:"articleFormRef",ref:m,"label-width":"80px"},{default:r(()=>[a(s,{label:"文章标题",prop:"title"},{default:r(()=>[a(l,{modelValue:o.value.title,"onUpdate:modelValue":t[0]||(t[0]=n=>o.value.title=n),placeholder:"请输入文章标题",maxlength:"100","show-word-limit":""},null,8,["modelValue"])]),_:1}),a(s,{label:"作者",prop:"author"},{default:r(()=>[a(l,{modelValue:o.value.author,"onUpdate:modelValue":t[1]||(t[1]=n=>o.value.author=n),placeholder:"请输入作者名称",maxlength:"50","show-word-limit":""},null,8,["modelValue"])]),_:1}),a(s,{label:"主题",prop:"theme_id"},{default:r(()=>[a(v,{modelValue:o.value.theme_id,"onUpdate:modelValue":t[2]||(t[2]=n=>o.value.theme_id=n),placeholder:"请选择文章主题",style:{width:"100%"}},{default:r(()=>[(h(!0),$(E,null,H(k.value,n=>(h(),D(p,{key:n.id,label:n.name,value:n.id},{default:r(()=>[d("span",null,F(n.name),1),n.description?(h(),$("span",W,"("+F(n.description)+")",1)):z("",!0)]),_:2},1032,["label","value"]))),128))]),_:1},8,["modelValue"])]),_:1}),a(s,{label:"评论设置"},{default:r(()=>[a(f,{modelValue:o.value.need_open_comment,"onUpdate:modelValue":t[3]||(t[3]=n=>o.value.need_open_comment=n)},{default:r(()=>[...t[8]||(t[8]=[c("允许评论",-1)])]),_:1},8,["modelValue"]),a(f,{modelValue:o.value.only_fans_can_comment,"onUpdate:modelValue":t[4]||(t[4]=n=>o.value.only_fans_can_comment=n),class:"ml-4"},{default:r(()=>[...t[9]||(t[9]=[c("仅粉丝可评论",-1)])]),_:1},8,["modelValue"])]),_:1}),a(s,{label:"封面图"},{default:r(()=>[a(w,{modelValue:o.value.permanent_cover,"onUpdate:modelValue":t[5]||(t[5]=n=>o.value.permanent_cover=n),size:"small"},{default:r(()=>[a(_,{label:!1},{default:r(()=>[...t[10]||(t[10]=[c("临时封面",-1)])]),_:1}),a(_,{label:!0},{default:r(()=>[...t[11]||(t[11]=[c("永久封面",-1)])]),_:1})]),_:1},8,["modelValue"])]),_:1}),a(s,{label:"文章内容"},{default:r(()=>[d("div",X,[a(L,{modelValue:g.value,"onUpdate:modelValue":t[7]||(t[7]=n=>g.value=n)},{default:r(()=>[a(M,{label:"编辑",name:"edit"},{default:r(()=>[d("div",G,[J(d("textarea",{"onUpdate:modelValue":t[6]||(t[6]=n=>o.value.content=n),placeholder:"请输入Markdown格式的文章内容",class:"markdown-textarea"},null,512),[[A,o.value.content]])])]),_:1}),a(M,{label:"预览",name:"preview"},{default:r(()=>[d("div",K,[d("div",{class:"preview-content",innerHTML:y.value},null,8,Q)])]),_:1})]),_:1},8,["modelValue"])])]),_:1}),a(s,null,{default:r(()=>[a(T,{type:"primary",onClick:j,loading:b.value},{default:r(()=>[...t[12]||(t[12]=[c(" 发布文章 ",-1)])]),_:1},8,["loading"]),a(T,{onClick:C},{default:r(()=>[...t[13]||(t[13]=[c("重置",-1)])]),_:1})]),_:1})]),_:1},8,["model"])])}}},te=R(Y,[["__scopeId","data-v-78023405"]]);export{te as default};