PageSourceSearch

https://vc.ru/assets/ProductFields.vue_vue_type_style_index_0_lang-Dmwu7yrR.js

js vc.ru collected 2026-09-24 07:38:22 UTC 8,408 bytes, 1 lines download raw bytes

1import{d as M,dV as P,a as m,b as h,S as Q,t as L,f as s,U as X,s as N,p as R,F as G,L as I,e as j,ab as Y,w as B,bR as Z,c as C,aq as J,z as u,v as A,r as O,dU as ee,X as ae,y as te,al as ne,bm as le,dG as q,$ as H,ar as se,E as ie,at as re,l as oe,m as ue,b4 as ce,ad as de,aS as me}from"./index-DcSVvNrM.js";import{a as fe}from"./marketplace-B6Bs0ObQ.js";import{_ as ve}from"./FilterField.vue_vue_type_script_setup_true_lang-By_stLER.js";const pe=M({__name:"ProductBadge",props:{type:{},variant:{},isCompact:{type:Boolean}},setup(t){const{t:d}=P();return(f,o)=>(m(),h("div",{class:Q([f.$style.badge,f.$style[`badge--${t.variant}`],t.isCompact&&f.$style["badge--compact"]])},L(s(d)(`marketplace.badges.${t.type}`)),3))}}),_e="_8Y-sO68O",ye={badge:_e,"badge--compact":"F8cDBU-V","badge--1":"uncEvgna","badge--2":"uW7vVUuT","badge--3":"_1rUscwlv","badge--4":"zo0UhKac","badge--5":"zoRfFadC","underlay-in":"-ZSiIGmQ","modal-enter":"_6CaQXY6i","modal-enter-slide":"NKRTTris"},ge={$style:ye},be=X(pe,[["__cssModules",ge]]),he={class:"product-grid"},ke={key:0,class:"product-grid__title"},Ve={class:"product-grid__items"},$e={class:"product-card__image"},we=["src","alt"],Fe={class:"product-card__title"},Ae=M({__name:"ProductGrid",props:{title:{},products:{}},setup(t){return(d,f)=>(m(),h("div",he,[t.title?(m(),h("h2",ke,L(t.title),1)):N("",!0),R("div",Ve,[(m(!0),h(G,null,I(t.products,o=>(m(),h("div",{key:o.id,class:"product-card"},[j(s(Y),{class:"product-card__link",to:s(fe)(o.id)},{default:B(()=>[R("div",$e,[R("img",{src:s(Z)({uuid:o.cardImageUuid}),alt:o.name,loading:"lazy"},null,8,we),o.badge?(m(),C(be,{key:0,type:o.badge.type,variant:o.badge.variant,"is-compact":"",class:"product-card__badge"},null,8,["type","variant"])):N("",!0)]),R("span",Fe,L(o.name),1)]),_:2},1032,["to"])]))),128))])]))}});var v=(t=>(t.Text="text",t.Select="select",t.Catalog="catalog",t.Dropdown="dropdown",t))(v||{}),Ee=(t=>(t.GradientHeader="gradient-header",t.CheckBalance="check-balance",t))(Ee||{});function Se(t,d){const{t:f}=P(),o={email:f("marketplace.fields.errors.email")},k=f("marketplace.fields.errors.default"),p=f("marketplace.fields.errors.required"),r=O({}),c=O(new Set),U=A(()=>u(t.value)?t.value.fields.filter(_).map(e=>e.type===v.Select||e.type===v.Dropdown?{...e,filteredOptions:E(e)}:e):[]),V=A(()=>{if(!u(t.value))return!1;for(const e of t.value.fields){if(!_(e))continue;const a=r.value[e.name];if(e.isRequired&&!u(a)||e.type===v.Text&&u(e.pattern)&&u(a)&&!b(e.pattern,a))return!1}return!0}),g=A(()=>{if(!u(t.value))return{};const e={};for(const a of t.value.fields)_(a)&&(e[a.name]=r.value[a.name]);return e}),$=A(()=>{const e={};if(!u(t.value))return e;for(const a of t.value.fields){if(!_(a))continue;const n=r.value[a.name];if(c.value.has(a.name)){if(a.isRequired&&!u(n)){e[a.name]=p;continue}a.type===v.Text&&u(a.pattern)&&u(n)&&!b(a.pattern,n)&&(e[a.name]=o[a.name]??k)}}return e});function b(e,a){try{return new RegExp(e).test(a)}catch{return!1}}function w(e){if(!u(e))return!0;for(const[a,n]of Object.entries(e)){const l=r.value[a];if(!u(l)||!n.includes(l))return!1}return!0}function _(e){return w(e.filters)}function F(){if(!u(t.value)){r.value={},c.value=new Set;return}r.value={},c.value=new Set;for(const e of t.value.fields)if(_(e)){if(e.type===v.Text)r.value[e.name]=e.value;else if(e.type===v.Select||e.type===v.Dropdown)if(e.value!==null)r.value[e.name]=e.value;else{const a=E(e);r.value[e.name]=a.length>0?a[0].value:null}}}function E(e){const a=e.options.filter(n=>w(n.filters));return u(d)&&a.length>d?a.slice(0,d):a}function T(e){c.value.add(e)}function y(e,a){if(r.value[e]=a,!!u(t.value)){for(const n of t.value.fields)if(!_(n)&&n.name in r.value){const{[n.name]:l,...S}=r.value;r.value=S,c.value.delete(n.name)}for(const n of t.value.fields){if(n.type!==v.Select&&n.type!==v.Dropdown||!_(n))continue;const l=r.value[n.name];if(l===null||!n.options.some(x=>u(x.filters)&&e in x.filters))continue;const i=E(n);if(!i.some(x=>x.value===l)){const x=n.options.find(D=>D.value===l);let z=null;if(i.length>0)if(u(x)){const D=i.find(W=>W.label===x.label);z=(D==null?void 0:D.value)??i[0].value}else z=i[0].value;r.value[n.name]=z}}}}return F(),J(()=>{var e;return(e=t.value)==null?void 0:e.id},()=>{F()}),{processedFields:U,fieldValues:r,priceFieldValues:g,fieldErrors:$,isFormValid:V,setFieldValue:y,touchField:T,resetFields:F}}function xe(t,d,f,o){const k=ee(),{open:p,close:r}=ae(),{t:c}=P(),{alert:U,AlertType:V}=te(),g=O(null),$=O(!1),b=O(!1);async function w(){var e;const y=(e=t.value)==null?void 0:e.id;if(!u(y)){g.value=null;return}$.value=!0;try{g.value=await k.calculatePrice(y,d.value)}catch{g.value=null}finally{$.value=!1}}function _(y){p(le("iframe"),{src:y},{fit:"iframe",classes:["modal--marketplace-payment"],closeOnSignal:!0,onSignal:e=>{e.status==="success"&&E(),e.status==="error"&&T()}})}async function F(){var e,a;const y=(e=t.value)==null?void 0:e.id;if(!(!u(y)||((a=t.value)==null?void 0:a.isNotAvailable)===!0)){b.value=!0;try{const n={};for(const[S,i]of Object.entries(d.value))i!==null&&(n[S]=i);const{paymentUrl:l}=await k.checkout(y,n);_(l)}catch(n){n instanceof Error&&U({type:V.Error,text:n.message})}finally{b.value=!1}}}function E(){p(q,{title:c("marketplace.payment.success.title"),text:c("marketplace.payment.success.text"),icon:"success",cancelText:c("marketplace.payment.continue"),cancelHandler:()=>{r()}}),o==null||o()}function T(){p(q,{title:c("marketplace.payment.error.title"),text:c("marketplace.payment.error.text"),icon:"circle_cross",cancelText:c("marketplace.payment.continue"),cancelHandler:()=>{r()}})}return ne(f,w,{immediate:!0,debounce:300,deep:!0}),{price:g,isPriceLoading:$,isCheckoutLoading:b,fetchPrice:w,submitPayment:F}}const Ce={class:"product-fields-layout__body"},Re={class:"product-fields-layout__submit"},Ue=M({__name:"ProductFieldsLayout",props:{mode:{default:"default"}},setup(t){return(d,f)=>(m(),h("div",{class:Q(["product-fields-layout",`product-fields-layout--${t.mode}`])},[R("div",Ce,[H(d.$slots,"default")]),R("div",Re,[H(d.$slots,"submit")])],2))}}),Te={key:2,class:"product-fields-options"},Le=M({__name:"ProductFields",props:{product:{},mode:{default:"default"}},setup(t){const d=t,{t:f}=P(),o=de(d,"product"),{processedFields:k,fieldValues:p,priceFieldValues:r,fieldErrors:c,isFormValid:U,setFieldValue:V,touchField:g,resetFields:$}=Se(o,d.mode==="widget"?7:void 0),{price:b,isPriceLoading:w,isCheckoutLoading:_,submitPayment:F}=xe(o,p,r,$);function E(a,n){if(a!==null)return n.find(l=>l.value===a)}function T(a){return a.map(n=>({label:n.label,value:n.value,icon:n.icon??void 0,media:n.imageUuid?me({uuid:n.imageUuid,width:16,height:16}):void 0}))}function y(a){return a==null||Array.isArray(a)?null:a.toString()}function e(){if(o.value.isNotAvailable!==!0){if(!U.value){k.value.forEach(a=>{a.type===v.Text&&g(a.name)});return}F()}}return(a,n)=>(m(),C(Ue,{mode:t.mode},{submit:B(()=>[j(s(oe),{size:"l",disabled:t.product.isNotAvailable===!0,"is-loading":s(w)||s(_),onClick:e},{default:B(()=>[ue(L(s(f)("marketplace.payment.submit",{amount:s(b)?s(ce)(s(b)):void 0})),1)]),_:1},8,["disabled","is-loading"])]),default:B(()=>[(m(!0),h(G,null,I(s(k),l=>(m(),C(s(se),{key:l.name,label:t.mode==="widget"?void 0:l.label},{default:B(()=>{var S;return[l.type===s(v).Text?(m(),C(s(ie),{key:0,"model-value":s(p)[l.name]??"",placeholder:l.placeholder,error:s(c)[l.name],invalid:s(c)[l.name]!==void 0,"onUpdate:modelValue":i=>s(V)(l.name,i||null),onBlur:i=>s(g)(l.name)}
1,null,8,["model-value","placeholder","error","invalid","onUpdate:modelValue","onBlur"])):l.type===s(v).Dropdown?(m(),C(s(re),{key:1,"model-value":s(p)[l.name]??"",options:T(l.options),error:s(c)[l.name],invalid:s(c)[l.name]!==void 0,"image-uuid":((S=E(s(p)[l.name]??null,l.options))==null?void 0:S.imageUuid)??void 0,"onUpdate:modelValue":i=>s(V)(l.name,y(i)),onBlur:i=>s(g)(l.name)},null,8,["model-value","options","error","invalid","image-uuid","onUpdate:modelValue","onBlur"])):(m(),h("div",Te,[(m(!0),h(G,null,I(l.filteredOptions,i=>(m(),C(s(ve),{key:i.value,label:i.label,image:i.icon??void 0,details:t.product.isShowAllPrices?i.price??void 0:void 0,"is-active":s(p)[l.name]===i.value,"with-border":"","is-disabled":i.isDisabled,onClick:K=>s(V)(l.name,i.value)},null,8,["label","image","details","is-active","is-disabled","onClick"]))),128))]))]}),_:2},1032,["label"]))),128))]),_:1},8,["mode"]))}});export{v as P,Le as _,Ae as a,be as b,Ee as c};

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.