1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[4764],{23635:(e,t,r)=>{r.d(t,{Z2:()=>a,p_:()=>n});let n=[{key:"bronze",label:"ÐÑонзовÑй",cashback:3,threshold:0,color:"bg-amber-600",textColor:"text-amber-600"},{key:"silver",label:"СеÑебÑÑнÑй",cashback:5,threshold:2e4,color:"bg-gray-400",textColor:"text-gray-500"},{key:"gold",label:"ÐолоÑой",cashback:7,threshold:1e5,color:"bg-yellow-500",textColor:"text-yellow-600"},{key:"platinum",label:"ÐлаÑиновÑй",cashback:10,threshold:3e5,color:"bg-slate-500",textColor:"text-slate-600"},{key:"diamond",label:"ÐÑиллианÑовÑй",cashback:15,threshold:5e5,color:"bg-cyan-400",textColor:"text-cyan-500"}],o=Object.fromEntries(n.map(e=>[e.key,e.cashback/100]));function a(e){return o[e]||.03}},49778:(e,t,r)=>{r.d(t,{vu:()=>k,cc:()=>p,TJ:()=>w,OC:()=>C,Ml:()=>d,aJ:()=>y,vq:()=>c,O5:()=>u,KA:()=>m,_D:()=>f,Du:()=>s});let n="_ym_yclid",o=["utm_source","utm_medium","utm_campaign","utm_term","utm_content"],a=/^\d{1,30}$/,i=/[\u0000-\u001F\u007F;&=]/g;function l(e){return"string"!=typeof e?"":Array.from(e.replace(i,"").trim()).slice(0,100).join("")}function c(e,t){let r=window.yaCounter106951952;(null==r?void 0:r.reachGoal)?r.reachGoal(e,t):window.ym&&window.ym(0x65ff510,"reachGoal",e,t)}function u(e){let t=window.yaCounter106951952;(null==t?void 0:t.params)?t.params(e):window.ym&&window.ym(0x65ff510,"params",e)}function d(e){c("ADD_TO_CART",{product_id:e.id,product_name:e.name,product_price:e.price}),window.dataLayer&&window.dataLayer.push({ecommerce:{add:{products:[{id:e.id,name:e.name,price:e.price,category:e.category,quantity:1}]}}})}function s(e){c("ORDER_COMPLETE",{order_id:e.id,order_price:e.revenue}),window.dataLayer&&window.dataLayer.push({ecommerce:{purchase:{actionField:{id:e.id,revenue:e.revenue},products:e.products.map(e=>({id:e.id,name:e.name,price:e.price,quantity:e.quantity,category:e.category}))}}})}function m(e){c("PHONE_CLICK",{phone:e})}function y(e){c("CATALOG_VIEW",e?{category:e}:void 0)}function f(e){c("PRODUCT_VIEW",{product_id:e.id,product_price:e.price,category:e.category}),window.dataLayer&&window.dataLayer.push({ecommerce:{detail:{products:[{id:e.id,name:e.name,price:e.price,category:e.category}]}}})}function w(){return new Promise(e=>{let t=()=>h("_ym_uid"),r=!1,n=t=>{r||(r=!0,e(t||""))};try{let e=window.yaCounter106951952;(null==e?void 0:e.getClientID)?e.getClientID(e=>n(e||t())):window.ym&&window.ym(0x65ff510,"getClientID",e=>n(e||t()))}catch{}setTimeout(()=>n(t()),1500)})}function h(e){if("undefined"==typeof document)return"";let t=document.cookie.match(RegExp("(?:^|; )"+e+"=([^;]*)"));return t?decodeURIComponent(t[1]):""}function p(){let e=new URLSearchParams(window.location.search).get("yclid");e&&/^\d{1,30}$/.test(e)&&function(e,t,r){if("undefined"==typeof document)return;let n=new Date(Date.now()+7776e6).toUTCString();document.cookie=`${e}=${encodeURIComponent(t)}; expires=${n}; path=/; SameSite=Lax`}(n,e,0)}function C(){return h(n)}function k(){let e=function(e){let t=new URLSearchParams(e||""),r={};for(let e of o){let n=l(t.get(e)??"");n&&(r[e]=n)}let n=(t.get("yclid")||"").trim();return a.test(n)&&(r.yclid=n),o.some(e=>!!r[e])||r.yclid?r:null}(window.location.search);if(!e)return;e.t=Math.floor(Date.now()/1e3);let t=function(e){var t;let r=[];for(let t of o){let n=l(e[t]);n&&r.push([t,n])}if("string"==typeof(t=e.yclid)&&a.test(t)&&r.push(["yclid",e.yclid]),"number"==typeof e.t&&Number.isFinite(e.t)&&e.t>0&&r.push(["t",String(Math.floor(e.t))]),!r.some(e=>{let[t]=e;return"t"!==t}))return"";let n=()=>r.map(e=>{let[t,r]=e;return`${t}=${r}`}).join("&"),i=e=>encodeURIComponent(e).length<=512,c=n();for(let e of["utm_term","utm_content"]){if(i(c))break;let t=r.findIndex(t=>{let[r]=t;return r===e});-1!==t&&(r.splice(t,1),c=n())}return i(c)?c:""}(e);t&&(document.cookie=`rs_utm=${encodeURIComponent(t)}; max-age=7776000; path=/; SameSite=Lax; Secure`)}window.dataLayer||(window.dataLayer=[])},59727:(e,t,r)=>{r.d(t,{A:()=>d,AuthProvider:()=>u});var n=r(10166),o=r(9142),a=r(57286),i=r(23635);let l=(0,o.createContext)(null);function c(e){let{children:t}=e,{data:r,status:c,update:u}=(0,a.wV)(),[d,s]=(0,o.useState)(null),[m,y]=(0,o.useState)(!1),f=!!r&&!!r.customerId,w=!!(null==r?void 0:r.needsPhone),h=(0,o.useCallback)(async()=>
1{if(!(null==r?void 0:r.customerId))return void s(null);y(!0);try{let e=await fetch("/api/account/profile");if(e.ok){let t=await e.json();s(t.customer)}else s(null)}catch{s(null)}finally{y(!1)}},[r]);(0,o.useEffect)(()=>{f?h():s(null)},[f,h]);let p=(0,o.useCallback)(async(e,t)=>{try{let r=await (0,a.Jv)("phone",{phone:e,code:t,redirect:!1});if((null==r?void 0:r.ok)&&!r.error)return{ok:!0};let n=(null==r?void 0:r.error)==="CredentialsSignin"?"ÐевеÑнÑй код. ÐопÑобÑйÑе еÑÑ Ñаз":(null==r?void 0:r.error)||"ÐÑибка вÑ
ода";return{ok:!1,error:n}}catch{return{ok:!1,error:"ÐÑибка ÑеÑи"}}},[]),C=(0,o.useCallback)(async()=>{await (0,a.Jv)("yandex")},[]),k=(0,o.useCallback)(async e=>{try{let t=await (0,a.Jv)("telegram",{redirect:!1,...e});if((null==t?void 0:t.ok)&&!t.error)return{ok:!0};return{ok:!1,error:(null==t?void 0:t.error)||"ÐÑибка вÑ
ода ÑеÑез Telegram"}}catch{return{ok:!1,error:"ÐÑибка ÑеÑи"}}},[]),g=(0,o.useCallback)(async(e,t)=>{try{let r=await fetch("/api/auth/link-phone",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({phone:e,code:t})}),n=await r.json();if(!r.ok)return{ok:!1,error:n.error||"ÐÑибка пÑивÑзки"};return await u({customerId:n.customerId,phone:e,needsPhone:!1}),{ok:!0}}catch{return{ok:!1,error:"ÐÑибка ÑеÑи"}}},[u]),v=(0,o.useMemo)(()=>(0,i.Z2)((null==d?void 0:d.loyaltyLevel)||""),[null==d?void 0:d.loyaltyLevel]),b=(0,o.useCallback)(async()=>{s(null),await (0,a.CI)({redirect:!1}),window.location.href="/"},[]);return(0,n.jsx)(l.Provider,{value:{customer:d,isAuthenticated:f,isLoading:"loading"===c||m,needsPhone:w,cashbackRate:v,signInWithPhone:p,signInWithYandex:C,signInWithTelegram:k,signOut:b,refreshCustomer:h,linkPhone:g},children:t})}function u(e){let{children:t}=e;return(0,n.jsx)(a.CP,{children:(0,n.jsx)(c,{children:t})})}function d(){let e=(0,o.useContext)(l);if(!e)throw Error("useAuth must be used within AuthProvider");return e}},66385:(e,t,r)=>{r.d(t,{CartProvider:()=>u,_:()=>d});var n=r(10166),o=r(9142),a=r(51296);let i=(e,t,r)=>e.id===t&&(void 0===r||e.city===r),l=(0,o.createContext)(null),c="rose-studio-cart";function u(e){let{children:t}=e,[r,u]=(0,o.useState)([]),[d,s]=(0,o.useState)(!1);(0,o.useEffect)(()=>{u(function(){try{let e=localStorage.getItem(c);return e?JSON.parse(e):[]}catch{return[]}}()),s(!0)},[]),(0,o.useEffect)(()=>{d&&function(e){try{localStorage.setItem(c,JSON.stringify(e))}catch{}}(r)},[r,d]),(0,o.useEffect)(()=>{function e(e){if(e.key===c&&null!==e.newValue)try{u(JSON.parse(e.newValue))}catch{}}return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[]);let m=(0,o.useCallback)(e=>{u(t=>t.find(t=>t.id===e.id&&t.city===e.city)?t.map(t=>t.id===e.id&&t.city===e.city?{...t,quantity:t.quantity+1}:t):[...t,{...e,quantity:1}]),a.o.success(`${e.name} добавлен в коÑзинÑ`)},[]),y=(0,o.useCallback)(e=>{u(t=>{var r;let n=null==(r=e[0])?void 0:r.city;return n?[...t.filter(e=>e.city!==n),...e]:t})},[]),f=(0,o.useCallback)((e,t)=>{u(r=>r.filter(r=>!i(r,e,t)))},[]),w=(0,o.useCallback)((e,t,r)=>{u(n=>t<=0?n.filter(t=>!i(t,e,r)):n.map(n=>i(n,e,r)?{...n,quantity:t}:n))},[]),h=(0,o.useCallback)(e=>{u(t=>t.filter(t=>t.city!==e))},[]);return(0,n.jsx)(l.Provider,{value:{allItems:r,addItem:m,addItems:y,removeItem:f,updateQuantity:w,clearCityCart:h},children:t})}function d(e){let t=(0,o.useContext)(l);if(!t)throw Error("useCart must be used within CartProvider");let r=(0,o.useMemo)(()=>e?t.allItems.filter(t=>t.city===e):t.allItems,[t.allItems,e]),n=(0,o.useMemo)(()=>r.reduce((e,t)=>e+t.quantity,0),[r]),a=(0,o.useMemo)(()=>r.reduce((e,t)=>e+t.price*t.quantity,0),[r]),i=(0,o.useCallback)(()=>{e&&t.clearCityCart(e)},[e,t]),{removeItem:c,updateQuantity:u}=t,d=(0,o.useCallback)((t,r)=>c(t,r??e),[c,e]),s=(0,o.useCallback)((t,r)=>u(t,r,e),[u,e]);return{items:r,addItem:t.addItem,addItems:t.addItems,removeItem:d,updateQuantity:s,clearCart:i,totalItems:n,totalPrice:a}}}}]);
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.