PageSourceSearch

https://galite.io/_nuxt/Dm_j1C-V.js

js galite.io collected 2026-10-01 15:07:41 UTC 17,765 bytes, 1 lines download raw bytes

1import{p as xe,a as le,A as J,o as i,k as M,g as y,w as te,c as a,d as s,t as c,e as g,_ as ce,l as G,v as h,y as C,P as re,Q as q,R as ke,S as we,F as L,r as X,n as I,T as ne,U as se,f as x,D as b,E as $e,V as Ce,W as Se,b as Ae,B as ze,i as Ee,x as Re}from"./Dczfz2D-.js";import{u as je,_ as Be,b as Pe}from"./DYjpI1OD.js";import{u as Me}from"./C-PJvxkF.js";import{u as Ie}from"./mSx4l-2a.js";import{u as Le}from"./c8hjd3hv.js";import{u as Te}from"./B8hDHGB0.js";import"./CjoNFrKJ.js";const Ue=xe("/images/icon/bing-webmaster.svg"),De={key:0,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/20 p-4 backdrop-blur-[3px]"},Ke={class:"w-full max-w-md rounded-2xl bg-white p-6 shadow-xl"},Ve={class:"flex items-center justify-between gap-3"},Ne={class:"flex min-w-0 items-center gap-2"},Oe={class:"truncate text-lg font-bold text-gray-900"},Ge=["disabled","aria-label"],qe={class:"mt-5 block"},Fe={class:"text-xs font-medium text-gray-500"},We={key:0,class:"font-normal text-gray-400"},Qe=["type","placeholder","onKeydown"],Ye={class:"mt-3 block"},He={class:"text-xs font-medium text-gray-500"},Je=["placeholder","onKeydown"],Xe={class:"mt-3 text-xs leading-relaxed text-gray-400"},Ze=["href"],et={class:"mt-6 flex items-center justify-end"},tt=["disabled"],nt="https://www.bing.com/webmasters/tools/apiaccess",ee="Bing Webmaster Tools",st={__name:"BingApiKeyModal",props:{visible:{type:Boolean,default:!1},pending:{type:Boolean,default:!1},auth:{type:Object,default:null}},emits:["close","save"],setup(S,{emit:z}){const p=S,o=z,{t:l}=le(),k=b(""),E=b(""),f=x(()=>!!p.auth?.id),F=x(()=>f.value?`${l("common.edit")} ${l("integrations.provider.bing")}`:l("integrations.bing_api.title")),R=x(()=>f.value?`${l("integrations.bing_api.key_placeholder")} (${l("common.optional")})`:l("integrations.bing_api.key_placeholder")),T=x(()=>p.pending||!f.value&&!k.value.trim()),Z=x(()=>{const m=String(l("integrations.bing_api.help")||""),u=m.indexOf(ee);return u<0?[{text:m}]:[{text:m.slice(0,u)},{text:ee,href:nt},{text:m.slice(u+ee.length)}].filter(j=>j.text)});function U(){k.value=p.auth?.api_key||"",E.value=p.auth?.account_name||p.auth?.account_email||""}J(()=>p.visible,m=>{m&&U()}),J(()=>p.auth?.id,()=>{p.visible&&U()}),J(()=>p.auth?.api_key,()=>{p.visible&&U()});function D(){if(T.value)return;const m={account_name:E.value.trim()};k.value.trim()&&(m.api_key=k.value.trim()),p.auth?.id&&(m.auth_id=p.auth.id),o("save",m)}return(m,u)=>{const j=ce;return i(),M(se,{to:"body"},[y(ne,{name:"modal-fade"},{default:te(()=>[S.visible?(i(),a("div",De,[s("div",Ke,[s("div",Ve,[s("div",Ne,[u[4]||(u[4]=s("img",{src:Ue,class:"size-6 shrink-0",alt:""},null,-1)),s("h3",Oe,c(F.value),1)]),s("button",{type:"button",class:"flex size-8 shrink-0 items-center justify-center rounded-full text-gray-400 hover:bg-gray-100 hover:text-gray-700 disabled:opacity-50",disabled:S.pending,"aria-label":g(l)("common.close"),onClick:u[0]||(u[0]=r=>o("close"))},[y(j,{name:"ri:close-line",class:"size-5"})],8,Ge)]),s("label",qe,[s("span",Fe,[G(c(g(l)("integrations.bing_api.key_label"))+" ",1),f.value?(i(),a("span",We,"("+c(g(l)("common.optional"))+")",1)):h("",!0)]),C(s("input",{"onUpdate:modelValue":u[1]||(u[1]=r=>k.value=r),type:f.value?"text":"password",autocomplete:"off",class:"mt-1 h-10 w-full rounded-lg border border-gray-200 px-3 text-sm text-gray-900 outline-none transition-colors focus:border-primary",placeholder:R.value,onKeydown:re(q(D,["prevent"]),["enter"])},null,40,Qe),[[ke,k.value]])]),s("label",Ye,[s("span",He,c(g(l)("integrations.bing_api.account_label")),1),C(s("input",{"onUpdate:modelValue":u[2]||(u[2]=r=>E.value=r),type:"text",class:"mt-1 h-10 w-full rounded-lg border border-gray-200 px-3 text-sm text-gray-900 outline-none transition-colors focus:border-primary",placeholder:g(l)("integrations.bing_api.account_placeholder"),onKeydown:re(q(D,["prevent"]),["enter"])},null,40,Je),[[we,E.value]])]),s("p",Xe,[(i(!0),a(L,null,X(Z.value,(r,A)=>(i(),a(L,{key:A},[r.href?(i(),a("a",{key:0,href:r.href,target:"_blank",rel:"noopener noreferrer",class:"font-medium text-primary hover:underline",onClick:u[3]||(u[3]=q(()=>{},["stop"]))},c(r.text),9,Ze)):(i(),a(L,{key:1},[G(c(r.text),1)],64))],64))),128))]),s("div",et,[s("button",{type:"button",class:"inline-flex items-center gap-1.5 rounded-full bg-primary px-4 py-1.5 text-sm font-medium text-primary-text hover:opacity-90 disabled:cursor-not-allowed disabled:opacity-50",disabled:T.value,onClick:D},[y(j,{name:S.pending?"ri:loader-4-line":f.value?"ri:save-3-line":"ri:link-m",class:I(["size-4",S.pending?"animate-spin":""])},null,8,["name","class"]),G(" "+c(S.pending?f.value?g(l)("common.saving"):g(l)("integrations.bing_api.connecting"):f.value?g(l)("common.save"):g(l)("integrations.bing_api.connect")),1)],8,tt)])])])):h("",!0)]),_:1})])}}},it={class:"px-6 py-6 lg:px-10"},ot={class:"flex flex-wrap items-center justify-between gap-3"},at={class:"text-xl font-bold text-gray-900"},rt={key:0,class:"mt-10 text-center text-sm text-gray-400"},lt=["aria-hidden"],ct={class:"flex items-center justify-between gap-2 border-b border-gray-100 px-3 py-2"},dt={class:"flex min-w-0 flex-1 items-center gap-2"},ut=["src"],gt={class:"truncate text-sm font-medium text-gray-900"},pt={class:"flex shrink-0 items-center gap-0.5"},mt=["disabled","onClick"],yt=["disabled","onClick"],vt=["onClick"],ft={class:"space-y-2 px-4 py-3"},bt={class:"flex items-center gap-2.5"},_t=["src"],ht={key:1,class:"flex size-8 shrink-0 items-center justify-center rounded-full bg-gray-100 text-xs font-semibold text-gray-500"},xt={class:"min-w-0 flex-1 truncate text-sm font-medium text-gray-900"},kt={class:"flex items-center gap-1.5"},wt={class:"min-w-0 flex-1 truncate text-xs text-gray-400"},$t=["onClick"],Ct=["onClick"],St={class:"w-full max-w-md rounded-2xl bg-white p-6 shadow-xl"},At={class:"text-lg font-bold text-gray-900"},zt={class:"mt-3 flex items-center gap-4 text-xs"},Et=["aria-pressed","onClick"],Rt={key:0,class:"size-1.5 rounded-full bg-primary"},jt=["aria-label"],Bt={class:"mt-5 grid grid-cols-1 gap-2"},Pt=["onClick"],Mt=["src"],It={class:"text-sm font-medium text-gray-800"},Lt={class:"mt-6 flex justify-end"},Tt={class:"w-full max-w-sm rounded-2xl bg-white p-6 shadow-xl"},Ut={class:"text-lg font-bold text-red-600"},Dt={class:"mt-2 text-sm text-gray-500"},Kt={class:"mt-6 flex items-center justify-end gap-2"},Vt=["disabled"],Nt="https://www.googleapis.com/auth/analytics.edit",Ot="https://www.googleapis.com/auth/analytics",Gt="https://www.googleapis.com/auth/webmasters",qt="https://www.googleapis.com/auth/siteverification.verify_only",Ft="https://www.googleapis.com/auth/siteverification",en={__name:"integrations",async setup(S){const z=$e(),p=Ce(),{t:
1o}=le(),{isLoggedIn:l}=Me(),k=Se(),E=Ie(()=>o("integrations.title"));Ae({title:()=>E.value}),Ee("openLogin",()=>{});const{list:f,fetched:F,fetchList:R,connect:T,connectApiKeyProvider:Z,fetchConfig:U,disconnect:D,sync:m}=Le(),{fetchList:u}=je(),j=x(()=>l.value?f.value:Pe),{show:r}=Te(),A=x(()=>[{id:"ga4",label:o("integrations.provider.ga4"),enabled:!0,authMode:"oauth",iconAsset:"/images/icon/google-analytics.svg",iconRi:"ri:google-fill"},{id:"gsc",label:o("integrations.provider.gsc"),enabled:!0,authMode:"oauth",iconAsset:"/images/icon/google-search-console.svg",iconRi:"ri:search-line"},{id:"bing",label:o("integrations.provider.bing"),enabled:!0,authMode:"api_key",iconAsset:"/images/icon/bing-webmaster.svg",iconRi:"ri:search-line"},{id:"ads",label:o("integrations.provider.ads"),enabled:!1,authMode:"oauth",iconAsset:"",iconRi:"ri:advertisement-line"},{id:"facebook",label:o("integrations.provider.facebook"),enabled:!1,authMode:"oauth",iconAsset:"/images/icon/facebook.svg",iconRi:"ri:facebook-fill"},{id:"tiktok",label:o("integrations.provider.tiktok"),enabled:!1,authMode:"oauth",iconAsset:"/images/icon/tiktok.svg",iconRi:"ri:tiktok-fill"}]),W=x(()=>A.value.filter(e=>e.enabled));function Q(e){return A.value.find(n=>n.id===e)?.label||e}function de(e){return A.value.find(n=>n.id===e)?.iconRi||"ri:plug-line"}function ie(e){return A.value.find(n=>n.id===e)?.iconAsset||""}function ue(e){if(!e||!["ga4","gsc"].includes(e.provider)||e.status!==1)return!1;const n=new Set(String(e.scope||"").split(/\s+/).filter(Boolean));if(e.provider==="gsc"){const d=n.has(Gt),v=n.has(qt)||n.has(Ft);return!d||!v}return!n.has(Nt)&&!n.has(Ot)}const K=b(!1),w=b("basic"),V=b(!1),N=b(!1),O=b(null),B=b(null),ge=x(()=>[{value:"basic",label:o("integrations.permission.readonly")},{value:"extended",label:o("integrations.permission.readwrite")}]);function oe(){if(w.value="basic",W.value.length===1){Y(W.value[0].id,"basic");return}K.value=!0}function Y(e,n="basic"){if(K.value=!1,A.value.find(v=>v.id===e)?.authMode==="api_key"){O.value=null,V.value=!0;return}T(e,"/integrations",n)}async function pe(e){if(!(!e||e.provider!=="bing"||B.value)){B.value=e.id;try{const n=await U(e.id);n?.code===200?(O.value={...e,...n.data||{}},V.value=!0):r(n?.msg||o("integrations.connect_error"),{type:"error"})}catch(n){r(n?.message||o("integrations.connect_error"),{type:"error"})}finally{B.value=null}}}function me(){N.value||(V.value=!1,O.value=null)}async function ye(e){if(!N.value){N.value=!0;try{const n=await Z("bing",e);if(n?.code===200){V.value=!1,O.value=null,r(o("integrations.connected_toast",{provider:Q("bing")}),{type:"success"});const d=Number(n.data?.synced||0);d>0&&r(o("integrations.synced_toast",d,{count:d}),{type:"success"}),await Promise.all([R(),u().catch(()=>{})])}else r(n?.msg||o("integrations.connect_error"),{type:"error"})}catch(n){r(n?.message||o("integrations.connect_error"),{type:"error"})}finally{N.value=!1}}}function ve(e){T(e,"/integrations","extended")}const P=b(null);async function fe(e){if(!P.value){P.value=e.id;try{const n=await m(e.id);if(n?.code===200){const{created:d,updated:v,removed:t,total:$}=n.data||{};r(o("integrations.sync_success",{created:d||0,updated:v||0,removed:t||0,total:$||0}),{type:"success"}),await Promise.all([R(),u().catch(()=>{})])}else{const d=n?.msg==="sync_incomplete"?o("integrations.sync_failed"):n?.msg||o("integrations.sync_failed");r(d,{type:"error"})}}catch(n){r(n?.message||o("integrations.sync_failed"),{type:"error"})}finally{P.value=null}}}const _=b(null),H=b(!1);function be(e){_.value=e}async function _e(){if(!(!_.value||H.value)){H.value=!0;try{const e=await D(_.value.id);e?.code===200?(r(o("integrations.disconnect_success"),{type:"success"}),_.value=null):r(e?.msg||o("integrations.disconnect_failed"),{type:"error"})}catch(e){r(e?.message||o("integrations.disconnect_failed"),{type:"error"})}finally{H.value=!1}}}function ae(){const e=z.query;if(e.connected){r(o("integrations.connected_toast",{provider:Q(String(e.connected))}),{type:"success"});const n=Number(e.synced||0);n>0&&r(o("integrations.synced_toast",n,{count:n}),{type:"success"}),R(),u().catch(()=>{}),p.replace({query:{}})}else e.oauth_cancelled?(r(o("integrations.oauth_cancelled"),{type:"info"}),p.replace({query:{}})):(e.oauth_failed||e.error)&&(r(o("integrations.connect_error"),{type:"error"}),p.replace({query:{}}))}function he(){if(z.query.action!=="connect")return;const e=String(z.query.provider||"");["ga4","gsc","bing"].includes(e)&&Y(e,"extended")}return J(()=>z.query,ae,{immediate:!1}),ze(async()=>
1{l.value&&(await R(),ae(),he())}),(e,n)=>{const d=ce,v=Re("tooltip");return i(),a("div",it,[s("div",ot,[s("h1",at,c(e.$t("integrations.title")),1),g(k).user&&W.value.length?(i(),a("button",{key:0,type:"button",class:"inline-flex items-center gap-1 rounded-md bg-primary px-3 py-1.5 text-sm font-medium text-primary-text hover:opacity-90",onClick:oe},[y(d,{name:"ri:add-line",class:"size-4"}),G(" "+c(e.$t("integrations.connect_new")),1)])):h("",!0)]),g(l)&&!g(F)?(i(),a("div",rt,c(e.$t("common.loading")),1)):g(l)&&g(F)&&!g(f).length?(i(),M(Be,{key:1,class:"mt-10",title:e.$t("integrations.empty"),description:e.$t("integrations.empty_desc"),"cta-label":e.$t("integrations.connect_new"),onCta:oe},null,8,["title","description","cta-label"])):(i(),a("ul",{key:2,class:I(["mt-6 grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4",g(l)?"":"pointer-events-none select-none"]),"aria-hidden":g(l)?void 0:"true"},[(i(!0),a(L,null,X(j.value,t=>(i(),a("li",{key:t.id,class:"group overflow-hidden rounded-xl border border-gray-200 bg-white transition-colors hover:border-primary/40"},[s("div",ct,[s("div",dt,[ie(t.provider)?(i(),a("img",{key:0,src:ie(t.provider),class:"size-5 shrink-0",alt:""},null,8,ut)):(i(),M(d,{key:1,name:de(t.provider),class:"size-5 shrink-0 text-gray-500"},null,8,["name"])),s("h3",gt,c(Q(t.provider)),1)]),s("div",pt,[t.provider==="bing"?C((i(),a("button",{key:0,type:"button",disabled:B.value===t.id,class:"flex size-6 shrink-0 items-center justify-center rounded text-gray-400 transition-opacity hover:bg-primary/10 hover:text-primary disabled:cursor-not-allowed disabled:opacity-60 md:opacity-0 md:group-hover:opacity-100",onClick:$=>pe(t)},[y(d,{name:B.value===t.id?"ri:loader-4-line":"ri:edit-line",class:I(["size-4",B.value===t.id?"animate-spin":""])},null,8,["name","class"])],8,mt)),[[v,e.$t("common.edit")]]):h("",!0),["ga4","gsc","bing"].includes(t.provider)&&t.status===1?C((i(),a("button",{key:1,type:"button",disabled:P.value===t.id,class:"flex size-6 shrink-0 items-center justify-center rounded text-gray-400 transition-opacity hover:bg-primary/10 hover:text-primary disabled:cursor-not-allowed disabled:opacity-60 md:opacity-0 md:group-hover:opacity-100",onClick:$=>fe(t)},[y(d,{name:P.value===t.id?"ri:loader-4-line":"ri:refresh-line",class:I(["size-4",P.value===t.id?"animate-spin":""])},null,8,["name","class"])],8,yt)),[[v,e.$t("integrations.sync_tip")]]):h("",!0),C((i(),a("button",{type:"button",class:"flex size-6 shrink-0 items-center justify-center rounded text-gray-400 transition-opacity hover:bg-red-50 hover:text-red-500 md:opacity-0 md:group-hover:opacity-100",onClick:$=>be(t)},[y(d,{name:"ri:link-unlink",class:"size-4"})],8,vt)),[[v,e.$t("integrations.disconnect")]])])]),s("div",ft,[s("div",bt,[t.account_avatar?(i(),a("img",{key:0,src:t.account_avatar,class:"size-8 shrink-0 rounded-full",referrerpolicy:"no-referrer",alt:""},null,8,_t)):(i(),a("div",ht,c((t.account_name||t.account_email||"?").slice(0,1).toUpperCase()),1)),s("div",xt,c(t.account_name||t.account_email),1)]),s("div",kt,[s("span",wt,c(t.account_email),1),t.status===99?C((i(),a("button",{key:0,type:"button",class:"flex size-5 shrink-0 items-center justify-center rounded text-red-500 hover:bg-red-50",onClick:$=>Y(t.provider)},[y(d,{name:"ri:error-warning-fill",class:"size-4"})],8,$t)),[[v,e.$t("integrations.token_expired_tip")]]):ue(t)?C((i(),a("button",{key:1,type:"button",class:"flex size-5 shrink-0 items-center justify-center rounded text-amber-500 hover:bg-amber-50",onClick:$=>ve(t.provider)},[y(d,{name:"ri:alert-line",class:"size-4"})],8,Ct)),[[v,e.$t("integrations.scope_upgrade_tip")]]):h("",!0)])])]))),128))],10,lt)),(i(),M(se,{to:"body"},[y(ne,{name:"modal-fade"},{default:te(()=>[K.value?(i(),a("div",{key:0,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/20 p-4 backdrop-blur-[3px]",onClick:n[1]||(n[1]=q(t=>K.value=!1,["self"]))},[s("div",St,[s("h3",At,c(e.$t("integrations.choose_provider")),1),s("div",zt,[(i(!0),a(L,null,X(ge.value,t=>(i(),a("button",{key:t.value,type:"button",class:I(["flex items-center gap-1.5 font-medium transition-colors",w.value===t.value?"text-gray-900":"text-gray-400 hover:text-gray-600"]),"aria-pressed":w.value===t.value,onClick:$=>w.value=t.value},[s("span",{class:I(["flex size-3.5 shrink-0 items-center justify-center rounded-full border-2 transition-colors",w.value===t.value?"border-primary":"border-gray-300"])},[w.value===t.value?(i(),a("span",Rt)):h("",!0)],2),G(" "+c(t.label),1)],10,Et))),128)),C((i(),a("button",{type:"button",class:"flex size-4 items-center justify-center rounded text-gray-300 hover:text-gray-500","aria-label":e.$t("integrations.permission.label")},[y(d,{name:"ri:information-line",class:"size-3.5"})],8,jt)),[[v,w.value==="extended"?e.$t("integrations.permission.readwrite_hint"):e.$t("integrations.permission.readonly_hint")]])]),s("div",Bt,[(i(!0),a(L,null,X(W.value,t=>(i(),a("button",{key:t.id,type:"button",class:"flex items-center gap-3 rounded-xl border border-gray-200 p-3 text-left transition-colors hover:border-primary hover:bg-primary/5",onClick:$=>
1Y(t.id,w.value)},[t.iconAsset?(i(),a("img",{key:0,src:t.iconAsset,class:"size-5 shrink-0",alt:""},null,8,Mt)):(i(),M(d,{key:1,name:t.iconRi,class:"size-5 shrink-0 text-gray-700"},null,8,["name"])),s("span",It,c(t.label),1)],8,Pt))),128))]),s("div",Lt,[s("button",{type:"button",class:"rounded-full px-4 py-1.5 text-sm text-gray-500 hover:bg-gray-50",onClick:n[0]||(n[0]=t=>K.value=!1)},c(e.$t("common.cancel")),1)])])])):h("",!0)]),_:1})])),y(st,{visible:V.value,pending:N.value,auth:O.value,onClose:me,onSave:ye},null,8,["visible","pending","auth"]),(i(),M(se,{to:"body"},[y(ne,{name:"modal-fade"},{default:te(()=>[_.value?(i(),a("div",{key:0,class:"fixed inset-0 z-50 flex items-center justify-center bg-black/20 p-4 backdrop-blur-[3px]",onClick:n[3]||(n[3]=q(t=>_.value=null,["self"]))},[s("div",Tt,[s("h3",Ut,c(e.$t("integrations.disconnect")),1),s("p",Dt,c(e.$t("integrations.disconnect_confirm",{provider:Q(_.value.provider),email:_.value.account_email})),1),s("div",Kt,[s("button",{type:"button",class:"rounded-full px-4 py-1.5 text-sm text-gray-500 hover:bg-gray-50",onClick:n[2]||(n[2]=t=>_.value=null)},c(e.$t("common.cancel")),1),s("button",{type:"button",class:"rounded-full bg-red-500 px-4 py-1.5 text-sm font-medium text-white hover:opacity-90 disabled:opacity-50",disabled:H.value,onClick:_e},c(e.$t("integrations.disconnect")),9,Vt)])])])):h("",!0)]),_:1})]))])}}};export{en as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.