PageSourceSearch

https://xn--80aapampemcchfmo7a3c9ehj.xn--p1ai/front/dist/assets/SubscribeBlock-3edc4efc.js

js xn--80aapampemcchfmo7a3c9ehj.xn--p1ai collected 2026-10-02 03:23:45 UTC 9,448 bytes, 1 lines download raw bytes

1import{i as S,o,c as v,B as d,w as p,O as h,a as b,_ as y,p as E,F as V,q as oe,m as k,n as H,H as re,K as le,L as ue,N as ne,r as n,k as ce,z as de,I as Y,u as be,Y as M,x as O,E as me}from"./index-d8daf042.js";import{a as pe}from"./formats-ff81e4e8.js";import{_ as ve,a as fe}from"./PopupSuccess-564653b6.js";import{_ as _e}from"./SpinnerLoading-fb5f1d55.js";import{_ as ge}from"./CustomInput-ef6b5579.js";import{_ as Se}from"./PrettyError-be7056d3.js";import"./lockPageScroll-aebc4fcf.js";const J="subscribes",he=t=>localStorage.setItem(J,JSON.stringify(t)),G=()=>{try{return JSON.parse(localStorage.getItem(J))||[]}catch{return[]}};const ye=b("h2",{class:"subscribe-topics-form__title title-md"}," Подписка на интересные темы ",-1),Ee={key:0,class:"subscribe-topics-form__tags"},ke=["innerHTML"],Re=["innerHTML"],Ce={class:"subscribe-topics-form__email"},Ne={class:"subscribe-topics-form__email-row"},Te=b("div",{class:"subscribe-topics-form__auth-hint test-sm color-neutral-500"}," Вы можете авторизоваться в личном кабинете ",-1),xe={__name:"SubscribeTopicsForm",props:{tags:{type:Array,default:()=>[]},projectName:{type:String,default:""},allTags:{type:Boolean,default:!0},isAuthorized:{type:Boolean,default:!1},email:{type:String,default:""},emailError:{type:String,default:""},inProgress:{type:Boolean,default:!1}},emits:["update:email","toggle-tag","toggle-project","submit","open-auth","validate-email"],setup(t,{emit:m}){const i=t,c=m,T=S(()=>String(i.email??"").trim().length>0);function x(){c("submit")}return(I,u)=>(o(),v("form",{class:H(["subscribe-topics-form",{"subscribe-topics-form--progress":t.inProgress}]),onSubmit:re(x,["prevent"])},[ye,t.projectName||t.tags.length?(o(),v("div",Ee,[t.projectName?(o(),d(y,{key:0,class:"subscribe-topics-form__tag",type:"button",size:"2md",theme:"secondary-3-outline","is-active":t.allTags,"is-disabled":t.inProgress,ellipsis:"",onClick:u[0]||(u[0]=s=>c("toggle-project"))},{default:p(()=>[h(" Нацпроект «"),b("span",{innerHTML:t.projectName},null,8,ke),h("» ")]),_:1},8,["is-active","is-disabled"])):E("",!0),(o(!0),v(V,null,oe(t.tags,s=>(o(),d(y,{key:s.id,class:"subscribe-topics-form__tag",type:"button",size:"2md",theme:"secondary-3-outline","is-active":s.checked,"is-disabled":t.inProgress,ellipsis:"",onClick:R=>c("toggle-tag",s)},{default:p(()=>[b("span",{innerHTML:s.name},null,8,Re)]),_:2},1032,["is-active","is-disabled","onClick"]))),128))])):E("",!0),t.isAuthorized?(o(),d(y,{key:2,class:"subscribe-topics-form__submit",theme:"dark",type:"submit","is-disabled":t.inProgress},{default:p(()=>[h(" Подписаться ")]),_:1},8,["is-disabled"])):(o(),v(V,{key:1},[b("div",Ce,[b("div",Ne,[k(ge,{"model-value":t.email,class:"subscribe-topics-form__input","input-class":"subscribe-topics-form__email-input",label:t.email?"E-mail":"Ваша электронная почта",type:"email",autocomplete:"email",disabled:t.inProgress,"is-error":!!t.emailError,"onUpdate:modelValue":u[1]||(u[1]=s=>c("update:email",s)),onFocusout:u[2]||(u[2]=s=>c("validate-email"))},null,8,["model-value","label","disabled","is-error"]),T.value?(o(),d(y,{key:0,class:"subscribe-topics-form__email-btn",theme:"dark",size:"md",type:"submit","is-disabled":t.inProgress},{default:p(()=>[h(" Подписаться ")]),_:1},8,["is-disabled"])):E("",!0)]),k(Se,{class:"subscribe-topics-form__error text-sm",text:t.emailError,visible:!!t.emailError},null,8,["text","visible"])]),Te,k(y,{class:"subscribe-topics-form__submit",theme:"dark",type:"button","is-disabled":t.inProgress,onClick:u[3]||(u[3]=s=>c("open-auth"))},{default:p(()=>[h(" Авторизоваться ")]),_:1},8,["is-disabled"])],64))],34))}};const Ae={key:0,class:"popup-subscribe-topics__sparks popup-subscribe-topics__decor","aria-hidden":"true"},Oe={key:1,class:"popup-subscribe-topics__error-box popup-subscribe-topics__decor","aria-hidden":"true"},Me={__name:"PopupSubscribeTopics",props:{tags:{type:Array,default:()=>[]},projectName:{type:String,default:""}},emits:["close"],setup(t,{emit:m}){const i={PROCESS:"process",ERROR:"error",NEED_EMAIL_CONFIRM:"needEmailConfirm",SUCCESS:"success",ALREADY:"already"},c=t,T=m,x=le(),I=ue(),{isAuthorized:u}=ne(x),s=n(i.PROCESS),R=n(!0),w=n(!1),f=n(!1),l=n([]),_=n(!0),A=n(""),C=n(""),P=n([]),N=n([]),K=S(()=>N.value.filter(a=>{const e=l.value.find(r=>Number(r.id)===Number(a.id));return!e||(e==null?void 0:e.checked)})),q=S(()=>
1s.value===i.ERROR?{title:"Что-то пошло не так",text:"При передаче данных произошла внутренняя ошибка сайта. Попробуйте подписаться еще раз.",btnText:"Отправить еще раз"}:s.value===i.ALREADY?{title:"Вы уже подписаны на все возможные темы",text:"",btnText:"Ок"}:s.value===i.NEED_EMAIL_CONFIRM&&!u.value?{title:"Спасибо за подписку",text:"Вам на почту отправлено письмо для подтверждения",btnText:"Ок"}:{title:"Спасибо за подписку",text:'Своими подписками вы можете управлять в <a href="/profile/settings/">настройках личного кабинета</a>',btnText:"Ок"}),L=S(()=>[i.SUCCESS,i.NEED_EMAIL_CONFIRM].includes(s.value)),j=S(()=>s.value===i.ERROR),Q=S(()=>L.value||j.value);function $(){T("close")}function W(){$(),I.open("auth")}function X(a){l.value=l.value.map(e=>e.id!==a.id?e:{...e,checked:!e.checked})}function Z(){l.value=l.value.map(a=>({...a,checked:!1})),_.value=!0}function B(){C.value="";const a=String(A.value??"").trim();return a?pe(a)||(C.value="Введите корректный адрес электронной почты"):C.value="Поле email должно быть заполнено",!C.value}function F(){const a=l.value.filter(r=>_.value||r.checked).map(r=>r.id),e=_.value?N.value:K.value;return Array.from(new Set([...a,...e.map(r=>r.id)||[],...P.value]))}async function ee(){if(!B())return;const a={tags:F(),email:String(A.value).trim()};f.value=!0;try{await O.submitSubscribeTagsForm(a),s.value=i.NEED_EMAIL_CONFIRM;const e=[...G(),...a.tags];he(e),M.reachGoal("added_email",{tagSubscription:l.value.filter(r=>e.includes(r.id)).map(r=>r.name).join(", ")})}catch{s.value=i.ERROR}finally{f.value=!1}}async function te(){f.value=!0;try{const a=await O.updateSubscribes(F());s.value=i.NEED_EMAIL_CONFIRM,M.reachGoal("newsSubscription",{newsSubscription:a.tags.map(e=>e.name).join(", ")})}catch{s.value=i.ERROR}finally{f.value=!1}}function z(){if(!f.value){if(u.value){te();return}ee()}}function se(){if(s.value===i.ERROR){if(!w.value){D();return}s.value=i.PROCESS,z();return}(s.value===i.SUCCESS||s.value===i.NEED_EMAIL_CONFIRM)&&M.reachGoal("subscription_success"),$()}async function ae(){var a;try{const e=await O.loadPersonalSubscribe();e!=null&&e.success&&(e!=null&&e.data)&&(N.value=((a=e.data)==null?void 0:a.tags)||[])}catch{N.value=[]}}async function D(){R.value=!0,P.value=G();try{await ae();const a=await O.getTagsFromLabels(c.tags||[]),e=Array.isArray(a)?a:[];l.value=e.map(g=>{var U;return{...g,checked:!!((U=N.value)!=null&&U.find(ie=>ie.id===g.id))}}),_.value=!l.value.filter(g=>g.checked).length;const r=l.value.filter(g=>!P.value.includes(g.id));l.value.length&&!r.length?s.value=i.ALREADY:s.value=i.PROCESS,w.value=!0}catch{s.value=i.ERROR}finally{R.value=!1}}return ce(()=>{D()}),de(l,()=>{_.value=!l.value.filter(a=>a.checked).length},{deep:!0}),(a,e)=>(o(),d(fe,{"content-class":Q.value?"popup-subscribe-topics__modal":"",onClose:$},{default:p(()=>[b("div",{class:H(["popup-subscribe-topics",{"popup-subscribe-topics--sparks":L.value,"popup-subscribe-topics--error-box":j.value}])},[L.value?(o(),v("div",Ae,[k(Y,{class:"popup-subscribe-topics__sparks-svg popup-subscribe-topics__decor-svg",src:"sparks"})])):E("",!0),j.value?(o(),v("div",Oe,[k(Y,{class:"popup-subscribe-topics__error-box-svg popup-subscribe-topics__decor-svg",src:"error-box"})])):E("",!0),R.value?(o(),d(_e,{key:2,"into-block":"","is-loading":R.value},null,8,["is-loading"])):s.value===i.PROCESS?(o(),d(xe,{key:3,email:A.value,"onUpdate:email":e[0]||(e[0]=r=>A.value=r),tags:l.value,"project-name":t.projectName,"all-tags":_.value,"is-authorized":be(u),"email-error":C.value,"in-progress":f.value,onToggleTag:X,onToggleProject:Z,onSubmit:z,onOpenAuth:W,onValidateEmail:B},null,8,["email","tags","project-name","all-tags","is-authorized","email-error","in-progress"])):(o(),d(ve,{key:4,content:q.value,onOnClose:se},null,8,["content"]))],2)]),_:1},8,["content-class"]))}};const Pe={class:"subscribe-block"},Le={class:"subscribe-block__body"},je={class:"subscribe-block__body-inner"},$e=b("p",{class:"subscribe-block__title title-md"}," Подпишитесь на новости национального проекта ",-1),Ve={__name:"SubscribeBlock",props:{projectName:{type:String,default:""},tags:{type:Array,default:()=>[]}},setup(t){const m=n(!1);function i(){m.value=!0,M.reachGoal("click_subscription")}function c(){m.value=!1}return(T,x)=>(o(),v("div",Pe,[b("div",Le,[b("div",je,[$e,k(y,{class:"subscribe-block__btn",theme:"dark",type:"button",onClick:i},{default:p(()=>[h(" Подписаться ")]),_:1})])]),(o(),d(me,{to:"#vue-teleports"},[m.value?(o(),d(Me,{key:0,tags:t.tags,"project-name":t.projectName,onClose:c},null,8,["tags","project-name"])):E("",!0)]))]))}};export{Ve 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.