define(['jquery','ko','underscore','Magento_Catalog/js/catalog-add-to-cart','mage/cookies'],function($,ko,_){'use strict';ko.observable.fn.silentUpdate=function(value){this.notifySubscribers=function(){};this(value);this.notifySubscribers=function(){ko.subscribable.fn.notifySubscribers.apply(this,arguments);};};return{viewport:{height:$(window).height(),width:$(window).width(),page_wrapper_height:$('.page-wrapper')[0].getBoundingClientRect().height},constants:{mobile_view:768},regex:{tags:/(<([^>]+)>)/gi},selectors:{formKeyInput:'input[name="form_key"]',addToCartForm:'[data-role="tocart-form"]'},formKey:$.mage.cookies.get('form_key'),updateFormKey:function(node){var self=this,formKeyInput=$(node).find(self.selectors.formKeyInput);if(formKeyInput.val()!==self.formKey){formKeyInput.val(self.formKey);}},initProductAddToCart:function(node){var form=$(node).find(this.selectors.addToCartForm);form.catalogAddToCart({});},stripTags:function(string){if(this.regex.tags.test(string)){return string.replace(this.regex.tags,'');}
return false;},initComponentsArray:function(array,component){_.each(array,function(item){component[item.index]=item;});},applyBindings:function(element,context){_.defer(function(){ko.applyBindingsToDescendants(context,element);$(element).trigger('contentUpdated');});},setNodePositionByViewport:_.debounce(function(node){var rect=_.clone(node.getBoundingClientRect()),nodePosition=$(node).offset(),inViewPort=this._inViewPort(rect);node.style.top='100%';node.style.bottom='auto';if(this.viewport.page_wrapper_height<nodePosition.top+rect.height){node.style.top='auto';node.style.bottom='100%';}
if(!_.isBoolean(inViewPort)){node.style[inViewPort]=0;}}),_inViewPort:function(rect){var result=true;Object.keys(rect).map(function(key){if(Math.sign(rect[key])===-1&&!_.includes(['y','x'],key)){result=key;return key;}});return result;}};});