fix(icons): render FA glyphs in the SPA picker grid and harden item clicks

The server catalog ships bare glyph names, but the SPA grid preview
composed "fas home" instead of "fas fa-home" — every FA icon rendered
blank (the old curated lists carried the fa- prefix, so the regression
appeared with the catalog switch).

Item clicks move from per-element @click to a delegated panel handler
reading data-icon (immunity to DOM-replacing extensions/userscripts,
matching the PHP picker's pattern), and selecting now closes the
popover so the choice is visible in the field immediately.
This commit is contained in:
kate522 committed 2026-09-06 15:48:52 +08:00
1 parent 27d8a9ea71
commit 39bafb65c4
12 files changed
+33 -20

No files matched your search

@@ -1 +1 @@
import t from"./SchemaPage._RXlmOMl.js";import{a2 as o,W as m}from"./vendor-vue.BxZIRU0_.js";import"./shared-api.DsnKC5vk.js";import"./FaIcon.NZ6TDkNu.js";import"./index.js";import"./vendor-naive.CKYCZmXD.js";import"./vendor-misc.bELTaXdf.js";import"./FaIconPicker.DuahAn6_.js";import"./shared-api.DnsQ5cxS.js";import"./level.E3ANSDAX.js";import"./badge.CKTsmH1z.js";const h={__name:"CommentSettings",setup(r){return(p,e)=>(m(),o(t,{domain:"post_list",section:"comment"}))}};export{h as default}; import t from"./SchemaPage.DUnjy3YN.js";import{a2 as o,W as m}from"./vendor-vue.BxZIRU0_.js";import"./shared-api.DieGsdVx.js";import"./FaIcon.NZ6TDkNu.js";import"./index.js";import"./vendor-naive.CKYCZmXD.js";import"./vendor-misc.bELTaXdf.js";import"./FaIconPicker.C_p6xA0k.js";import"./shared-api.DnsQ5cxS.js";import"./level.E3ANSDAX.js";import"./badge.CKTsmH1z.js";const h={__name:"CommentSettings",setup(r){return(p,e)=>(m(),o(t,{domain:"post_list",section:"comment"}))}};export{h as default};
@@ -0,0 +1 @@
import{_ as M}from"./FaIcon.NZ6TDkNu.js";import{_ as H}from"./index.js";import{N as c,W as n,X as i,L as V,a5 as T,c as L,o as Z,a1 as k,a4 as v,a3 as p,Y as y,F as b,R as z,a2 as A,f as I,Z as D,r as f}from"./vendor-vue.BxZIRU0_.js";import{a as G}from"./shared-api.DnsQ5cxS.js";function w(e){const o=String(e||"").trim();if(!o)return"";let u;try{u=new DOMParser().parseFromString(o,"image/svg+xml")}catch{return""}if(u.querySelector("parsererror"))return"";const r=u.querySelector("svg");if(!r||r.querySelector("script, foreignObject, animate"))return"";["class","id","style","t","version","p-id"].forEach(l=>r.removeAttribute(l)),Array.from(r.attributes).forEach(l=>{l.name.indexOf("data-")===0&&r.removeAttribute(l.name)});const d=new XMLSerializer().serializeToString(r);return/<path|<use|<g\b|<circle|<rect|<polygon|<ellipse|<line/i.test(d)?d:""}function R(e){return/^fa[\s-]/.test(String(e||"").trim())}function X(e){return String(e||"").trim().startsWith("zibsvg-")}function j(e){return String(e||"").trim().startsWith("customsvg-")}function Y(e){return String(e||"").trim().slice(7).replace(/[^a-zA-Z0-9_-]/g,"")}function F(e){const o=Y(e);return o?`<svg class="icon" aria-hidden="true"><use xlink:href="#icon-${o}"></use></svg>`:""}function B(e,o){return e.type==="fa"?`fa ${e.id} fa-${o}`:e.type==="svg"?`zibsvg-${o}`:String(o||"")}const J=["innerHTML"],Q=["innerHTML"],ee={__name:"IconValue",props:{value:{type:String,default:""}},setup(e){const o=e,u=L(()=>{const r=String(o.value||"").trim();return r.startsWith("fa-")?`fa fas ${r}`:r});return(r,d)=>c(R)(e.value)?(n(),i("i",{key:0,class:V(u.value),"aria-hidden":"true"},null,2)):c(X)(e.value)?(n(),i("span",{key:1,class:"aksrt-icon-value__svg",innerHTML:c(F)(e.value)},null,8,J)):c(j)(e.value)?(n(),i("span",{key:2,class:"aksrt-icon-value__svg",innerHTML:c(w)(e.value.slice(10))},null,8,Q)):T("",!0)}},te=H(ee,[["__scopeId","data-v-127de8f8"]]),ae={class:"aksrt-fa-icon-picker"},se={class:"aksrt-icon-picker__search"},ne={class:"aksrt-icon-picker__tabs"},ie={key:0,class:"aksrt-icon-picker__custom"},oe={class:"aksrt-icon-picker__custom-actions"},re=["innerHTML"],le={key:0,class:"aksrt-icon-picker__grid aksrt-icon-picker__grid--session","data-aksrt-icon-grid":"custom"},ce=["data-icon","innerHTML"],ue={key:1,class:"aksrt-icon-picker__grid","data-aksrt-icon-grid":"catalog"},de=["title","data-icon"],ve=["innerHTML"],pe={key:0,class:"aksrt-icon-picker__empty"},fe={__name:"FaIconPicker",props:{modelValue:{type:String,default:""},placeholder:{type:String,default:"选择图标"}},emits:["update:modelValue"],setup(e,{emit:o}){const u=o,d=f([{id:"fas",title:"Solid",type:"fa",icons:[]},{id:"far",title:"Regular",type:"fa",icons:[]},{id:"fab",title:"Brands",type:"fa",icons:[]},{id:"zibsvg",title:"内置 SVG",type:"svg",icons:[]},{id:"custom",title:"自定义",type:"custom",icons:[]}]),l=f(""),m=f("fas"),_=f(""),h=f([]),C=f(!1),S=L(()=>d.value.find(t=>t.id===m.value)||d.value[0]),$=L(()=>{const t=S.value;if(!t||t.type==="custom")return[];const s=l.value.toLowerCase().replace(/\s+/g,"");return s?t.icons.filter(g=>g.includes(s)):t.icons}),x=L(()=>w(_.value));function N(t){u("update:modelValue",t),C.value=!1}function P(t){const s=t.target.closest("[data-icon]");s&&N(s.dataset.icon)}function q(){const t=w(_.value);t&&(h.value.includes(t)||h.value.push(t),u("update:modelValue",`customsvg-${t}`),_.value="")}return Z(async()=>{try{const t=await G.getIconCatalog();t!=null&&t.success&&Array.isArray(t.groups)&&t.groups.length&&(d.value=t.groups)}catch{}}),(t,s)=>{const g=k("n-input"),U=k("n-radio-button"),W=k("n-radio-group"),E=k("n-button"),K=k("n-popover");return n(),i("div",ae,[v(K,{show:C.value,"onUpdate:show":s[4]||(s[4]=a=>C.value=a),trigger:"click",placement:"bottom-start",width:460,style:{padding:0}},{trigger:p(()=>[v(g,{value:e.modelValue,placeholder:e.placeholder,readonly:"",clearable:"",onClear:s[0]||(s[0]=a=>t.$emit("update:modelValue",""))},{prefix:p(()=>[e.modelValue?(n(),A(te,{key:0,value:e.modelValue},null,8,["value"])):(n(),i(b,{key:1},[],64))]),suffix:p(()=>[v(M,{icon:"fa fas fa-chevron-down",size:12})]),_:1},8,["value","placeholder"])]),default:p(()=>[y("div",{class:"aksrt-icon-picker__panel",onClick:P},[y("div",se,[v(g,{value:l.value,"onUpdate:value":s[1]||(s[1]=a=>l.value=a),placeholder:"搜索图标...",size:"small",clearable:""},{prefix:p(()=>[v(M,{icon:"fa fas fa-search",size:12})]),_:1},8,["value"])]),y("div",ne,[v(W,{value:m.value,"onUpdate:value":s[2]||(s[2]=a=>m.value=a),size:"small"},{default:p(()=>[(n(!0),i(b,null,z(d.value,a=>(n(),A(U,{key:a.id,value:a.id},{default:p(()=>[I(D(a.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),m.value==="custom"?(n(),i("div",ie,[v(g,{value:_.value,"onUpdate:value":s[3]||(s[3]=a=>_.value=a),type:"textarea",placeholder:'<svg viewBox="0 0 1024 1024"><path d="…"></path></svg>',rows:4},null,8,["value"]),y("div",oe,[y("span",{class:"aksrt-icon-picker__custom-preview",innerHTML:x.value},null,8,re),v(E,{size:"small",type:"primary"Line truncated
@@ -1 +0,0 @@
import{_ as x}from"./FaIcon.NZ6TDkNu.js";import{_ as H}from"./index.js";import{N as p,W as a,X as n,L as V,a5 as z,c as C,o as O,a1 as g,a4 as d,a3 as v,Y as k,F as S,R as $,a2 as A,f as I,Z as R,r as y}from"./vendor-vue.BxZIRU0_.js";import{a as U}from"./shared-api.DnsQ5cxS.js";function L(e){const i=String(e||"").trim();if(!i)return"";let c;try{c=new DOMParser().parseFromString(i,"image/svg+xml")}catch{return""}if(c.querySelector("parsererror"))return"";const o=c.querySelector("svg");if(!o||o.querySelector("script, foreignObject, animate"))return"";["class","id","style","t","version","p-id"].forEach(l=>o.removeAttribute(l)),Array.from(o.attributes).forEach(l=>{l.name.indexOf("data-")===0&&o.removeAttribute(l.name)});const u=new XMLSerializer().serializeToString(o);return/<path|<use|<g\b|<circle|<rect|<polygon|<ellipse|<line/i.test(u)?u:""}function Z(e){return/^fa[\s-]/.test(String(e||"").trim())}function D(e){return String(e||"").trim().startsWith("zibsvg-")}function G(e){return String(e||"").trim().startsWith("customsvg-")}function X(e){return String(e||"").trim().slice(7).replace(/[^a-zA-Z0-9_-]/g,"")}function F(e){const i=X(e);return i?`<svg class="icon" aria-hidden="true"><use xlink:href="#icon-${i}"></use></svg>`:""}function B(e,i){return e.type==="fa"?`fa ${e.id} fa-${i}`:e.type==="svg"?`zibsvg-${i}`:String(i||"")}const j=["innerHTML"],Y=["innerHTML"],J={__name:"IconValue",props:{value:{type:String,default:""}},setup(e){const i=e,c=C(()=>{const o=String(i.value||"").trim();return o.startsWith("fa-")?`fa fas ${o}`:o});return(o,u)=>p(Z)(e.value)?(a(),n("i",{key:0,class:V(c.value),"aria-hidden":"true"},null,2)):p(D)(e.value)?(a(),n("span",{key:1,class:"aksrt-icon-value__svg",innerHTML:p(F)(e.value)},null,8,j)):p(G)(e.value)?(a(),n("span",{key:2,class:"aksrt-icon-value__svg",innerHTML:p(L)(e.value.slice(10))},null,8,Y)):z("",!0)}},Q=H(J,[["__scopeId","data-v-127de8f8"]]),ee={class:"aksrt-fa-icon-picker"},te={class:"aksrt-icon-picker__panel"},se={class:"aksrt-icon-picker__search"},ae={class:"aksrt-icon-picker__tabs"},ne={key:0,class:"aksrt-icon-picker__custom"},ie={class:"aksrt-icon-picker__custom-actions"},re=["innerHTML"],oe={key:0,class:"aksrt-icon-picker__grid aksrt-icon-picker__grid--session"},le=["onClick","innerHTML"],ce={key:1,class:"aksrt-icon-picker__grid",ref:"gridRef"},ue=["title","onClick"],de=["innerHTML"],ve={key:0,class:"aksrt-icon-picker__empty"},pe={__name:"FaIconPicker",props:{modelValue:{type:String,default:""},placeholder:{type:String,default:"选择图标"}},emits:["update:modelValue"],setup(e,{emit:i}){const c=i,u=y([{id:"fas",title:"Solid",type:"fa",icons:[]},{id:"far",title:"Regular",type:"fa",icons:[]},{id:"fab",title:"Brands",type:"fa",icons:[]},{id:"zibsvg",title:"内置 SVG",type:"svg",icons:[]},{id:"custom",title:"自定义",type:"custom",icons:[]}]),l=y(""),m=y("fas"),f=y(""),h=y([]),b=C(()=>u.value.find(t=>t.id===m.value)||u.value[0]),T=C(()=>{const t=b.value;if(!t||t.type==="custom")return[];const r=l.value.toLowerCase().replace(/\s+/g,"");return r?t.icons.filter(_=>_.includes(r)):t.icons}),M=C(()=>L(f.value));function N(t){c("update:modelValue",B(b.value,t))}function q(){const t=L(f.value);t&&(h.value.includes(t)||h.value.push(t),c("update:modelValue",`customsvg-${t}`),f.value="")}return O(async()=>{try{const t=await U.getIconCatalog();t!=null&&t.success&&Array.isArray(t.groups)&&t.groups.length&&(u.value=t.groups)}catch{}}),(t,r)=>{const _=g("n-input"),P=g("n-radio-button"),W=g("n-radio-group"),E=g("n-button"),K=g("n-popover");return a(),n("div",ee,[d(K,{trigger:"click",placement:"bottom-start",width:460,style:{padding:0}},{trigger:v(()=>[d(_,{value:e.modelValue,placeholder:e.placeholder,readonly:"",clearable:"",onClear:r[0]||(r[0]=s=>t.$emit("update:modelValue",""))},{prefix:v(()=>[e.modelValue?(a(),A(Q,{key:0,value:e.modelValue},null,8,["value"])):(a(),n(S,{key:1},[],64))]),suffix:v(()=>[d(x,{icon:"fa fas fa-chevron-down",size:12})]),_:1},8,["value","placeholder"])]),default:v(()=>[k("div",te,[k("div",se,[d(_,{value:l.value,"onUpdate:value":r[1]||(r[1]=s=>l.value=s),placeholder:"搜索图标...",size:"small",clearable:""},{prefix:v(()=>[d(x,{icon:"fa fas fa-search",size:12})]),_:1},8,["value"])]),k("div",ae,[d(W,{value:m.value,"onUpdate:value":r[2]||(r[2]=s=>m.value=s),size:"small"},{default:v(()=>[(a(!0),n(S,null,$(u.value,s=>(a(),A(P,{key:s.id,value:s.id},{default:v(()=>[I(R(s.title),1)]),_:2},1032,["value"]))),128))]),_:1},8,["value"])]),m.value==="custom"?(a(),n("div",ne,[d(_,{value:f.value,"onUpdate:value":r[3]||(r[3]=s=>f.value=s),type:"textarea",placeholder:'<svg viewBox="0 0 1024 1024"><path d="…"></path></svg>',rows:4},null,8,["value"]),k("div",ie,[k("span",{class:"aksrt-icon-picker__custom-preview",innerHTML:M.value},null,8,re),d(E,{size:"small",type:"primary",disabled:!M.value,onClick:q},{default:v(()=>[...r[4]||(r[4]=[I(" 确认插入 ",-1)])]),_:1},8,["disabled"])]),h.value.length?(a(),n("div",oe,[(a(!0),n(S,null,$(h.value,(s,w)=>(a(),n("div",{key:w,clasLine truncated
+1 -1
View File
@@ -1 +1 @@
.aksrt-icon-value__svg[data-v-127de8f8]{display:inline-flex}.aksrt-icon-value__svg[data-v-127de8f8] svg,.aksrt-icon-value__svg svg[data-v-127de8f8]{width:1em;height:1em;fill:currentColor}.aksrt-icon-picker__panel[data-v-b3172250]{padding:12px}.aksrt-icon-picker__search[data-v-b3172250],.aksrt-icon-picker__tabs[data-v-b3172250]{margin-bottom:10px}.aksrt-icon-picker__tabs[data-v-b3172250] .n-radio-group{flex-wrap:wrap}.aksrt-icon-picker__grid[data-v-b3172250]{display:grid;grid-template-columns:repeat(8,1fr);gap:4px;max-height:260px;overflow-y:auto}.aksrt-icon-picker__item[data-v-b3172250]{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:6px;cursor:pointer;font-size:16px;color:var(--aksrt-color-text-secondary);transition:all .15s}.aksrt-icon-picker__item[data-v-b3172250]:hover{background:var(--aksrt-color-primary-soft);color:var(--aksrt-color-primary)}.aksrt-icon-picker__item.is-active[data-v-b3172250]{background:var(--aksrt-color-primary);color:#fff}.aksrt-icon-picker__item[data-v-b3172250] svg,.aksrt-icon-picker__preview-svg[data-v-b3172250] svg,.aksrt-icon-picker__preview-svg svg[data-v-b3172250]{width:18px;height:18px;fill:currentColor}.aksrt-icon-picker__preview-svg[data-v-b3172250]{display:inline-flex}.aksrt-icon-picker__empty[data-v-b3172250]{grid-column:1 / -1;text-align:center;padding:20px;color:var(--aksrt-color-muted);font-size:13px}.aksrt-icon-picker__custom-actions[data-v-b3172250]{display:flex;align-items:center;gap:10px;margin-top:8px}.aksrt-icon-picker__custom-preview[data-v-b3172250]{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px dashed var(--aksrt-color-muted);border-radius:4px}.aksrt-icon-picker__grid--session[data-v-b3172250]{margin-top:10px;padding-top:8px;border-top:1px solid var(--aksrt-color-muted)} .aksrt-icon-value__svg[data-v-127de8f8]{display:inline-flex}.aksrt-icon-value__svg[data-v-127de8f8] svg,.aksrt-icon-value__svg svg[data-v-127de8f8]{width:1em;height:1em;fill:currentColor}.aksrt-icon-picker__panel[data-v-ff0f92a9]{padding:12px}.aksrt-icon-picker__search[data-v-ff0f92a9],.aksrt-icon-picker__tabs[data-v-ff0f92a9]{margin-bottom:10px}.aksrt-icon-picker__tabs[data-v-ff0f92a9] .n-radio-group{flex-wrap:wrap}.aksrt-icon-picker__grid[data-v-ff0f92a9]{display:grid;grid-template-columns:repeat(8,1fr);gap:4px;max-height:260px;overflow-y:auto}.aksrt-icon-picker__item[data-v-ff0f92a9]{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:6px;cursor:pointer;font-size:16px;color:var(--aksrt-color-text-secondary);transition:all .15s}.aksrt-icon-picker__item[data-v-ff0f92a9]:hover{background:var(--aksrt-color-primary-soft);color:var(--aksrt-color-primary)}.aksrt-icon-picker__item.is-active[data-v-ff0f92a9]{background:var(--aksrt-color-primary);color:#fff}.aksrt-icon-picker__item[data-v-ff0f92a9] svg,.aksrt-icon-picker__preview-svg[data-v-ff0f92a9] svg,.aksrt-icon-picker__preview-svg svg[data-v-ff0f92a9]{width:18px;height:18px;fill:currentColor}.aksrt-icon-picker__preview-svg[data-v-ff0f92a9]{display:inline-flex}.aksrt-icon-picker__empty[data-v-ff0f92a9]{grid-column:1 / -1;text-align:center;padding:20px;color:var(--aksrt-color-muted);font-size:13px}.aksrt-icon-picker__custom-actions[data-v-ff0f92a9]{display:flex;align-items:center;gap:10px;margin-top:8px}.aksrt-icon-picker__custom-preview[data-v-ff0f92a9]{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px dashed var(--aksrt-color-muted);border-radius:4px}.aksrt-icon-picker__grid--session[data-v-ff0f92a9]{margin-top:10px;padding-top:8px;border-top:1px solid var(--aksrt-color-muted)}
@@ -1 +1 @@
import{d as ae}from"./vendor-draggable.BooRVfGb.js";import{a as le}from"./shared-api.DnsQ5cxS.js";import{P as Fe}from"./PageHeader.CtT29f8Y.js";import{I as C,F as oe}from"./FaIconPicker.DuahAn6_.js";import{_ as Ve}from"./index.js";import{u as Be,a as De,B as g,b as T}from"./vendor-naive.CKYCZmXD.js";import{o as Pe,X as y,a4 as a,a3 as o,r as I,a1 as p,e as se,W as r,N as f,f as u,Y as i,a2 as c,a5 as v,Z as x,F as ie,R as ne,c as U}from"./vendor-vue.BxZIRU0_.js";import"./FaIcon.NZ6TDkNu.js";import"./vendor-misc.bELTaXdf.js";const Se={class:"aksrt-page-container content-page"},Te={class:"aksrt-card-header-row"},Ie={class:"aksrt-card-header-row__left"},Me={class:"aksrt-card-header-row__title"},je={class:"float-btn-sort__item"},Le={class:"float-btn-sort__main"},He={class:"float-btn-sort__icon"},Ne={class:"float-btn-sort__meta"},Oe={class:"float-btn-sort__title-row"},Ee={class:"float-btn-sort__desc"},Re={class:"float-btn-sort__actions"},We={class:"aksrt-form-actions"},Xe={class:"icon-preview-row"},Ye={key:0,class:"theme-icon-preview-inline"},Ze={key:2,class:"muted-text"},Ge={key:7,class:"add-items-editor"},Je={class:"add-items-editor__head"},Ke={class:"add-items-editor__head-actions"},et={key:0,class:"add-items-editor__list"},tt={class:"add-items-editor__row"},at={class:"add-items-preview"},lt={class:"add-items-preview__panel add-items-preview__panel--light"},ot={class:"add-items-preview__trigger"},st={class:"add-items-preview__menu"},it={key:0,class:"add-items-preview__list"},nt={key:1,class:"add-items-preview__empty"},dt={class:"add-items-preview__panel add-items-preview__panel--dark"},rt={class:"add-items-preview__trigger add-items-preview__trigger--dark"},ut={class:"add-items-preview__menu add-items-preview__menu--dark"},_t={key:0,class:"add-items-preview__list"},pt={key:1,class:"add-items-preview__empty add-items-preview__empty--dark"},ct={class:"aksrt-modal-footer"},ft={__name:"FloatingButtonsSettings",setup(mt){var X,Y;const m=Be(),de=De(),M=I(!0),A=I(!1),z=I(!1),q=I(-1),$=(((X=window.aksrtAdminData)==null?void 0:X.siteUrl)||"").replace(/\/$/,"");(((Y=window.aksrtAdminData)==null?void 0:Y.adminUrl)||"").replace(/\/$/,"");const n=se({enabled:!0,style:"round",position:"bottom",scroll_hide:!1,scroll_down_hide:!0,filter_blur:["mobile"],items:[]}),t=se(V()),H=[{label:"自定义链接",value:"custom"},{label:"回到顶部",value:"back_top"},{label:"主题切换",value:"theme_mode"},{label:"页面二维码",value:"qrcode"},{label:"发布入口",value:"add"},{label:"QQ 客服",value:"service_qq"},{label:"微信客服",value:"service_wechat"},{label:"会员入口",value:"pay_vip"}],j=Object.fromEntries(H.map(s=>[s.value,s.label])),re=U(()=>[{label:"写文章",key:"post"},{label:"投稿页",key:"submit"},{label:"用户中心创作",key:"profile"}].map(e=>{const d=E(e.key);return{...e,disabled:d,label:d?`${e.label}(已存在)`:e.label}})),F=U(()=>["custom","add"].includes(t.type)&&!t.hover),Q=U(()=>t.type==="custom"),N=U(()=>["service_qq","service_wechat"].includes(t.type)),ue=U(()=>t.type==="pay_vip"),O=U(()=>["service_qq","service_wechat"].includes(t.type)&&t.action_mode==="qrcode"),_e=U(()=>!O.value);function V(){return{id:"",type:"custom",icon:"fa fas fa-link",icon_dark:"",icon_light:"",text:"",desc:"",action_mode:"link",qq:"",qrcode_img:"",wechat_img:"",link:"",add_items:[],hover:"",qr_size:120,hover_width:200,pc_s:!0,m_s:!0,color:null,bg:null,enabled:!0,sort_order:0}}function pe(s){const e={custom:{icon:"fa fas fa-link",icon_dark:"",icon_light:"",text:"链接",desc:"",link:"",hover:"",action_mode:"link",qr_size:120},back_top:{icon:"fa fas fa-chevron-up",icon_dark:"",icon_light:"",text:"顶部",desc:"返回顶部",link:"",hover:"",action_mode:"link",qr_size:120},theme_mode:{icon:"fa fas fa-sun",icon_dark:"",icon_light:"",text:"主题",desc:"切换主题",link:"",hover:"",action_mode:"link",qr_size:120},qrcode:{icon:"fa fas fa-qrcode",icon_dark:"",icon_light:"",text:"二维码",desc:"扫码继续浏览",link:"",hover:"",action_mode:"qrcode",qr_size:120},service_qq:{icon:"fa fab fa-qq",icon_dark:"",icon_light:"",text:"QQ",desc:"QQ 联系",link:"",hover:"",action_mode:"link",qr_size:120},service_wechat:{icon:"fa fab fa-weixin",icon_dark:"",icon_light:"",text:"微信",desc:"扫码添加微信",link:"",hover:"",action_mode:"link",qr_size:120},pay_vip:{icon:"fa fas fa-gem",icon_dark:"",icon_light:"",text:"会员",desc:"开通/升级会员弹窗",link:"",hover:"",action_mode:"link",qr_size:120},add:{icon:"fa fas fa-plus",icon_dark:"",icon_light:"",text:"发布",desc:"发布内容",link:"",hover:"",action_mode:"link",qr_size:120}};return e[s]||e.custom}function ce(s){const e=pe(s);t.icon=e.icon,t.icon_dark=e.icon_dark,t.icon_light=e.icon_light,t.action_mode=e.action_mode,t.qr_size=e.qr_size,t.text||(t.text=e.text),t.desc||(t.desc=e.desc),Q.value||(t.hover=""),s==="service_qq"&&t.action_mode==="qrcode"&&(t.qq=""),s==="service_wechat"&&t.action_mode==="qrcode"&&(t.link=""),["service_qq","service_wechat"].includes(sLine truncated import{d as ae}from"./vendor-draggable.BooRVfGb.js";import{a as le}from"./shared-api.DnsQ5cxS.js";import{P as Fe}from"./PageHeader.CtT29f8Y.js";import{I as C,F as oe}from"./FaIconPicker.C_p6xA0k.js";import{_ as Ve}from"./index.js";import{u as Be,a as De,B as g,b as T}from"./vendor-naive.CKYCZmXD.js";import{o as Pe,X as y,a4 as a,a3 as o,r as I,a1 as p,e as se,W as r,N as f,f as u,Y as i,a2 as c,a5 as v,Z as x,F as ie,R as ne,c as U}from"./vendor-vue.BxZIRU0_.js";import"./FaIcon.NZ6TDkNu.js";import"./vendor-misc.bELTaXdf.js";const Se={class:"aksrt-page-container content-page"},Te={class:"aksrt-card-header-row"},Ie={class:"aksrt-card-header-row__left"},Me={class:"aksrt-card-header-row__title"},je={class:"float-btn-sort__item"},Le={class:"float-btn-sort__main"},He={class:"float-btn-sort__icon"},Ne={class:"float-btn-sort__meta"},Oe={class:"float-btn-sort__title-row"},Ee={class:"float-btn-sort__desc"},Re={class:"float-btn-sort__actions"},We={class:"aksrt-form-actions"},Xe={class:"icon-preview-row"},Ye={key:0,class:"theme-icon-preview-inline"},Ze={key:2,class:"muted-text"},Ge={key:7,class:"add-items-editor"},Je={class:"add-items-editor__head"},Ke={class:"add-items-editor__head-actions"},et={key:0,class:"add-items-editor__list"},tt={class:"add-items-editor__row"},at={class:"add-items-preview"},lt={class:"add-items-preview__panel add-items-preview__panel--light"},ot={class:"add-items-preview__trigger"},st={class:"add-items-preview__menu"},it={key:0,class:"add-items-preview__list"},nt={key:1,class:"add-items-preview__empty"},dt={class:"add-items-preview__panel add-items-preview__panel--dark"},rt={class:"add-items-preview__trigger add-items-preview__trigger--dark"},ut={class:"add-items-preview__menu add-items-preview__menu--dark"},_t={key:0,class:"add-items-preview__list"},pt={key:1,class:"add-items-preview__empty add-items-preview__empty--dark"},ct={class:"aksrt-modal-footer"},ft={__name:"FloatingButtonsSettings",setup(mt){var X,Y;const m=Be(),de=De(),M=I(!0),A=I(!1),z=I(!1),q=I(-1),$=(((X=window.aksrtAdminData)==null?void 0:X.siteUrl)||"").replace(/\/$/,"");(((Y=window.aksrtAdminData)==null?void 0:Y.adminUrl)||"").replace(/\/$/,"");const n=se({enabled:!0,style:"round",position:"bottom",scroll_hide:!1,scroll_down_hide:!0,filter_blur:["mobile"],items:[]}),t=se(V()),H=[{label:"自定义链接",value:"custom"},{label:"回到顶部",value:"back_top"},{label:"主题切换",value:"theme_mode"},{label:"页面二维码",value:"qrcode"},{label:"发布入口",value:"add"},{label:"QQ 客服",value:"service_qq"},{label:"微信客服",value:"service_wechat"},{label:"会员入口",value:"pay_vip"}],j=Object.fromEntries(H.map(s=>[s.value,s.label])),re=U(()=>[{label:"写文章",key:"post"},{label:"投稿页",key:"submit"},{label:"用户中心创作",key:"profile"}].map(e=>{const d=E(e.key);return{...e,disabled:d,label:d?`${e.label}(已存在)`:e.label}})),F=U(()=>["custom","add"].includes(t.type)&&!t.hover),Q=U(()=>t.type==="custom"),N=U(()=>["service_qq","service_wechat"].includes(t.type)),ue=U(()=>t.type==="pay_vip"),O=U(()=>["service_qq","service_wechat"].includes(t.type)&&t.action_mode==="qrcode"),_e=U(()=>!O.value);function V(){return{id:"",type:"custom",icon:"fa fas fa-link",icon_dark:"",icon_light:"",text:"",desc:"",action_mode:"link",qq:"",qrcode_img:"",wechat_img:"",link:"",add_items:[],hover:"",qr_size:120,hover_width:200,pc_s:!0,m_s:!0,color:null,bg:null,enabled:!0,sort_order:0}}function pe(s){const e={custom:{icon:"fa fas fa-link",icon_dark:"",icon_light:"",text:"链接",desc:"",link:"",hover:"",action_mode:"link",qr_size:120},back_top:{icon:"fa fas fa-chevron-up",icon_dark:"",icon_light:"",text:"顶部",desc:"返回顶部",link:"",hover:"",action_mode:"link",qr_size:120},theme_mode:{icon:"fa fas fa-sun",icon_dark:"",icon_light:"",text:"主题",desc:"切换主题",link:"",hover:"",action_mode:"link",qr_size:120},qrcode:{icon:"fa fas fa-qrcode",icon_dark:"",icon_light:"",text:"二维码",desc:"扫码继续浏览",link:"",hover:"",action_mode:"qrcode",qr_size:120},service_qq:{icon:"fa fab fa-qq",icon_dark:"",icon_light:"",text:"QQ",desc:"QQ 联系",link:"",hover:"",action_mode:"link",qr_size:120},service_wechat:{icon:"fa fab fa-weixin",icon_dark:"",icon_light:"",text:"微信",desc:"扫码添加微信",link:"",hover:"",action_mode:"link",qr_size:120},pay_vip:{icon:"fa fas fa-gem",icon_dark:"",icon_light:"",text:"会员",desc:"开通/升级会员弹窗",link:"",hover:"",action_mode:"link",qr_size:120},add:{icon:"fa fas fa-plus",icon_dark:"",icon_light:"",text:"发布",desc:"发布内容",link:"",hover:"",action_mode:"link",qr_size:120}};return e[s]||e.custom}function ce(s){const e=pe(s);t.icon=e.icon,t.icon_dark=e.icon_dark,t.icon_light=e.icon_light,t.action_mode=e.action_mode,t.qr_size=e.qr_size,t.text||(t.text=e.text),t.desc||(t.desc=e.desc),Q.value||(t.hover=""),s==="service_qq"&&t.action_mode==="qrcode"&&(t.qq=""),s==="service_wechat"&&t.action_mode==="qrcode"&&(t.link=""),["service_qq","service_wechat"].includes(sLine truncated
@@ -1 +1 @@
import{d as E}from"./vendor-draggable.BooRVfGb.js";import{a as D}from"./shared-api.DnsQ5cxS.js";import{P as pe}from"./PageHeader.CtT29f8Y.js";import{I as j,F as L}from"./FaIconPicker.DuahAn6_.js";import{_ as _e}from"./index.js";import{u as ce,a as be,B as m,b as z}from"./vendor-naive.CKYCZmXD.js";import{o as me,X as y,a4 as o,a3 as s,r as C,a1 as _,e as W,W as i,N as p,f as u,Y as n,Z as w,a2 as c,a5 as v,F as $,R as ye,c as ve}from"./vendor-vue.BxZIRU0_.js";import"./FaIcon.NZ6TDkNu.js";import"./vendor-misc.bELTaXdf.js";const ge={class:"aksrt-page-container content-page"},ke={class:"aksrt-card-header-row"},we={class:"aksrt-card-header-row__left"},he={class:"aksrt-card-header-row__title"},xe={class:"section-desc section-desc--tight"},Te={class:"tabbar-sort__item"},Ue={class:"tabbar-sort__main"},Ce={class:"tabbar-sort__icon"},$e={class:"tabbar-sort__meta"},Ie={class:"tabbar-sort__title-row"},ze={class:"tabbar-sort__desc"},Fe={class:"tabbar-sort__actions"},Ve={class:"aksrt-form-actions"},Ae={class:"icon-preview-row"},De={key:1,class:"muted-text"},Se={key:5,class:"add-items-editor"},Ne={class:"add-items-editor__head"},Pe={class:"add-items-editor__presets"},Be={key:0,class:"add-items-editor__list"},Oe={class:"add-items-editor__row"},Me={key:1,class:"muted-text"},qe={class:"aksrt-modal-footer"},Ee={__name:"FooterTabbarSettings",setup(je){const b=ce(),G=be(),F=C(!0),I=C(!1),x=C(!1),h=C(-1),V=C([]),d=W({enabled:!0,scroll_hide:!1,scroll_down_hide:!0,footer_tabbar_single:"default",items:[]}),a=W({id:"",type:"link",icon:"",text:"",link:"",badge:"",badge_mode:"static",category_id:null,search_default_type:"post",new_window:!1,add_items:[],enabled:!0,sort_order:0,ontop:!1}),H=[{label:"首页",value:"home"},{label:"分类页",value:"category"},{label:"链接",value:"link"},{label:"中央发布按钮",value:"add"},{label:"用户中心",value:"user"},{label:"登录/我的",value:"auth"},{label:"搜索",value:"search"},{label:"消息中心",value:"msg"},{label:"开通会员",value:"pay_vip"}],R={home:"首页",category:"分类页",link:"链接",add:"中央发布按钮",user:"用户中心",auth:"登录/我的",search:"搜索",msg:"消息中心",pay_vip:"开通会员"},S={home:{icon:"fa fas fa-home",text:"首页"},category:{icon:"fa fas fa-th-large",text:"分类"},link:{icon:"fa fas fa-link",text:"链接"},add:{icon:"fa fas fa-plus",text:"发布"},user:{icon:"fa fas fa-user",text:"用户中心"},auth:{icon:"fa fas fa-user",text:"我的"},search:{icon:"fa fas fa-search",text:"搜索"},msg:{icon:"fa fas fa-bell",text:"消息"},pay_vip:{icon:"fa fas fa-gem",text:"会员"}},X=ve(()=>d.items.filter(t=>t.enabled));function Y(t){var e;if(t.type==="home")return t.ontop?"首页按钮,滚动后切换返回顶部":"首页按钮";if(t.type==="category"){if(t.category_id){const r=V.value.find(f=>f.value===t.category_id);return r?`跳转到分类: ${r.label}`:`跳转到分类 ID ${t.category_id}`}return"跳转到分类聚合页"}return t.type==="add"?(e=t.add_items)!=null&&e.length?`展开 ${t.add_items.length} 个发布入口`:"点击后打开默认发布入口":t.type==="search"?`打开顶部搜索面板,默认搜索${t.search_default_type==="category"?"分类":t.search_default_type==="tag"?"标签":"文章"}`:t.type==="user"?"自动跳转到用户中心或登录页":t.type==="auth"?"登录用户显示我的,游客显示登录":t.type==="msg"?"跳转到消息中心页面":t.type==="pay_vip"?t.link||"跳转到会员开通页":t.link||"自定义链接按钮"}const Z=[{label:"写文章",icon:"fa fas fa-pen",url:"/submit"},{label:"投稿页",icon:"fa fas fa-file-alt",url:"/submit"},{label:"发布资源",icon:"fa fas fa-cloud-upload-alt",url:"/resource-new"},{label:"创作中心",icon:"fa fas fa-paint-brush",url:"/creator"}];function J(t){a.add_items.some(e=>e.url===t.url)||a.add_items.push({id:`add_${Date.now()}_${a.add_items.length}`,label:t.label,icon:t.icon,url:t.url})}function K(){a.add_items.push({id:`add_${Date.now()}_${a.add_items.length}`,label:"",icon:"fa fas fa-pen",url:""})}function Q(t){a.add_items.splice(t,1)}function N(){d.items=d.items.map((t,e)=>({...t,sort_order:e}))}function ee(t,e=!1){const r=S[t]||S.link;(e||!a.icon)&&(a.icon=r.icon),(e||!a.text)&&(a.text=r.text),["link","msg","pay_vip"].includes(t)||(a.link=""),t!=="category"&&(a.category_id=null),t!=="search"&&(a.search_default_type="post"),t!=="add"&&(a.add_items=[]),t!=="home"&&(a.ontop=!1)}function ae(t){ee(t,!1)}function te(){if(d.items.length>=5){b.warning("底部Tab最多只能配置 5 个按钮");return}Object.assign(a,{id:`tab_${Date.now()}`,type:"link",icon:"fa fas fa-link",text:"链接",link:"",badge:"",badge_mode:"static",category_id:null,search_default_type:"post",new_window:!1,add_items:[],enabled:!0,sort_order:d.items.length,ontop:!1}),h.value=-1,x.value=!0}function le(t){const e=d.items[t];Object.assign(a,{id:e.id,type:e.type||"link",icon:e.icon||"",text:e.text||"",link:e.link||"",badge:e.badge||"",badge_mode:e.badge_mode||"static",category_id:e.cateLine truncated import{d as E}from"./vendor-draggable.BooRVfGb.js";import{a as D}from"./shared-api.DnsQ5cxS.js";import{P as pe}from"./PageHeader.CtT29f8Y.js";import{I as j,F as L}from"./FaIconPicker.C_p6xA0k.js";import{_ as _e}from"./index.js";import{u as ce,a as be,B as m,b as z}from"./vendor-naive.CKYCZmXD.js";import{o as me,X as y,a4 as o,a3 as s,r as C,a1 as _,e as W,W as i,N as p,f as u,Y as n,Z as w,a2 as c,a5 as v,F as $,R as ye,c as ve}from"./vendor-vue.BxZIRU0_.js";import"./FaIcon.NZ6TDkNu.js";import"./vendor-misc.bELTaXdf.js";const ge={class:"aksrt-page-container content-page"},ke={class:"aksrt-card-header-row"},we={class:"aksrt-card-header-row__left"},he={class:"aksrt-card-header-row__title"},xe={class:"section-desc section-desc--tight"},Te={class:"tabbar-sort__item"},Ue={class:"tabbar-sort__main"},Ce={class:"tabbar-sort__icon"},$e={class:"tabbar-sort__meta"},Ie={class:"tabbar-sort__title-row"},ze={class:"tabbar-sort__desc"},Fe={class:"tabbar-sort__actions"},Ve={class:"aksrt-form-actions"},Ae={class:"icon-preview-row"},De={key:1,class:"muted-text"},Se={key:5,class:"add-items-editor"},Ne={class:"add-items-editor__head"},Pe={class:"add-items-editor__presets"},Be={key:0,class:"add-items-editor__list"},Oe={class:"add-items-editor__row"},Me={key:1,class:"muted-text"},qe={class:"aksrt-modal-footer"},Ee={__name:"FooterTabbarSettings",setup(je){const b=ce(),G=be(),F=C(!0),I=C(!1),x=C(!1),h=C(-1),V=C([]),d=W({enabled:!0,scroll_hide:!1,scroll_down_hide:!0,footer_tabbar_single:"default",items:[]}),a=W({id:"",type:"link",icon:"",text:"",link:"",badge:"",badge_mode:"static",category_id:null,search_default_type:"post",new_window:!1,add_items:[],enabled:!0,sort_order:0,ontop:!1}),H=[{label:"首页",value:"home"},{label:"分类页",value:"category"},{label:"链接",value:"link"},{label:"中央发布按钮",value:"add"},{label:"用户中心",value:"user"},{label:"登录/我的",value:"auth"},{label:"搜索",value:"search"},{label:"消息中心",value:"msg"},{label:"开通会员",value:"pay_vip"}],R={home:"首页",category:"分类页",link:"链接",add:"中央发布按钮",user:"用户中心",auth:"登录/我的",search:"搜索",msg:"消息中心",pay_vip:"开通会员"},S={home:{icon:"fa fas fa-home",text:"首页"},category:{icon:"fa fas fa-th-large",text:"分类"},link:{icon:"fa fas fa-link",text:"链接"},add:{icon:"fa fas fa-plus",text:"发布"},user:{icon:"fa fas fa-user",text:"用户中心"},auth:{icon:"fa fas fa-user",text:"我的"},search:{icon:"fa fas fa-search",text:"搜索"},msg:{icon:"fa fas fa-bell",text:"消息"},pay_vip:{icon:"fa fas fa-gem",text:"会员"}},X=ve(()=>d.items.filter(t=>t.enabled));function Y(t){var e;if(t.type==="home")return t.ontop?"首页按钮,滚动后切换返回顶部":"首页按钮";if(t.type==="category"){if(t.category_id){const r=V.value.find(f=>f.value===t.category_id);return r?`跳转到分类: ${r.label}`:`跳转到分类 ID ${t.category_id}`}return"跳转到分类聚合页"}return t.type==="add"?(e=t.add_items)!=null&&e.length?`展开 ${t.add_items.length} 个发布入口`:"点击后打开默认发布入口":t.type==="search"?`打开顶部搜索面板,默认搜索${t.search_default_type==="category"?"分类":t.search_default_type==="tag"?"标签":"文章"}`:t.type==="user"?"自动跳转到用户中心或登录页":t.type==="auth"?"登录用户显示我的,游客显示登录":t.type==="msg"?"跳转到消息中心页面":t.type==="pay_vip"?t.link||"跳转到会员开通页":t.link||"自定义链接按钮"}const Z=[{label:"写文章",icon:"fa fas fa-pen",url:"/submit"},{label:"投稿页",icon:"fa fas fa-file-alt",url:"/submit"},{label:"发布资源",icon:"fa fas fa-cloud-upload-alt",url:"/resource-new"},{label:"创作中心",icon:"fa fas fa-paint-brush",url:"/creator"}];function J(t){a.add_items.some(e=>e.url===t.url)||a.add_items.push({id:`add_${Date.now()}_${a.add_items.length}`,label:t.label,icon:t.icon,url:t.url})}function K(){a.add_items.push({id:`add_${Date.now()}_${a.add_items.length}`,label:"",icon:"fa fas fa-pen",url:""})}function Q(t){a.add_items.splice(t,1)}function N(){d.items=d.items.map((t,e)=>({...t,sort_order:e}))}function ee(t,e=!1){const r=S[t]||S.link;(e||!a.icon)&&(a.icon=r.icon),(e||!a.text)&&(a.text=r.text),["link","msg","pay_vip"].includes(t)||(a.link=""),t!=="category"&&(a.category_id=null),t!=="search"&&(a.search_default_type="post"),t!=="add"&&(a.add_items=[]),t!=="home"&&(a.ontop=!1)}function ae(t){ee(t,!1)}function te(){if(d.items.length>=5){b.warning("底部Tab最多只能配置 5 个按钮");return}Object.assign(a,{id:`tab_${Date.now()}`,type:"link",icon:"fa fas fa-link",text:"链接",link:"",badge:"",badge_mode:"static",category_id:null,search_default_type:"post",new_window:!1,add_items:[],enabled:!0,sort_order:d.items.length,ontop:!1}),h.value=-1,x.value=!0}function le(t){const e=d.items[t];Object.assign(a,{id:e.id,type:e.type||"link",icon:e.icon||"",text:e.text||"",link:e.link||"",badge:e.badge||"",badge_mode:e.badge_mode||"static",category_id:e.cateLine truncated
@@ -1 +1 @@
import{_ as H,a1 as s,W as r,X as q,a4 as p,a3 as t,a2 as m,F as A,R as D,f as B,Z as y,a5 as C,l as I,N as P,c as V,o as O,r as N,Y as f,L as $}from"./vendor-vue.BxZIRU0_.js";import{a as E}from"./shared-api.DnsQ5cxS.js";import{P as R}from"./PageHeader.CtT29f8Y.js";import{u as T,A as U,g as W}from"./shared-api.DsnKC5vk.js";import{u as L}from"./vendor-naive.CKYCZmXD.js";import{_ as X}from"./index.js";import"./FaIcon.NZ6TDkNu.js";import"./FaIconPicker.DuahAn6_.js";import"./vendor-misc.bELTaXdf.js";import"./level.E3ANSDAX.js";import"./badge.CKTsmH1z.js";const Y={class:"aksrt-page-container"},Z={__name:"PaymentSectionPage",props:{section:{type:String,required:!0},title:{type:String,required:!0},desc:{type:String,default:""},note:{type:String,default:""},links:{type:Array,default:()=>[]}},setup(c){const g=c,h=H(),l=L(),u=V(()=>W("payment",g.section)||{groups:[]}),F=V(()=>{const n={};return(u.value.groups||[]).forEach(x=>{(x.fields||[]).forEach(S=>{S.default!==void 0&&(n[S.key]=S.default)})}),n}),{formData:e,loading:v,saving:_,loadError:i,dirty:a,save:k,reload:d}=T({fetch:()=>E.getSchemaPage("payment",g.section),submit:n=>E.saveSchemaPage("payment",g.section,n),defaults:F.value,onSaved:()=>{l.success("设置已保存")}});function w(n){h.push(n)}async function o(){try{await k()}catch(n){l.error(n.message||"保存失败")}}function M(){d(),l.info("已放弃更改")}return(n,x)=>{const S=s("n-button"),z=s("n-space"),G=s("n-alert"),j=s("n-card");return r(),q("div",Y,[p(R,{title:c.title,desc:c.desc},{actions:t(()=>[c.links.length?(r(),m(z,{key:0},{default:t(()=>[(r(!0),q(A,null,D(c.links,b=>(r(),m(S,{key:b.path,quaternary:"",onClick:ee=>w(b.path)},{default:t(()=>[B(y(b.label),1)]),_:2},1032,["onClick"]))),128))]),_:1})):C("",!0)]),_:1},8,["title","desc"]),c.note?(r(),m(j,{key:0,class:"aksrt-section-card"},{default:t(()=>[p(G,{type:"info","show-icon":!1},{default:t(()=>[B(y(c.note),1)]),_:1})]),_:1})):C("",!0),I(n.$slots,"before-form"),p(U,{schema:u.value.groups,"form-data":P(e),dirty:P(a),loading:P(v),saving:P(_),"load-error":P(i),"show-search":!1,"onUpdate:formData":x[0]||(x[0]=b=>e.value=b),onSave:o,onReload:M},null,8,["schema","form-data","dirty","loading","saving","load-error"])])}}},J={class:"aksrt-gateway__card"},K={class:"aksrt-gateway__help"},Q={__name:"PaymentGateway",setup(c){const g=L(),h=N([]),l=N({}),u=N(!1);function F(e){return e==="balance"||e==="alipay"||e==="epay_alipay"?"fa fas fa-credit-card":e==="wechatpay"||e==="epay_wxpay"?"fa fab fa-weixin":e==="paypal"?"fa fab fa-paypal":e==="stripe"?"fa fab fa-cc-stripe":"fa fas fa-credit-card"}return O(async()=>{var e,v,_;u.value=!0;try{const[i,a]=await Promise.all([E.request("/payment/overview").catch(()=>null)]);if((v=(e=i==null?void 0:i.data)==null?void 0:e.gateway)!=null&&v.gateways){const k=Object.entries(i.data.gateway.gateways).map(([d,w])=>({id:d,name:d,configured:!!w}));h.value=k}(_=a==null?void 0:a.data)!=null&&_.gateway?l.value=a.data.gateway:a!=null&&a.data&&(l.value=a.data)}catch{g.warning("部分支付接口暂不可用")}finally{u.value=!1}}),(e,v)=>{const _=s("n-tag"),i=s("n-grid-item"),a=s("n-grid"),k=s("n-empty"),d=s("n-card"),w=s("n-spin");return r(),m(Z,{section:"gateway",title:"收款接口",desc:"管理余额、支付宝、微信、PayPal、Stripe、易支付与卡密兑换通道。",note:"以渠道开关与凭据是否齐全为准;异步回调由各网关验签。卡密为兑换入口,不进入收银台。",links:[{label:"余额充值",path:"/payment/recharge"},{label:"充值卡",path:"/payment/card-pass"}]},{"before-form":t(()=>[p(w,{show:u.value},{default:t(()=>[p(d,{class:"aksrt-section-card",title:"网关状态"},{default:t(()=>[p(a,{cols:3,"x-gap":12,"y-gap":12},{default:t(()=>[(r(!0),q(A,null,D(h.value,o=>(r(),m(i,{key:o.id},{default:t(()=>[f("div",J,[f("div",{class:$(["aksrt-gateway__icon",o.configured?"aksrt-gateway__icon--active":""])},[f("i",{class:$(F(o.id))},null,2)],2),f("div",null,[f("strong",null,y(o.name),1),f("p",null,y(o.configured?"已配置":"未配置"),1)]),p(_,{type:o.configured?"success":"default",size:"small",round:""},{default:t(()=>[B(y(o.configured?"可用":"不可用"),1)]),_:2},1032,["type"])])]),_:2},1024))),128))]),_:1}),!u.value&&h.value.length===0?(r(),m(k,{key:0,description:"暂无已注册的支付网关"})):C("",!0)]),_:1}),l.value.help_text?(r(),m(d,{key:0,class:"aksrt-section-card",title:"运行说明"},{default:t(()=>[f("p",K,y(l.value.help_text),1)]),_:1})):C("",!0)]),_:1},8,["show"])]),_:1})}}},fe=X(Q,[["__scopeId","data-v-37b55ac6"]]);export{fe as default}; import{_ as H,a1 as s,W as r,X as q,a4 as p,a3 as t,a2 as m,F as A,R as D,f as B,Z as y,a5 as C,l as I,N as P,c as V,o as O,r as N,Y as f,L as $}from"./vendor-vue.BxZIRU0_.js";import{a as E}from"./shared-api.DnsQ5cxS.js";import{P as R}from"./PageHeader.CtT29f8Y.js";import{u as T,A as U,g as W}from"./shared-api.DieGsdVx.js";import{u as L}from"./vendor-naive.CKYCZmXD.js";import{_ as X}from"./index.js";import"./FaIcon.NZ6TDkNu.js";import"./FaIconPicker.C_p6xA0k.js";import"./vendor-misc.bELTaXdf.js";import"./level.E3ANSDAX.js";import"./badge.CKTsmH1z.js";const Y={class:"aksrt-page-container"},Z={__name:"PaymentSectionPage",props:{section:{type:String,required:!0},title:{type:String,required:!0},desc:{type:String,default:""},note:{type:String,default:""},links:{type:Array,default:()=>[]}},setup(c){const g=c,h=H(),l=L(),u=V(()=>W("payment",g.section)||{groups:[]}),F=V(()=>{const n={};return(u.value.groups||[]).forEach(x=>{(x.fields||[]).forEach(S=>{S.default!==void 0&&(n[S.key]=S.default)})}),n}),{formData:e,loading:v,saving:_,loadError:i,dirty:a,save:k,reload:d}=T({fetch:()=>E.getSchemaPage("payment",g.section),submit:n=>E.saveSchemaPage("payment",g.section,n),defaults:F.value,onSaved:()=>{l.success("设置已保存")}});function w(n){h.push(n)}async function o(){try{await k()}catch(n){l.error(n.message||"保存失败")}}function M(){d(),l.info("已放弃更改")}return(n,x)=>{const S=s("n-button"),z=s("n-space"),G=s("n-alert"),j=s("n-card");return r(),q("div",Y,[p(R,{title:c.title,desc:c.desc},{actions:t(()=>[c.links.length?(r(),m(z,{key:0},{default:t(()=>[(r(!0),q(A,null,D(c.links,b=>(r(),m(S,{key:b.path,quaternary:"",onClick:ee=>w(b.path)},{default:t(()=>[B(y(b.label),1)]),_:2},1032,["onClick"]))),128))]),_:1})):C("",!0)]),_:1},8,["title","desc"]),c.note?(r(),m(j,{key:0,class:"aksrt-section-card"},{default:t(()=>[p(G,{type:"info","show-icon":!1},{default:t(()=>[B(y(c.note),1)]),_:1})]),_:1})):C("",!0),I(n.$slots,"before-form"),p(U,{schema:u.value.groups,"form-data":P(e),dirty:P(a),loading:P(v),saving:P(_),"load-error":P(i),"show-search":!1,"onUpdate:formData":x[0]||(x[0]=b=>e.value=b),onSave:o,onReload:M},null,8,["schema","form-data","dirty","loading","saving","load-error"])])}}},J={class:"aksrt-gateway__card"},K={class:"aksrt-gateway__help"},Q={__name:"PaymentGateway",setup(c){const g=L(),h=N([]),l=N({}),u=N(!1);function F(e){return e==="balance"||e==="alipay"||e==="epay_alipay"?"fa fas fa-credit-card":e==="wechatpay"||e==="epay_wxpay"?"fa fab fa-weixin":e==="paypal"?"fa fab fa-paypal":e==="stripe"?"fa fab fa-cc-stripe":"fa fas fa-credit-card"}return O(async()=>{var e,v,_;u.value=!0;try{const[i,a]=await Promise.all([E.request("/payment/overview").catch(()=>null)]);if((v=(e=i==null?void 0:i.data)==null?void 0:e.gateway)!=null&&v.gateways){const k=Object.entries(i.data.gateway.gateways).map(([d,w])=>({id:d,name:d,configured:!!w}));h.value=k}(_=a==null?void 0:a.data)!=null&&_.gateway?l.value=a.data.gateway:a!=null&&a.data&&(l.value=a.data)}catch{g.warning("部分支付接口暂不可用")}finally{u.value=!1}}),(e,v)=>{const _=s("n-tag"),i=s("n-grid-item"),a=s("n-grid"),k=s("n-empty"),d=s("n-card"),w=s("n-spin");return r(),m(Z,{section:"gateway",title:"收款接口",desc:"管理余额、支付宝、微信、PayPal、Stripe、易支付与卡密兑换通道。",note:"以渠道开关与凭据是否齐全为准;异步回调由各网关验签。卡密为兑换入口,不进入收银台。",links:[{label:"余额充值",path:"/payment/recharge"},{label:"充值卡",path:"/payment/card-pass"}]},{"before-form":t(()=>[p(w,{show:u.value},{default:t(()=>[p(d,{class:"aksrt-section-card",title:"网关状态"},{default:t(()=>[p(a,{cols:3,"x-gap":12,"y-gap":12},{default:t(()=>[(r(!0),q(A,null,D(h.value,o=>(r(),m(i,{key:o.id},{default:t(()=>[f("div",J,[f("div",{class:$(["aksrt-gateway__icon",o.configured?"aksrt-gateway__icon--active":""])},[f("i",{class:$(F(o.id))},null,2)],2),f("div",null,[f("strong",null,y(o.name),1),f("p",null,y(o.configured?"已配置":"未配置"),1)]),p(_,{type:o.configured?"success":"default",size:"small",round:""},{default:t(()=>[B(y(o.configured?"可用":"不可用"),1)]),_:2},1032,["type"])])]),_:2},1024))),128))]),_:1}),!u.value&&h.value.length===0?(r(),m(k,{key:0,description:"暂无已注册的支付网关"})):C("",!0)]),_:1}),l.value.help_text?(r(),m(d,{key:0,class:"aksrt-section-card",title:"运行说明"},{default:t(()=>[f("p",K,y(l.value.help_text),1)]),_:1})):C("",!0)]),_:1},8,["show"])]),_:1})}}},fe=X(Q,[["__scopeId","data-v-37b55ac6"]]);export{fe as default};
@@ -1 +1 @@
import t from"./SchemaPage._RXlmOMl.js";import{a2 as o,W as r}from"./vendor-vue.BxZIRU0_.js";import"./shared-api.DsnKC5vk.js";import"./FaIcon.NZ6TDkNu.js";import"./index.js";import"./vendor-naive.CKYCZmXD.js";import"./vendor-misc.bELTaXdf.js";import"./FaIconPicker.DuahAn6_.js";import"./shared-api.DnsQ5cxS.js";import"./level.E3ANSDAX.js";import"./badge.CKTsmH1z.js";const d={__name:"PostPageSettings",setup(p){return(m,e)=>(r(),o(t,{domain:"post_list",section:"page"}))}};export{d as default}; import t from"./SchemaPage.DUnjy3YN.js";import{a2 as o,W as r}from"./vendor-vue.BxZIRU0_.js";import"./shared-api.DieGsdVx.js";import"./FaIcon.NZ6TDkNu.js";import"./index.js";import"./vendor-naive.CKYCZmXD.js";import"./vendor-misc.bELTaXdf.js";import"./FaIconPicker.C_p6xA0k.js";import"./shared-api.DnsQ5cxS.js";import"./level.E3ANSDAX.js";import"./badge.CKTsmH1z.js";const d={__name:"PostPageSettings",setup(p){return(m,e)=>(r(),o(t,{domain:"post_list",section:"page"}))}};export{d as default};
@@ -1 +1 @@
import{aa as q,a1 as i,W as _,a2 as b,a3 as s,a4 as l,f,Y as I,a5 as K,ab as Y,c as z,w as Z,b as ve,X as E,ac as _e,R as ee,N as R,ad as ye,I as ge,Z as ke,r as B,$ as we,F as be,a6 as he,l as Se,ae as Ce,af as xe,n as Ae}from"./vendor-vue.BxZIRU0_.js";import{u as Te,A as Ie,n as ze,g as te}from"./shared-api.DsnKC5vk.js";import{a as O}from"./shared-api.DnsQ5cxS.js";import{_ as Ue}from"./index.js";import{u as Pe}from"./vendor-naive.CKYCZmXD.js";import"./FaIcon.NZ6TDkNu.js";import"./FaIconPicker.DuahAn6_.js";import"./vendor-misc.bELTaXdf.js";import"./level.E3ANSDAX.js";import"./badge.CKTsmH1z.js";const Ve={__name:"TencentConfig",props:{modelValue:{type:Object,default:()=>({})},modelModifiers:{}},emits:Y(["clear-secret","restore-secret"],["update:modelValue"]),setup(U,{emit:P}){const n=q(U,"modelValue"),k=P;function A(u){k("clear-secret",u),n.value={...n.value,[u]:""}}function y(u,e){e!==""&&k("restore-secret",u)}const d=z(()=>{const u=n.value;return!!(u.secret_id&&u.secret_key&&u.app_id&&u.app_secret_key)});return(u,e)=>{const w=i("n-divider"),m=i("n-a"),g=i("n-alert"),v=i("n-input"),C=i("n-form-item"),x=i("n-button"),h=i("n-tag"),$=i("n-space"),M=i("n-form");return _(),b(M,{"label-placement":"left","label-width":"130"},{default:s(()=>[l($,{vertical:"",style:{width:"100%"}},{default:s(()=>[l(w,{"title-placement":"left"},{default:s(()=>[...e[8]||(e[8]=[f("云 API 密钥(用于 TC3 签名)",-1)])]),_:1}),l(g,{type:"warning",style:{"margin-bottom":"12px"}},{default:s(()=>[e[10]||(e[10]=f(" 请从 ",-1)),l(m,{href:"https://console.cloud.tencent.com/cam/capi",target:"_blank"},{default:s(()=>[...e[9]||(e[9]=[f("访问管理控制台 → API 密钥管理",-1)])]),_:1}),e[11]||(e[11]=f(" 获取。建议使用子账号密钥并仅授予 ",-1)),e[12]||(e[12]=I("code",null,"QcloudCaptchaFullAccess",-1)),e[13]||(e[13]=f(" 权限。 ",-1))]),_:1}),l(C,{label:"SecretId"},{default:s(()=>[l(v,{value:n.value.secret_id,"onUpdate:value":e[0]||(e[0]=o=>n.value.secret_id=o),placeholder:"腾讯云 API SecretId",autocomplete:"off"},null,8,["value"])]),_:1}),l(C,{label:"SecretKey"},{default:s(()=>[l(v,{value:n.value.secret_key,"onUpdate:value":[e[1]||(e[1]=o=>n.value.secret_key=o),e[2]||(e[2]=o=>y("secret_key",o))],type:"password",placeholder:"腾讯云 API SecretKey",autocomplete:"new-password","show-password-on":"click"},null,8,["value"]),n.value.secret_key==="***"?(_(),b(x,{key:0,size:"tiny",type:"error",ghost:"",style:{"margin-left":"8px"},onClick:e[3]||(e[3]=o=>A("secret_key"))},{default:s(()=>[...e[14]||(e[14]=[f("清除",-1)])]),_:1})):K("",!0)]),_:1}),l(w,{"title-placement":"left"},{default:s(()=>[...e[15]||(e[15]=[f("验证码密钥",-1)])]),_:1}),l(C,{label:"CaptchaAppId"},{default:s(()=>[l(v,{value:n.value.app_id,"onUpdate:value":e[4]||(e[4]=o=>n.value.app_id=o),placeholder:"从验证码控制台获取 CaptchaAppId",autocomplete:"off"},null,8,["value"])]),_:1}),l(C,{label:"AppSecretKey"},{feedback:s(()=>[...e[17]||(e[17]=[f("请从「验证管理 → 基础配置」完整复制,注意区分 I/l/1/O/0",-1)])]),default:s(()=>[l(v,{value:n.value.app_secret_key,"onUpdate:value":[e[5]||(e[5]=o=>n.value.app_secret_key=o),e[6]||(e[6]=o=>y("app_secret_key",o))],type:"password",placeholder:"从验证码控制台获取 AppSecretKey",autocomplete:"new-password","show-password-on":"click"},null,8,["value"]),n.value.app_secret_key==="***"?(_(),b(x,{key:0,size:"tiny",type:"error",ghost:"",style:{"margin-left":"8px"},onClick:e[7]||(e[7]=o=>A("app_secret_key"))},{default:s(()=>[...e[16]||(e[16]=[f("清除",-1)])]),_:1})):K("",!0)]),_:1}),l(g,{type:"info",style:{"margin-bottom":"12px"}},{default:s(()=>[...e[18]||(e[18]=[f(" 腾讯云验证码 2.0 — 验证类型(滑动拼图、文字点选、空间语义等)请在",-1),I("a",{href:"https://console.cloud.tencent.com/captcha/graphical",target:"_blank"},"验证码控制台",-1),f("配置。 ",-1)])]),_:1}),d.value?(_(),b(h,{key:0,type:"success",size:"small"},{default:s(()=>[...e[19]||(e[19]=[f("✓ 已完整配置",-1)])]),_:1})):(_(),b(h,{key:1,type:"warning",size:"small"},{default:s(()=>[...e[20]||(e[20]=[f("未完成配置",-1)])]),_:1}))]),_:1})]),_:1})}}},De={__name:"AliyunConfig",props:{modelValue:{type:Object,default:()=>({})},modelModifiers:{}},emits:Y(["clear-secret","restore-secret"],["update:modelValue"]),setup(U,{emit:P}){const n=q(U,"modelValue"),k=P;function A(u){k("clear-secret",u),n.value={...n.value,[u]:""}}function y(u,e){e!==""&&k("restore-secret",u)}const d=z(()=>{const u=n.value;return!!(u.region&&u.prefix&&u.scene_id&&u.access_key_id&&u.access_key_secret)});return(u,e)=>{const w=i("n-divider"),m=i("n-select"),g=i("n-form-item"),v=i("n-input"),C=i("n-button"),x=i("n-alert"),h=i("n-tag"),$=i("n-space"),M=i("n-form");return _(),b(M,{"label-placement":"left","label-width":"130"},{default:s(()=>[l($,{vertical:"",style:{width:"100%"}},{default:s(()=>[l(w,{"title-placement":"left"},{default:s(()=>[...e[7]||(e[7]=[f("前端配置",-1)])]),_:1}),l(g,{label:"所属Line truncated import{aa as q,a1 as i,W as _,a2 as b,a3 as s,a4 as l,f,Y as I,a5 as K,ab as Y,c as z,w as Z,b as ve,X as E,ac as _e,R as ee,N as R,ad as ye,I as ge,Z as ke,r as B,$ as we,F as be,a6 as he,l as Se,ae as Ce,af as xe,n as Ae}from"./vendor-vue.BxZIRU0_.js";import{u as Te,A as Ie,n as ze,g as te}from"./shared-api.DieGsdVx.js";import{a as O}from"./shared-api.DnsQ5cxS.js";import{_ as Ue}from"./index.js";import{u as Pe}from"./vendor-naive.CKYCZmXD.js";import"./FaIcon.NZ6TDkNu.js";import"./FaIconPicker.C_p6xA0k.js";import"./vendor-misc.bELTaXdf.js";import"./level.E3ANSDAX.js";import"./badge.CKTsmH1z.js";const Ve={__name:"TencentConfig",props:{modelValue:{type:Object,default:()=>({})},modelModifiers:{}},emits:Y(["clear-secret","restore-secret"],["update:modelValue"]),setup(U,{emit:P}){const n=q(U,"modelValue"),k=P;function A(u){k("clear-secret",u),n.value={...n.value,[u]:""}}function y(u,e){e!==""&&k("restore-secret",u)}const d=z(()=>{const u=n.value;return!!(u.secret_id&&u.secret_key&&u.app_id&&u.app_secret_key)});return(u,e)=>{const w=i("n-divider"),m=i("n-a"),g=i("n-alert"),v=i("n-input"),C=i("n-form-item"),x=i("n-button"),h=i("n-tag"),$=i("n-space"),M=i("n-form");return _(),b(M,{"label-placement":"left","label-width":"130"},{default:s(()=>[l($,{vertical:"",style:{width:"100%"}},{default:s(()=>[l(w,{"title-placement":"left"},{default:s(()=>[...e[8]||(e[8]=[f("云 API 密钥(用于 TC3 签名)",-1)])]),_:1}),l(g,{type:"warning",style:{"margin-bottom":"12px"}},{default:s(()=>[e[10]||(e[10]=f(" 请从 ",-1)),l(m,{href:"https://console.cloud.tencent.com/cam/capi",target:"_blank"},{default:s(()=>[...e[9]||(e[9]=[f("访问管理控制台 → API 密钥管理",-1)])]),_:1}),e[11]||(e[11]=f(" 获取。建议使用子账号密钥并仅授予 ",-1)),e[12]||(e[12]=I("code",null,"QcloudCaptchaFullAccess",-1)),e[13]||(e[13]=f(" 权限。 ",-1))]),_:1}),l(C,{label:"SecretId"},{default:s(()=>[l(v,{value:n.value.secret_id,"onUpdate:value":e[0]||(e[0]=o=>n.value.secret_id=o),placeholder:"腾讯云 API SecretId",autocomplete:"off"},null,8,["value"])]),_:1}),l(C,{label:"SecretKey"},{default:s(()=>[l(v,{value:n.value.secret_key,"onUpdate:value":[e[1]||(e[1]=o=>n.value.secret_key=o),e[2]||(e[2]=o=>y("secret_key",o))],type:"password",placeholder:"腾讯云 API SecretKey",autocomplete:"new-password","show-password-on":"click"},null,8,["value"]),n.value.secret_key==="***"?(_(),b(x,{key:0,size:"tiny",type:"error",ghost:"",style:{"margin-left":"8px"},onClick:e[3]||(e[3]=o=>A("secret_key"))},{default:s(()=>[...e[14]||(e[14]=[f("清除",-1)])]),_:1})):K("",!0)]),_:1}),l(w,{"title-placement":"left"},{default:s(()=>[...e[15]||(e[15]=[f("验证码密钥",-1)])]),_:1}),l(C,{label:"CaptchaAppId"},{default:s(()=>[l(v,{value:n.value.app_id,"onUpdate:value":e[4]||(e[4]=o=>n.value.app_id=o),placeholder:"从验证码控制台获取 CaptchaAppId",autocomplete:"off"},null,8,["value"])]),_:1}),l(C,{label:"AppSecretKey"},{feedback:s(()=>[...e[17]||(e[17]=[f("请从「验证管理 → 基础配置」完整复制,注意区分 I/l/1/O/0",-1)])]),default:s(()=>[l(v,{value:n.value.app_secret_key,"onUpdate:value":[e[5]||(e[5]=o=>n.value.app_secret_key=o),e[6]||(e[6]=o=>y("app_secret_key",o))],type:"password",placeholder:"从验证码控制台获取 AppSecretKey",autocomplete:"new-password","show-password-on":"click"},null,8,["value"]),n.value.app_secret_key==="***"?(_(),b(x,{key:0,size:"tiny",type:"error",ghost:"",style:{"margin-left":"8px"},onClick:e[7]||(e[7]=o=>A("app_secret_key"))},{default:s(()=>[...e[16]||(e[16]=[f("清除",-1)])]),_:1})):K("",!0)]),_:1}),l(g,{type:"info",style:{"margin-bottom":"12px"}},{default:s(()=>[...e[18]||(e[18]=[f(" 腾讯云验证码 2.0 — 验证类型(滑动拼图、文字点选、空间语义等)请在",-1),I("a",{href:"https://console.cloud.tencent.com/captcha/graphical",target:"_blank"},"验证码控制台",-1),f("配置。 ",-1)])]),_:1}),d.value?(_(),b(h,{key:0,type:"success",size:"small"},{default:s(()=>[...e[19]||(e[19]=[f("✓ 已完整配置",-1)])]),_:1})):(_(),b(h,{key:1,type:"warning",size:"small"},{default:s(()=>[...e[20]||(e[20]=[f("未完成配置",-1)])]),_:1}))]),_:1})]),_:1})}}},De={__name:"AliyunConfig",props:{modelValue:{type:Object,default:()=>({})},modelModifiers:{}},emits:Y(["clear-secret","restore-secret"],["update:modelValue"]),setup(U,{emit:P}){const n=q(U,"modelValue"),k=P;function A(u){k("clear-secret",u),n.value={...n.value,[u]:""}}function y(u,e){e!==""&&k("restore-secret",u)}const d=z(()=>{const u=n.value;return!!(u.region&&u.prefix&&u.scene_id&&u.access_key_id&&u.access_key_secret)});return(u,e)=>{const w=i("n-divider"),m=i("n-select"),g=i("n-form-item"),v=i("n-input"),C=i("n-button"),x=i("n-alert"),h=i("n-tag"),$=i("n-space"),M=i("n-form");return _(),b(M,{"label-placement":"left","label-width":"130"},{default:s(()=>[l($,{vertical:"",style:{width:"100%"}},{default:s(()=>[l(w,{"title-placement":"left"},{default:s(()=>[...e[7]||(e[7]=[f("前端配置",-1)])]),_:1}),l(g,{label:"所属Line truncated
+2 -2
View File
@@ -1,2 +1,2 @@
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./SchemaPage._RXlmOMl.js","./vendor-vue.BxZIRU0_.js","./shared-api.DsnKC5vk.js","./FaIcon.NZ6TDkNu.js","./FaIconPicker.DuahAn6_.js","./shared-api.DnsQ5cxS.js","./FaIconPicker.css","./vendor-misc.bELTaXdf.js","./level.E3ANSDAX.js","./badge.CKTsmH1z.js","./index2.css","./vendor-naive.CKYCZmXD.js","./SchemaPage.css","./DeferredPage.DpQpYrho.js","./DeferredPage.css","./NativeOpsRedirect.CHwEgYbu.js","./NativeOpsRedirect.css","./FloatingButtonsSettings.DPX1stkw.js","./vendor-draggable.BooRVfGb.js","./PageHeader.CtT29f8Y.js","./PageHeader.css","./FloatingButtonsSettings.css","./FooterTabbarSettings.CIyXQt9d.js","./FooterTabbarSettings.css","./PostPageSettings.DEf9Fwyn.js","./CommentSettings.Cc5FzO9W.js","./PermissionsCapabilities.CjA3yZya.js","./PermissionsCapabilities.css","./AttachmentPermissions.Dzsg-DfQ.js","./AttachmentPermissions.css","./CmsCredits.BYsXdX89.js","./ThemeInfoPage.jxAxkM2b.js","./ThemeInfoPage.css","./ThemeAuthorizationPage.DMbNRHuq.js","./DocsPage.mFfiXsYT.js","./DocsPage.css","./UsersVerify.ryf_AQd6.js","./UsersVerify.css","./UsersLevel.BpnbcbVe.js","./UsersLevel.css","./UsersBadge.DCbaumfe.js","./UsersBadge.css","./UsersWechatTemplate.Dn21sVHP.js","./UsersWechatTemplate.css","./PaymentGateway.Cpy4K2E1.js","./PaymentGateway.css","./ToolsImportExport.BxEsl-fY.js","./ToolsImportExport.css","./ToolsHealth.B1bVNkRU.js","./ToolsHealth.css","./ToolsUpdate.DZedmIdt.js","./ToolsUpdate.css","./ExtensionAI.BmvoDo9B.js","./ExtensionAI.css"])))=>i.map(i=>d[i]); const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./SchemaPage.DUnjy3YN.js","./vendor-vue.BxZIRU0_.js","./shared-api.DieGsdVx.js","./FaIcon.NZ6TDkNu.js","./FaIconPicker.C_p6xA0k.js","./shared-api.DnsQ5cxS.js","./FaIconPicker.css","./vendor-misc.bELTaXdf.js","./level.E3ANSDAX.js","./badge.CKTsmH1z.js","./index2.css","./vendor-naive.CKYCZmXD.js","./SchemaPage.css","./DeferredPage.DpQpYrho.js","./DeferredPage.css","./NativeOpsRedirect.CHwEgYbu.js","./NativeOpsRedirect.css","./FloatingButtonsSettings.i1suZZSa.js","./vendor-draggable.BooRVfGb.js","./PageHeader.CtT29f8Y.js","./PageHeader.css","./FloatingButtonsSettings.css","./FooterTabbarSettings.pU_E4Hmw.js","./FooterTabbarSettings.css","./PostPageSettings.BLoHVRqN.js","./CommentSettings.D1KlFUf4.js","./PermissionsCapabilities.CjA3yZya.js","./PermissionsCapabilities.css","./AttachmentPermissions.Dzsg-DfQ.js","./AttachmentPermissions.css","./CmsCredits.BYsXdX89.js","./ThemeInfoPage.jxAxkM2b.js","./ThemeInfoPage.css","./ThemeAuthorizationPage.DMbNRHuq.js","./DocsPage.mFfiXsYT.js","./DocsPage.css","./UsersVerify.ryf_AQd6.js","./UsersVerify.css","./UsersLevel.BpnbcbVe.js","./UsersLevel.css","./UsersBadge.DCbaumfe.js","./UsersBadge.css","./UsersWechatTemplate.Dn21sVHP.js","./UsersWechatTemplate.css","./PaymentGateway.CciAIUvu.js","./PaymentGateway.css","./ToolsImportExport.BxEsl-fY.js","./ToolsImportExport.css","./ToolsHealth.B1bVNkRU.js","./ToolsHealth.css","./ToolsUpdate.DZedmIdt.js","./ToolsUpdate.css","./ExtensionAI.BmvoDo9B.js","./ExtensionAI.css"])))=>i.map(i=>d[i]);
import{W as h,X as S,Y as l,Z as O,r as V,k as ne,_ as ie,$ as re,o as le,b as ce,a0 as me,a1 as k,a2 as H,a3 as f,a4 as p,N as w,a5 as N,z,a6 as G,f as W,c as q,p as de,a7 as ue,a8 as pe,M as ye,a9 as fe}from"./vendor-vue.BxZIRU0_.js";import{N as be,n as _e}from"./vendor-naive.CKYCZmXD.js";import"./vendor-misc.bELTaXdf.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const m of i)if(m.type==="childList")for(const y of m.addedNodes)y.tagName==="LINK"&&y.rel==="modulepreload"&&r(y)}).observe(document,{childList:!0,subtree:!0});function n(i){const m={};return i.integrity&&(m.integrity=i.integrity),i.referrerPolicy&&(m.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?m.credentials="include":i.crossOrigin==="anonymous"?m.credentials="omit":m.credentials="same-origin",m}function r(i){if(i.ep)return;i.ep=!0;const m=n(i);fetch(i.href,m)}})();const Y=(e,t)=>{const n=e.__vccOpts||e;for(const[r,i]of t)n[r]=i;return n},he={class:"aksrt-mobile-topbar"},ge={class:"aksrt-mobile-topbar__title"},ve={__name:"MobileTopBar",props:{title:{type:String,default:"AKSRT"}},emits:["toggle"],setup(e){return(t,n)=>(h(),S("header",he,[l("button",{class:"aksrt-mobile-topbar__menu",type:"button","aria-label":"打开菜单",onClick:n[0]||(n[0]=r=>t.$emit("toggle"))},[...n[1]||(n[1]=[l("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:"22",height:"22",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[l("line",{x1:"4",y1:"6",x2:"20",y2:"6"}),l("line",{x1:"4",y1:"12",x2:"20",y2:"12"}),l("line",{x1:"4",y1:"18",x2:"20",y2:"18"})],-1)])]),l("div",ge,O(e.title),1),n[2]||(n[2]=l("div",{class:"aksrt-mobile-topbar__brand"},"AK",-1))]))}},ke=Y(ve,[["__scopeId","data-v-2fabfa7d"]]),J=V(null);function E(e){return()=>ne("i",{class:e,style:"font-size:18px;width:18px;text-align:center"})}function X(e){return{status:"available",component:"SchemaPage",canonicalDomain:"",section:"",phase:"",dependsOn:[],reason:"",features:[],iconClass:"",...e}}function d(e){return X(e)}function o(e){return X({component:"SchemaPage",...e})}const Pe={key:"global",label:"全局&功能",icon:E("fa fas fa-globe"),route:"/global",children:[o({key:"global-common",name:"GlobalCommon",label:"常用功能",route:"/global/common",title:"常用功能",desc:"评论、性能、头像源与备案等全局基础配置。",canonicalDomain:"global",section:"common"}),o({key:"global-logo",name:"GlobalLogo",label:"LOGO图像",route:"/global/logo",title:"LOGO图像",desc:"管理站点 Logo、站点图标和品牌标识。",canonicalDomain:"global",section:"logo"}),o({key:"global-seo",name:"GlobalSeo",label:"SEO优化",route:"/global/seo",title:"SEO优化",desc:"站点标题、描述、关键词、Sitemap 等搜索引擎优化设置。",canonicalDomain:"global",section:"seo"}),o({key:"global-layout",name:"GlobalLayout",label:"显示&布局",route:"/global/layout",title:"显示&布局",desc:"全局布局风格、颜色方案、字体设置。",canonicalDomain:"global",section:"layout"}),o({key:"global-search",name:"GlobalSearch",label:"搜索功能",route:"/global/search",title:"搜索功能",desc:"搜索页面样式、搜索建议、热门搜索配置。",canonicalDomain:"global",section:"search"}),d({key:"global-tabbar",name:"GlobalTabbar",label:"手机底部Tab",route:"/global/tabbar",title:"手机底部Tab",desc:"移动端底部导航栏配置。",component:"FooterTabbarSettings"}),d({key:"global-floating",name:"GlobalFloating",label:"右侧悬浮按钮",route:"/global/floating",title:"右侧悬浮按钮",desc:"页面右侧浮动按钮的显示与配置。",component:"FloatingButtonsSettings"}),o({key:"global-i18n",name:"GlobalI18n",label:"多语言翻译",route:"/global/i18n",title:"多语言翻译",desc:"配置站点语言、语言切换器和翻译管理。",canonicalDomain:"global",section:"i18n"}),o({key:"global-email",name:"GlobalEmail",label:"Email邮件",route:"/global/email",title:"Email邮件",desc:"SMTP 发信配置、邮件模板与测试。",canonicalDomain:"global",section:"email"}),o({key:"global-custom-code",name:"GlobalCustomCode",label:"自定义代码",route:"/global/custom-code",title:"自定义代码",desc:"自定义 CSS、JS 代码注入。",canonicalDomain:"global",section:"custom-code"})]},Ee={key:"page-display",label:"页面&显示",icon:E("fa fas fa-desktop"),route:"/page-display",children:[o({key:"page-display-header-nav",name:"PageDisplayHeaderNav",label:"顶部导航栏",route:"/page-display/header-nav",title:"顶部导航栏",canonicalDomain:"page_display",section:"header-nav"}),o({key:"page-display-header-components",name:"PageDisplayHeaderComponents",label:"顶部多功能组件",route:"/page-display/header-components",title:"顶部多功能组件",canonicalDomain:"page_display",seLine truncated import{W as h,X as S,Y as l,Z as O,r as V,k as ne,_ as ie,$ as re,o as le,b as ce,a0 as me,a1 as k,a2 as H,a3 as f,a4 as p,N as w,a5 as N,z,a6 as G,f as W,c as q,p as de,a7 as ue,a8 as pe,M as ye,a9 as fe}from"./vendor-vue.BxZIRU0_.js";import{N as be,n as _e}from"./vendor-naive.CKYCZmXD.js";import"./vendor-misc.bELTaXdf.js";(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const i of document.querySelectorAll('link[rel="modulepreload"]'))r(i);new MutationObserver(i=>{for(const m of i)if(m.type==="childList")for(const y of m.addedNodes)y.tagName==="LINK"&&y.rel==="modulepreload"&&r(y)}).observe(document,{childList:!0,subtree:!0});function n(i){const m={};return i.integrity&&(m.integrity=i.integrity),i.referrerPolicy&&(m.referrerPolicy=i.referrerPolicy),i.crossOrigin==="use-credentials"?m.credentials="include":i.crossOrigin==="anonymous"?m.credentials="omit":m.credentials="same-origin",m}function r(i){if(i.ep)return;i.ep=!0;const m=n(i);fetch(i.href,m)}})();const Y=(e,t)=>{const n=e.__vccOpts||e;for(const[r,i]of t)n[r]=i;return n},he={class:"aksrt-mobile-topbar"},ge={class:"aksrt-mobile-topbar__title"},ve={__name:"MobileTopBar",props:{title:{type:String,default:"AKSRT"}},emits:["toggle"],setup(e){return(t,n)=>(h(),S("header",he,[l("button",{class:"aksrt-mobile-topbar__menu",type:"button","aria-label":"打开菜单",onClick:n[0]||(n[0]=r=>t.$emit("toggle"))},[...n[1]||(n[1]=[l("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:"22",height:"22",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[l("line",{x1:"4",y1:"6",x2:"20",y2:"6"}),l("line",{x1:"4",y1:"12",x2:"20",y2:"12"}),l("line",{x1:"4",y1:"18",x2:"20",y2:"18"})],-1)])]),l("div",ge,O(e.title),1),n[2]||(n[2]=l("div",{class:"aksrt-mobile-topbar__brand"},"AK",-1))]))}},ke=Y(ve,[["__scopeId","data-v-2fabfa7d"]]),J=V(null);function E(e){return()=>ne("i",{class:e,style:"font-size:18px;width:18px;text-align:center"})}function X(e){return{status:"available",component:"SchemaPage",canonicalDomain:"",section:"",phase:"",dependsOn:[],reason:"",features:[],iconClass:"",...e}}function d(e){return X(e)}function o(e){return X({component:"SchemaPage",...e})}const Pe={key:"global",label:"全局&功能",icon:E("fa fas fa-globe"),route:"/global",children:[o({key:"global-common",name:"GlobalCommon",label:"常用功能",route:"/global/common",title:"常用功能",desc:"评论、性能、头像源与备案等全局基础配置。",canonicalDomain:"global",section:"common"}),o({key:"global-logo",name:"GlobalLogo",label:"LOGO图像",route:"/global/logo",title:"LOGO图像",desc:"管理站点 Logo、站点图标和品牌标识。",canonicalDomain:"global",section:"logo"}),o({key:"global-seo",name:"GlobalSeo",label:"SEO优化",route:"/global/seo",title:"SEO优化",desc:"站点标题、描述、关键词、Sitemap 等搜索引擎优化设置。",canonicalDomain:"global",section:"seo"}),o({key:"global-layout",name:"GlobalLayout",label:"显示&布局",route:"/global/layout",title:"显示&布局",desc:"全局布局风格、颜色方案、字体设置。",canonicalDomain:"global",section:"layout"}),o({key:"global-search",name:"GlobalSearch",label:"搜索功能",route:"/global/search",title:"搜索功能",desc:"搜索页面样式、搜索建议、热门搜索配置。",canonicalDomain:"global",section:"search"}),d({key:"global-tabbar",name:"GlobalTabbar",label:"手机底部Tab",route:"/global/tabbar",title:"手机底部Tab",desc:"移动端底部导航栏配置。",component:"FooterTabbarSettings"}),d({key:"global-floating",name:"GlobalFloating",label:"右侧悬浮按钮",route:"/global/floating",title:"右侧悬浮按钮",desc:"页面右侧浮动按钮的显示与配置。",component:"FloatingButtonsSettings"}),o({key:"global-i18n",name:"GlobalI18n",label:"多语言翻译",route:"/global/i18n",title:"多语言翻译",desc:"配置站点语言、语言切换器和翻译管理。",canonicalDomain:"global",section:"i18n"}),o({key:"global-email",name:"GlobalEmail",label:"Email邮件",route:"/global/email",title:"Email邮件",desc:"SMTP 发信配置、邮件模板与测试。",canonicalDomain:"global",section:"email"}),o({key:"global-custom-code",name:"GlobalCustomCode",label:"自定义代码",route:"/global/custom-code",title:"自定义代码",desc:"自定义 CSS、JS 代码注入。",canonicalDomain:"global",section:"custom-code"})]},Ee={key:"page-display",label:"页面&显示",icon:E("fa fas fa-desktop"),route:"/page-display",children:[o({key:"page-display-header-nav",name:"PageDisplayHeaderNav",label:"顶部导航栏",route:"/page-display/header-nav",title:"顶部导航栏",canonicalDomain:"page_display",section:"header-nav"}),o({key:"page-display-header-components",name:"PageDisplayHeaderComponents",label:"顶部多功能组件",route:"/page-display/header-components",title:"顶部多功能组件",canonicalDomain:"page_display",seLine truncated
@@ -1,4 +1,4 @@
import{_ as I}from"./FaIcon.NZ6TDkNu.js";import{r as E,W as s,X as n,L as Z,Y as _,a2 as m,a5 as z,Z as k,ad as Ye,l as de,a4 as o,a3 as b,j as Ua,v as ja,z as Ea,a1 as T,f as A,c as H,w as me,F as j,R as K,o as we,b as ra,x as Ma,ac as Ra,I as Ka,ai as Ga,m as ea}from"./vendor-vue.BxZIRU0_.js";import{_ as te}from"./index.js";import{F as Na}from"./FaIconPicker.DuahAn6_.js";import{ba as ce,bb as Ha,bc as Fa,bd as ue,be as Wa,bf as Ba,bg as Ja}from"./vendor-misc.bELTaXdf.js";import{a as fe}from"./shared-api.DnsQ5cxS.js";import{l as Qa}from"./level.E3ANSDAX.js";import{b as Xa}from"./badge.CKTsmH1z.js";const Za={class:"aksrt-field-group__header-left"},Ya={class:"aksrt-field-group__title"},et={key:0,class:"aksrt-field-group__desc"},at={class:"aksrt-field-group__header-right"},tt=["aria-expanded","title"],lt={class:"aksrt-field-group__body"},st={__name:"AksFieldGroup",props:{title:{type:String,default:""},description:{type:String,default:""},icon:{type:String,default:""},collapsible:{type:Boolean,default:!1},defaultCollapsed:{type:Boolean,default:!1}},setup(e){const $=e,i=E(!!$.defaultCollapsed);function p(){$.collapsible&&(i.value=!i.value)}return(S,v)=>(s(),n("div",{class:Z(["aksrt-field-group",{"is-collapsible":e.collapsible,"is-collapsed":e.collapsible&&i.value}])},[e.title?(s(),n("div",{key:0,class:Z(["aksrt-field-group__header",{"is-clickable":e.collapsible}]),onClick:v[1]||(v[1]=D=>e.collapsible?p():void 0)},[_("div",Za,[e.icon?(s(),m(I,{key:0,icon:e.icon,size:16,class:"aksrt-field-group__icon"},null,8,["icon"])):z("",!0),_("div",null,[_("h3",Ya,k(e.title),1),e.description?(s(),n("p",et,k(e.description),1)):z("",!0)])]),_("div",at,[S.$slots.actions?(s(),n("div",{key:0,class:"aksrt-field-group__actions",onClick:v[0]||(v[0]=Ye(()=>{},["stop"]))},[de(S.$slots,"actions",{},void 0,!0)])):z("",!0),e.collapsible?(s(),n("button",{key:1,type:"button",class:"aksrt-field-group__collapse-btn","aria-expanded":(!i.value).toString(),title:i.value?"展开配置":"收起配置",onClick:Ye(p,["stop"])},[o(I,{icon:i.value?"fa fas fa-chevron-right":"fa fas fa-chevron-down",size:12},null,8,["icon"]),_("span",null,k(i.value?"展开":"收起"),1)],8,tt)):z("",!0)])],2)):z("",!0),o(Ea,{name:"aksrt-collapse"},{default:b(()=>[Ua(_("div",lt,[de(S.$slots,"default",{},void 0,!0)],512),[[ja,!i.value]])]),_:3})],2))}},it=te(st,[["__scopeId","data-v-6e29aa86"]]),nt={class:"aksrt-media-field"},ut={key:0,class:"aksrt-media-field__preview"},dt=["src","alt"],ot={key:1,class:"aksrt-media-field__file"},rt={class:"aksrt-media-field__filename"},_t={class:"aksrt-media-field__overlay"},pt={__name:"AksMediaField",props:{modelValue:{type:String,default:""},accept:{type:String,default:"image/*"},placeholder:{type:String,default:"选择图片"}},emits:["update:modelValue"],setup(e,{emit:$}){const i=e,p=$,S=H(()=>i.modelValue?/\.(jpg|jpeg|png|gif|webp|svg|bmp|ico)(\?.*)?$/i.test(i.modelValue)||i.modelValue.startsWith("data:image/"):!1),v=H(()=>{if(!i.modelValue)return"";try{const O=new URL(i.modelValue,window.location.origin).pathname.split("/");return O[O.length-1]||i.modelValue}catch{const g=i.modelValue.split("/");return g[g.length-1]||i.modelValue}});function D(){if(typeof wp<"u"&&wp.media){const g=wp.media({title:i.placeholder,multiple:!1,library:{type:i.accept==="image/*"?"image":void 0}});g.on("select",()=>{const O=g.state().get("selection").first().toJSON();p("update:modelValue",O.url)}),g.open()}}function C(){p("update:modelValue","")}return(g,O)=>{const N=T("n-button"),W=T("n-input");return s(),n("div",nt,[e.modelValue?(s(),n("div",ut,[S.value?(s(),n("img",{key:0,src:e.modelValue,alt:e.placeholder,class:"aksrt-media-field__image"},null,8,dt)):(s(),n("div",ot,[o(I,{icon:"fa fas fa-file",size:24}),_("span",rt,k(v.value),1)])),_("div",_t,[o(N,{size:"tiny",quaternary:"",onClick:D},{default:b(()=>[o(I,{icon:"fa fas fa-exchange-alt"}),O[1]||(O[1]=A(" 更换 ",-1))]),_:1}),o(N,{size:"tiny",quaternary:"",type:"error",onClick:C},{default:b(()=>[o(I,{icon:"fa fas fa-trash-alt"}),O[2]||(O[2]=A(" 移除 ",-1))]),_:1})])])):(s(),n("div",{key:1,class:"aksrt-media-field__empty",onClick:D},[o(I,{icon:"fa fas fa-cloud-upload-alt",size:28}),_("span",null,k(e.placeholder),1)])),o(W,{value:e.modelValue,placeholder:"或直接输入 URL",size:"small",class:"aksrt-media-field__url","onUpdate:value":O[0]||(O[0]=R=>p("update:modelValue",R))},null,8,["value"])])}}},aa=te(pt,[["__scopeId","data-v-6a55ccc5"]]),yt={class:"aksrt-gallery-field"},ct={key:0,class:"aksrt-gallery-field__grid"},ft=["src","alt"],bt={key:1,class:"aksrt-gallery-field__placeholder"},mt={class:"aksrt-gallery-field__actions"},kt={key:1,class:"aksrt-gallery-field__empty"},ht={class:"aksrt-gallery-field__buttons"},vt={key:2,class:"aksrt-gallery-field__error"},gt={__name:"AksGalleryField",props:{modelValue:{type:Array,default:()=>[]},title:{type:String,default:"选择图片"}},emits:["update:modelValue"],setup(e,{emit:$}){const i=e,p=$,S=E({}),v=E("");let D=0;const C=H(()=>{const q=new Set;return i.modLine truncated import{_ as I}from"./FaIcon.NZ6TDkNu.js";import{r as E,W as s,X as n,L as Z,Y as _,a2 as m,a5 as z,Z as k,ad as Ye,l as de,a4 as o,a3 as b,j as Ua,v as ja,z as Ea,a1 as T,f as A,c as H,w as me,F as j,R as K,o as we,b as ra,x as Ma,ac as Ra,I as Ka,ai as Ga,m as ea}from"./vendor-vue.BxZIRU0_.js";import{_ as te}from"./index.js";import{F as Na}from"./FaIconPicker.C_p6xA0k.js";import{ba as ce,bb as Ha,bc as Fa,bd as ue,be as Wa,bf as Ba,bg as Ja}from"./vendor-misc.bELTaXdf.js";import{a as fe}from"./shared-api.DnsQ5cxS.js";import{l as Qa}from"./level.E3ANSDAX.js";import{b as Xa}from"./badge.CKTsmH1z.js";const Za={class:"aksrt-field-group__header-left"},Ya={class:"aksrt-field-group__title"},et={key:0,class:"aksrt-field-group__desc"},at={class:"aksrt-field-group__header-right"},tt=["aria-expanded","title"],lt={class:"aksrt-field-group__body"},st={__name:"AksFieldGroup",props:{title:{type:String,default:""},description:{type:String,default:""},icon:{type:String,default:""},collapsible:{type:Boolean,default:!1},defaultCollapsed:{type:Boolean,default:!1}},setup(e){const $=e,i=E(!!$.defaultCollapsed);function p(){$.collapsible&&(i.value=!i.value)}return(S,v)=>(s(),n("div",{class:Z(["aksrt-field-group",{"is-collapsible":e.collapsible,"is-collapsed":e.collapsible&&i.value}])},[e.title?(s(),n("div",{key:0,class:Z(["aksrt-field-group__header",{"is-clickable":e.collapsible}]),onClick:v[1]||(v[1]=D=>e.collapsible?p():void 0)},[_("div",Za,[e.icon?(s(),m(I,{key:0,icon:e.icon,size:16,class:"aksrt-field-group__icon"},null,8,["icon"])):z("",!0),_("div",null,[_("h3",Ya,k(e.title),1),e.description?(s(),n("p",et,k(e.description),1)):z("",!0)])]),_("div",at,[S.$slots.actions?(s(),n("div",{key:0,class:"aksrt-field-group__actions",onClick:v[0]||(v[0]=Ye(()=>{},["stop"]))},[de(S.$slots,"actions",{},void 0,!0)])):z("",!0),e.collapsible?(s(),n("button",{key:1,type:"button",class:"aksrt-field-group__collapse-btn","aria-expanded":(!i.value).toString(),title:i.value?"展开配置":"收起配置",onClick:Ye(p,["stop"])},[o(I,{icon:i.value?"fa fas fa-chevron-right":"fa fas fa-chevron-down",size:12},null,8,["icon"]),_("span",null,k(i.value?"展开":"收起"),1)],8,tt)):z("",!0)])],2)):z("",!0),o(Ea,{name:"aksrt-collapse"},{default:b(()=>[Ua(_("div",lt,[de(S.$slots,"default",{},void 0,!0)],512),[[ja,!i.value]])]),_:3})],2))}},it=te(st,[["__scopeId","data-v-6e29aa86"]]),nt={class:"aksrt-media-field"},ut={key:0,class:"aksrt-media-field__preview"},dt=["src","alt"],ot={key:1,class:"aksrt-media-field__file"},rt={class:"aksrt-media-field__filename"},_t={class:"aksrt-media-field__overlay"},pt={__name:"AksMediaField",props:{modelValue:{type:String,default:""},accept:{type:String,default:"image/*"},placeholder:{type:String,default:"选择图片"}},emits:["update:modelValue"],setup(e,{emit:$}){const i=e,p=$,S=H(()=>i.modelValue?/\.(jpg|jpeg|png|gif|webp|svg|bmp|ico)(\?.*)?$/i.test(i.modelValue)||i.modelValue.startsWith("data:image/"):!1),v=H(()=>{if(!i.modelValue)return"";try{const O=new URL(i.modelValue,window.location.origin).pathname.split("/");return O[O.length-1]||i.modelValue}catch{const g=i.modelValue.split("/");return g[g.length-1]||i.modelValue}});function D(){if(typeof wp<"u"&&wp.media){const g=wp.media({title:i.placeholder,multiple:!1,library:{type:i.accept==="image/*"?"image":void 0}});g.on("select",()=>{const O=g.state().get("selection").first().toJSON();p("update:modelValue",O.url)}),g.open()}}function C(){p("update:modelValue","")}return(g,O)=>{const N=T("n-button"),W=T("n-input");return s(),n("div",nt,[e.modelValue?(s(),n("div",ut,[S.value?(s(),n("img",{key:0,src:e.modelValue,alt:e.placeholder,class:"aksrt-media-field__image"},null,8,dt)):(s(),n("div",ot,[o(I,{icon:"fa fas fa-file",size:24}),_("span",rt,k(v.value),1)])),_("div",_t,[o(N,{size:"tiny",quaternary:"",onClick:D},{default:b(()=>[o(I,{icon:"fa fas fa-exchange-alt"}),O[1]||(O[1]=A(" 更换 ",-1))]),_:1}),o(N,{size:"tiny",quaternary:"",type:"error",onClick:C},{default:b(()=>[o(I,{icon:"fa fas fa-trash-alt"}),O[2]||(O[2]=A(" 移除 ",-1))]),_:1})])])):(s(),n("div",{key:1,class:"aksrt-media-field__empty",onClick:D},[o(I,{icon:"fa fas fa-cloud-upload-alt",size:28}),_("span",null,k(e.placeholder),1)])),o(W,{value:e.modelValue,placeholder:"或直接输入 URL",size:"small",class:"aksrt-media-field__url","onUpdate:value":O[0]||(O[0]=R=>p("update:modelValue",R))},null,8,["value"])])}}},aa=te(pt,[["__scopeId","data-v-6a55ccc5"]]),yt={class:"aksrt-gallery-field"},ct={key:0,class:"aksrt-gallery-field__grid"},ft=["src","alt"],bt={key:1,class:"aksrt-gallery-field__placeholder"},mt={class:"aksrt-gallery-field__actions"},kt={key:1,class:"aksrt-gallery-field__empty"},ht={class:"aksrt-gallery-field__buttons"},vt={key:2,class:"aksrt-gallery-field__error"},gt={__name:"AksGalleryField",props:{modelValue:{type:Array,default:()=>[]},title:{type:String,default:"选择图片"}},emits:["update:modelValue"],setup(e,{emit:$}){const i=e,p=$,S=E({}),v=E("");let D=0;const C=H(()=>{const q=new Set;return i.modLine truncated
en|English en|English
zh-TW|繁體中文 zh-TW|繁體中文
ja|日本語 ja|日本語
@@ -1,6 +1,6 @@
<template> <template>
<div class="aksrt-fa-icon-picker"> <div class="aksrt-fa-icon-picker">
<n-popover trigger="click" placement="bottom-start" :width="460" :style="{ padding: 0 }"> <n-popover v-model:show="popoverShow" trigger="click" placement="bottom-start" :width="460" :style="{ padding: 0 }">
<template #trigger> <template #trigger>
<n-input <n-input
:value="modelValue" :value="modelValue"
@@ -19,7 +19,7 @@
</n-input> </n-input>
</template> </template>
<div class="aksrt-icon-picker__panel"> <div class="aksrt-icon-picker__panel" @click="onPanelClick">
<div class="aksrt-icon-picker__search"> <div class="aksrt-icon-picker__search">
<n-input v-model:value="search" placeholder="搜索图标..." size="small" clearable> <n-input v-model:value="search" placeholder="搜索图标..." size="small" clearable>
<template #prefix> <template #prefix>
@@ -45,30 +45,34 @@
确认插入 确认插入
</n-button> </n-button>
</div> </div>
<div v-if="sessionCustom.length" class="aksrt-icon-picker__grid aksrt-icon-picker__grid--session"> <div
v-if="sessionCustom.length"
class="aksrt-icon-picker__grid aksrt-icon-picker__grid--session"
data-aksrt-icon-grid="custom"
>
<div <div
v-for="(svg, i) in sessionCustom" v-for="(svg, i) in sessionCustom"
:key="i" :key="i"
class="aksrt-icon-picker__item" class="aksrt-icon-picker__item"
:class="{ 'is-active': modelValue === `customsvg-${svg}` }" :class="{ 'is-active': modelValue === `customsvg-${svg}` }"
title="customsvg" title="customsvg"
@click="$emit('update:modelValue', `customsvg-${svg}`)" :data-icon="`customsvg-${svg}`"
v-html="cleanSvg(svg)" v-html="cleanSvg(svg)"
></div> ></div>
</div> </div>
</div> </div>
<!-- Catalog tab --> <!-- Catalog tab -->
<div v-else class="aksrt-icon-picker__grid" ref="gridRef"> <div v-else class="aksrt-icon-picker__grid" data-aksrt-icon-grid="catalog">
<div <div
v-for="icon in filteredIcons" v-for="icon in filteredIcons"
:key="icon" :key="icon"
class="aksrt-icon-picker__item" class="aksrt-icon-picker__item"
:class="{ 'is-active': modelValue === composeIconValue(activeGroup, icon) }" :class="{ 'is-active': modelValue === composeIconValue(activeGroup, icon) }"
:title="icon" :title="icon"
@click="selectIcon(icon)" :data-icon="composeIconValue(activeGroup, icon)"
> >
<i v-if="activeGroup.type === 'fa'" :class="[activeTab, icon]"></i> <i v-if="activeGroup.type === 'fa'" :class="[activeTab, 'fa-' + icon]"></i>
<span <span
v-else v-else
class="aksrt-icon-picker__preview-svg" class="aksrt-icon-picker__preview-svg"
@@ -120,6 +124,7 @@ const search = ref('')
const activeTab = ref('fas') const activeTab = ref('fas')
const customCode = ref('') const customCode = ref('')
const sessionCustom = ref([]) const sessionCustom = ref([])
const popoverShow = ref(false)
const activeGroup = computed(() => tabs.value.find(t => t.id === activeTab.value) || tabs.value[0]) const activeGroup = computed(() => tabs.value.find(t => t.id === activeTab.value) || tabs.value[0])
@@ -133,8 +138,16 @@ const filteredIcons = computed(() => {
const customPreview = computed(() => cleanSvg(customCode.value)) const customPreview = computed(() => cleanSvg(customCode.value))
function selectIcon(icon) { function selectIcon(value) {
emit('update:modelValue', composeIconValue(activeGroup.value, icon)) emit('update:modelValue', value)
popoverShow.value = false
}
// Delegated on the panel: survives any DOM replacement inside the grids and
// works for both the catalog and session grids.
function onPanelClick(event) {
const item = event.target.closest('[data-icon]')
if (item) selectIcon(item.dataset.icon)
} }
function insertCustom() { function insertCustom() {