PageSourceSearch

https://goga.zone/_nuxt/DEhgp6c3.js

js goga.zone collected 2026-10-06 06:59:41 UTC 97,747 bytes, 1 lines download raw bytes

1import{aM as se,bL as _e,aG as q,aE as ve,aQ as Z,aT as f,b2 as Be,aU as l,b9 as be,aV as S,aW as z,aR as F,bg as he,aZ as e,a_ as ie,aS as t,b6 as g,aX as ne,bj as A,be as ce,a$ as P,bR as Ze,bM as Je,b3 as xe,bf as et,bG as pe,aY as Te,b0 as X,bo as tt,ba as H,bK as re,aP as ge,aJ as ee,bA as Ce,bu as ae,bS as at,b7 as me,bi as Re,aN as Ae,bc as Oe,b8 as Ue,bn as lt,bT as ot,bU as st,bm as nt,aO as it,bx as rt,bz as dt,bV as ut,bF as ct,bv as qe}from"./B0wO_9lS.js";import{_ as mt}from"./DL_x5L9L.js";import{D as je,T as Le,a as Qe,Q as vt}from"./-MAH5QLX.js";import{_ as Ee}from"./DOPeN7OS.js";import{s as ue}from"./CMhCmzpi.js";import ke from"./aNO8En2f.js";import{s as Se}from"./B3WeqO1D.js";import{s as De}from"./B6fW2g9p.js";import{u as we}from"./CNXACUoy.js";import{l as Pe}from"./CmfFcD8j.js";import{s as ft}from"./B9sERtuc.js";import{u as pt}from"./BK-2Ji8w.js";import{s as gt}from"./CbOCfRQr.js";import bt from"./DTP1m_Li.js";import{g as xt}from"./BdcDst15.js";import wt from"./HY5OCw9Q.js";import"./DHuY2Bva.js";import"./DDLVbBTu.js";import"./Du-WTwbV.js";import"./BXQ-mVJW.js";import"./CGG_NvDv.js";import"./qRK4ZoY1.js";import"./DZltIv2A.js";import"./CoW2uJRq.js";import"./BQ0pxUB9.js";import"./DRZSvsxq.js";import"./XjGqlLvp.js";(function(){try{var i=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{};i.SENTRY_RELEASE={id:"934f192d879dc0eb9d8002eb8c4360a55d601699"}}catch{}})();try{(function(){var i=typeof window<"u"?window:typeof global<"u"?global:typeof globalThis<"u"?globalThis:typeof self<"u"?self:{},$=new i.Error().stack;$&&(i._sentryDebugIds=i._sentryDebugIds||{},i._sentryDebugIds[$]="a6a31c59-447c-4304-85a7-d367a8ae95b1",i._sentryDebugIdIdentifier="sentry-dbid-a6a31c59-447c-4304-85a7-d367a8ae95b1")})()}catch{}const yt={style:{position:"relative","padding-top":"56.25%",width:"100%"}},ht=["src"],kt=se({__name:"VideoTutorialModal",props:{show:{type:Boolean},showModifiers:{}},emits:["update:show"],setup(i){const $=_e(i,"show"),m=ve(),C=n=>`https://kinescope.io/embed/${n.split("/").pop()}`,a=q(()=>{const n=m.public.widgetTutorialVideoUrl;return C(n)}),p=()=>{$.value=!1};return(n,s)=>{const v=ie;return f(),Z(Be,{to:"body"},[l(be,{"enter-active-class":"transition-opacity duration-200 ease-out","enter-from-class":"opacity-0","enter-to-class":"opacity-100","leave-active-class":"transition-opacity duration-150 ease-in","leave-from-class":"opacity-100","leave-to-class":"opacity-0"},{default:S(()=>[$.value?(f(),z("div",{key:0,class:"fixed inset-0 z-50 flex min-h-full items-start md:items-center justify-center overflow-y-auto p-4 sm:p-6 bg-black/50 backdrop-blur-sm",onClick:p},[l(be,{appear:"","enter-active-class":"transition duration-200 ease-out","enter-from-class":"opacity-0 translate-y-4 scale-95","enter-to-class":"opacity-100 translate-y-0 scale-100","leave-active-class":"transition duration-150 ease-in","leave-from-class":"opacity-100 translate-y-0 scale-100","leave-to-class":"opacity-0 translate-y-4 scale-95"},{default:S(()=>[$.value?(f(),z("div",{key:0,class:"relative w-full max-w-5xl bg-white dark:bg-zinc-900 border border-zinc-200 dark:border-zinc-700 rounded-2xl dark:text-white flex flex-col gap-4 sm:gap-6 p-4 sm:p-6 shadow-2xl mt-12 mb-8 md:my-0",onClick:s[0]||(s[0]=he(()=>{},["stop"]))},[e("div",{class:"absolute top-4 right-4 p-2 rounded-lg hover:bg-zinc-100 dark:hover:bg-zinc-800 cursor-pointer transition-colors",onClick:p},[l(v,{name:"i-mynaui:x",class:"w-5 h-5 text-zinc-500 dark:text-zinc-400"})]),s[1]||(s[1]=e("div",{class:"text-lg sm:text-xl font-semibold text-center text-zinc-900 dark:text-white pr-8"}," Как интегрировать виджеты в OBS ",-1)),s[2]||(s[2]=e("p",{class:"text-sm text-zinc-600 dark:text-zinc-400 text-center -mt-2"}," В этом видео-туториале вы узнаете, что такое виджеты для донатов, как добавить их в OBS Studio для вашего стрима, настроить отображение и протестировать перед запуском трансляции ",-1)),e("div",yt,[e("iframe",{src:t(a),allow:"autoplay; fullscreen; picture-in-picture; encrypted-media; gyroscope; accelerometer; clipboard-write;",frameborder:"0",allowfullscreen:"",loading:"lazy",style:{position:"absolute",width:"100%",height:"100%",top:"0",left:"0","border-radius":"8px"}},null,8,ht)])])):F("",!0)]),_:1})])):F("",!0)]),_:1})])}}}),_t={class:"absolute bottom-4 left-4 md:bottom-6 md:left-6 z-10 w-12 h-12 md:w-14 md:h-14 roun
1ded-full bg-white/90 hover:bg-white flex items-center justify-center transition-all duration-300 hover:scale-110 shadow-lg group"},zt=se({__name:"WidgetTutorialCard",setup(i){const $=g(!1),m=()=>{$.value=!0};return(C,a)=>{const p=ie;return f(),z(ne,null,[e("div",{onClick:m,class:"rounded-xl p-4 md:p-6 flex flex-col gap-3 md:gap-4 border border-zinc-700 hover:border-zinc-500 relative overflow-hidden cursor-pointer transition-all duration-300",style:{"background-image":"url('/images/widgets/video-block-widget-tutorial.png')","background-size":"cover","background-position":"center","background-repeat":"no-repeat","min-height":"160px"}},[a[1]||(a[1]=e("div",{class:"flex flex-col gap-1.5 md:gap-2 relative z-10"},[e("h2",{class:"text-xl md:text-3xl font-bold text-white"}," Что такое виджеты? "),e("p",{class:"text-sm text-zinc-400"}," Посмотрите видео, чтобы понять, как интегрировать виджеты в OBS ")],-1)),e("div",_t,[l(p,{name:"i-mynaui:play-solid",size:"1.25rem",class:"text-zinc-900 ml-0.5 md:ml-1 md:text-[1.5rem]"})])]),l(kt,{show:t($),"onUpdate:show":a[0]||(a[0]=n=>A($)?$.value=n:null)},null,8,["show"])],64)}}}),$t={class:"wrapper-items w-full md:max-w-[200px]"},Ct={class:"flex flex-col items-center justify-center gap-3 md:gap-4 min-h-[160px] md:min-h-[200px]"},Vt={class:"text-center"},St={class:"mb-3 md:mb-4 text-base text-zinc-600 dark:text-zinc-400"},Tt={key:0,class:"w-10 h-10 md:w-12 md:h-12 rounded-full flex items-center justify-center transition-colors bg-zinc-200 dark:bg-zinc-700 group-hover:bg-zinc-300 dark:group-hover:bg-zinc-600"},Ut={class:"text-center"},Et={key:0,class:"preview hidden md:flex items-center justify-center flex-1 -mr-[50px] md:-my-6 max-w-[500px] md:max-h-[248px] overflow-hidden transition-transform rotate-2"},Dt=se({__name:"CreateWidgetCard",props:{widgetType:{},title:{},previewComponent:{},previewProps:{},isActive:{type:Boolean},loading:{type:Boolean}},emits:["click"],setup(i,{emit:$}){const m=i,C=$,a=g(!1),p=()=>{C("click",m.widgetType)};return(n,s)=>{const v=ie;return f(),z("div",{class:ce(["rounded-xl p-4 md:p-6 transition-colors cursor-pointer group flex flex-col md:flex-row gap-4 justify-between overflow-hidden",i.isActive?"bg-white dark:bg-gradient-to-br dark:from-zinc-800 dark:to-zinc-900 border border-zinc-100 dark:border-zinc-700":"bg-gradient-to-br from-zinc-50 to-zinc-100 dark:from-zinc-900 dark:to-zinc-800 border-2 border-dashed border-zinc-300 dark:border-zinc-600 hover:border-zinc-400 dark:hover:border-zinc-500"]),onClick:p,onMouseenter:s[0]||(s[0]=b=>a.value=!0),onMouseleave:s[1]||(s[1]=b=>a.value=!1)},[e("div",$t,[e("div",Ct,[i.loading?(f(),z(ne,{key:0},[s[3]||(s[3]=e("div",{class:"w-10 h-10 md:w-12 md:h-12 rounded-full border-4 border-zinc-200 dark:border-zinc-700 border-t-zinc-600 dark:border-t-zinc-400 animate-spin"},null,-1)),e("div",Vt,[e("h3",St,P(i.title),1),s[2]||(s[2]=e("div",{class:"px-3 py-1.5 md:px-4 md:py-2 bg-zinc-200 dark:bg-zinc-700 text-zinc-400 dark:text-zinc-500 rounded-lg text-sm font-medium opacity-50"}," Загрузка... ",-1))])],64)):(f(),z(ne,{key:1},[i.isActive?(f(),Z(v,{key:1,name:"i-mynaui:check",size:"2.5rem",class:"text-green-500 dark:text-green-500 md:text-[3rem]"})):(f(),z("div",Tt,[l(v,{name:"i-mynaui:plus",size:"1.25rem",class:"text-zinc-600 dark:text-white md:text-[1.5rem]"})])),e("div",Ut,[e("h3",{class:ce(["mb-3 md:mb-4 text-base",i.isActive?"text-zinc-900 dark:text-zinc-100":"text-zinc-600 dark:text-zinc-400"])},P(i.title),3),i.isActive?(f(),z("button",{key:0,class:"px-3 py-1.5 md:px-4 md:py-2 bg-zinc-700 hover:bg-zinc-800 dark:bg-zinc-200 dark:hover:bg-zinc-100 text-white dark:text-zinc-900 rounded-lg transition-colors text-sm font-medium cursor-pointer",onClick:he(p,["stop"])}," Настроить ")):(f(),z("button",{key:1,class:"px-3 py-1.5 md:px-4 md:py-2 bg-zinc-200 hover:bg-zinc-300 dark:bg-zinc-700 dark:hover:bg-zinc-600 text-zinc-600 dark:text-white rounded-lg transition-colors text-sm font-medium cursor-pointer",onClick:he(p,["stop"])}," Подключить "))])],64))])]),i.previewComponent?(f(),z("div",Et,[(f(),Z(Je(i.previewComponent),Ze({"is-hovered":t(a)},i.previewProps,{class:"flex-1"}
1),null,16,["is-hovered"]))])):F("",!0)],34)}}}),$e=xe(Dt,[["__scopeId","data-v-cf550983"]]),Bt={class:"preview-stage relative rounded-xl bg-zinc-100 dark:bg-zinc-950/60 border border-zinc-200 dark:border-zinc-800 px-4 py-6 overflow-hidden"},Pt={class:"relative"},Mt=se({__name:"WidgetPreviewStage",setup(i){return($,m)=>(f(),z("div",Bt,[m[0]||(m[0]=e("div",{class:"preview-grid"},null,-1)),e("div",Pt,[et($.$slots,"default",{},void 0,!0)])]))}}),Ve=xe(Mt,[["__scopeId","data-v-4ec23076"]]),qt=()=>{const i=pe(),m=ve().public.rhvoiceBaseUrl,C=g(!1),a=g(!1),p=g(null);let n=null;const s=async()=>{try{const d=await fetch(`${m}/voices`);if(!d.ok)throw new Error("Failed to fetch voices");return await d.json()}catch(d){return console.error("Error fetching voices:",d),i.add({severity:"error",summary:"Ошибка",detail:"Не удалось получить список голосов",life:3e3}),[]}},v=async d=>{try{a.value=!0;const y=new URL(`${m}/say`);y.searchParams.append("text",d.text),y.searchParams.append("voice",d.voice),y.searchParams.append("rate",d.speed.toString()),y.searchParams.append("pitch",d.pitch.toString()),y.searchParams.append("volume",d.volume.toString());const k=await fetch(y.toString());if(!k.ok)throw new Error("Failed to synthesize speech");return await k.blob()}catch(y){return console.error("Error synthesizing speech:",y),i.add({severity:"error",summary:"Ошибка синтеза",detail:"Не удалось синтезировать речь",life:3e3}),null}finally{a.value=!1}};return{isPlaying:C,isLoading:a,currentPlayingVoice:p,getVoices:s,synthesizeSpeech:v,testVoice:async(d,y)=>{try{n&&(n.pause(),n=null),p.value=d;const x=await v({text:"Привет, очень нравится твое творчество, держи подарок",...y});if(!x){p.value=null;return}const h=URL.createObjectURL(x);n=new Audio(h),n.addEventListener("play",()=>{C.value=!0}),n.addEventListener("ended",()=>{C.value=!1,p.value=null,URL.revokeObjectURL(h),n=null}),n.addEventListener("error",()=>{C.value=!1,p.value=null,URL.revokeObjectURL(h),n=null,i.add({severity:"error",summary:"Ошибка воспроизведения",detail:"Не удалось воспроизвести аудио",life:3e3})}),await n.play()}catch(k){console.error("Error testing voice:",k),C.value=!1,p.value=null,i.add({severity:"error",summary:"Ошибка",detail:"Не удалось протестировать голос",life:3e3})}},stopPlayback:()=>{n&&(n.pause(),n=null,C.value=!1,p.value=null)}}},It={class:"flex flex-col gap-3"},Wt={class:"flex items-center gap-3"},Ft={key:0,class:"flex flex-col gap-4 p-4 bg-zinc-50 dark:bg-zinc-800/50 rounded-lg border border-zinc-200 dark:border-zinc-700"},Rt={class:"flex flex-col gap-3"},At={class:"grid grid-cols-6 gap-2 lg:grid-cols-6 md:grid-cols-4 sm:grid-cols-3"},Ot=["onClick"],jt=["src","alt"],Lt={class:"text-xs font-medium text-center text-gray-900 dark:text-zinc-200 leading-tight"},Qt=["onClick","v-tooltip","disabled"],Ht={class:"flex flex-col gap-2"},Nt={class:"flex items-center justify-between"},Gt={class:"block text-sm font-medium text-gray-900 dark:text-white"},Kt={class:"flex flex-col gap-2"},Yt={class:"flex items-center justify-between"},Xt={class:"block text-sm font-medium text-gray-900 dark:text-white"},Zt={class:"flex flex-col gap-2"},Jt={class:"flex items-center justify-between"},ea={class:"block text-sm font-medium text-gray-900 dark:text-white"},Ie=50,We=50,Fe=50,ta=se({__name:"VoiceSettings",props:{modelValue:{}},emits:["update:modelValue"],setup(i,{emit:$}){const m=i,C=$;pe();const a=g(!1),{isPlaying:p,isLoading:n,currentPlayingVoice:s,testVoice:v,stopPlayback:b}=qt(),c=[{id:"aleksandr-hq",name:"Александр HQ",gender:"male"},{id:"aleksandr",name:"Александр",gender:"male"},{id:"anna",name:"Анна",gender:"female"},{id:"arina",name:"Арина",gender:"female"},{id:"artemiy",name:"Артемий",gender:"male"},{id:"elena",name:"Елена",gender:"female"},{id:"evgeniy-rus",name:"Евгений",gender:"male"},{id:"irina",name:"Ирина",gender:"female"},{id:"mikhail",name:"Михаил",gender:"male"},{id:"pavel",name:"Павел",gender:"male"},{id:"tatiana",name:"Татьяна",gender:"female"},{id:"timofey",name:"Тимофей",gender:"male"},{id:"umka",name:"Умка",gender:"female"},{id:"victoria",name:"Виктория",gender:"female"}
1,{id:"vitaliy",name:"Виталий",gender:"male"},{id:"vitaliy-ng",name:"Виталий NG",gender:"male"},{id:"vsevolod",name:"Всеволод",gender:"male"},{id:"yuriy",name:"Юрий",gender:"male"}],d=q({get:()=>m.modelValue.enabled,set:T=>C("update:modelValue",{...m.modelValue,enabled:T})}),y=q({get:()=>m.modelValue.voiceName,set:T=>C("update:modelValue",{...m.modelValue,voiceName:T})}),k=q({get:()=>m.modelValue.voiceSpeed,set:T=>C("update:modelValue",{...m.modelValue,voiceSpeed:T})}),x=q({get:()=>m.modelValue.voicePitch,set:T=>C("update:modelValue",{...m.modelValue,voicePitch:T})}),h=q({get:()=>m.modelValue.voiceVolume,set:T=>C("update:modelValue",{...m.modelValue,voiceVolume:T})}),M=()=>{k.value=Ie},W=()=>{x.value=We},O=()=>{h.value=Fe},K=()=>{a.value=!a.value},R=async T=>{if(s.value===T&&p.value){b();return}await v(T,{voice:T,speed:m.modelValue.voiceSpeed,pitch:m.modelValue.voicePitch,volume:m.modelValue.voiceVolume})};return(T,_)=>{const w=ie;return f(),z("div",It,[e("div",Wt,[l(t(ue),{modelValue:t(d),"onUpdate:modelValue":_[0]||(_[0]=U=>A(d)?d.value=U:null),"input-id":"voiceEnabled"},null,8,["modelValue"]),_[4]||(_[4]=e("label",{for:"voiceEnabled",class:"text-sm font-medium text-gray-900 dark:text-white cursor-pointer"}," Включить озвучку ",-1)),t(d)?(f(),z("button",{key:0,onClick:K,class:"text-sm font-medium text-blue-500 hover:text-blue-600 dark:text-blue-400 dark:hover:text-blue-300 transition-colors cursor-pointer"},P(a.value?"Скрыть настройки":"Настроить"),1)):F("",!0)]),l(be,{"enter-active-class":"transition-all duration-200 ease-out","enter-from-class":"opacity-0 max-h-0","enter-to-class":"opacity-100 max-h-[800px]","leave-active-class":"transition-all duration-200 ease-in","leave-from-class":"opacity-100 max-h-[800px]","leave-to-class":"opacity-0 max-h-0"},{default:S(()=>[t(d)&&a.value?(f(),z("div",Ft,[e("div",Rt,[_[5]||(_[5]=e("label",{class:"block text-sm font-medium text-gray-900 dark:text-white"}," Выбор голоса ",-1)),e("div",At,[(f(),z(ne,null,Te(c,U=>e("div",{key:U.id,class:ce(["group relative flex flex-col items-center justify-center p-2 border-2 rounded-lg cursor-pointer transition-all duration-200",t(y)===U.id?"border-blue-500 bg-blue-50 dark:bg-blue-900/30":"border-zinc-300 dark:border-zinc-700 bg-white dark:bg-zinc-800 hover:border-zinc-400 dark:hover:border-zinc-600 hover:bg-zinc-50 dark:hover:bg-zinc-700/50"]),onClick:Q=>y.value=U.id},[e("div",{class:ce(["flex items-center justify-center w-12 h-12 mb-1 rounded-full transition-all duration-200 overflow-hidden",t(y)===U.id?"ring-2 ring-blue-500 dark:ring-blue-400":""])},[e("img",{src:`/images/voice-avatars/${U.id}.png`,alt:U.name,class:"w-full h-full object-cover"},null,8,jt)],2),e("div",Lt,P(U.name),1),e("button",{onClick:he(Q=>R(U.id),["stop"]),class:ce(["absolute cursor-pointer flex bottom-1 right-1 transition-all duration-200 p-1 rounded-md text-white",[t(s)===U.id?"opacity-100 bg-red-500 hover:bg-red-600 dark:bg-red-600 dark:hover:bg-red-500":t(n)&&t(s)===U.id?"opacity-100 bg-blue-500":"opacity-0 group-hover:opacity-100 bg-zinc-500 hover:bg-zinc-600 dark:bg-zinc-600 dark:hover:bg-zinc-500"]]),"v-tooltip":t(s)===U.id?"Остановить":"Прослушать",disabled:t(n)},[t(n)&&t(s)===U.id?(f(),Z(w,{key:0,name:"i-mynaui:loader",size:"20px",class:"animate-spin"})):t(s)===U.id&&t(p)?(f(),Z(w,{key:1,name:"i-mynaui:stop-circle-solid",size:"20px"})):(f(),Z(w,{key:2,name:"i-mynaui:play-circle-solid",size:"20px"}))],10,Qt)],10,Ot)),64))])]),e("div",Ht,[e("div",Nt,[e("label",Gt," Скорость речи: "+P(t(k)),1),t(k)!==Ie?(f(),z("button",{key:0,onClick:M,class:"text-xs font-medium text-blue-500 hover:text-blue-600 dark:text-blue-400 dark:hover:text-blue-300 transition-colors cursor-pointer"}," Сбросить ")):F("",!0)]),l(t(De),{modelValue:t(k),"onUpdate:modelValue":_[1]||(_[1]=U=>A(k)?k.value=U:null),min:0,max:100,class:"w-full"},null,8,["modelValue"])]),e("div",Kt,[e("div",Yt,[e("label",Xt," Высота тона: "+P(t(x)),1),t(x)!==We?(f(),z("button",{key:0,onClick:W,class:"text-xs font-medium text-blue-500 hover:text-blue-600 dar
1k:text-blue-400 dark:hover:text-blue-300 transition-colors cursor-pointer"}," Сбросить ")):F("",!0)]),l(t(De),{modelValue:t(x),"onUpdate:modelValue":_[2]||(_[2]=U=>A(x)?x.value=U:null),min:0,max:100,class:"w-full"},null,8,["modelValue"])]),e("div",Zt,[e("div",Jt,[e("label",ea," Громкость: "+P(t(h)),1),t(h)!==Fe?(f(),z("button",{key:0,onClick:O,class:"text-xs font-medium text-blue-500 hover:text-blue-600 dark:text-blue-400 dark:hover:text-blue-300 transition-colors cursor-pointer"}," Сбросить ")):F("",!0)]),l(t(De),{modelValue:t(h),"onUpdate:modelValue":_[3]||(_[3]=U=>A(h)?h.value=U:null),min:0,max:100,class:"w-full"},null,8,["modelValue"])])])):F("",!0)]),_:1})])}}}),He=se({__name:"TestDonationButton",props:{disabled:{type:Boolean,default:!1},amount:{default:100},donor:{default:"Тестовый Донатер"},comment:{default:"Это тЭстовый донат для проверки виджета."},skipCountdown:{type:Boolean,default:!1}},emits:["beforeSend"],setup(i,{expose:$,emit:m}){const C=i,a=m,p=g(!1),n=g(!1),s=g(0);let v=null;const b=pe(),{sendTestDonation:c}=we(),d=async k=>{try{if(p.value=!0,n.value=!0,v&&clearTimeout(v),!(k??C.skipCountdown)){s.value=4;const h=tt(()=>{s.value--,s.value<=0&&clearInterval(h)},1e3);await new Promise(M=>setTimeout(M,4e3))}await c({amount:C.amount,donor:C.donor,comment:C.comment}),s.value=0,b.add({severity:"success",summary:"Успешно",detail:"Тестовый донат отправлен",life:3e3}),v=setTimeout(()=>{n.value=!1},5e3)}catch(x){console.error("Failed to create test donation:",x),s.value=0,b.add({severity:"error",summary:"Ошибка",detail:"Не удалось отправить тестовый донат",life:3e3}),n.value=!1}finally{p.value=!1}},y=()=>{p.value||n.value||a("beforeSend")};return $({sendTestDonationRequest:d}),(k,x)=>{const h=ie;return f(),Z(t(H),{severity:"info",outlined:"",class:"w-full",loading:t(p),disabled:i.disabled||t(n),onClick:y},{default:S(()=>[t(p)?F("",!0):(f(),Z(h,{key:0,name:"i-mynaui:send",class:"mr-2 w-5 h-5"})),t(s)>0?(f(),z(ne,{key:1},[X(" Отправка через "+P(t(s))+"... ",1)],64)):(f(),z(ne,{key:2},[X(" Сделать тестовый донат ")],64))]),_:1},8,["loading","disabled"])}}}),aa={class:"flex flex-col gap-6"},la={class:"pb-6 border-b border-zinc-200 dark:border-zinc-700"},oa={class:"flex flex-col gap-3"},sa={class:"flex gap-2"},na={class:"flex items-center gap-3"},ia={class:"p-4 bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800 rounded-lg"},ra={class:"flex items-start gap-3"},da={class:"flex flex-col gap-3"},ua={class:"flex items-center gap-3"},ca={key:0,class:"flex flex-col gap-2"},ma={class:"flex items-center gap-3"},va={class:"flex items-center gap-3"},fa={class:"flex flex-col gap-3"},pa={class:"flex items-center gap-3"},ga={key:0,class:"flex flex-col gap-2"},ba={class:"flex gap-3"},xa={class:"flex items-center gap-3"},wa={class:"flex flex-col sm:flex-row gap-2 w-full"},ya=se({__name:"DonationWidgetSettingsModal",props:re({widget:{}},{show:{type:Boolean},showModifiers:{}}),emits:re(["saved"],["update:show"]),setup(i,{emit:$}){const m=_e(i,"show"),C=$,a=i,p=g(""),n=g(""),s=g(!1),v=g({enabled:!0,voiceName:"aleksandr",voiceSpeed:50,voicePitch:50,voiceVolume:50}),b=g(!0),c=g(!1),d=g(!0),y=g("плохое слово, другое слово, нецензурное"),k=g(!1),x=g(50),h=g(!1),M=g(!1),W=g(!1),O=g(null),K=ve(),R=pe(),{createWidget:T,updateWidget:_}=we(),w=g(null),U=()=>{var L,o,r,N,fe;if(a.widget&&a.widget.token){n.value=a.widget.token,a.widget.settings&&typeof a.widget.settings=="object"&&!Array.isArray(a.widget.settings)&&(s.value=a.widget.settings.preview_mode_enabled??!1,v.value={enabled:a.widget.settings.voice_enabled??!0,voiceName:((L=a.widget.settings.voice)==null?void 0:L.voice_name)??"aleksandr",voiceSpeed:((o=a.widget.settings.voice)==null?void 0:o.voice_speed)??50,voicePitch:((r=a.widget.settings.voice)==null?void 0:r.voice_pitch)??50,voiceVolume:((N=a.widget.settings.voice)==null?void 0:N.voice_volume)??50},b.value=a.widget.settings.donation_sound_enabled??!0,d.value=a.widget.settings.common_profanity_f
1ilter_enabled??!0,c.value=a.widget.settings.text_filter_enabled??!1,y.value=((fe=a.widget.settings.filtered_words)==null?void 0:fe.join(", "))??"плохое слово, другое слово, нецензурное",k.value=a.widget.settings.min_amount_enabled??!1,x.value=a.widget.settings.min_amount??50);const j=K.public.widgetBaseUrl;p.value=`${j}/donation-alert/?token=${a.widget.token}`}me(()=>{w.value={isPreviewModeEnabled:s.value,voiceSettings:{...v.value},isDonationSoundEnabled:b.value,isCommonProfanityFilterEnabled:d.value,isTextFiltrationEnabled:c.value,filteredWords:y.value,isMinAmountEnabled:k.value,minAmount:x.value},M.value=!1})},Q=()=>{if(!w.value)return;const L=y.value.split(",").map(r=>r.trim()).filter(r=>r.length>0).join(", "),o=w.value.filteredWords.split(",").map(r=>r.trim()).filter(r=>r.length>0).join(", ");M.value=s.value!==w.value.isPreviewModeEnabled||v.value.enabled!==w.value.voiceSettings.enabled||v.value.voiceName!==w.value.voiceSettings.voiceName||v.value.voiceSpeed!==w.value.voiceSettings.voiceSpeed||v.value.voicePitch!==w.value.voiceSettings.voicePitch||v.value.voiceVolume!==w.value.voiceSettings.voiceVolume||b.value!==w.value.isDonationSoundEnabled||d.value!==w.value.isCommonProfanityFilterEnabled||c.value!==w.value.isTextFiltrationEnabled||L!==o||k.value!==w.value.isMinAmountEnabled||x.value!==w.value.minAmount},D=q(()=>a.widget&&a.widget.active===!1?!0:M.value),u=q(()=>a.widget&&a.widget.active===!1?"Подключить":"Сохранить");ge(()=>{U()}),ee(()=>a.widget,()=>{U()}),ee([s,v,b,d,c,y,k,x],()=>{Q()},{deep:!0});const Y=async()=>{try{await navigator.clipboard.writeText(p.value),R.add({severity:"success",summary:"Успешно",detail:"Ссылка скопирована в буфер обмена",life:3e3})}catch(L){console.error("Failed to copy:",L),R.add({severity:"error",summary:"Ошибка",detail:"Не удалось скопировать ссылку",life:3e3})}},I=()=>{var L;M.value?W.value=!0:(L=O.value)==null||L.sendTestDonationRequest(!0)},le=async()=>{var L;await B(),W.value=!1,(L=O.value)==null||L.sendTestDonationRequest(!1)},B=async()=>{if(!h.value)try{h.value=!0;const L=y.value.split(",").map(N=>N.trim()).filter(N=>N.length>0),o={type:"donation-alert",active:!0,...n.value&&{token:n.value},settings:{preview_mode_enabled:s.value,voice_enabled:v.value.enabled,voice:{voice_name:v.value.voiceName,voice_speed:v.value.voiceSpeed,voice_pitch:v.value.voicePitch,voice_volume:v.value.voiceVolume},donation_sound_enabled:b.value,common_profanity_filter_enabled:d.value,text_filter_enabled:c.value,filtered_words:L,min_amount_enabled:k.value,min_amount:x.value}};let r;if(n.value?r=await _(o):r=await T(o),r!=null&&r.token){n.value=r.token;const N=K.public.widgetBaseUrl;p.value=`${N}/donation-alert/?token=${r.token}`}R.add({severity:"success",summary:"Успешно",detail:n.value?"Виджет обновлен":"Виджет создан",life:3e3}),C("saved"),M.value=!1,me(()=>{w.value={isPreviewModeEnabled:s.value,voiceSettings:{...v.value},isDonationSoundEnabled:b.value,isCommonProfanityFilterEnabled:d.value,isTextFiltrationEnabled:c.value,filteredWords:y.value,isMinAmountEnabled:k.value,minAmount:x.value}})}catch(L){console.error("Failed to save widget:",L),R.add({severity:"error",summary:"Ошибка",detail:"Не удалось сохранить виджет",life:3e3})}finally{h.value=!1}},V=()=>{m.value=!1};return(L,o)=>{const r=ie,N=Ee,fe=Ce("tooltip");return f(),z(ne,null,[m.value?(f(),Z(N,{key:0,show:m.value,"onUpdate:show":o[9]||(o[9]=j=>m.value=j),"button-hidden":!0,"no-backdrop-close":!0},{title:S(()=>[...o[12]||(o[12]=[e("div",{class:"text-center"},[e("h1",{class:"text-2xl font-semibold text-gray-900 dark:text-white"}," Настройка виджета оповещения о донате ")],-1)])]),data:S(()=>[e("div",aa,[e("div",la,[o[13]||(o[13]=e("h3",{class:"text-sm font-medium text-gray-900 dark:text-white mb-3"}," Предпросмотр виджета ",-1)),l(Ve,null,{default:S(()=>[l(je)]),_:1})]),e("div",oa,[o[15]||(o[15]=e("div",{class:"flex flex-col gap-1"},[e("label",{class:"block text-sm font-medium text-gray-900 dark:text-white"}," Ссылка на виджет "),e("p",{class:"text-xs font-semibold text-orange-500"}," Никому не давайте и не показывайте эту ссылку! ")],-1)),e("div",sa,[l(t(ke),{modelValue:t(p),"onUpdate:modelValue":o[0]||(o[0]=j=>A(p)?p.value=j:null),readonly:"",fluid:"",class:"flex-1"},null,8,["modelValue"]),ae((f(),Z(t(H),{severity:"secondary",outlined:"",onClick:Y},{default:S(()=>[l(r,{name:"i-mynaui:copy",class:"w-5 h-5"})]),_:1})),[[fe,"Скопировать",void 0,{top:!0}]])]),e("div",na,[l(t(ue),{modelValue:t(s),"onUpdate:modelValue":o[1]||(o[1]=j=>A(s)?s.value=j:null),"input-id":"previewMode"},null,8,["modelValue"]),o[14]||(o[14]=e("label",{for:"previewMode",class:"text-sm font-medium text-gray-900 dark:text-white cursor-pointer"}," Включить режим просмотра ",-1)),ae(l(r,{name:"i-mynaui:info-square-solid",size:"1.5rem"},null,512),[[fe,{content:"Режим просмотра — это тестовый режим, в котором виджет всегда видим на экране. Используйте его для настройки размера и расположения виджета в OBS. Не забудьте отключить этот режим перед началом стрима!",distance:10},void 0,{auto:!0}]])])]),e("div",ia,[e("div",ra,[l(r,{name:"i-mynaui:info-square-solid",class:"w-5 h-5 text-blue-500 flex-shrink-0 mt-0.5"}),o[16]||(o[16]=e("div",{class:"text-sm text-blue-700 dark:text-blue-300"},[e("p",{class:"font-medium mb-1"},"Рекомендуемый размер виджета"),e("p",null,[X("Для лучшего отображения используйте размер "),e("strong",null,"700 × 500 пикселей")])],-1))])]),l(ta,{modelValue:t(v),"onUpdate:modelValue":o[2]||(o[2]=j=>A(v)?v.value=j:null)},null,8,["modelValue"]),e("div",da,[e("div",ua,[l(t(ue),{modelValue:t(k),"onUpdate:modelValue":o[3]||(o[3]=j=>A(k)?k.value=j:null),"input-id":"minAmountEnabled"},null,8,["modelValue"]),o[17]||(o[17]=e("label",{for:"minAmountEnabled",class:"text-sm font-medium text-gray-900 dark:text-white cursor-pointer"}," Минимальная сумма отображения ",-1)),ae(l(r,{name:"i-mynaui:info-square-solid",size:"1.5rem"},null,512),[[fe,{content:"Данная функция полезна, если вас спамят маленькими донатами",distance:10},void 0,{auto:!0}]])]),l(be,{"enter-active-class":"transition-all duration-200 ease-out","enter-from-class":"opacity-0 max-h-0","enter-to-class":"opacity-100 max-h-24","leave-active-class":"transition-all duration-200 ease-in","leave-from-class":"opacity-100 max-h-24","leave-to-class":"opacity-0 max-h-0"},{default:S(()=>[t(k)?(f(),z("div",ca,[l(t(Se),{modelValue:t(x),"onUpdate:modelValue":o[4]||(o[4]=j=>
1A(x)?x.value=j:null),min:0,max:1e4,suffix:" ₽",fluid:""},null,8,["modelValue"])])):F("",!0)]),_:1})]),e("div",ma,[l(t(ue),{modelValue:t(b),"onUpdate:modelValue":o[5]||(o[5]=j=>A(b)?b.value=j:null),"input-id":"donationSoundEnabled"},null,8,["modelValue"]),o[18]||(o[18]=e("label",{for:"donationSoundEnabled",class:"text-sm font-medium text-gray-900 dark:text-white cursor-pointer"}," Включить звук доната ",-1))]),e("div",va,[l(t(ue),{modelValue:t(d),"onUpdate:modelValue":o[6]||(o[6]=j=>A(d)?d.value=j:null),"input-id":"commonProfanityFilter"},null,8,["modelValue"]),o[19]||(o[19]=e("label",{for:"commonProfanityFilter",class:"text-sm font-medium text-gray-900 dark:text-white cursor-pointer"}," Включить общую фильтрацию мата ",-1)),ae(l(r,{name:"i-mynaui:info-square-solid",size:"1.5rem"},null,512),[[fe,{content:"Это наш список матерных слов, который постоянно пополняется и расширяется, чтобы вам не приходилось руками вбивать его",distance:10},void 0,{auto:!0}]])]),e("div",fa,[e("div",pa,[l(t(ue),{modelValue:t(c),"onUpdate:modelValue":o[7]||(o[7]=j=>A(c)?c.value=j:null),"input-id":"textFiltration"},null,8,["modelValue"]),o[20]||(o[20]=e("label",{for:"textFiltration",class:"text-sm font-medium text-gray-900 dark:text-white cursor-pointer"}," Включить фильтрацию текста ",-1)),ae(l(r,{name:"i-mynaui:info-square-solid",size:"1.5rem"},null,512),[[fe,{content:"Указанные слова будут заменены на звездочки в сообщениях донатов",distance:10},void 0,{auto:!0}]])]),l(be,{"enter-active-class":"transition-all duration-200 ease-out","enter-from-class":"opacity-0 max-h-0","enter-to-class":"opacity-100 max-h-96","leave-active-class":"transition-all duration-200 ease-in","leave-from-class":"opacity-100 max-h-96","leave-to-class":"opacity-0 max-h-0"},{default:S(()=>[t(c)?(f(),z("div",ga,[o[21]||(o[21]=e("label",{class:"block text-sm font-medium text-gray-900 dark:text-white"}," Слова для фильтрации (через запятую) ",-1)),ae(e("textarea",{"onUpdate:modelValue":o[8]||(o[8]=j=>A(y)?y.value=j:null),rows:"3",class:"w-full px-3 py-2 border border-zinc-300 dark:border-zinc-700 rounded-lg bg-white dark:bg-zinc-800 text-gray-900 dark:text-white focus:ring-2 focus:ring-primary-500/40 focus:border-transparent resize-none",placeholder:"плохое слово, другое слово, нецензурное"},null,512),[[at,t(y)]]),o[22]||(o[22]=e("p",{class:"text-xs text-zinc-500 dark:text-zinc-400"}," Укажите слова, которые должны быть отфильтрованы в комментариях донатов ",-1))])):F("",!0)]),_:1})]),l(He,{ref_key:"testDonationButtonRef",ref:O,disabled:t(s),amount:100,donor:"Тестовый Донатер",comment:"Это тестовый донат для проверки виджета.",onBeforeSend:I},null,8,["disabled"]),e("div",ba,[l(t(H),{severity:"secondary",outlined:"",class:"flex-1",onClick:V},{default:S(()=>[...o[23]||(o[23]=[X(" Отмена ",-1)])]),_:1}),l(t(H),{severity:"contrast",class:"flex-1",loading:t(h),disabled:!t(D),onClick:B},{default:S(()=>[X(P(t(u)),1)]),_:1},8,["loading","disabled"])])])]),_:1},8,["show"])):F("",!0),l(t(Re),{visible:t(W),"onUpdate:visible":o[11]||(o[11]=j=>A(W)?W.value=j:null),modal:"",closable:!0,draggable:!1,class:"w-full max-w-md"},{header:S(()=>[e("div",xa,[l(r,{name:"i-mynaui:danger-triangle",class:"w-6 h-6 text-orange-500"}),o[24]||(o[24]=e("h2",{class:"text-lg font-semibold text-gray-900 dark:text-white"}," Есть несохранённые изменения ",-1))])]),footer:S(()=>[e("div",wa,[l(t(H),{label:"Отмена",severity:"secondary",outlined:"",onClick:o[10]||(o[10]=j=>W.value=!1),class:"flex-1"}),l(t(H),{label:"Сохранить и отправить",severity:"contrast",onClick:le,loading:t(h),class:"flex-1"},null,8,["loading"])])]),default:S(()=>[o[25]||(o[25]=e("div",{class:"py-4"},[e("p",{class:"text-sm text-gray-700 dark:text-gray-300 mb-4"}," Вы изменили настройки виджета, но не сохранили их. Тестовый донат будет отправлен с текущими сохранёнными настройками, без учёта новых изменений. "),e("p",{class:"text-sm font-medium text-gray-900 dark:text-white"}," Что вы хотите сделать? ")],-1))]),_:1},8,["visible"])],64)}}}),ha={class:"total-donations-widget-settings-content"},ka={class:"mb-6 pb-6 border-b border-zinc-200 dark:border-zinc-700"},_a={class:"mb-6"},za={class:"flex gap-2"},$a={class:"mb-6 p-4 bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800 rounded-lg"},Ca={class:"flex items-start gap-3"},Va={class:"mb-6"},Sa={class:"flex items-center gap-3"},Ta={class:"mb-6"},Ua={class:"flex gap-3"},Ea={class:"flex items-center gap-3"},Da={class:"flex flex-col sm:flex-row gap-2 w-full"},Ba=se({__name:"TotalDonationsWidgetSettingsModal",props:re({widget:{}},{show:{type:Boolean},showModifiers:{}}
1),emits:re(["saved"],["update:show"]),setup(i,{emit:$}){const m=_e(i,"show"),C=$,a=i,p=g(""),n=g(""),s=g(!0),v=g(!1),b=g(!1),c=g(!1),d=g(null),y=ve(),k=pe(),{createWidget:x,updateWidget:h}=we(),M=g(null),W=()=>{if(a.widget&&a.widget.token){n.value=a.widget.token,a.widget.settings&&typeof a.widget.settings=="object"&&!Array.isArray(a.widget.settings)&&(s.value=a.widget.settings.goal_display_enabled??!0);const D=y.public.widgetBaseUrl;p.value=`${D}/total-donations/?token=${a.widget.token}`}me(()=>{M.value={isGoalDisplayEnabled:s.value},b.value=!1})},O=()=>{M.value&&(b.value=s.value!==M.value.isGoalDisplayEnabled)},K=q(()=>a.widget&&a.widget.active===!1?!0:b.value),R=q(()=>a.widget&&a.widget.active===!1?"Подключить":"Сохранить");ge(()=>{W()}),ee(()=>a.widget,()=>{W()}),ee(s,()=>{O()});const T=async()=>{try{await navigator.clipboard.writeText(p.value),k.add({severity:"success",summary:"Успешно",detail:"Ссылка скопирована в буфер обмена",life:3e3})}catch(D){console.error("Failed to copy:",D),k.add({severity:"error",summary:"Ошибка",detail:"Не удалось скопировать ссылку",life:3e3})}},_=()=>{var D;b.value?c.value=!0:(D=d.value)==null||D.sendTestDonationRequest(!0)},w=async()=>{var D;await Q(),c.value=!1,(D=d.value)==null||D.sendTestDonationRequest(!1)},U=()=>{m.value=!1},Q=async()=>{if(!v.value)try{v.value=!0;const D={type:"total-amount",active:!0,...n.value&&{token:n.value},settings:{goal_display_enabled:s.value}};let u;if(n.value?u=await h(D):u=await x(D),u!=null&&u.token){n.value=u.token;const Y=y.public.widgetBaseUrl;p.value=`${Y}/total-donations/?token=${u.token}`}k.add({severity:"success",summary:"Успешно",detail:n.value?"Виджет обновлен":"Виджет создан",life:3e3}),C("saved"),b.value=!1,me(()=>{M.value={isGoalDisplayEnabled:s.value}})}catch(D){console.error("Failed to save widget:",D),k.add({severity:"error",summary:"Ошибка",detail:"Не удалось сохранить виджет",life:3e3})}finally{v.value=!1}};return(D,u)=>{const Y=ie,I=Ee,le=Ce("tooltip");return f(),z(ne,null,[m.value?(f(),Z(I,{key:0,show:m.value,"onUpdate:show":u[2]||(u[2]=B=>m.value=B),"button-hidden":!0,"no-backdrop-close":!0},{title:S(()=>[...u[5]||(u[5]=[e("div",{class:"text-center"},[e("h1",{class:"text-2xl font-semibold text-gray-900 dark:text-white"}," Добавить виджет об общей собранной сумме ")],-1)])]),data:S(()=>[e("div",ha,[e("div",ka,[u[6]||(u[6]=e("h3",{class:"text-sm font-medium text-gray-900 dark:text-white mb-3"}," Предпросмотр виджета ",-1)),l(Ve,null,{default:S(()=>[l(Le,{"show-description":t(s)},null,8,["show-description"])]),_:1})]),e("div",_a,[u[7]||(u[7]=e("div",{class:"flex flex-col gap-1 mb-2"},[e("label",{class:"block text-sm font-medium text-gray-900 dark:text-white"}," Ссылка на виджет "),e("p",{class:"text-xs font-semibold text-orange-500"}," Никому не давайте и не показывайте эту ссылку! ")],-1)),e("div",za,[l(t(ke),{modelValue:t(p),"onUpdate:modelValue":u[0]||(u[0]=B=>A(p)?p.value=B:null),readonly:"",fluid:"",class:"flex-1"},null,8,["modelValue"]),ae((f(),Z(t(H),{severity:"secondary",outlined:"",onClick:T},{default:S(()=>[l(Y,{name:"i-mynaui:copy",class:"w-5 h-5"})]),_:1})),[[le,"Скопировать",void 0,{top:!0}]])])]),e("div",$a,[e("div",Ca,[l(Y,{name:"i-mynaui:info-square-solid",class:"w-5 h-5 text-blue-500 flex-shrink-0 mt-0.5"}),u[8]||(u[8]=e("div",{class:"text-sm text-blue-700 dark:text-blue-300"},[e("p",{class:"font-medium mb-1"},"Рекомендуемый размер виджета"),e("p",null,[X("Для лучшего отображения используйте размер "),e("strong",null,"750 × 240 пикселей")])],-1))])]),e("div",Va,[e("div",Sa,[l(t(ue),{modelValue:t(s),"onUpdate:modelValue":u[1]||(u[1]=B=>A(s)?s.value=B:null),"input-id":"goalDisplay"},null,8,["modelValue"]),u[9]||(u[9]=e("label",{for:"goalDisplay",class:"text-sm font-medium text-gray-900 dark:text-white cursor-pointer"}," Отображать на что собираем ",-1))])]),e("div",Ta,[l(He,{ref_key:"testDonationButtonRef",ref:d,amount:250,donor:"Щедрый Меценат",comment:"Поддержка стрима!",onBeforeSend:_},null,512)]),e("div",Ua,[l(t(H),{severity:"secondary",outlined:"",class:"flex-1",onClick:U},{default:S(()=>[...u[10]||(u[10]=[X(" Отмена ",-1)])]),_:1}),l(t(H),{severity:"contrast",class:"flex-1",loading:t(v),disabled:!t(K),onClick:Q},{default:S(()=>[X(P(t(R)),1)]),_:1},8,["loading","disabled"])])])]),_:1},8,["show"])):F("",!0),l(t(Re),{visible:t(c),"onUpdate:visible":u[4]||(u[4]=B=>
1A(c)?c.value=B:null),modal:"",closable:!0,draggable:!1,class:"w-full max-w-md"},{header:S(()=>[e("div",Ea,[l(Y,{name:"i-mynaui:danger-triangle",class:"w-6 h-6 text-orange-500"}),u[11]||(u[11]=e("h2",{class:"text-lg font-semibold text-gray-900 dark:text-white"}," Есть несохранённые изменения ",-1))])]),footer:S(()=>[e("div",Da,[l(t(H),{label:"Отмена",severity:"secondary",outlined:"",onClick:u[3]||(u[3]=B=>c.value=!1),class:"flex-1"}),l(t(H),{label:"Сохранить и отправить",severity:"contrast",onClick:w,loading:t(v),class:"flex-1"},null,8,["loading"])])]),default:S(()=>[u[12]||(u[12]=e("div",{class:"py-4"},[e("p",{class:"text-sm text-gray-700 dark:text-gray-300 mb-4"}," Вы изменили настройки виджета, но не сохранили их. Тестовый донат будет отправлен с текущими сохранёнными настройками, без учёта новых изменений. "),e("p",{class:"text-sm font-medium text-gray-900 dark:text-white"}," Что вы хотите сделать? ")],-1))]),_:1},8,["visible"])],64)}}}),Pa=xe(Ba,[["__scopeId","data-v-b1bd81ea"]]),Ma={class:"qr-code-widget-settings-content"},qa={class:"mb-6"},Ia={class:"flex gap-2"},Wa={class:"mb-6 p-4 bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800 rounded-lg"},Fa={class:"flex items-start gap-3"},Ra={class:"mb-6"},Aa={class:"flex justify-center"},Oa={class:"text-xs text-zinc-500 dark:text-zinc-400 mt-2 text-center"},ja={class:"flex gap-3"},La=se({__name:"QRCodeWidgetSettingsModal",props:re({widget:{}},{show:{type:Boolean},showModifiers:{}}),emits:re(["saved"],["update:show"]),setup(i,{emit:$}){const m=_e(i,"show"),C=$,a=i,p=g(""),n=g(""),s=g(null),v=g("#1E1E21"),b=g("#ffffff"),c=g(!1);let d=null;const y=ve(),k=pe(),x=Ae(),{createWidget:h,updateWidget:M}=we(),W=g(null);W.value=x==null?void 0:x.$userInfo;const O=q(()=>{var u;const D=(u=W.value)==null?void 0:u.username;return D?`${window.location.origin}/u/${D}/donate`:""}),K=()=>{if(a.widget&&a.widget.token){n.value=a.widget.token,a.widget.settings&&typeof a.widget.settings=="object"&&!Array.isArray(a.widget.settings)&&a.widget.settings.qr_style&&(v.value=a.widget.settings.qr_style.dots_color??"#1E1E21",b.value=a.widget.settings.qr_style.background_color??"#ffffff");const D=y.public.widgetBaseUrl;p.value=`${D}/qr-code/?token=${a.widget.token}`}},R=q(()=>(a.widget&&a.widget.active===!1,!0)),T=q(()=>a.widget&&a.widget.active===!1?"Подключить":"Сохранить");ge(()=>{K()}),ee(()=>a.widget,()=>{K()});const _=async()=>{const D=await Pe();!s.value||!O.value||(d=new D({width:500,height:500,data:O.value,margin:0,qrOptions:{typeNumber:0,mode:"Byte",errorCorrectionLevel:"Q"},imageOptions:{hideBackgroundDots:!0,imageSize:.4,margin:4},dotsOptions:{color:v.value,type:"rounded"},backgroundOptions:{color:b.value},cornersSquareOptions:{color:v.value,type:"extra-rounded"},cornersDotOptions:{color:v.value,type:"dot"}}),s.value.innerHTML="",d.append(s.value))};ee(()=>m.value,D=>{D&&me(()=>{_()})}),ee(()=>O.value,()=>{m.value&&_()});const w=async()=>{try{await navigator.clipboard.writeText(p.value),k.add({severity:"success",summary:"Успешно",detail:"Ссылка скопирована в буфер обмена",life:3e3})}catch(D){console.error("Failed to copy:",D),k.add({severity:"error",summary:"Ошибка",detail:"Не удалось скопировать ссылку",life:3e3})}},U=()=>{m.value=!1},Q=async()=>{if(!c.value)try{c.value=!0;const D={type:"qr-code",active:!0,...n.value&&{token:n.value},settings:{donation_url:O.value,qr_style:{dots_color:v.value,background_color:b.value}}};let u;if(n.value?u=await M(D):u=await h(D),u!=null&&u.token){n.value=u.token;const Y=y.public.widgetBaseUrl;p.value=`${Y}/qr-code/?token=${u.token}`}k.add({severity:"success",summary:"Успешно",detail:n.value?"Виджет обновлен":"Виджет создан",life:3e3}),C("saved"),m.value=!1}catch(D){console.error("Failed to save widget:",D),k.add({severity:"error",summary:"Ошибка",detail:"Не удалось сохранить виджет",life:3e3})}finally{c.value=!1}};return(D,u)=>{const Y=ie,I=Ee,le=Ce("tooltip");return m.value?(f(),Z(I,{key:0,show:m.value,"onUpdate:show":u[1]||(u[1]=B=>m.value=B),"button-hidden":!0,"no-backdrop-close":!0},{title:S(()=>[...u[2]||(u[2]=[e("div",{class:"text-center"},[e("h1",{class:"text-2xl font-semibold text-gray-900 dark:text-white"}," Добавить виджет QR кода на донат ")],-1)])]),data:S(()=>[e("div",Ma,[e("div",qa,[u[3]||(u[3]=e("div",{class:"flex flex-col gap-1 mb-2"},[e("label",{class:"block text-sm font-medium text-gray-900 dark:text-white"}," Ссылка на виджет "),e("p",{class:"text-xs font-semibold text-orange-500"}," Никому не давайте и не показывайте эту ссылку! ")],-1)),e("div",Ia,[l(t(ke),{modelValue:t(p),"onUpdate:modelValue":u[0]||(u[0]=B=>A(p)?p.value=B:null),readonly:"",fluid:"",class:"flex-1"},null,8,["modelValue"]),ae((f(),Z(t(H),{severity:"secondary",outlined:"",onClick:w},{default:S(()=>[l(Y,{name:"i-mynaui:copy",class:"w-5 h-5"})]),_:1})),[[le,"Скопировать",void 0,{top:!0}]])])]),e("div",Wa,[e("div",Fa,[l(Y,{name:"i-mynaui:info-square-solid",class:"w-5 h-5 text-blue-500 flex-shrink-0 mt-0.5"}),u[4]||(u[4]=e("div",{class:"text-sm text-blue-700 dark:text-blue-300"},[e("p",{class:"font-medium mb-1"},"Рекомендуемый размер виджета"),e("p",null,[X("Для лучшего отображения используйте размер "),e("strong",null,"500 × 500 пикселей")])],-1))])]),e("div",Ra,[u[5]||
1(u[5]=e("label",{class:"block text-sm font-medium text-gray-900 dark:text-white mb-3"}," Предпросмотр QR кода ",-1)),l(Ve,null,{default:S(()=>[e("div",Aa,[e("div",{ref_key:"qrCodeContainer",ref:s,class:"bg-white rounded-2xl p-4 flex items-center justify-center w-[300px] h-[300px]"},null,512)])]),_:1}),e("p",Oa," QR код ведет на: "+P(t(O)),1)]),e("div",ja,[l(t(H),{severity:"secondary",outlined:"",class:"flex-1",onClick:U},{default:S(()=>[...u[6]||(u[6]=[X(" Отмена ",-1)])]),_:1}),l(t(H),{severity:"contrast",class:"flex-1",loading:t(c),disabled:!t(R),onClick:Q},{default:S(()=>[X(P(t(T)),1)]),_:1},8,["loading","disabled"])])])]),_:1},8,["show"])):F("",!0)}}}),Qa=xe(La,[["__scopeId","data-v-a3bab204"]]),Ha={class:"top-donor-widget-settings-content"},Na={class:"mb-6 pb-6 border-b border-zinc-200 dark:border-zinc-700"},Ga={class:"mb-6"},Ka={class:"mb-6"},Ya={class:"flex gap-2"},Xa={class:"mb-6 p-4 bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800 rounded-lg"},Za={class:"flex items-start gap-3"},Ja={class:"flex gap-3"},el=se({__name:"TopDonorWidgetSettingsModal",props:re({widget:{}},{show:{type:Boolean},showModifiers:{}}),emits:re(["saved"],["update:show"]),setup(i,{emit:$}){const m=_e(i,"show"),C=$,a=i,p=ve(),n=pe(),{createWidget:s,updateWidget:v}=we(),b=g(""),c=g(""),d=g("Топ донаторов"),y=g(!1),k=g(!1),x=g(!1),h=g({title:d.value}),M=()=>{var _,w,U;if(d.value=((w=(_=a.widget)==null?void 0:_.settings)==null?void 0:w.title)??"Топ донаторов",(U=a.widget)!=null&&U.token){c.value=a.widget.token;const Q=p.public.widgetBaseUrl;b.value=`${Q}/top-donors/?token=${a.widget.token}`}else c.value="",b.value="";me(()=>{h.value={title:d.value},x.value=!1})};ge(()=>{m.value&&M()}),ee(()=>a.widget,()=>{m.value&&M()}),ee(()=>m.value,_=>{_&&(M(),k.value=!1)}),ee(d,()=>{const _=d.value.trim(),w=h.value.title.trim();x.value=_!==w});const W=q(()=>!c.value||a.widget&&a.widget.active===!1?!0:x.value),O=q(()=>!c.value||a.widget&&a.widget.active===!1?"Подключить":"Сохранить"),K=async()=>{if(!b.value){n.add({severity:"warn",summary:"Пока нечего копировать",detail:"Сохраните виджет, чтобы получить ссылку",life:3e3});return}try{await navigator.clipboard.writeText(b.value),n.add({severity:"success",summary:"Успешно",detail:"Ссылка на виджет скопирована",life:3e3})}catch(_){console.error("Failed to copy:",_),n.add({severity:"error",summary:"Ошибка",detail:"Не удалось скопировать ссылку",life:3e3})}},R=()=>{m.value=!1},T=async()=>{if(!y.value)try{y.value=!0;const _=!!c.value,w={type:"top-donor",active:!0,...c.value&&{token:c.value},settings:{title:d.value.trim()||"Топ донаторов"}};let U;c.value?U=await v(w):U=await s(w);const Q=(U==null?void 0:U.token)??c.value;if(Q){c.value=Q;const D=p.public.widgetBaseUrl;b.value=`${D}/top-donors/?token=${Q}`}n.add({severity:"success",summary:"Успешно",detail:_?"Виджет обновлён":"Виджет создан",life:3e3}),C("saved"),me(()=>{h.value={title:d.value},x.value=!1})}catch(_){console.error("Failed to save top donor widget:",_),n.add({severity:"error",summary:"Ошибка",detail:"Не удалось сохранить настройки виджета",life:3e3})}finally{y.value=!1}};return(_,w)=>{const U=ie,Q=Ee,D=Ce("tooltip");return m.value?(f(),Z(Q,{key:0,show:m.value,"onUpdate:show":w[4]||(w[4]=u=>m.value=u),"button-hidden":!0,"no-backdrop-close":!0},{title:S(()=>[...w[5]||(w[5]=[e("div",{class:"text-center"},[e("h1",{class:"text-2xl font-semibold text-gray-900 dark:text-white"}," Настройка виджета топ донаторов ")],-1)])]),data:S(()=>[e("div",Ha,[e("div",Na,[w[6]||(w[6]=e("h3",{class:"text-sm font-medium text-gray-900 dark:text-white mb-3"}," Предпросмотр виджета ",-1)),l(Ve,{class:"transition-colors",onMouseenter:w[0]||(w[0]=u=>k.value=!0),onMouseleave:w[1]||(w[1]=u=>k.value=!1)},{default:S(()=>
1[l(Qe,{title:d.value,"show-title":"","is-hovered":k.value},null,8,["title","is-hovered"])]),_:1})]),e("div",Ga,[w[7]||(w[7]=e("label",{class:"block text-sm font-medium text-gray-900 dark:text-white mb-2"}," Заголовок виджета ",-1)),l(t(ke),{modelValue:d.value,"onUpdate:modelValue":w[2]||(w[2]=u=>d.value=u),placeholder:"Например, Топ донаторов",fluid:""},null,8,["modelValue"]),w[8]||(w[8]=e("p",{class:"mt-2 text-xs text-zinc-500 dark:text-zinc-400"}," Текст отобразится в верхней части виджета и поможет зрителям понять, кто лидирует в поддержке. ",-1))]),e("div",Ka,[w[9]||(w[9]=e("div",{class:"flex flex-col gap-1 mb-2"},[e("label",{class:"block text-sm font-medium text-gray-900 dark:text-white"}," Ссылка на виджет "),e("p",{class:"text-xs font-semibold text-orange-500"}," Никому не давайте и не показывайте эту ссылку! ")],-1)),e("div",Ya,[l(t(ke),{modelValue:b.value,"onUpdate:modelValue":w[3]||(w[3]=u=>b.value=u),readonly:"",fluid:"",class:"flex-1",placeholder:b.value?"":"Появится после сохранения виджета"},null,8,["modelValue","placeholder"]),ae((f(),Z(t(H),{severity:"secondary",outlined:"",onClick:K},{default:S(()=>[l(U,{name:"i-mynaui:copy",class:"w-5 h-5"})]),_:1})),[[D,"Скопировать",void 0,{top:!0}]])])]),e("div",Xa,[e("div",Za,[l(U,{name:"i-mynaui:info-square-solid",class:"w-5 h-5 text-blue-500 flex-shrink-0 mt-0.5"}),w[10]||(w[10]=e("div",{class:"text-sm text-blue-700 dark:text-blue-300"},[e("p",{class:"font-medium mb-1"},"Рекомендуемый размер виджета"),e("p",null,[X("Используйте размер "),e("strong",null,"420 × 260 пикселей"),X(" для лучшего отображения в OBS.")])],-1))])]),e("div",Ja,[l(t(H),{severity:"secondary",outlined:"",class:"flex-1",onClick:R},{default:S(()=>[...w[11]||(w[11]=[X(" Отмена ",-1)])]),_:1}),l(t(H),{severity:"contrast",class:"flex-1",loading:y.value,disabled:!W.value,onClick:T},{default:S(()=>[X(P(O.value),1)]),_:1},8,["loading","disabled"])])])]),_:1},8,["show"])):F("",!0)}}}),tl=xe(el,[["__scopeId","data-v-d4b588a8"]]),al={class:"purchase-card relative w-full"},ll={key:0,class:"purchase-card__qr absolute -top-2 -right-2 z-10 w-12 h-12 md:w-14 md:h-14 bg-white rounded-lg flex items-center justify-center p-1"},ol={key:1,class:"purchase-card__badge absolute -top-2 left-2 z-10 inline-flex items-center px-3 py-1 rounded-full bg-emerald-500 text-white text-xs md:text-sm font-semibold"},sl={class:"flex bg-white dark:bg-zinc-900 text-zinc-800 dark:text-white rounded-2xl overflow-hidden"},nl={class:"shrink-0 w-[30%] min-w-[120px] bg-gradient-to-br from-zinc-200 to-zinc-300 dark:from-zinc-700 dark:to-zinc-800 relative overflow-hidden self-stretch"},il={class:"absolute inset-0 flex items-center justify-center"},rl={class:"flex-1 min-w-0 p-3 md:p-4 flex flex-col gap-1.5"},dl={class:"text-[10px] md:text-xs text-zinc-500 dark:text-zinc-400 leading-tight"},ul={class:"text-sm md:text-base font-semibold leading-tight"},cl={class:"text-[11px] md:text-xs text-zinc-500 dark:text-zinc-400 leading-snug line-clamp-2"},ml={key:0,class:"flex flex-wrap gap-1"},vl={class:"border-t border-zinc-200 dark:border-zinc-800 mt-auto pt-2 flex items-end justify-between gap-2"},fl={class:"text-base md:text-lg font-bold text-emerald-500 dark:text-emerald-400 leading-none mt-0.5"},pl={class:"text-right"},gl={class:"text-xs md:text-sm font-semibold mt-0.5 truncate max-w-[100px] md:max-w-[140px]"},bl=se({__name:"PurchaseAlertPreviewCard",props:{amount:{default:499},buyer:{default:"@test_buyer"},productLabel:{default:"Цифровой товар"},productTitle:{default:"Тестовый товар"},description:{default:"Это тестовое сообщение для настройки виджета в OBS. Здесь показано отображение карточки покупки."},formats:{default:()=>["ZIP","SCP"]},showBadge:{type:Boolean,default:!0},showQrCode:{type:Boolean,default:!0},qrUrl:{default:""},isHovered:{type:Boolean,default:!1}}
1,setup(i){const $=i,m=ve(),C=q(()=>$.qrUrl||m.public.appUrl||"https://goga.zone"),a=g(null);let p=null;const n=async()=>{const v=await Pe();a.value&&(p=new v({width:200,height:200,data:C.value,margin:0,qrOptions:{typeNumber:0,mode:"Byte",errorCorrectionLevel:"Q"},dotsOptions:{color:"#1E1E21",type:"rounded"},backgroundOptions:{color:"transparent"},cornersSquareOptions:{color:"#1E1E21",type:"extra-rounded"},cornersDotOptions:{color:"#1E1E21",type:"dot"}}),a.value.innerHTML="",p.append(a.value))};ee(C,n),ee(()=>$.showQrCode,async v=>{v&&(await me(),n())}),ge(()=>{n()});const s=v=>new Intl.NumberFormat("ru-RU").format(v);return(v,b)=>{var d;const c=ie;return f(),z("div",al,[i.showQrCode?(f(),z("div",ll,[e("div",{ref_key:"qrCodeContainer",ref:a,class:"w-full h-full"},null,512)])):F("",!0),i.showBadge?(f(),z("span",ol," +1 покупка ")):F("",!0),e("div",sl,[e("div",nl,[b[0]||(b[0]=e("div",{class:"mock-radial-sheen"},null,-1)),e("div",il,[l(c,{name:"i-mynaui:image",class:"text-zinc-400 dark:text-white/40 !w-9 !h-9 md:!w-12 md:!h-12"})])]),e("div",rl,[e("div",null,[e("div",dl,P(i.productLabel),1),e("h3",ul,P(i.productTitle),1)]),e("p",cl,P(i.description),1),(d=i.formats)!=null&&d.length?(f(),z("div",ml,[(f(!0),z(ne,null,Te(i.formats,y=>(f(),z("span",{key:y,class:"px-1.5 py-0.5 rounded bg-zinc-100 text-zinc-700 dark:bg-zinc-800 dark:text-zinc-300 text-[9px] md:text-[10px] font-medium"},P(y),1))),128))])):F("",!0),e("div",vl,[e("div",null,[b[1]||(b[1]=e("div",{class:"text-[9px] md:text-[10px] text-zinc-400 dark:text-zinc-500 uppercase tracking-wider"}," Сумма ",-1)),e("div",fl,P(s(i.amount))+" ₽ ",1)]),e("div",pl,[b[2]||(b[2]=e("div",{class:"text-[9px] md:text-[10px] text-zinc-400 dark:text-zinc-500 uppercase tracking-wider"}," Покупатель ",-1)),e("div",gl,P(i.buyer),1)])])])])])}}}),Ne=xe(bl,[["__scopeId","data-v-a69c48fc"]]),xl={key:0,class:"fixed inset-0 z-52 flex items-center justify-center p-4 sm:p-6 bg-black/50 backdrop-blur-sm"},wl={class:"shrink-0 px-4 sm:px-6 pt-5 sm:pt-6 pb-4 border-b border-zinc-200 dark:border-zinc-700"},yl={class:"flex-1 overflow-y-auto px-4 sm:px-6 py-5"},hl={key:0,class:"mb-6"},kl={class:"flex gap-2"},_l={class:"p-4 mb-6 bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800 rounded-lg"},zl={class:"flex items-start gap-3"},$l={class:"flex flex-col gap-4"},Cl={class:"flex items-start gap-3"},Vl={class:"rounded-xl border border-zinc-200 dark:border-zinc-700 bg-zinc-50/50 dark:bg-zinc-800/40 p-4 flex flex-col gap-3"},Sl={class:"flex flex-col gap-2"},Tl=["for"],Ul={class:"min-w-0"},El={class:"text-sm font-medium text-gray-900 dark:text-white"},Dl={class:"text-xs text-zinc-500 dark:text-zinc-400 mt-0.5"},Bl={key:0,class:"mt-2"},Pl={class:"flex items-start gap-3"},Ml={class:"flex items-start gap-3"},ql={class:"flex items-start gap-3"},Il={class:"shrink-0 px-4 sm:px-6 py-4 border-t border-zinc-200 dark:border-zinc-700 flex gap-3"},Wl=se({__name:"PurchaseAlertWidgetSettingsModal",props:re({widget:{}},{show:{type:Boolean,required:!0},showModifiers:{}}),emits:re(["saved","close"],["update:show"]),setup(i,{emit:$}){const m=_e(i,"show");Oe(m);const C=$,a=i,p=g(""),n=g(""),s=g(!1),v=g("all"),b=g(0),c=g(!0),d=g(!0),y=g(!0),k=g(!1),x=g(!1),h=[{value:"all",label:"Все покупки",desc:"Показывать уведомления о любых покупках"},{value:"paid_only",label:"Только платные",desc:"Скрывать покупки с нулевой ценой"},{value:"free_only",label:"Только бесплатные",desc:"Показывать только покупки с нулевой ценой"},{value:"min_amount",label:"От заданной суммы",desc:"Скрывать покупки дешевле указанного порога"}],M=ve(),W=pe(),{createWidget:O,updateWidget:K}=we(),R=g(null),T=q(()=>{switch(v.value){case"paid_only":return{min_amount_enabled:!1,show_free_purchases:!1,only_free_purchases:!1};case"free_only":return{min_amount_enabled:!1,show_free_purchases:!0,only_free_purchases:!0};case"min_amount":return{min_amount_enabled:!0,show_free_purchases:!1,only_free_purchases:!1};case"all":default:return{min_amount_enabled:!1,show_free_purchases:!0,only_free_purchases:!1}}}),_=B=>B.only_free_purchases?"free_only":B.min_amount_enabled?"min_amount":B.show_free_purchases===!1?"paid_only":"all",w=()=>
1{if(a.widget&&a.widget.token){n.value=a.widget.token,a.widget.settings&&typeof a.widget.settings=="object"&&!Array.isArray(a.widget.settings)&&(s.value=a.widget.settings.preview_mode_enabled??!1,b.value=a.widget.settings.min_amount??0,v.value=_({min_amount_enabled:a.widget.settings.min_amount_enabled,show_free_purchases:a.widget.settings.show_free_purchases,only_free_purchases:a.widget.settings.only_free_purchases}),c.value=a.widget.settings.purchase_sound_enabled??!0,d.value=a.widget.settings.show_badge??!0,y.value=a.widget.settings.show_qr_code??!0);const B=M.public.widgetBaseUrl;p.value=`${B}/purchase-alert/?token=${a.widget.token}`}me(()=>{R.value={previewModeEnabled:s.value,filterMode:v.value,minAmount:b.value,purchaseSoundEnabled:c.value,showBadge:d.value,showQrCode:y.value},x.value=!1})},U=()=>{R.value&&(x.value=s.value!==R.value.previewModeEnabled||v.value!==R.value.filterMode||b.value!==R.value.minAmount||c.value!==R.value.purchaseSoundEnabled||d.value!==R.value.showBadge||y.value!==R.value.showQrCode)},Q=q(()=>a.widget&&a.widget.active===!1?!0:x.value),D=q(()=>a.widget&&a.widget.active===!1?"Подключить":"Сохранить");ge(()=>{w()}),ee(()=>a.widget,()=>{w()}),ee([s,v,b,c,d,y],()=>{U()});const u=B=>{B.key==="Escape"&&m.value&&I()};ee(m,B=>{B?document.addEventListener("keydown",u):document.removeEventListener("keydown",u)}),Ue(()=>{document.removeEventListener("keydown",u)});const Y=async()=>{try{await navigator.clipboard.writeText(p.value),W.add({severity:"success",summary:"Успешно",detail:"Ссылка скопирована в буфер обмена",life:3e3})}catch(B){console.error("Failed to copy:",B),W.add({severity:"error",summary:"Ошибка",detail:"Не удалось скопировать ссылку",life:3e3})}},I=()=>{m.value=!1,C("close")},le=async()=>{if(!k.value)try{k.value=!0;const B={type:"purchase-alert",active:!0,...n.value&&{token:n.value},settings:{preview_mode_enabled:s.value,min_amount_enabled:T.value.min_amount_enabled,min_amount:b.value,show_free_purchases:T.value.show_free_purchases,only_free_purchases:T.value.only_free_purchases,purchase_sound_enabled:c.value,show_badge:d.value,show_qr_code:y.value}};let V;if(n.value?V=await K(B):V=await O(B),V!=null&&V.token){n.value=V.token;const L=M.public.widgetBaseUrl;p.value=`${L}/purchase-alert/?token=${V.token}`}W.add({severity:"success",summary:"Успешно",detail:n.value?"Виджет обновлён":"Виджет создан",life:3e3}),C("saved"),x.value=!1,me(()=>{R.value={previewModeEnabled:s.value,filterMode:v.value,minAmount:b.value,purchaseSoundEnabled:c.value,showBadge:d.value,showQrCode:y.value}})}catch(B){console.error("Failed to save widget:",B),W.add({severity:"error",summary:"Ошибка",detail:"Не удалось сохранить виджет",life:3e3})}finally{k.value=!1}};return(B,V)=>{const L=ie,o=Ce("tooltip");return f(),Z(Be,{to:"body"},[l(be,{"enter-active-class":"transition-opacity duration-200 ease-out","enter-from-class":"opacity-0","enter-to-class":"opacity-100","leave-active-class":"transition-opacity duration-150 ease-in","leave-from-class":"opacity-100","leave-to-class":"opacity-0"},{default:S(()=>[m.value?(f(),z("div",xl,[l(be,{appear:"","enter-active-class":"transition duration-200 ease-out","enter-from-class":"opacity-0 translate-y-4 scale-95","enter-to-class":"opacity-100 translate-y-0 scale-100","leave-active-class":"transition duration-150 ease-in","leave-from-class":"opacity-100 translate-y-0 scale-100","leave-to-class":"opacity-0 translate-y-4 scale-95"},{default:S(()=>[m.value?(f(),z("div",{key:0,class:"purchase-alert-modal relative w-full max-w-xl bg-white dark:bg-zinc-900 border border-zinc-200 dark:border-zinc-700 rounded-2xl dark:text-white flex flex-col max-h-[calc(100dvh-2rem)] sm:max-h-[90vh] overflow-hidden shadow-2xl my-auto",onClick:V[8]||(V[8]=he(()=>{},["stop"]))},[e("button",{type:"button",class:"absolute top-3 right-3 z-30 p-2 rounded-lg hover:bg-zinc-100 dark:hover:bg-zinc-800 cursor-pointer transition-colors flex items-center",onClick:I},[l(L,{name:"i-mynaui:x",class:"w-5 h-5 text-zinc-500 dark:text-zinc-400"})]),e("header",wl,[V[9]||(V[9]=e("h1",{class:"text-lg sm:text-xl font-semibold text-center text-zinc-900 dark:text-white px-8 mb-4"}," Настройка виджета оповещения о покупке ",-1)),l(Ve,null,{default:S(()=>[l(Ne,{"show-badge":t(d),"show-qr-code":t(y)},null,8,["show-badge","show-qr-code"])]),_:1})]),e("div",yl,[t(p)?(f(),z("div",hl,[V[10]||(V[10]=e("div",{class:"flex flex-col gap-1 mb-2"},[e("label",{class:"block text-sm font-medium text-gray-900 dark:text-white"}," Ссылка на виджет "),e("p",{class:"text-xs font-semibold text-orange-500"}," Никому не давайте и не показывайте эту ссылку! ")],-1)),e("div",kl,[l
1(t(ke),{modelValue:t(p),"onUpdate:modelValue":V[0]||(V[0]=r=>A(p)?p.value=r:null),readonly:"",fluid:"",class:"flex-1"},null,8,["modelValue"]),ae((f(),Z(t(H),{severity:"secondary",outlined:"",onClick:Y},{default:S(()=>[l(L,{name:"i-mynaui:copy",class:"w-5 h-5"})]),_:1})),[[o,"Скопировать",void 0,{top:!0}]])])])):F("",!0),e("div",_l,[e("div",zl,[l(L,{name:"i-mynaui:info-square-solid",class:"w-5 h-5 text-blue-500 flex-shrink-0 mt-0.5"}),V[11]||(V[11]=e("div",{class:"text-sm text-blue-700 dark:text-blue-300"},[e("p",{class:"font-medium mb-1"},"Рекомендуемый размер виджета"),e("p",null,[X("Для лучшего отображения используйте размер "),e("strong",null,"800 × 400 пикселей")])],-1))])]),e("div",$l,[e("div",Cl,[l(t(ue),{modelValue:t(s),"onUpdate:modelValue":V[1]||(V[1]=r=>A(s)?s.value=r:null),"input-id":"previewModeEnabled"},null,8,["modelValue"]),V[12]||(V[12]=e("label",{for:"previewModeEnabled",class:"cursor-pointer select-none"},[e("div",{class:"text-sm font-medium text-gray-900 dark:text-white"}," Тестовый показ карточки "),e("p",{class:"text-xs text-zinc-500 dark:text-zinc-400 mt-0.5"}," Постоянно отображать карточку для настройки положения в OBS ")],-1))]),e("div",Vl,[V[14]||(V[14]=e("div",null,[e("div",{class:"text-sm font-medium text-gray-900 dark:text-white"}," Какие покупки показывать "),e("p",{class:"text-xs text-zinc-500 dark:text-zinc-400 mt-0.5"}," Фильтр уведомлений по стоимости покупки ")],-1)),e("div",Sl,[(f(),z(ne,null,Te(h,r=>e("label",{key:r.value,for:`filterMode-${r.value}`,class:ce(["flex items-start gap-3 cursor-pointer select-none p-2 -mx-2 rounded-lg hover:bg-zinc-100 dark:hover:bg-zinc-800 transition-colors",{"bg-zinc-100 dark:bg-zinc-800":t(v)===r.value}])},[l(t(ft),{modelValue:t(v),"onUpdate:modelValue":V[2]||(V[2]=N=>A(v)?v.value=N:null),value:r.value,"input-id":`filterMode-${r.value}`,class:"mt-0.5"},null,8,["modelValue","value","input-id"]),e("div",Ul,[e("div",El,P(r.label),1),e("p",Dl,P(r.desc),1),r.value==="min_amount"&&t(v)==="min_amount"?(f(),z("div",Bl,[V[13]||(V[13]=e("label",{for:"minAmountInput",class:"block text-xs font-medium text-zinc-700 dark:text-zinc-300 mb-1"}," Минимальная сумма, ₽ ",-1)),l(t(Se),{id:"minAmountInput",modelValue:t(b),"onUpdate:modelValue":V[3]||(V[3]=N=>A(b)?b.value=N:null),min:0,"show-buttons":"","button-layout":"horizontal",class:"w-full max-w-[200px]",onClick:V[4]||(V[4]=he(()=>{},["prevent"]))},null,8,["modelValue"])])):F("",!0)])],10,Tl)),64))])]),e("div",Pl,[l(t(ue),{modelValue:t(c),"onUpdate:modelValue":V[5]||(V[5]=r=>A(c)?c.value=r:null),"input-id":"purchaseSoundEnabled"},null,8,["modelValue"]),V[15]||(V[15]=e("label",{for:"purchaseSoundEnabled",class:"cursor-pointer select-none"},[e("div",{class:"text-sm font-medium text-gray-900 dark:text-white"}," Звук при появлении алерта "),e("p",{class:"text-xs text-zinc-500 dark:text-zinc-400 mt-0.5"}," Проигрывать короткий звук, когда появляется новая покупка ")],-1))]),e("div",Ml,[l(t(ue),{modelValue:t(d),"onUpdate:modelValue":V[6]||(V[6]=r=>A(d)?d.value=r:null),"input-id":"showBadge"},null,8,["modelValue"]),V[16]||(V[16]=e("label",{for:"showBadge",class:"cursor-pointer select-none"},[e("div",{class:"text-sm font-medium text-gray-900 dark:text-white"}," Показывать бейдж "),e("p",{class:"text-xs text-zinc-500 dark:text-zinc-400 mt-0.5"}," Отображать зелёный значок «+1 покупка» на карточке ")],-1))]),e("div",ql,[l(t(ue),{modelValue:t(y),"onUpdate:modelValue":V[7]||(V[7]=r=>A(y)?y.value=r:null),"input-id":"showQrCode"},null,8,["modelValue"]),V[17]||(V[17]=e("label",{for:"showQrCode",class:"cursor-pointer select-none"},[e("div",{class:"text-sm font-medium text-gray-900 dark:text-white"}," Показывать QR-код "),e("p",{class:"text-xs text-zinc-500 dark:text-zinc-400 mt-0.5"}," Отображать QR-код со ссылкой на страницу товара ")],-1))])])]),e("footer",Il,[l(t(H),{severity:"secondary",outlined:"",class:"flex-1",onClick:I},{default:S(()=>[...V[18]||(V[18]=[X(" Отмена ",-1)])]),_:1}),l(t(H),{severity:"contrast",class:"flex-1",loading:t(k),disabled:!t(Q),onClick:le},{default:S(()=>[X(P(t(D)),1)]),_:1},8,["loading","disabled"])])])):F("",!0)]),_:1})])):F("",!0)]),_:1})])}}}),Fl={class:"featured-preview flex items-center justify-center"},Rl={class:"fp-card-wrapper"},Al={class:"fp-face fp-face-front bg-white dark:bg-zinc-900"},Ol={class:"aspect-square bg-zinc-100 dark:bg-gradient-to-br dark:from-zinc-700 dark:to-zinc-800 relative overflow-hidden"},jl={class:"absolute inset-0 flex items-center justify-center"},Ll={class:"p-2.5 flex flex-col gap-1.5"},Ql={key:0,class:"inline-flex items-center px-2 py-0.5 rounded-md text-xs font-semibold bg-emerald-50 text-emerald-700 border border-emerald-200 dark:bg-emerald-900/30 dark:text-emerald-300 dark:border-emerald-800/80"},Hl={key:1,class:"inline-flex items-center px-2 py-0.5 rounded-md text-xs font-semibold bg-blue-50 text-blue-700 border border-blue-200 dark:bg-blue-900/30 dark:text-blue-300 dark:border-blue-800/80"},Nl={class:"flex items-center justify-between pt-0.5"},Gl={class:"flex items-center gap-1 text-[11px] text-zinc-700 dark:text-zinc-300"},Kl={class:"font-semibold"},Yl={class:"text-zinc-400 dark:text-zinc-500"},Xl={class:"flex items-center gap-1 text-zinc-700 dark:text-zinc-300"},Zl={class:"text-[11px]"},Jl={class:"fp-face fp-face-back bg-white dark:bg-zinc-900"},eo={class:"aspect-square w-full flex items-center justify-center bg-white dark:bg-gradient-to-br dark:from-zinc-700 dark:to-zinc-800"},to={class:"p-2.5 flex flex-col gap-1.5"},ao={key:0,class:"inline-flex items-center px-2 py-0.5 rounded-md text-xs font-semibold bg-emerald-50 text-emerald-700 border border-emerald-200 dark:bg-emerald-900/30 dark:text-emerald-300 dark:border-emerald-800/80"},lo={key:1,class:"inline-flex items-center px-2 py-0.5 rounded-md text-xs font-semibold bg-blue-50 text-blue-700 border border-blue-200 dark:bg-blue-900/30 dark:text-blue-300 dark:border-blue-800/80"},oo={class:"text-zinc-900 dark:text-white text-[13px] font-semibold leading-snug truncate"},so=se({__name:"FeaturedProductsPreviewCard",props:{productTitle:{default:"Тестовый товар"},price:{default:890},isFree:{type:Boolean,default:!1},rating:{default:4.9},reviewsCount:{default:28},likesCount:{default:142},isHovered:{type:Boolean,default:!1},qrUrl:{default:""},flipInterval:{default:5e3},flipDuration:{default:.9},qrHoldDuration:{default:3e3},scale:{default:1},hoverFlip:{type:Boolean,default:!1}}
1,setup(i){const $=i,m=ve(),C=q(()=>$.qrUrl||`${m.public.appUrl||"https://goga.zone"}/u/goga`),a=h=>new Intl.NumberFormat("ru-RU").format(h),p=g(!1);let n=null,s=!1;function v(){s||(n=setTimeout(()=>{s||(p.value=!0,n=setTimeout(()=>{s||(p.value=!1,v())},$.qrHoldDuration))},$.flipInterval))}const{$colorMode:b}=Ae(),c=g(null);let d=null;const y=()=>(b==null?void 0:b.value)==="dark"?"#ffffff":"#18181b",k=()=>{const h=y();return{width:260,height:260,type:"canvas",data:C.value,margin:0,qrOptions:{errorCorrectionLevel:"M"},dotsOptions:{color:h,type:"rounded"},backgroundOptions:{color:"transparent"},cornersSquareOptions:{type:"extra-rounded",color:h},cornersDotOptions:{type:"dot",color:h}}};async function x(){const h=await Pe();c.value&&(d=new h(k()),c.value.innerHTML="",d.append(c.value))}return ee(C,h=>{d&&d.update({data:h})}),ee(()=>b==null?void 0:b.value,()=>{if(!d)return;const h=y();d.update({dotsOptions:{color:h,type:"rounded"},cornersSquareOptions:{type:"extra-rounded",color:h},cornersDotOptions:{type:"dot",color:h}})}),ge(()=>{x(),$.hoverFlip||v()}),ee(()=>$.isHovered,h=>{$.hoverFlip&&(p.value=h)}),Ue(()=>{s=!0,n&&clearTimeout(n),c.value&&(c.value.innerHTML=""),d=null}),(h,M)=>{const W=ie;return f(),z("div",Fl,[e("div",{class:"fp-card-stack",style:lt({"--flip-duration":`${i.flipDuration}s`,"--preview-scale":i.scale})},[M[3]||(M[3]=e("div",{class:"fp-decoy fp-decoy--back bg-zinc-100 dark:bg-zinc-800"},null,-1)),M[4]||(M[4]=e("div",{class:"fp-decoy fp-decoy--mid bg-zinc-100 dark:bg-zinc-800"},null,-1)),e("div",Rl,[e("div",{class:ce(["fp-card-inner",{"fp-is-flipped":t(p)}])},[e("div",Al,[e("div",Ol,[M[0]||(M[0]=e("div",{class:"fp-radial-sheen"},null,-1)),e("div",jl,[l(W,{name:"i-mynaui:image",size:"2.5rem",class:"text-zinc-400 dark:text-zinc-500"})])]),e("div",Ll,[e("div",null,[i.isFree?(f(),z("span",Ql," Бесплатно ")):(f(),z("span",Hl,P(a(i.price))+" ₽ ",1))]),M[1]||(M[1]=e("div",{class:"space-y-1 py-0.5"},[e("div",{class:"h-[13px] bg-zinc-200 dark:bg-zinc-700/80 rounded w-full"}),e("div",{class:"h-[11px] bg-zinc-200/70 dark:bg-zinc-700/60 rounded w-2/3"})],-1)),e("div",Nl,[e("div",Gl,[l(W,{name:"i-mynaui:star-solid",size:"0.75rem",class:"text-amber-400"}),e("span",Kl,P(i.rating.toFixed(1)),1),e("span",Yl,"("+P(i.reviewsCount)+")",1)]),e("div",Xl,[l(W,{name:"i-mynaui:fire-solid",size:"0.875rem",class:"text-orange-400"}),e("span",Zl,P(i.likesCount),1)])])])]),e("div",Jl,[e("div",eo,[e("div",{ref_key:"qrHost",ref:c,class:"fp-qr-host"},null,512)]),e("div",to,[e("div",null,[i.isFree?(f(),z("span",ao," Бесплатно ")):(f(),z("span",lo,P(a(i.price))+" ₽ ",1))]),e("p",oo,P(i.productTitle),1),M[2]||(M[2]=e("p",{class:"text-zinc-500 dark:text-zinc-400 text-[11px] leading-snug"}," Наведите камеру — оплатите за пару секунд ",-1))])])],2)])],4)])}}}),Ge=xe(so,[["__scopeId","data-v-ddf54363"]]),te={flipInterval:{min:500,max:6e5,default:15e3},qrHold:{min:0,max:6e5,default:4e3},switchDuration:{min:0,max:1e4,default:600}},ye=20,no=(i,$)=>{if(i.length!==$.length)return!1;for(let m=0;m<i.length;m++)if(i[m]!==$[m])return!1;return!0};function io(i){const $=ve(),m=pe(),{createWidget:C,updateWidget:a}=we(),p=g(""),n=g(""),s=g(te.flipInterval.default),v=g(te.qrHold.default),b=g(te.switchDuration.default),c=g([]),d=g(!1),y=g(!0),k=g(!1),x=g([]),h=g(!1),M=q(()=>{const o=new Map;for(const r of x.value)o.set(r.id,r);return o}),W=q(()=>new Set(c.value)),O=q(()=>{const o=!h.value&&x.value.length>0;return c.value.map(r=>{const N=M.value.get(r);return N?{...N,missing:!1}:{id:r,title:`#${r}`,missing:o}})}),K=q(()=>x.value.filter(o=>!W.value.has(o.id))),R=q(()=>c.value.length>=ye);let T=null;const _=()=>{T={productIds:[...c.value],flipIntervalMs:s.value,qrHoldMs:v.value,switchDurationMs:b.value},k.value=!1},w=()=>{y.value||!T||(k.value=s.value!==T.flipIntervalMs||v.value!==T.qrHoldMs||b.value!==T.switchDurationMs||!no(c.value,T.productIds))},U=o=>`${$.public.widgetBaseUrl}/featured-products/?token=${o}`,Q=()=>{y.value=!0;const o=i.value;if(o&&o.token){n.value=o.token;const r=o.settings;r&&typeof r=="object"&&!Array.isArray(r)&&(s.value=r.flip_interval_ms??te.flipInterval.default,v.value=r.qr_hold_ms??te.qrHold.default,b.value=r.switch_duration_ms??te.switchDuration.default,c.value=Array.isArray(r.product_ids)?[...r.product_ids]:[]),p.value=U(o.token)}_(),y.value=!1},D=async()=>{var o;
1if(!h.value)try{h.value=!0;const r=await xt();x.value=((o=r==null?void 0:r.value)==null?void 0:o.data)||[]}catch(r){console.error("Failed to load products:",r),m.add({severity:"error",summary:"Ошибка",detail:"Не удалось загрузить список товаров",life:4e3})}finally{h.value=!1}},u=o=>{if(R.value){m.add({severity:"warn",summary:"Ограничение",detail:`Максимум ${ye} товаров в подборке`,life:3e3});return}W.value.has(o)||(c.value=[...c.value,o])},Y=o=>{c.value=c.value.filter((r,N)=>N!==o)},I=o=>{if(o<=0)return;const r=[...c.value];[r[o-1],r[o]]=[r[o],r[o-1]],c.value=r},le=o=>{if(o>=c.value.length-1)return;const r=[...c.value];[r[o],r[o+1]]=[r[o+1],r[o]],c.value=r},B=()=>{c.value=[]},V=()=>({product_ids:[...c.value],flip_interval_ms:s.value,qr_hold_ms:v.value,switch_duration_ms:b.value}),L=async()=>{if(!d.value)try{d.value=!0;const o=V();let r;if(n.value){const N={type:"featured-products",active:!0,token:n.value,settings:o};r=await a(N)}else r=await C({type:"featured-products",active:!0,settings:o});return r!=null&&r.token&&(n.value=r.token,p.value=U(r.token)),m.add({severity:"success",summary:"Успешно",detail:n.value?"Виджет обновлён":"Виджет создан",life:3e3}),_(),!0}catch(o){return console.error("Failed to save widget:",o),m.add({severity:"error",summary:"Ошибка",detail:"Не удалось сохранить виджет",life:3e3}),!1}finally{d.value=!1}};return ee([s,v,b,c],()=>w(),{deep:!0}),ee(i,()=>Q(),{deep:!0}),{widgetUrl:p,widgetToken:n,flipIntervalMs:s,qrHoldMs:v,switchDurationMs:b,productIds:c,isSaving:d,hasUnsavedChanges:k,isLoadingProducts:h,allProducts:x,selectedProducts:O,availableProducts:K,isMaxReached:R,loadWidgetData:Q,loadProducts:D,addProduct:u,removeProduct:Y,moveUp:I,moveDown:le,clearProducts:B,save:L}}const ro={key:0,class:"fixed inset-0 z-52 flex items-center justify-center p-4 sm:p-6 bg-black/50 backdrop-blur-sm"},uo={class:"flex-1 overflow-y-auto px-4 sm:px-6 py-5"},co={class:"flex items-center justify-center"},mo={key:0,class:"mb-6"},vo={class:"flex gap-2"},fo={class:"p-4 mb-6 bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800 rounded-lg"},po={class:"flex items-start gap-3"},go={class:"flex flex-col gap-4"},bo={class:"rounded-xl border border-zinc-200 dark:border-zinc-700 bg-zinc-50/50 dark:bg-zinc-800/40 p-4 flex flex-col gap-3"},xo={class:"flex items-start justify-between gap-3"},wo={class:"text-xs text-zinc-500 dark:text-zinc-400 mt-0.5"},yo={class:"text-xs font-medium text-zinc-500 dark:text-zinc-400 whitespace-nowrap"},ho=["aria-label"],ko={class:"inline-flex items-center justify-center w-6 h-6 rounded-md bg-zinc-100 dark:bg-zinc-800 text-xs font-semibold text-zinc-600 dark:text-zinc-300 shrink-0","aria-hidden":"true"},_o={class:"flex-1 min-w-0 flex items-center gap-1.5"},zo=["title"],$o={class:"flex items-center gap-1 shrink-0"},Co=["disabled","aria-label","onClick"],Vo=["disabled","aria-label","onClick"],So=["aria-label","onClick"],To={class:"flex flex-col sm:flex-row gap-2 min-w-0"},Uo={key:2,class:"flex justify-end"},Eo={class:"rounded-xl border border-zinc-200 dark:border-zinc-700 bg-zinc-50/50 dark:bg-zinc-800/40 p-4 flex flex-col gap-2"},Do={class:"text-xs text-zinc-500 dark:text-zinc-400 mt-0.5"},Bo={class:"rounded-xl border border-zinc-200 dark:border-zinc-700 bg-zinc-50/50 dark:bg-zinc-800/40 p-4 flex flex-col gap-2"},Po={class:"text-xs text-zinc-500 dark:text-zinc-400 mt-0.5"},Mo={class:"rounded-xl border border-zinc-200 dark:border-zinc-700 bg-zinc-50/50 dark:bg-zinc-800/40 p-4 flex flex-col gap-2"},qo={class:"text-xs text-zinc-500 dark:text-zinc-400 mt-0.5"},Io={class:"shrink-0 px-4 sm:px-6 py-4 border-t border-zinc-200 dark:border-zinc-700 flex gap-3"},Wo=se({__name:"FeaturedProductsWidgetSettingsModal",props:re({widget:{}},{show:{type:Boolean,required:!0},showModifiers:{}}),emits:re(["saved","close"],["update:show"]),setup(i,{emit:$}){const m=_e(i,"show");Oe(m);const C=$,a=i,p=pe(),n=ot(a,"widget"),{widgetUrl:s,flipIntervalMs:v,qrHoldMs:b,switchDurationMs:c,productIds:d,isSaving:y,hasUnsavedChanges:k,isLoadingProducts:x,allProducts:h,selectedProducts:M,availableProducts:W,isMaxReached:O,loadWidgetData:K,loadProducts:R,addProduct:T,removeProduct:_,moveUp:w,moveDown:U,clearProducts:Q,save:D}=io(n),u=g([]),Y=g(null),I=q(()=>ye-d.value.length),le=g(null);let B=null;const V=(oe,E)=>{if(oe===E)return;const J=[...d.value],[de]=J.splice(oe,1);J.splice(E,0,de),d.value=J},L=async()=>
1{if(B&&(B.destroy(),B=null),!le.value)return;const{default:oe}=await nt(async()=>{const{default:E}=await import("./DO1hSmLF.js").then(J=>J.s);return{default:E}},[],import.meta.url);B=oe.create(le.value,{animation:200,handle:".featured-products__drag-handle",ghostClass:"featured-products__item--ghost",chosenClass:"featured-products__item--chosen",onEnd:E=>{if(E.oldIndex==null||E.newIndex==null)return;const J=le.value,de=J==null?void 0:J.children[E.newIndex];J&&de&&(J.removeChild(de),J.insertBefore(de,J.children[E.oldIndex]||null)),V(E.oldIndex,E.newIndex)}})};ee([le,()=>d.value.length>0],([oe,E])=>{oe&&E?L():B&&(B.destroy(),B=null)},{flush:"post"}),Ue(()=>{B&&(B.destroy(),B=null)});const{activate:o,deactivate:r}=pt(Y,{immediate:!1,escapeDeactivates:!1,allowOutsideClick:!0,fallbackFocus:()=>Y.value});ee(m,async oe=>{oe?(await me(),o()):r()}),Ue(()=>{r()});const N=q(()=>a.widget&&a.widget.active===!1?!0:k.value),fe=q(()=>a.widget&&a.widget.active===!1?"Подключить":"Сохранить");ge(()=>{K(),R()});const j=()=>{m.value=!1,C("close")};st("keydown",oe=>{oe.key==="Escape"&&m.value&&j()});const Ke=async()=>{try{await navigator.clipboard.writeText(s.value),p.add({severity:"success",summary:"Успешно",detail:"Ссылка скопирована в буфер обмена",life:3e3})}catch(oe){console.error("Failed to copy:",oe),p.add({severity:"error",summary:"Ошибка",detail:"Не удалось скопировать ссылку",life:3e3})}},Ye=()=>{if(u.value.length){for(const oe of u.value){if(d.value.length>=ye)break;T(oe)}u.value=[]}},Xe=async()=>{await D()&&C("saved")};return(oe,E)=>{const J=ie,de=Ce("tooltip");return f(),Z(Be,{to:"body"},[l(be,{"enter-active-class":"transition-opacity duration-200 ease-out","enter-from-class":"opacity-0","enter-to-class":"opacity-100","leave-active-class":"transition-opacity duration-150 ease-in","leave-from-class":"opacity-100","leave-to-class":"opacity-0"},{default:S(()=>[m.value?(f(),z("div",ro,[l(be,{appear:"","enter-active-class":"transition duration-200 ease-out","enter-from-class":"opacity-0 translate-y-4 scale-95","enter-to-class":"opacity-100 translate-y-0 scale-100","leave-active-class":"transition duration-150 ease-in","leave-from-class":"opacity-100 translate-y-0 scale-100","leave-to-class":"opacity-0 translate-y-4 scale-95"},{default:S(()=>[m.value?(f(),z("div",{key:0,ref_key:"modalRef",ref:Y,role:"dialog","aria-modal":"true","aria-labelledby":"featured-products-modal-title",tabindex:"-1",class:"featured-products-modal relative w-full max-w-xl bg-white dark:bg-zinc-900 border border-zinc-200 dark:border-zinc-700 rounded-2xl dark:text-white flex flex-col max-h-[calc(100dvh-2rem)] sm:max-h-[90vh] overflow-hidden shadow-2xl my-auto",onClick:E[5]||(E[5]=he(()=>{},["stop"]))},[e("button",{type:"button","aria-label":"Закрыть модальное окно",class:"absolute top-3 right-3 z-30 p-2 rounded-lg hover:bg-zinc-100 dark:hover:bg-zinc-800 cursor-pointer transition-colors inline-flex items-center justify-center",onClick:j},[l(J,{name:"i-mynaui:x",class:"w-5 h-5 text-zinc-500 dark:text-zinc-400"})]),E[16]||(E[16]=e("header",{class:"shrink-0 px-4 sm:px-6 pt-5 sm:pt-6 pb-4 border-b border-zinc-200 dark:border-zinc-700"},[e("h1",{id:"featured-products-modal-title",class:"text-lg sm:text-xl font-semibold text-center text-zinc-900 dark:text-white px-8"}," Настройка виджета карусели товаров ")],-1)),e("div",uo,[l(Ve,{class:"mb-6 min-h-[280px]"},{default:S(()=>[e("div",co,[l(Ge)])]),_:1}),t(s)?(f(),z("div",mo,[E[6]||(E[6]=e("div",{class:"flex flex-col gap-1 mb-2"},[e("label",{class:"block text-sm font-medium text-gray-900 dark:text-white"}," Ссылка на виджет "),e("p",{class:"text-xs font-semibold text-orange-500"}," Никому не давайте и не показывайте эту ссылку! ")],-1)),e("div",vo,[l(t(ke),{modelValue:t(s),"onUpdate:modelValue":E[0]||(E[0]=G=>A(s)?s.value=G:null),readonly:"",fluid:"",class:"flex-1"},null,8,["modelValue"]),ae((f(),Z(t(H),{severity:"secondary",outlined:"",onClick:Ke},{default:S(()=>[l(J,{name:"i-mynaui:copy",class:"w-5 h-5"})]),_:1})),[[de,"Скопировать",void 0,{top:!0}]])])])):F("",!0),e("div",fo,[e("div",po,[l(J,{name:"i-mynaui:info-square-solid",class:"w-5 h-5 text-blue-500 flex-shrink-0 mt-0.5"}),E[7]||(E[7]=e("div",{class:"text-sm text-blue-700 dark:text-blue-300"},[e("p",{class:"font-medium mb-1"},"Рекомендуемый размер виджета"),e("p",null,[X(" Для лучшего отображения используйте размер "),e("strong",null,"350 × 450 пикселей")])],-1))])]),e("div",go,[e("div",bo,[e("div",xo,[e("div",null,[E[8]||(E[8]=e("div",{class:"text-sm font-medium text-gray-900 dark:text-white"}," Подборка товаров ",-1)),e("p",wo," До "+P(t(ye))+" товаров. Порядок определяет очерёдность показа в карусели ",1)]),e("span",yo,P(t(d).length)+" / "+P(t(ye)),1)]),t(d).length===0?(f(),Z(t(bt),{key:0,severity:"info",closable:!1,class:"text-xs"},{default:S(()=>[...E[9]||(E[9]=[X(" Подборка пуста — будут показаны последние 10 опубликованных товаров автоматически ",-1)])]),_:1})):F("",!0),t(d).length?(f(),z("ul",{key:1,ref_key:"sortableListRef",ref:le,class:"flex flex-col gap-2"},[(f(!0),z(ne,null,Te(t(M),(G,ze)=>(f(),z("li",{key:G.id,class:ce(["featured-products__item flex items-center gap-2 p-2 rounded-lg border",G.missing?"bg-amber-50 dark:bg-amber-900/10 border-amber-200 dark:border-amber-800/60":"bg-white dark:bg-zinc-900 border-zinc-200 dark:border-zinc-700"])},[e("button",{type:"button",class:"featured-products__drag-handle inline-flex items-center justify-center w-6 h-6 rounded-md bg-zinc-100 dark:bg-zinc-800 text-zinc-400 dark:text-zinc-500 shrink-0 cursor-grab active:cursor-grabbing hover:bg-zinc-200 dark:hover:bg-zinc-700 transition-colors","aria-label":`Перетащить «${G.title}»`},[...E[10]||(E[10]=[e("svg",{class:"w-3 h-3",viewBox:"0 0 18 30",fill:"currentColor",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true"},[e("rect",{width:"6",height:"6",rx:"2"}),e("rect",{y:"12",width:"6",height:"6",rx:"2"}),e("rect",{y:"24",width:"6",height:"6",rx:"2"}),e("rect",{x:"12",width:"6",height:"6",rx:"2"}),e("rect",{x:"12",y:"12",width:"6",height:"6",rx:"2"}),e("rect",{x:"12",y:"24",width:"6",height:"6",rx:"2"})],-1)])],8,ho),e("span",ko,P(ze+1),1),e("span",_o,[G.missing?ae((f(),Z(J,{key:0,name:"i-mynaui:danger-triangle",class:"w-4 h-4 text-amber-500 shrink-0"},null,512)),[[de,"Товар недоступен или удалён",void 0,{top:!0}]]):F("",!0),e("span",{class:ce(["text-sm truncate",G.missing?"text-amber-700 dark:text-amber-400":"text-zinc-900 dark:text-white"]),title:G.missing?`Товар недоступен (ID ${G.id})`:G.title},P(G.missing?`Недоступен (ID ${G.id}
1)`:G.title),11,zo)]),e("div",$o,[ae((f(),z("button",{type:"button",class:"inline-flex items-center justify-center p-1.5 rounded-md hover:bg-zinc-100 dark:hover:bg-zinc-800 disabled:opacity-30 disabled:cursor-not-allowed cursor-pointer transition-colors",disabled:ze===0,"aria-label":`Переместить «${G.title}» выше`,onClick:Me=>t(w)(ze)},[l(J,{name:"i-mynaui:chevron-up",class:"w-4 h-4 text-zinc-500 dark:text-zinc-400 block"})],8,Co)),[[de,"Выше",void 0,{top:!0}]]),ae((f(),z("button",{type:"button",class:"inline-flex items-center justify-center p-1.5 rounded-md hover:bg-zinc-100 dark:hover:bg-zinc-800 disabled:opacity-30 disabled:cursor-not-allowed cursor-pointer transition-colors",disabled:ze===t(d).length-1,"aria-label":`Переместить «${G.title}» ниже`,onClick:Me=>t(U)(ze)},[l(J,{name:"i-mynaui:chevron-down",class:"w-4 h-4 text-zinc-500 dark:text-zinc-400 block"})],8,Vo)),[[de,"Ниже",void 0,{top:!0}]]),ae((f(),z("button",{type:"button",class:"inline-flex items-center justify-center p-1.5 rounded-md hover:bg-red-50 dark:hover:bg-red-900/30 cursor-pointer transition-colors","aria-label":`Удалить «${G.title}» из подборки`,onClick:Me=>t(_)(ze)},[l(J,{name:"i-mynaui:trash",class:"w-4 h-4 text-red-500 block"})],8,So)),[[de,"Удалить",void 0,{top:!0}]])])],2))),128))],512)):F("",!0),e("div",To,[l(t(gt),{modelValue:t(u),"onUpdate:modelValue":E[1]||(E[1]=G=>A(u)?u.value=G:null),options:t(W),"option-label":"title","option-value":"id",filter:"",display:"chip","selection-limit":t(I),"virtual-scroller-options":{itemSize:38},placeholder:t(x)?"Загрузка товаров...":t(O)?`Достигнут лимит ${t(ye)} товаров`:"Выберите товары для добавления",disabled:t(x)||t(O)||!t(W).length,"empty-message":t(h).length?"Все товары уже в подборке":"У вас пока нет товаров","empty-filter-message":"Ничего не найдено",fluid:"",class:"flex-1 min-w-0"},null,8,["modelValue","options","selection-limit","placeholder","disabled","empty-message"]),l(t(H),{severity:"secondary",class:"!gap-1.5 shrink-0",disabled:!t(u).length||t(O),onClick:Ye},{default:S(()=>[l(J,{name:"i-mynaui:plus",class:"w-4 h-4 block"}),e("span",null,P(t(u).length>1?`Добавить (${t(u).length})`:"Добавить"),1)]),_:1},8,["disabled"])]),t(d).length?(f(),z("div",Uo,[l(t(H),{severity:"secondary",text:"",size:"small",onClick:t(Q)},{default:S(()=>[...E[11]||(E[11]=[X(" Очистить подборку ",-1)])]),_:1},8,["onClick"])])):F("",!0)]),e("div",Eo,[e("div",null,[E[12]||(E[12]=e("label",{for:"flipIntervalMs",class:"text-sm font-medium text-gray-900 dark:text-white"}," Интервал переключения карточек ",-1)),e("p",Do," Через сколько миллисекунд показывать следующий товар. Допустимо "+P(t(te).flipInterval.min)+"–"+P(t(te).flipInterval.max)+" мс, дефолт "+P(t(te).flipInterval.default),1)]),l(t(Se),{id:"flipIntervalMs",modelValue:t(v),"onUpdate:modelValue":E[2]||(E[2]=G=>A(v)?v.value=G:null),min:t(te).flipInterval.min,max:t(te).flipInterval.max,step:500,suffix:" мс","show-buttons":"","button-layout":"horizontal",class:"w-full max-w-[260px]"},null,8,["modelValue","min","max"])]),e("div",Bo,[e("div",null,[E[13]||(E[13]=e("label",{for:"qrHoldMs",class:"text-sm font-medium text-gray-900 dark:text-white"}," Время удержания QR-кода ",-1)),e("p",Po," Сколько миллисекунд держать QR-код на экране. Допустимо "+P(t(te).qrHold.min)+"–"+P(t(te).qrHold.max)+" мс, дефолт "+P(t(te).qrHold.default),1)]),l(t(Se),{id:"qrHoldMs",modelValue:t(b),"onUpdate:modelValue":E[3]||(E[3]=G=>A(b)?b.value=G:null),min:t(te).qrHold.min,max:t(te).qrHold.max,step:500,suffix:" мс","show-buttons":"","button-layout":"horizontal",class:"w-full max-w-[260px]"},null,8,["modelValue","min","max"])]),e("div",Mo,[e("div",null,[E[14]||(E[14]=e("label",{for:"switchDurationMs",class:"text-sm font-medium text-gray-900 dark:text-white"}," Длительность анимации перехода ",-1)),e("p",qo," Сколько миллисекунд занимает переключение между карточками. Допустимо "+P(t(te).switchDuration.min)+"–"+P(t(te).switchDuration.max)+" мс, дефолт "+P(t(te).switchDuration.default),1)]),l(t(Se),{id:"switchDurationMs",modelValue:t(c),"onUpdate:modelValue":E[4]||(E[4]=G=>A(c)?c.value=G:null),min:t(te).switchDuration.min,max:t(te).switchDuration.max,step:50,suffix:" мс","show-buttons":"","button-layout":"horizontal",class:"w-full max-w-[260px]"},null,8,["modelValue","min","max"])])])]),e("footer",Io,[l(t(H),{severity:"secondary",outlined:"",class:"flex-1",onClick:j},{default:S(()=>[...E[15]||(E[15]=[X(" Отмена ",-1)])]),_:1}),l(t(H),{severity:"contrast",class:"flex-1",loading:t(y),disabled:!t(N),onClick:Xe},{default:S(()=>[X(P(t(fe)),1)]),_:1},8,["loading","disabled"])])],512)):F("",!0)]),_:1})])):F("",!0)]),_:1})])}}}),Fo=xe(Wo,[["__scopeId","data-v-21711d1b"]]),Ro=["all","products","donations"],Ao=["purchase-
1alert","featured-products"],Oo=["donation-alert","qr-code","total-amount","top-donor"],jo=i=>typeof i=="string"&&Ro.includes(i);function Lo(){const i=it(),$=rt(),m=q(()=>jo(i.query.tab)?i.query.tab:"all"),C=T=>{$.replace({query:{...i.query,tab:T}})},{getWidgets:a}=we(),p=g([]),n=g(!1),s=q(()=>{const T={};for(const _ of p.value)T[_.type]=_;return T}),v=q(()=>s.value["donation-alert"]),b=q(()=>s.value["total-amount"]),c=q(()=>s.value["qr-code"]),d=q(()=>s.value["top-donor"]),y=q(()=>s.value["purchase-alert"]),k=q(()=>s.value["featured-products"]),x=Ao.length,h=Oo.length,W=[{value:"all",label:"Все",count:x+h},{value:"products",label:"Товары",count:x},{value:"donations",label:"Донаты",count:h}],O=async()=>{try{n.value=!0;const T=await a();p.value=(T==null?void 0:T.data)||[]}catch(T){console.error("Failed to load widgets:",T)}finally{n.value=!1}},K=dt({"donation-alert":!1,"total-amount":!1,"qr-code":!1,"top-donor":!1,"purchase-alert":!1,"featured-products":!1}),R=T=>{T in K&&(K[T]=!0)};return ge(()=>{O()}),{activeTab:m,setTab:C,tabs:W,widgets:p,loading:n,donationAlertWidget:v,totalAmountWidget:b,qrCodeWidget:c,topDonorWidget:d,purchaseAlertWidget:y,featuredProductsWidget:k,loadWidgets:O,modals:K,openWidget:R}}const Qo="widgets_onboarding_seen_v1",Ho=[{title:"Виджеты для стримов",description:"Подключайте к OBS и другим стрим-программам",icon:"i-mynaui:layout",gradient:"from-purple-500 to-indigo-600",content:"Виджеты — это браузерные источники для OBS, Streamlabs и аналогов. Добавьте ссылку на виджет в сцену стрима, и зрители будут видеть оповещения и счётчики прямо на эфире."},{title:"Виджеты для товаров",description:"Оповещение о покупке вашего продукта",icon:"i-mynaui:shopping-bag",gradient:"from-pink-500 to-rose-600",content:"Оповещение о покупке с именем покупателя, названием товара и QR-кодом — новые зрители смогут сразу купить тот же продукт. Социальное подтверждение увеличивает конверсию."},{title:"Виджеты для донатов",description:"Алерты, QR-код, общая сумма и топ донатеров",icon:"i-mynaui:heart",gradient:"from-emerald-500 to-teal-600",content:"Оповещение о донате с озвучкой сообщения, QR-код для быстрой поддержки, счётчик собранной суммы и список топ-донатеров — всё, что нужно для интерактива со зрителями."},{title:"Готово к запуску",description:"Настройте виджет и добавьте ссылку в OBS",icon:"i-mynaui:rocket",gradient:"from-orange-500 to-red-600",content:"Выберите виджет, настройте внешний вид и скопируйте ссылку — её достаточно вставить как «Браузерный источник» в OBS. Можно изменить параметры в любой момент."}];function No(){const i=g(!1);return ge(()=>{const $=ut(Qo,!1);$.value||(i.value=!0,$.value=!0)}),{show:i,steps:Ho}}const Go={class:"p-2 lg:p-5 page__main flex justify-center w-full"},Ko={class:"container flex flex-col gap-5"},Yo={class:"flex flex-wrap gap-2"},Xo=["onClick"],Zo=["aria-label"],Jo={class:"ui-fade-in flex flex-col gap-3"},es={key:0,class:"text-lg font-semibold text-zinc-900 dark:text-white"},ts={class:"grid grid-cols-1 lg:grid-cols-2 gap-4"},as={class:"ui-fade-in flex flex-col gap-3"},ls={key:0,class:"text-lg font-semibold text-zinc-900 dark:text-white"},os={class:"grid grid-cols-1 lg:grid-cols-2 gap-4"},ss=se({__name:"widgets",setup(i){ct({title:"Виджеты"});const $=ve(),m=q(()=>!!$.public.widgetTutorialVideoUrl),{activeTab:C,setTab:a,tabs:p,loading:n,donationAlertWidget:s,totalAmountWidget:v,qrCodeWidget:b,topDonorWidget:c,purchaseAlertWidget:d,featuredProductsWidget:y,loadWidgets:k,modals:x,openWidget:h}=Lo(),{show:M,steps:W}=No(),O=q(()=>C.value==="all"||C.value==="products"),K=q(()=>C.value==="all"||C.value==="donations"),R=q(()=>C.value==="all");return(T,_)=>{var w,U,Q,D,u,Y;return f(),z(ne,null,[l(wt,{show:t(M),"onUpdate:show":_[0]||(_[0]=I=>A(M)?M.value=I:null),steps:t(W)},null,8,["show","steps"]),l(ya,{show:t(x)["donation-alert"],"onUpdate:show":_[1]||(_[1]=I=>
1t(x)["donation-alert"]=I),widget:t(s),onSaved:t(k)},null,8,["show","widget","onSaved"]),l(Pa,{show:t(x)["total-amount"],"onUpdate:show":_[2]||(_[2]=I=>t(x)["total-amount"]=I),widget:t(v),onSaved:t(k)},null,8,["show","widget","onSaved"]),l(Qa,{show:t(x)["qr-code"],"onUpdate:show":_[3]||(_[3]=I=>t(x)["qr-code"]=I),widget:t(b),onSaved:t(k)},null,8,["show","widget","onSaved"]),l(tl,{show:t(x)["top-donor"],"onUpdate:show":_[4]||(_[4]=I=>t(x)["top-donor"]=I),widget:t(c),onSaved:t(k)},null,8,["show","widget","onSaved"]),l(Wl,{show:t(x)["purchase-alert"],"onUpdate:show":_[5]||(_[5]=I=>t(x)["purchase-alert"]=I),widget:t(d),onSaved:t(k)},null,8,["show","widget","onSaved"]),l(Fo,{show:t(x)["featured-products"],"onUpdate:show":_[6]||(_[6]=I=>t(x)["featured-products"]=I),widget:t(y),onSaved:t(k)},null,8,["show","widget","onSaved"]),e("main",Go,[e("div",Ko,[l(mt,{title:"Виджеты"}),e("div",Yo,[(f(!0),z(ne,null,Te(t(p),I=>(f(),z("button",{key:I.value,type:"button",class:ce(["px-4 py-2 rounded-full text-sm font-medium whitespace-nowrap transition-colors cursor-pointer inline-flex items-center gap-2",[t(C)===I.value?"bg-zinc-700 dark:bg-white text-white dark:text-zinc-900":"bg-zinc-100 dark:bg-zinc-800 text-zinc-700 dark:text-zinc-300 hover:bg-zinc-200 dark:hover:bg-zinc-700"]]),onClick:le=>t(a)(I.value)},[e("span",null,P(I.label),1),I.count>0?(f(),z("span",{key:0,class:ce(["inline-flex items-center justify-center min-w-[20px] h-5 px-1.5 rounded-full text-[11px] font-semibold",t(C)===I.value?"bg-white/20 text-current dark:bg-zinc-900/15":"bg-zinc-200 text-zinc-700 dark:bg-zinc-700 dark:text-zinc-300"]),"aria-label":`Всего виджетов: ${I.count}`},P(I.count),11,Zo)):F("",!0)],10,Xo))),128))]),ae(e("div",Jo,[t(R)?(f(),z("h2",es," Товары ")):F("",!0),e("div",ts,[l($e,{"widget-type":"purchase-alert",title:"Виджет оповещения о покупке","preview-component":Ne,"is-active":((w=t(d))==null?void 0:w.active)||!1,loading:t(n),onClick:t(h)},null,8,["is-active","loading","onClick"]),l($e,{"widget-type":"featured-products",title:"Виджет карусели товаров","preview-component":Ge,"preview-props":{scale:.55,hoverFlip:!0},"is-active":((U=t(y))==null?void 0:U.active)||!1,loading:t(n),onClick:t(h)},null,8,["is-active","loading","onClick"])])],512),[[qe,t(O)]]),ae(e("div",as,[t(R)?(f(),z("h2",ls," Донаты ")):F("",!0),e("div",os,[t(m)?(f(),Z(zt,{key:0})):F("",!0),l($e,{"widget-type":"donation-alert",title:"Виджет оповещения о донате с озвучкой","preview-component":je,"is-active":((Q=t(s))==null?void 0:Q.active)||!1,loading:t(n),onClick:t(h)},null,8,["is-active","loading","onClick"]),l($e,{"widget-type":"qr-code",title:"Виджет QR кода на донат","preview-component":vt,"is-active":((D=t(b))==null?void 0:D.active)||!1,loading:t(n),onClick:t(h)},null,8,["is-active","loading","onClick"]),l($e,{"widget-type":"total-amount",title:"Виджет об общей собранной сумме","preview-component":Le,"is-active":((u=t(v))==null?void 0:u.active)||!1,loading:t(n),onClick:t(h)},null,8,["is-active","loading","onClick"]),l($e,{"widget-type":"top-donor",title:"Виджет топ донаторов","preview-component":Qe,"is-active":((Y=t(c))==null?void 0:Y.active)||!1,loading:t(n),onClick:t(h)},null,8,["is-active","loading","onClick"])])],512),[[qe,t(K)]])])])],64)}}}),Ps=xe(ss,[["__scopeId","data-v-5d9ad23f"]]);export{Ps 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.