PageSourceSearch

https://hanicc.kz/var/cache/asset20_e349979be73c327317e25a2f9c4e0f26.js

js hanicc.kz collected 2026-10-07 17:02:56 UTC 11,252 bytes, 35 lines download raw bytes

1app.flyDot=(function(){var ARC_RISE=56;var MIN_TOP=8;var STEPS=24;var controlY=function(s,e,apex){return apex-Math.sqrt((s-apex)*(e-apex))};var keyframes=function(from,to){var low=Math.min(from.y,to.y);var apex=Math.min(low-1,Math.max(low-ARC_RISE,MIN_TOP));var cx=(from.x+to.x)/2;var cy=controlY(from.y,to.y,apex);var frames=[];for(var i=0;i<=STEPS;i++){var t=i/STEPS;var u=1-t;var x=u*u*from.x+2*u*t*cx+t*t*to.x;var y=u*u*from.y+2*u*t*cy+t*t*to.y;var scale=t<0.12?0.5+t/0.12*0.5:(t>0.7?1-(t-0.7)/0.3*0.55:1);var opacity=t>0.85?Math.max(0,1-(t-0.85)/0.15):1;frames.push({offset:t,transform:'translate3d('+x.toFixed(1)+'px,'+y.toFixed(1)+'px,0) scale('+scale.toFixed(3)+')',opacity:opacity})}
2return frames};var reducedMotion=window.matchMedia&&window.matchMedia('(prefers-reduced-motion: reduce)');var fly=function(rect,to,options){var dot=document.createElement('div');if(!rect||(reducedMotion&&reducedMotion.matches)||typeof dot.animate!=='function'){setTimeout(options.onLand,50);return}
3var from={x:rect.left+rect.width/2,y:rect.top+rect.height/2};var distance=Math.sqrt(Math.pow(to.x-from.x,2)+Math.pow(to.y-from.y,2));var duration=Math.round(Math.max(450,Math.min(700,380+distance*0.35)));dot.className='flyToCart'+(options.modifier?' '+options.modifier:'');document.documentElement.appendChild(dot);var animation=dot.animate(keyframes(from,to),{duration:duration,easing:'linear',fill:'forwards'});var remove=function(){dot.parentNode&&dot.parentNode.removeChild(dot)};animation.onfinish=remove;animation.oncancel=remove;var land=function(){setTimeout(options.onLand,Math.max(0,duration-(options.lead||0)))};animation.ready?animation.ready.then(land,land):land()};fly.onScreen=function(elements){var root=document.documentElement;for(var i=0;i<elements.length;i++){var rect=elements[i]&&elements[i].getBoundingClientRect();if(rect&&rect.width&&rect.bottom>0&&rect.top<root.clientHeight&&rect.right>0&&rect.left<root.clientWidth){return rect}}
4return null};return fly})();app.flyToCart=function(rect){var cart=document.querySelector('[data-fly-to-cart]');var box=cart&&cart.getBoundingClientRect();if(!box||!box.width||!box.height){return}
5var toEnd=cart.getAttribute('data-fly-to-cart')==='end';app.flyDot(rect,{x:toEnd?box.right-box.height/2:box.left+box.width/2,y:box.top+box.height/2},{onLand:function(){cart.animate&&cart.animate([{transform:'scale(1)'},{transform:'scale('+(toEnd?1.05:1.1)+')'},{transform:'scale(1)'}],{duration:250})}})};app.flyToCart.startOf=function(dishId,part){var cards=document.querySelectorAll('.ddish[data-id="'+dishId+'"]');return app.flyDot.onScreen(Array.prototype.map.call(cards,function(card){return card.querySelector(part)}))};app.addModule(()=>{let ajax;let currentTab;const tabs=document.querySelector('.sect__tabs');const title=document.querySelector('.sect__title');if(!tabs){return}
6const setSpinner=(flag)=>{if(flag){title.classList.add('sect__spinner')}else{title.classList.remove('sect__spinner')}};const setActiveTab=(tab)=>{const activeTab=document.querySelector('.sect__tab--active');if(activeTab){activeTab.classList.remove('sect__tab--active')}
7tab.classList.add('sect__tab--active');const activeSidebar=document.querySelector('.cnav__section-sub--active');if(activeSidebar){activeSidebar.classList.remove('cnav__section-sub--active')}
8document.querySelector(`.cnav__section-sub[data-id="${ tab.dataset.id }"]`).classList.add('cnav__section-sub--active')};const fetchDishes=(url)=>{setSpinner(!0);ajax=app.fetch(url+'?onlyDishesList',{},function(response){setSpinner(!1);if(response.error){app.alert(response.message,'danger');setTimeout(()=>{location.reload()},2000);return}
9history.pushState(null,null,url);setCurrentTab();const htmlResponse=document.createElement('template');htmlResponse.innerHTML=response.html;document.querySelector('.sect__dishes').replaceWith(htmlResponse.content)})};const setCurrentTab=()=>{const path=location.pathname.split('/');if(!path||!path.length||currentTab===path[path.length-1]){return!1}
10currentTab=path[path.length-1];return!0};setCurrentTab();tabs.addEventListener('click',(e)=>{e.preventDefault();const tab=e.target.closest('.sect__tab');if(!tab||tab.classList.contains('sect__tab--active')){return}
11ajax&&ajax.abort&&ajax.abort();setActiveTab(tab);fetchDishes(tab.getAttribute('href'))});window.addEventListener("popstate",()=>{if(setCurrentTab()){location.reload()}})});app.addModule(function(){var menu=document.querySelector('.menu');var getPointDishPrice=function(prices){if(!prices){return null}
12return Object.values(prices).find(function(price){return price&&price.isWithPoints&&price.pointDishMinSum})||null};var isPointDishBlocked=function(prices){var pointDishPrice=getPointDishPrice(prices);if(!pointDishPrice){return!1}
13var cart=app.store&&app.store.state&&app.store.state.cart;return((cart&&cart.amount&&cart.amount.pointDishRegularSum)||0)<pointDishPrice.pointDishMinSum};var getPointDishBlockedText=function(prices){var pointDishPrice=getPointDishPrice(prices);return(pointDishPrice&&pointDishPrice.pointDishBlockedText)||''};var handleClick=function(e){var target=e.target;if(target.closest('.ddish')){if(!target.closest('.ddish--stop')){toCart(target.closest('.ddish'),{plusClicked:target.closest('.ddish__plus')})}
14e.preventDefault()}};var onDishSelected=function(e,dishSelected){if(!dishSelected){return}
15var dishId=dishSelected.dishPosId.split('_')[0];var el=document.querySelector('.ddish[data-id="'+dishId+'"]');var flyRect=app.flyToCart&&!dishSelected.forceRemoveDish&&app.flyToCart.startOf(dishId,'.ddish__plus');PubSub.publish('recalcCart',{cartSwitchConfirmed:!1,changeAmount:{forceRemoveDish:dishSelected.forceRemoveDish,dishPosId:dishSelected.dishPosId,add:dishSelected.count,addWeight:dishSelected.addWeight},cb:function(response){PubSub.publish('gtmNotify',{event:'addToCart',cart:response.cart,dishSelected:dishSelected,});flyRect&&response.cart&&!response.error&&app.flyToCart(flyRect);if(el){el.classList.remove('ddish--loading')}}});if(el){el.classList.add('ddish--loading')}};var toCart=function(dish,params){var forceAddress=!1;if(app.store.state.address&&app.store.state.address.warning){forceAddress='showUserAddress'}
16var section=dish.closest('.sect');var restriction=dish.dataset.restriction||(section&&section.dataset.restriction);var restrictionConfirmed=params&&params.restrictionConfirmed;const prices=dish.dataset.prices&&JSON.parse(dish.dataset.prices);if(isPointDishBlocked(prices)){PubSub.publish('showToast',{text:getPointDishBlockedText(prices)});return}
17if(restriction&&!restrictionConfirmed){PubSub.publish('showRestriction',{text:restr
17iction,cb(){setTimeout(()=>{toCart(dish,{restrictionConfirmed:!0})},500)}});return}
18var modifiers=dish.dataset.modifiers;var dishId=dish.dataset.id;var dishCombo=dish.dataset.combo;var company=app.store&&app.store.state&&app.store.state.company;if(modifiers){modifiers=JSON.parse(modifiers)}
19let dishParams=dish.dataset.params;if(dishParams){dishParams=JSON.parse(dishParams)}
20if(!modifiers||modifiers.length===1){var sectionModifiers=dish.closest('.sect').dataset.modifiers;if(sectionModifiers){modifiers=modifiers.concat(JSON.parse(sectionModifiers))}}
21var photo=dish.querySelector('.ddish__photo')
22var ingredients=dish.querySelector('.ddish__ingredients');var price=dish.querySelector('.ddish__sum');var size=dish.querySelector('.ddish__size');if(modifiers){for(var i=0;i<modifiers.length;i++){var modifier=modifiers[i];if(modifier.options){for(var j=0;j<modifier.options.length;j++){var option=modifier.options[j];if(option.price_formatted){option.priceFormatted=option.price_formatted}
23if(option.size_formatted){option.sizeFormatted=option.size_formatted}
24modifiers[i].options[j]=option;modifiers[i].pos=i}}}}
25var navigateTopping=!0;if(params&&params.plusClicked){var requiredModifiers=(modifiers||[]).filter(function(modifier){return(modifier.required&&modifier.type!=='sizes')||modifier.min||(modifier.options&&modifier.options.find(option=>option.min))||(modifier.type==='sizes'&&modifier.options.length>1)});if(!requiredModifiers.length){navigateTopping=!1}}
26if(forceAddress){navigateTopping=!0}
27if(dishCombo&&company&&company.isUseCombo){navigateTopping=!0}
28if(dish.dataset.orderScheduleStop){navigateTopping=!0}
29const isPartial=prices&&prices[0]&&prices[0].partialConfig;if(navigateTopping||isPartial){var dishData={id:dishId,name:dish.querySelector('.ddish__link').innerText,ingredients:ingredients?ingredients.innerHTML:'',nutrients:dish.dataset.nutrients?JSON.parse(dish.dataset.nutrients):'',prices:prices,price:price?price.innerText:'',balance:dish.dataset.balance||'',media:dish.dataset.media?JSON.parse(dish.dataset.media):null,size:size?size.innerText:'',params:dishParams,photo:{full:photo.dataset.full,low:photo.dataset.lowsrc,ratio:photo.dataset.ratio},extraPhotos:photo.dataset.extraphotos?JSON.parse(photo.dataset.extraphotos):null,orderScheduleStop:!!dish.dataset.orderScheduleStop,orderScheduleLabel:dish.dataset.orderScheduleLabel||''};if(dishCombo&&company&&company.isUseCombo){dishData.combo={active:!0};PubSub.publish('showCombo',{dish:dishData,forceAddress:forceAddress,modifiers:modifiers})}else{PubSub.publish('showTopping',{dish:dishData,forceAddress:forceAddress,modifiers:modifiers})}}else{PubSub.publish('dishSelected',{dishPosId:dishId+'_0',count:1})}};PubSub.subscribe('dishSelected',onDishSelected);if(menu){menu.addEventListener('click',handleClick)}
30PubSub.subscribe('initProductsListener',function(e,params){var m=document.querySelector(params.container);if(m){m.addEventListener('click',handleClick)}});if(window.location.href.indexOf('#addToCart')){const match=window.location.href.match(/\#addToCart-(\d+)/);if(match){const target=menu.querySelector('.ddish[data-id="'+match[1]+'"]');if(target){window.scrollTo({top:target.offsetTop-107,behavior:"smooth"});setTimeout(()=>{target.querySelector('.ddish__plus').click()},0)}
31window.history.replaceState(null,null,window.location.href.split('#')[0])}}});app.addModule(()=>{const lazyVideos=document.querySelectorAll('.ddish__lazyVideo');const videoPlay=(video,flag)=>{if(flag){video.play();return}
32video.pause();video.currentTime=0};if('IntersectionObserver' in window){const videoObserver=new IntersectionObserver((entries,observer)=>{entries.forEach((entry)=>{if(!entry.isIntersecting){return}
33const video=entry.target;const videoSrc=video.getAttribute('data-src');video.src=videoSrc;video.load();observer.unobserve(video);video.addEventListener('canplaythrough',()=>{video.classList.add('ddish__video--loaded');video.addEventListener('mouseenter',(event)=>{videoPlay(event.target,!0)});video.addEventListener('mouseleave',(event)=>{videoPlay(event.target,!1)})})})},{rootMargin:'300px',});lazyVideos.forEach(video=>{videoObserver.observe(video)})}else{lazyVideos.forEach(video=>{video.src=video.getAttribute('data-src');video.load()})}});app.addModule(()=>{PubSub.subscribe('syncMenu',()=>{app.fetch(window.location.href.split('?')[0]+'?needJsonMenu',{},(response)=>{if(!response.error){const div=document.createElement('div');div.innerHTML=response.html;const promoLimitedSection=div.querySelector('.sect--promoLimited')
34if(promoLimitedSection){document.querySelector('.sect--promoLimited').innerHTML=promoLimitedSection.innerHTML}
35PubSub.publish('menuSynced')}})})});

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.