{"version":3,"sources":["assets/logoRazcau.png","assets/LOGO_SOS_2.png","components/ResponsiveColumns.js","store/catalogReducer.js","utils/Helpers.js","constants/Enums.js","store/salesReducer.js","store/cartsReducer.js","store/authReducer.js","store/usersReducer.js","store/customerUserReducer.js","store/cardsReducer.js","store/routeReducer.js","store/store.js","api/Api.js","constants/Colors.js","constants/GlobalStyles.js","utils/SosHelpers.js","components/Product.js","components/Collapsible.js","components/MyAccordion.js","components/MyTextInput.js","components/DropdownXP.js","components/AddressDialog.js","utils/LinkXP.js","components/router/index.web.js","components/MyPanel.js","components/MyQtdInput.js","components/ProductRow.js","components/MyInputMask.js","components/Cart.js","utils/creditcardutils.js","components/CreditCardPaperInput.js","components/CreditCardPaperView.js","components/ConfirmSaleDialog.js","components/CartCountBadge.js","components/ResponsiveView.js","components/ModalProduct.js","components/Checkout.js","utils/VanillaMasker.js","components/CheckoutStrip.js","components/MySearchInput.js","screens/Products.js","components/SlideShow.js","components/products/ProductItem.js","components/products/ProductsScrollView.web.js","components/products/ProductsCarousel.js","components/ScrollViewXP.web.js","components/Header.js","screens/Home.js","components/AlertXP.js","screens/SelfService.js","components/ModalCart.js","App.js","node_modules/moment/locale sync /^/.*$","assets/loggi.png","assets/fonts/SulSans-Light.ttf","assets/fonts/SulSans-Regular.ttf"],"names":["module","exports","ViewportNames","FloatingColumn","props","getViewportName","width","getScreenStateFromViewport","currentViewport","stt","rightOpened","leftOpened","shadowOn","isShadowNeeded","measureContent","mycontent","measure","ox","oy","height","px","py","setState","contentWidth","contentHeight","_window","Dimensions","get","cview","state","lastWindowWidth","addEventListener","e","window","myref","columnWidth","this","ww","viewState","toggleLeftScreen","toggleRightScreen","View","style","styles","container","maxWidth","overflow","onLayout","ref","c","renderLeft","side","leftStyle","windowWidth","windowHeight","fixed","opened","onClose","flex","renderCenter","renderRight","rightStyle","React","Component","getDesiredPosition","animVal","Animated","Value","animValShadow","nextProps","timing","toValue","duration","start","key","zIndex","maxHeight","children","position","right","left","display","alignItems","backgroundColor","opacity","TouchableOpacity","mode","onPress","justifyContent","Text","flexDirection","alignSelf","initialState","products","catalogReducer","action","type","payload","newState","viewportWidth","viewportHeight","NormalizeString","str","string","mapaAcentosHex","a","A","E","i","I","o","O","u","U","C","n","N","letra","expressaoRegular","replace","objToArray","obj","Object","keys","map","x","Helpers","FloatToReais","price","Number","toFixed","percentH","percentage","value","Math","round","percentW","ObjToArray","Any","arr","val","filter","length","First","FirstOrDefault","lambda","default_","Count","fcn","Distinct","ret","GroupBy","reduce","rv","push","OrderBy","desc","sort","b","reverse","Sum","items","prop","MaxFromArray","max","Max","Min","NewGuid","r","random","toString","MaskBRPhone","v","NumbersFromString","MaskCreditCard","ToLowerSemAcentos","toLowerCase","EnumSaleStatus","EnumOriginSale","addSaleReducer","sale","guid","Guid","raw","soldDate","Date","synced","status","payments","clearOldSales","salesObj","arrSales","daysAgo","addDays","dateSync","newSales","getSale","sales","saleGuid","salesReducer","nf","notaData","customer","customerData","Big","require","setCart","cartId","cart","removeFromCart","prod","setProductToActiveCart","getCart","carts","packCart","name","createdAt","getCartFullShippingTotal","sumShippings","indexOf","isAnyShippingOurOfReach","isOutOfReach","outOfReach","getCartFullTotal","sumProducts","addToCartReducer","console","log","Id","prodFound","Quantity","plus","QtyToDisplayPrice","newCartsState","prods","totalProdVal","Price","times","discount","minus","div","sum","qtd","amountPaid","amountDue","storeId","y","StoreId","clearEmptyCarts","newCarts","activeCartId","cartsReducer","payment","id","p","paymentId","userAuth","authReducer","usersReducer","users","customerUserReducer","addCreditCard","card","cardsReducer","creditcards","setRoute","route","routeReducer","initStore","store","createStore","combineReducers","catalog","auth","customerUser","compose","autoRehydrate","applyMiddleware","thunk","MyStorage","Platform","OS","localForage","AsyncStorage","persistStore","storage","BaseURL","ApiURL","Api","CompanyName","AdminURL","SaleOrigins","Site","App","POS","iFood","Login","user","pass","axios","post","email","password","AddressSuggestions","text","Geocode","GooglePlaceDetails","placeId","GetBanners","GetBrands","GetShipping","address","deliveryMethod","scheduledDate","scheduledPeriod","productsJson","addrQS","k","encodeURIComponent","join","Products","getAllCategories","getProducts","categoryId","brandId","orderBy","skip","take","getProductsSelfService","Customers","getCustomer","document","telephone","then","data","catch","error","GetCategoryInfo","catId","GetStoreByAlias","alias","GetStoreById","GetSaleStatus","saleId","GetMarketPlaceSaleStatus","Checkout","CheckoutMarketPlace","CheckoutSelfService","bgColor","themeColor","lines","darkText","secondaryText","darkLines","success","greenStrong","textColor","secondaryTextColor","red","headerText","buttonText","textBase","fontFamily","color","Colors","textBaseBold","fontWeight","titleText","fontSize","paddingVertical","defaultButton","paddingHorizontal","borderRadius","defaultButtonText","defaultButtonInverted","borderWidth","borderColor","defaultButtonTextInverted","bigButton","bigButtonText","defaultLinkButton","defaultLinkButtonText","textDecorationLine","leftCol","minWidth","background","borderRight","shadow3","shadowColor","shadowOffset","shadowOpacity","shadowRadius","elevation","cleanLink","product","Bulk","Product","mywidth","Name","split","padding","margin","marginTop","cursor","quantityOnCart","top","borderRightWidth","GlobalStyles","QtyInStock","TrackStock","paddingLeft","paddingRight","backgroundImage","PhotoURL","backgroundRepeat","backgroundPosition","backgroundSize","Image","resizeMode","source","uri","numberOfLines","textAlign","Description","SosHelpers","ProductLeadTimeComponent","leadTimeInHours","iconSize","MaterialIcons","size","MaterialCommunityIcons","connect","ownProps","objCartProducts","ANIMATED_EASING_PREFIXES","Collapsible","contentHandle","_handleRef","_handleLayoutChange","event","nativeEvent","layout","animating","collapsed","measuring","setValue","measured","collapsedHeight","prevProps","_componentDidUpdate","unmounted","_toggleCollapsed","callback","requestAnimationFrame","getNode","_transitionToHeight","_measureContent","easing","prefix","found","substr","Easing","Error","_animation","stop","onAnimationEnd","enablePointerEvents","contentStyle","align","transform","translateY","interpolate","inputRange","outputRange","pointerEvents","undefined","defaultProps","CustomLayoutLinear","create","LayoutAnimation","Types","linear","property","Properties","update","MyAccordion","close","is_visible","toggle","open","configureNext","content_height","_onPress","call","_getContentHeight","cb","AccordionContent","inited","expanded","setTimeout","underlayColor","activeOpacity","header","AccordionContentWrapper","animationDuration","MyAccordionXP","useState","setOpened","MyTextInput","focused","labelStyle","label","TextInput","onFocus","onBlur","borderBottomColor","borderBottomWidth","inputStyle","multiline","placeholder","keyboardType","onChangeText","DropdownXP","setMenuRef","_menu","measureall","btn","Picker","selectedValue","onValueChange","itemValue","Item","button","show","z","ScrollView","showsVerticalScrollIndicator","contentContainerStyle","hide","AdressDialog","_showDialog","visible","_hideDialog","onHideDialog","getFilteredSuggestions","suggestions","_timeout","fetchSuggestions","clearTimeout","reallyFetch","cancelReq","query","loading","predictions","noItemsFound","getAddressDetails","loadingDetails","selectedAddress","place_id","addr","getAddressFromGoogleResult","result","nomeRua","numero","endereco","resumo","address_components","types","short_name","veioSemNumero","bairro","cidade","estado","geometry","location","lat","lon","lng","complemento","referencia","geocodeAndConfirm","forceNumeroValidation","results","feedbackMsg","confirmAddress","onAddressSelect","shipping","geocodeThenConfirm","Portal","Dialog","marginHorizontal","onDismiss","Content","paddingBottom","minHeight","marginBottom","borderStyle","CidadeEstadoLOL","slice","item","description","paddingTop","ActivityIndicator","marginRight","t","Actions","Button","url","target","Linking","openURL","BackButton","MyPanel","icon","title","marginLeft","rightContent","borderTopWidth","borderTopColor","bottomWidthOnly","MyQtdInput","readOnly","newVal","step","onChangeValue","min","appendText","hideImage","onOpenProduct","showImage","outOfStock","LeadTimeInHours","Comments","showPriceOnEveryRow","setProductQty","reviewMode","QtyName","QtyStep","addPlaceholdersToOutput","innerOnChange","maskedVal","VMasker","toPattern","mask","onCompleteMask","PureComponent","output","index","toMoney","opts","precision","hasOwnProperty","separator","delimiter","unit","suffixUnit","zeroCents","lastOutput","moneyPrecision","mergeMoneyOptions","zeroMatcher","zeroRegExp","RegExp","digitsLength","lastDigitLength","number","clearDelimiter","clearSeparator","money","masked","cents","Array","len","beginCents","centsValue","centsLength","centsSliced","pattern","patternChars","values","charsValues","outputLength","match","toNumber","toAlphaNumeric","Masker","loggi","moment","Cart","dispatch","getShippingRate","lastCheckedAddress","activeCart","getProdsPerStore","s","getShippingRateForStore","ProductId","forcedShippingInfo","JSON","stringify","isNaN","deliveryMethods","add","format","ok","message","getShippingInfo","allShippingInfos","prps","DeliveryMethod","ScheduledDate","ScheduledPeriod","ShippingReturn","setForcedShippingInfo","shinfo","getInnerCart","storeWithProducts","storeName","StoreName","maxLeadTimeInHours","myShippingInfo","isScheduled","canChangeDeliveryMethod","notOk","rowStyle","flexWrap","productsOnly","TouchableRipple","LinkXP","companyName","ProductRow","addressDialogOpened","shipsNow","shipsBy","fromNow","storeIsOpen","stores","myStore","activeCartShippingTotal","activeCartTotalProds","prodsPerStore","Feather","marginVertical","to","ConnectedTotalsComponent","cyberCashFlags","defaultFormat","cards","patterns","cvcLength","luhn","cardFromNumber","num","_i","_j","_len","_len1","_ref","cyberCashFlag","formatCardNumber","groups","upperLength","global","exec","shift","d","f","grep","CreditCardPaperInput","validateCard","allOk","cardNumber","cardNumberValid","exp","cardExp","expArr","getFullYear","cardExpValid","cardCVV","cardCVVValid","cardHolder","cardHolderValid","cardHolderDoc","cardHolderDocValid","getCard","flag","HolderName","ExpirationDate","SecurityCode","OwnerDocumentIdentifier","Flag","CardRemember","cardRemember","cardFlag","myRef","slim","hideCpf","letterSpacing","CreditCardPaperComponent","iconName","visa","electron","mastercard","maestro","diners","amex","discover","editable","className","tintColor","onRemoveCard","ConfirmSaleDialog","taimaut","getSaleStatus","Analytics","Event","msg","whatsappBtn","dismissable","Title","forcedShippingInfoForReview","_CartCountBadge","showingTip","cartCount","ceil","borderTopRightRadius","ResponsiveView","MobileView","TabletView","DesktopView","ViewportRenderer","screenWidth","setScreenWidth","useEffect","onChange","removeEventListener","render","onChangeDimensions","ModalProduct","addToCartPress","productOnCart","qtdNow","comments","onClosed","BContent","isOpen","swipeToClose","backdropPressToClose","ModalStyle","backdropContent","Ingredients","Entypo","LeadTime","maxLength","MinQtyPerSale","BgModalStyle","bottom","ConnectedModalProduct","activeCartProducts","ModalProductWithGet","setProd","prodId","getCC","ccComponent","tryMakeOrder","async","customerForm","isValid","cc","hash","getData","cartProducts","cvv","Origin","Customer","Address","Card","GiftSignature","cartinhaDe","GiftName","cartinhaPara","GiftMsg","msgCartinha","ShippingInfo","CartRef","setItem","CheckingOut","loadingPayment","cardHash","holderName","confirmModalOpened","confirmSaleId","Msg","lProd","srvProd","getLoadedCustomer","getItem","customerLoaded","parse","removeCard","showRemoveCardDialog","cardIdToRemove","reallyRemoveCard","periodoEntrega","openedProduct","flexGrow","viewport","myColumnStyle","isMobile","forceMobileViewport","viewportName","lineHeight","disabled","activeCartTotal","saleConfirmed","Paragraph","CustomerForm","Telephone","Document","Email","BY_PASS_KEYS","VanillaMasker","elements","prototype","unbindElementToMask","onkeyup","onkeydown","bindElementToMask","maskFunction","that","onType","srcElement","keyCode","isAllowedKeyCode","setSelectionRange","maskMoney","maskNumber","maskAlphaNum","maskPattern","unMask","el","CheckoutStrip","hist","GetHistoryHack","carOpened","pathname","borderTopLeftRadius","cartSum","_CartButton","checkoutOpened","CartButton","onChangeTextDelayed","timeOut","searchText","delay","replayAllVidsHack","vids","getElementsByTagName","vid","currentTime","play","clear","pageSize","lastProductIndex","loadingProducts","hasMoreProdsToLoad","prepareCatalog","cats","generatedCategories","auxCats","auxArr","CategoryId","Category","Order","concat","CategoryOrder","objTags","Tags","aName","bName","brands","Brand","modalProductOpened","filteredProducts","showOnlinePrice","SellingOnline","SellingOnStore","tx","SKU","fromPrice","toPrice","selectedBrand","orderedProducts","ordered","orderedInStock","orderedOutOfStock","renderAllProds","renderProds","selectedCategory","totallen","showingProds","PriceOnline","SiteSale","boxShadow","renderCategoriesList","categories","borderBottom","renderSideMenu","btnStyle","categoriesShown","banners","preventProdsLoad","_tOut","_carousel","snapToNext","muted","playsInline","stickyHeaderIndices","loop","layoutCardOffset","onBeforeSnapToItem","vidRef","setIsLoopingAsync","stopAsync","playFromPositionAsync","renderItem","Video","rate","volume","isMuted","shouldPlay","isLooping","onLoad","dat","onLoadStart","onError","err","sliderWidth","itemWidth","snapToPrev","q","alignContent","StyleSheet","layoutIndicator","indicator","indicatorSelected","containerImage","overlay","layoutText","textTitle","textCaption","Slideshow","scrolling","_getPosition","_move","isUpdating","scrollTo","animated","onPositionChanged","pos","dataSource","_panResponder","PanResponder","onPanResponderRelease","gestureState","relativeDistance","dx","vx","change","_interval","setInterval","newWidth","clearInterval","containerStyle","_onRef","decelerationRate","horizontal","showsHorizontalScrollIndicator","scrollEnabled","panHandlers","image","imageObject","textComponent","caption","imageComponent","imageComponentWithOverlay","delayPressIn","setIndicatorSize","indicatorSize","setIndicatorColor","indicatorColor","indicatorSelectedColor","layoutArrow","arrowSize","_prev","arrowRight","iconArrow","iconArrowLeft","arrowLeft","_next","iconArrowRight","propTypes","PropTypes","arrayOf","shape","oneOfType","isRequired","bool","object","func","imageHeight","iconHeight","borderLeftWidth","borderRightColor","borderLeftColor","ProductItem","ProductsScrollView","scrollRef","useRef","currentX","setCurrentX","scrollX","current","scrollPad","arrowBgColor","onScroll","contentOffset","innerList","onClick","ProductsCarousel","row","renderProduct","class","wrapperClassName","SocialNetworksItems","hideLabels","Header","Appbar","menuOpened","hideCartButton","Home","context","getAllData","params","getCategoryInfo","updateStateFromProps","storeAlias","Alert","alert","history","marketplaceStore","BannerURL","getTodayDeliverySchedule","DeliveryTimes","Day","getDay","getWeekDayName","renderDeliveryhoursForDay","deliveryDayInfo","dayName","OpenTime1","CloseTime1","OpenTime2","CloseTime2","isStoreOpened","todaySchedule","now","arrD1Init","dt1init","getMonth","getDate","arrD1Fim","dt1Fim","arrD2Init","dt2init","arrD2Fim","dt2Fim","getTopProductsForCategory","prodsByCategoryId","selectCategory","baseUrl","categoryName","onPressProduct","wBanner","openedCategoryId","todayDelivery","sectionTitle","LogoURL","onChangeBrand","BrandsStories","setBrands","getAllBrands","w","Footer","AlertXp","options","extra","confirm","Boolean","confirmOption","find","cancelOption","SelfService","_products","groupedProds","catProdsList","groupedProducts","doConfirm","mesaId","quickCartProds","checkoutLoading","checkout","atob","kat","qty","prodQtd","qProds","SafeAreaView","ModalCart","theme","DefaultTheme","colors","primary","accent","historyHack","MyHistoryHack","useHistory","preLoadFonts","Font","fontLoaded","styleSheet","createElement","innerText","head","appendChild","vp","content","exact","from","path","goBack","webpackContext","req","webpackContextResolve","__webpack_require__","code","resolve"],"mappings":"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CR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,gBAAiB,IACjB,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,UAAW,IACX,aAAc,IACd,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,UAAW,IACX,aAAc,IACd,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,YAAa,IACb,eAAgB,IAChB,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,QAAS,IACT,WAAY,IACZ,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,UAAW,IACX,aAAc,IACd,QAAS,IACT,WAAY,IACZ,OAAQ,IACR,UAAW,IACX,QAAS,IACT,WAAY,IACZ,QAAS,IACT,aAAc,IACd,gBAAiB,IACjB,WAAY,IACZ,UAAW,IACX,aAAc,IACd,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,UAAW,IACX,OAAQ,IACR,YAAa,IACb,eAAgB,IAChB,UAAW,IACX,OAAQ,IACR,UAAW,IACX,aAAc,IACd,gBAAiB,IACjB,OAAQ,IACR,UAAW,IACX,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,IACd,UAAW,IACX,aAAc,KAIf,SAAS6lC,EAAeC,GACvB,IAAI79B,EAAK89B,EAAsBD,GAC/B,OAAOE,EAAoB/9B,GAE5B,SAAS89B,EAAsBD,GAC9B,IAAIE,EAAoB9mC,EAAEc,EAAK8lC,GAAM,CACpC,IAAI1rC,EAAI,IAAI8a,MAAM,uBAAyB4wB,EAAM,KAEjD,MADA1rC,EAAE6rC,KAAO,mBACH7rC,EAEP,OAAO4F,EAAI8lC,GAEZD,EAAe9lC,KAAO,WACrB,OAAOD,OAAOC,KAAKC,IAEpB6lC,EAAeK,QAAUH,EACzB3tC,EAAOC,QAAUwtC,EACjBA,EAAe59B,GAAK,K,oBCnRpB7P,EAAOC,QAAU,IAA0B,mC,oBCA3CD,EAAOC,QAAU,IAA0B,6B,oBCA3CD,EAAOC,QAAU,IAA0B,gC","file":"static/js/app.d4e6b80b.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/logoRazcau.ba7765f4.png\";","module.exports = __webpack_public_path__ + \"static/media/LOGO_SOS_2.7e827407.png\";","import React from 'react';\r\nimport { View, Text, Dimensions, TouchableOpacity, ScrollView, Animated } from 'react-native';\r\n\r\nconst ViewportNames = {\r\n Desktop: 'desktop',\r\n Tablet: 'tablet',\r\n Mobile: 'mobile',\r\n}\r\n\r\nexport default class ResponsiveColumns extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n var _window = Dimensions.get('window');\r\n var cview = this.getViewportName(_window.width);\r\n this.state = {\r\n ...this.getScreenStateFromViewport(cview),\r\n shadowOn: true,\r\n contentHeight: _window.height,\r\n contentWidth: _window.width,\r\n lastWindowWidth: _window.width\r\n };\r\n Dimensions.addEventListener('change', (e) => {\r\n const { width, height } = e.window;\r\n if (this.state.lastWindowWidth != width) {\r\n this.setState(this.getScreenStateFromViewport(this.getViewportName(width)));\r\n }\r\n });\r\n if (props.myref) props.myref(this);\r\n }\r\n\r\n getViewportName = (width) => width < 768 ? ViewportNames.Mobile : width < 992 ? ViewportNames.Tablet : ViewportNames.Desktop;\r\n\r\n getScreenStateFromViewport = (currentViewport) => {\r\n var stt = {\r\n currentViewport: currentViewport,\r\n rightOpened: currentViewport == ViewportNames.Mobile || currentViewport == ViewportNames.Tablet ? false : true,\r\n leftOpened: currentViewport == ViewportNames.Mobile ? false : true,\r\n }\r\n return {\r\n ...stt,\r\n shadowOn: stt.currentViewport == ViewportNames.Mobile && stt.leftOpened ? true :\r\n stt.currentViewport == ViewportNames.Mobile || stt.currentViewport == ViewportNames.Tablet && stt.rightOpened ? true\r\n : false\r\n }\r\n }\r\n isShadowNeeded = (stt) => {\r\n return stt.currentViewport == ViewportNames.Mobile && stt.leftOpened ? true :\r\n (stt.currentViewport == ViewportNames.Mobile || stt.currentViewport == ViewportNames.Tablet) && stt.rightOpened ? true\r\n : false\r\n }\r\n\r\n measureContent = () => {\r\n this.mycontent.measure((ox, oy, width, height, px, py) => this.setState({ contentWidth: width, contentHeight: height }));\r\n }\r\n\r\n render() {\r\n var columnWidth = this.props.columnWidth || (this.state.currentViewport == ViewportNames.Mobile ? 280 : this.state.currentViewport == ViewportNames.Tablet ? 300 : 320);\r\n var ww = Dimensions.get('window').width;\r\n var toggleLeftScreen = () => this.setState({ leftOpened: !this.state.leftOpened })\r\n var toggleRightScreen = () => this.setState({ rightOpened: !this.state.rightOpened })\r\n var viewState = {\r\n ...this.state,\r\n toggleLeftScreen: toggleLeftScreen,\r\n toggleRightScreen: toggleRightScreen,\r\n };\r\n return { this.mycontent = c }}>\r\n\r\n {this.props.renderLeft &&\r\n this.setState({ leftOpened: false })}>\r\n {this.props.renderLeft(viewState)}\r\n \r\n // \r\n // {this.props.renderLeft(viewState)}\r\n // \r\n }\r\n \r\n {this.props.renderCenter(viewState)}\r\n \r\n {this.props.renderRight &&\r\n this.setState({ rightOpened: false })}>\r\n {this.props.renderRight(viewState)}\r\n \r\n }\r\n {/* {this.isShadowNeeded(this.state) ?\r\n { this.setState({ shadowOn: false }); console.log('!!!!!!!!'); }}\r\n style={{\r\n display: 'flex', position: 'absolute', width: ww, height: this.state.contentHeight, alignItems: 'stretch',\r\n backgroundColor: 'rgba(0,0,0,0.0)', zIndex: 3, overflow: 'hidden'\r\n }}>\r\n {\r\n this.setState({\r\n leftOpened: this.state.currentViewport == ViewportNames.Mobile ? false : true,\r\n rightOpened: this.state.currentViewport == ViewportNames.Tablet || this.state.currentViewport == ViewportNames.Mobile ? false : true\r\n });\r\n }}\r\n style={{\r\n position: 'relative', width: ww, height: this.state.contentHeight, backgroundColor: 'rgba(0,0,0,0.2)',\r\n zIndex: 4, justifyContent: 'center', alignItems: 'center'\r\n }}\r\n >\r\n \r\n \r\n \r\n : null\r\n } */}\r\n \r\n }\r\n}\r\n\r\nexport class FloatingColumn extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n //if (!props.fixed) {\r\n this.animVal = new Animated.Value(this.getDesiredPosition(props.side, props.opened, props.width, props.windowWidth));\r\n this.animValShadow = new Animated.Value(props.opened ? 1 : 0);\r\n //}\r\n }\r\n getDesiredPosition = (side, opened, width, windowWidth) => {\r\n if (side == 'right') {\r\n if (opened) return windowWidth - width;\r\n else return windowWidth;\r\n } else {\r\n if (opened) return windowWidth - width;\r\n else return windowWidth;\r\n }\r\n return side == 'left' ? (opened ? (windowWidth - width) : windowWidth)\r\n : (opened ? (windowWidth - width) : width)\r\n }\r\n componentWillReceiveProps(nextProps) {\r\n if (!nextProps.fixed && this.props.opened != nextProps.opened) {\r\n Animated.timing(this.animVal, {\r\n toValue: this.getDesiredPosition(nextProps.side, nextProps.opened, nextProps.width, nextProps.windowWidth),\r\n duration: 350,\r\n }).start();\r\n Animated.timing(this.animValShadow, {\r\n toValue: nextProps.opened ? 1 : 0,\r\n duration: 350,\r\n }).start();\r\n }\r\n }\r\n\r\n render() {\r\n var { side, style, width, windowWidth, windowHeight, fixed, opened } = this.props;\r\n if (fixed) {\r\n return \r\n {this.props.children}\r\n \r\n }\r\n return [\r\n {this.props.children}\r\n ,\r\n !this.props.fixed && this.props.opened ?\r\n \r\n { this.props.onClose() }}\r\n style={{\r\n position: 'relative', width: windowWidth, height: windowHeight, backgroundColor: 'rgba(0,0,0,0)',\r\n zIndex: 4, justifyContent: 'center', alignItems: 'center'\r\n }}\r\n >\r\n \r\n \r\n \r\n : null\r\n ]\r\n }\r\n}\r\n\r\nconst styles = {\r\n container: {\r\n flex: 1,\r\n backgroundColor: '#fff',\r\n flexDirection: 'row',\r\n alignItems: 'stretch',\r\n justifyContent: 'center',\r\n alignSelf: 'stretch'\r\n },\r\n};\r\n\r\n","const SET_PRODUCTS = 'SET_PRODUCTS'\r\n\r\nexport const setProducts = prods => ({\r\n type: SET_PRODUCTS,\r\n payload: prods\r\n})\r\n\r\nconst initialState = {\r\n products: []\r\n}\r\n\r\nexport function catalogReducer(state = initialState, action) {\r\n const { type, payload } = action\r\n\r\n switch (type) {\r\n case SET_PRODUCTS:\r\n var newState = {...state};\r\n newState.products = payload;\r\n return newState;\r\n default:\r\n return state\r\n }\r\n}\r\n","import { Dimensions } from 'react-native';\r\nconst { width: viewportWidth, height: viewportHeight } = Dimensions.get('window');\r\n\r\nfunction percentW(percentage) {\r\n const value = (percentage * viewportWidth) / 100;\r\n return Math.round(value);\r\n}\r\nfunction percentH(percentage) {\r\n const value = (percentage * viewportHeight) / 100;\r\n return Math.round(value);\r\n}\r\n\r\nconst NormalizeString = (str) => {\r\n var string = str;\r\n var mapaAcentosHex = {\r\n a: /[\\xE0-\\xE6]/g,\r\n A: /[\\xC0-\\xC6]/g,\r\n e: /[\\xE8-\\xEB]/g,\r\n E: /[\\xC8-\\xCB]/g,\r\n i: /[\\xEC-\\xEF]/g,\r\n I: /[\\xCC-\\xCF]/g,\r\n o: /[\\xF2-\\xF6]/g,\r\n O: /[\\xD2-\\xD6]/g,\r\n u: /[\\xF9-\\xFC]/g,\r\n U: /[\\xD9-\\xDC]/g,\r\n c: /\\xE7/g,\r\n C: /\\xC7/g,\r\n n: /\\xF1/g,\r\n N: /\\xD1/g\r\n };\r\n for (var letra in mapaAcentosHex) {\r\n var expressaoRegular = mapaAcentosHex[letra];\r\n string = string.replace(expressaoRegular, letra);\r\n }\r\n return string;\r\n}\r\n\r\nconst objToArray = (obj) => Object.keys(obj).map(x => obj[x]);\r\nconst Helpers = {\r\n FloatToReais: (price) => {\r\n if (!price || price == null) {\r\n return null\r\n }\r\n if (typeof (price) == 'string') price = Number(price);\r\n return (\r\n 'R$ ' +\r\n price\r\n .toFixed(2) //TO Decimal\r\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, '.') //Set Dots\r\n .replace(/.([^.]*)$/, ',$1')\r\n ) // Replace last dot do comma\r\n },\r\n percentH: percentH,\r\n percentW: percentW,\r\n ObjToArray: objToArray,\r\n Any: (arr, key, val) => arr.filter(x => (key == null ? x : x[key]) && (val == null ? true : (key == null ? x : x[key]) == val)).length > 0,\r\n First: (arr, key, val) => arr.filter(x => (key == null ? x : x[key]) && (val == null ? true : (key == null ? x : x[key]) == val))[0],\r\n FirstOrDefault: (arr, lambda, default_) => arr.filter(lambda).length > 0 ? arr.filter(lambda)[0] : default_,\r\n Count: (arr, fcn) => arr.filter(fcn).length,\r\n Distinct: (arr) => {\r\n var ret = {}; arr.map(x => ret[x] = x);\r\n return objToArray(ret);\r\n },\r\n GroupBy: (arr, key) => {\r\n return arr.reduce(function (rv, x) {\r\n (rv[x[key]] = rv[x[key]] || []).push(x);\r\n return rv;\r\n }, {});\r\n },\r\n OrderBy: (arr, key, desc) => {\r\n var ret = arr.sort((a, b) => typeof a[key] == 'string' ?\r\n // string\r\n (NormalizeString(a[key]) < NormalizeString(b[key]) ? -1 : (NormalizeString(a[key]) > NormalizeString(b[key]) ? 1 : 0))\r\n : // int \r\n (a[key] - b[key])\r\n );\r\n return desc ? ret.reverse() : ret;\r\n },\r\n Sum: function (items, prop) {\r\n return items.reduce(function (a, b) {\r\n return a + b[prop];\r\n }, 0)\r\n },\r\n MaxFromArray: function(arr,prop){\r\n var max = -9999999;\r\n arr.map(x=> { if(x[prop] > max) max = x[prop];});\r\n return max;\r\n },\r\n Max: function(a,b){\r\n return a > b ? a : b;\r\n },\r\n Min: function(a,b){\r\n return a < b ? a : b;\r\n },\r\n NewGuid: () => {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\r\n var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\r\n return v.toString(16);\r\n });\r\n },\r\n MaskBRPhone: (v) => {\r\n v = v.replace(/\\D/g, \"\");\r\n v = v.replace(/^(\\d{2})(\\d)/g, \"($1) $2\");\r\n v = v.replace(/(\\d)(\\d{4})$/, \"$1-$2\");\r\n return v;\r\n },\r\n NumbersFromString: (v) => {\r\n v = v.replace(/\\D/g, \"\");\r\n return v;\r\n },\r\n MaskCreditCard: function (str) {\r\n return str.replace(/\\d(?=\\d{4})/g, \"●\");\r\n },\r\n NormalizeString: NormalizeString,\r\n ToLowerSemAcentos: (str) => NormalizeString(str.toLowerCase())\r\n}\r\nexport default Helpers;","export const PaymentMethod = {\r\n MONEY: 'money',\r\n CREDIT: 'credit',\r\n DEBIT: 'debit',\r\n INSTAGRANA: 'instagrana',\r\n}\r\nexport const PaymentType = {\r\n POS: 'pos',\r\n TEF: 'tef',\r\n ONLINE: 'online',\r\n}\r\nexport const PaymentMethodBR = {\r\n money: 'Dinheiro',\r\n credit: 'Crédito',\r\n debit: 'Débito',\r\n instagrana: 'instagrana',\r\n}\r\nexport const EnumSaleStatus =\r\n{\r\n Opened: 1,\r\n Confirmed: 2,\r\n Denied: 3,\r\n Delivered: 4,\r\n ConfirmedByCyberCash: 5,\r\n Canceled: 6\r\n}\r\nexport const EnumSaleStatusBR =\r\n{\r\n 1: 'Aberta',\r\n 2: 'Confirmada',\r\n 3: 'Negada',\r\n 4: 'Entregue',\r\n 5: 'ConfirmadaCyberCash',\r\n 6: 'Cancelada'\r\n}\r\nexport const EnumOriginSale =\r\n{\r\n Site: 1,\r\n App: 2,\r\n POS: 3,\r\n iFood: 4\r\n}","import Guid from 'guid'\r\nimport Helpers from '../utils/Helpers'\r\nimport { EnumSaleStatus } from '../constants/Enums';\r\n\r\nconst ADD_SALE = 'ADD_SALE'\r\nconst SET_SALE = 'SET_SALE'\r\nconst SET_NOTA_DATA = 'SET_NOTA_DATA'\r\nconst SET_CUSTOMER_DATA = 'SET_CUSTOMER_DATA'\r\nconst SET_ALL_SALES = 'SET_ALL_SALES'\r\nconst CANCEL_SALE = 'CANCEL_SALE'\r\n\r\nexport const addSale = s => ({\r\n type: ADD_SALE,\r\n payload: s\r\n})\r\nexport const setSale = (saleGuid, sale) => ({\r\n type: SET_SALE,\r\n payload: { saleGuid, sale }\r\n})\r\nexport const setAllSales = (salesObj) => ({\r\n type: SET_ALL_SALES,\r\n payload: salesObj\r\n})\r\nexport const cancelSale = (saleGuid) => dispatch => {\r\n dispatch({\r\n type: CANCEL_SALE,\r\n payload: { saleGuid }\r\n })\r\n return Promise.resolve();\r\n}\r\nexport const setNotaData = (saleGuid, notaData) => dispatch => {\r\n dispatch({\r\n type: SET_NOTA_DATA,\r\n payload: { saleGuid, notaData }\r\n })\r\n return Promise.resolve();\r\n}\r\nexport const setCustomerData = (saleGuid, customerData) => ({\r\n type: SET_CUSTOMER_DATA,\r\n payload: { saleGuid, customerData }\r\n})\r\n\r\nconst addSaleReducer = (state, sale) => {\r\n if (!sale.guid) sale.guid = Guid.raw();\r\n //sale data\r\n sale.soldDate = new Date();\r\n sale.synced = false;\r\n sale.status = EnumSaleStatus.Confirmed;\r\n // objects to arrays on close sale to sync to server better\r\n sale.payments = Helpers.ObjToArray(sale.payments)\r\n sale.products = Helpers.ObjToArray(sale.products)\r\n // sales obj state cleanup:\r\n var newState = clearOldSales({ ...state })\r\n // add new sale\r\n newState[sale.guid] = sale;\r\n return newState;\r\n}\r\n\r\nconst clearOldSales = (salesObj) => {\r\n var arrSales = Helpers.ObjToArray(salesObj);\r\n var daysAgo = new Date();\r\n daysAgo=daysAgo.addDays(-5);\r\n arrSales = arrSales.filter(x => new Date(x.soldDate) > daysAgo || x.dateSync==null);\r\n var newSales = {};\r\n arrSales.map(x => newSales[x.guid] = x);\r\n return newSales;\r\n}\r\n\r\nexport const getSale = (sales = {}, saleGuid) => {\r\n return sales[saleGuid] || {};\r\n}\r\n\r\nconst initialState = {}\r\n\r\nexport function salesReducer(state = initialState, action) {\r\n const { type, payload } = action\r\n\r\n switch (type) {\r\n case ADD_SALE:\r\n return addSaleReducer(state, payload)\r\n case SET_SALE:\r\n var newState = { ...state };\r\n var sale = { ...(getSale(newState, payload.saleGuid)) };\r\n sale = { ...sale, ...(payload.sale) };\r\n newState[payload.saleGuid] = sale;\r\n return newState;\r\n case SET_ALL_SALES:\r\n var newState = { ...payload };\r\n return newState;\r\n case CANCEL_SALE:\r\n var newState = { ...state };\r\n var sale = { ...(getSale(newState, payload.saleGuid)) };\r\n sale.status = EnumSaleStatus.Canceled;\r\n sale.nf = {};\r\n newState[payload.saleGuid] = sale;\r\n return newState;\r\n case SET_NOTA_DATA:\r\n var newState = { ...state };\r\n var sale = { ...(getSale(newState, payload.saleGuid)) };\r\n sale.nf = payload.notaData;\r\n newState[payload.saleGuid] = sale;\r\n return newState;\r\n case SET_CUSTOMER_DATA:\r\n var newState = { ...state };\r\n var sale = { ...(getSale(newState, payload.saleGuid)) };\r\n sale.customer = payload.customerData;\r\n newState[payload.saleGuid] = sale;\r\n return newState;\r\n default:\r\n return state\r\n }\r\n}","import Helpers from '../utils/Helpers'\r\nvar Big = require('big.js');\r\n\r\nconst ADD_TO_CART = 'ADD_TO_CART'\r\nconst SET_ACTIVE_CART_ID = 'SET_ACTIVE_CART_ID'\r\nconst SET_CART = 'SET_CART'\r\nconst REMOVE_CART = 'REMOVE_CART'\r\nconst CLEAR_ALL_CARTS = 'CLEAR_ALL_CARTS'\r\nconst NEW_CART = 'NEW_CART'\r\nconst SET_PRODUCT_TO_ACTIVE_CART = 'SET_PRODUCT_TO_ACTIVE_CART'\r\nconst REMOVE_FROM_CART = 'REMOVE_FROM_CART'\r\nconst ADD_PAYMENT_TO_CART = 'ADD_PAYMENT_TO_CART'\r\nconst REMOVE_PAYMENT_FROM_CART = 'REMOVE_PAYMENT_FROM_CART'\r\nconst SET_CUSTOMER_TO_CART = 'SET_CUSTOMER_TO_CART'\r\n\r\nexport const setActiveCartId = (cartId) => ({\r\n type: SET_ACTIVE_CART_ID,\r\n payload: cartId\r\n})\r\nexport const setCart = (cartId, cart) => ({\r\n type: SET_CART,\r\n payload: { cartId, cart }\r\n})\r\n\r\nexport const addToCart = (prod, cartId) => ({\r\n type: ADD_TO_CART,\r\n payload: { prod, cartId }\r\n})\r\nexport const removeFromCart = (prod, cartId) => ({\r\n type: REMOVE_FROM_CART,\r\n payload: { prod, cartId }\r\n})\r\n\r\nexport const addPaymentToCart = (payment, cartId) => ({\r\n type: ADD_PAYMENT_TO_CART,\r\n payload: { payment, cartId }\r\n})\r\nexport const removePaymentFromCart = (paymentId, cartId) => ({\r\n type: REMOVE_PAYMENT_FROM_CART,\r\n payload: { paymentId, cartId }\r\n})\r\nexport const setCustomerToCart = (customer, cartId) => ({\r\n type: SET_CUSTOMER_TO_CART,\r\n payload: { customer, cartId }\r\n})\r\n\r\nexport const clearAllCarts = () => ({\r\n type: CLEAR_ALL_CARTS,\r\n payload: {}\r\n})\r\nexport const newCart = () => ({\r\n type: NEW_CART,\r\n payload: {}\r\n})\r\nexport const removeCart = (cartId) => ({\r\n type: REMOVE_CART,\r\n payload: { cartId }\r\n})\r\nexport const setProductToActiveCart = (prod) => ({\r\n type: SET_PRODUCT_TO_ACTIVE_CART,\r\n payload: { prod }\r\n})\r\n\r\nexport const getCart = (carts = {}, cartId) => {\r\n return packCart(carts[cartId] || {\r\n guid: cartId,\r\n name: 'Carrinho',\r\n createdAt: new Date(),\r\n products: {},\r\n payments: []\r\n });\r\n}\r\n\r\nexport const getCartFullShippingTotal = (cart) => {\r\n let sumShippings = 0;\r\n Object.keys(cart).map(x => {\r\n if (x.indexOf('shippingFor') == 0) {\r\n sumShippings += cart[x].price;\r\n }\r\n });\r\n return sumShippings;\r\n}\r\n\r\nexport const isAnyShippingOurOfReach = (cart) => {\r\n let isOutOfReach = false;\r\n Object.keys(cart).map(x => {\r\n if (x.indexOf('shippingFor') == 0) {\r\n if (cart[x].outOfReach) isOutOfReach = true;\r\n }\r\n });\r\n return isOutOfReach;\r\n}\r\n\r\nexport const getCartFullTotal = (cart) => {\r\n let sumProds = sumProducts(cart.products);\r\n let sumShippings = getCartFullShippingTotal(cart);\r\n return sumProds + sumShippings;\r\n}\r\n\r\nconst addToCartReducer = (state, prod, cartId) => {\r\n console.log('adding prod to cart', prod.Id, cartId);\r\n // get (new?) cart\r\n var cart = getCart(state.carts, cartId)\r\n // set product on cart\r\n var prodFound = cart.products[prod.Id];\r\n if (prodFound) { // already had this prod on cart (let add Quantity)\r\n cart.products[prod.Id] = { ...prodFound, Quantity: Number(new Big(prodFound.Quantity).plus(prodFound.QtyToDisplayPrice || 1)) };\r\n } else {\r\n cart.products[prod.Id] = { ...prod, Quantity: prod.Quantity || prod.QtyToDisplayPrice || 1 };\r\n }\r\n // pack cart and return\r\n var newCartsState = { ...state };\r\n newCartsState.carts[cartId] = packCart(cart);\r\n return newCartsState;\r\n}\r\n\r\nexport const sumProducts = (prods) => {\r\n return Helpers.ObjToArray(prods).reduce((a, b) => {\r\n var totalProdVal = Number(new Big(b.Price).times(b.Quantity));\r\n // products individual discounts\r\n if (b.discount) {\r\n if (b.discount.type == 'percent')\r\n totalProdVal = Number(new Big(totalProdVal).times(new Big(1).minus(new Big(b.discount.value).div(100))));\r\n else if (b.discount.type == 'value')\r\n totalProdVal = Number(new Big(totalProdVal).minus(b.discount.value));\r\n }\r\n return Number(new Big(a).plus(totalProdVal.toFixed(2)));\r\n }, 0);\r\n}\r\n\r\n// packing cart (sum, totals, etc)\r\nconst packCart = (cart) => {\r\n //console.log('packing cart:',JSON.stringify(cart))\r\n cart.sum = sumProducts(cart.products);\r\n // cart global discount?\r\n if (cart.discount) {\r\n if (cart.discount.type == 'percent')\r\n cart.sum = Number(new Big(cart.sum).times(new Big(1).minus(new Big(cart.discount.value).div(100))));\r\n else if (cart.discount.type == 'value')\r\n cart.sum = Number(new Big(cart.sum).minus(cart.discount.value));\r\n }\r\n // totals:\r\n cart.qtd = Helpers.ObjToArray(cart.products).reduce((a, b) => Number(new Big(a).plus(b.Quantity)), 0);\r\n cart.amountPaid = cart.payments.reduce((a, b) => Number(new Big(a).plus(b.value)), 0) || 0;\r\n cart.amountDue = Number(new Big(cart.sum).minus(cart.amountPaid));\r\n //console.log('packed Cart:', JSON.stringify(cart));\r\n\r\n // clear unnecessary shippings (for stores without products on cart)\r\n Object.keys(cart).map(x => {\r\n if (x.indexOf('shippingFor') == 0) {\r\n var storeId = x.replace('shippingFor', '');\r\n if (Helpers.ObjToArray(cart.products).filter(y => y.StoreId == storeId).length == 0)\r\n delete cart[x];\r\n }\r\n });\r\n\r\n return cart;\r\n}\r\n\r\nconst clearEmptyCarts = (carts) => {\r\n var newCarts = {};\r\n Object.keys(carts).map(x => {\r\n var c = carts[x];\r\n // has products or payments or customer or discount?\r\n if (Object.keys(c.products).length > 0 || c.payments.length > 0 || c.customer || c.discount)\r\n newCarts[x] = c;\r\n })\r\n return newCarts;\r\n}\r\n\r\nconst initialState = {\r\n activeCartId: Helpers.NewGuid(),\r\n carts: {}\r\n}\r\n\r\nexport function cartsReducer(state = initialState, action) {\r\n const { type, payload } = action\r\n\r\n switch (type) {\r\n case ADD_TO_CART:\r\n return addToCartReducer(state, payload.prod, payload.cartId)\r\n case REMOVE_FROM_CART:\r\n var newState = { ...state }\r\n var cart = getCart(newState.carts, payload.cartId);\r\n delete cart.products[payload.prod.Id];\r\n newState.carts[payload.cartId] = packCart(cart);\r\n return newState;\r\n case SET_ACTIVE_CART_ID:\r\n var newState = { ...state };\r\n newState.carts = clearEmptyCarts(newState.carts);\r\n return { ...newState, activeCartId: payload }\r\n case SET_CART:\r\n var newState = { ...state };\r\n newState.carts = clearEmptyCarts(newState.carts);\r\n newState.carts[payload.cartId] = packCart(payload.cart);\r\n return newState;\r\n case REMOVE_CART:\r\n var newState = { ...state };\r\n newState.carts = clearEmptyCarts(newState.carts);\r\n delete newState.carts[payload.cartId];\r\n return newState;\r\n case CLEAR_ALL_CARTS:\r\n return { ...initialState }\r\n case NEW_CART:\r\n var newState = { ...state }\r\n var activeCartId = Helpers.NewGuid();\r\n newState.carts[activeCartId] = getCart(newState.carts, activeCartId);\r\n newState.carts = clearEmptyCarts(newState.carts);\r\n newState.activeCartId = activeCartId;\r\n return newState;\r\n case SET_PRODUCT_TO_ACTIVE_CART:\r\n var newState = { ...state }\r\n var cart = getCart(newState.carts, newState.activeCartId);\r\n cart.products[payload.prod.Id] = payload.prod;\r\n newState.carts[newState.activeCartId] = packCart(cart);\r\n return newState;\r\n // PAYMENTS:\r\n case SET_CUSTOMER_TO_CART:\r\n var newState = { ...state }\r\n var cart = getCart(newState.carts, payload.cartId);\r\n cart.customer = payload.customer;\r\n newState.carts[payload.cartId] = { ...packCart(cart) };\r\n return newState;\r\n // PAYMENTS:\r\n case ADD_PAYMENT_TO_CART:\r\n var newState = { ...state }\r\n var cart = getCart(newState.carts, payload.cartId);\r\n payload.payment.id = Helpers.NewGuid();\r\n cart.payments.push(payload.payment);\r\n newState.carts[payload.cartId] = { ...packCart(cart) };\r\n return newState;\r\n // PAYMENTS:\r\n case REMOVE_PAYMENT_FROM_CART:\r\n var newState = { ...state }\r\n var cart = getCart(newState.carts, payload.cartId);\r\n cart.payments = cart.payments.filter(p => p.id != payload.paymentId);\r\n newState.carts[payload.cartId] = { ...packCart(cart) };\r\n return newState;\r\n\r\n\r\n default:\r\n return state\r\n }\r\n}","const SET_USER_AUTH = 'SET_USER_AUTH';\r\n\r\nexport const setUserAuth = (auth) => {\r\n return { type: SET_USER_AUTH, payload: auth }\r\n}\r\n\r\nexport const logout = () => {\r\n return { type: SET_USER_AUTH, payload: {} }\r\n}\r\n\r\nconst initialState = {\r\n userAuth: {}\r\n}\r\n\r\nexport const authReducer = (state = initialState,action) => {\r\n const { type, payload } = action\r\n\r\n switch (type) {\r\n case SET_USER_AUTH: {\r\n return {\r\n ...state,\r\n userAuth: payload\r\n }\r\n }\r\n\r\n default:\r\n return state\r\n }\r\n}","const ADD_USER = 'ADD_USER'\r\nconst REMOVE_USER = 'REMOVE_USER'\r\n\r\nexport const addUser = (user) => {\r\n return { type: ADD_USER, payload: user }\r\n}\r\nexport const removeUser = (id) => {\r\n return { type: REMOVE_USER, payload: {id} }\r\n}\r\n\r\nconst initialState = []\r\n\r\nexport const usersReducer = (state = initialState,action) => {\r\n const { type, payload } = action\r\n const { users } = state\r\n\r\n switch (type) {\r\n case ADD_USER: {\r\n // state without actual user (for updating his data and not duplicating)\r\n var newState = state.filter(x => x.id != payload.id);\r\n return [\r\n ...newState,\r\n payload\r\n ]\r\n }\r\n case REMOVE_USER: {\r\n return state.filter(x => x.id != payload.id)\r\n }\r\n\r\n default:\r\n return state\r\n }\r\n}","const SET_CUSTOMER_USER = 'SET_CUSTOMER_USER';\r\n\r\nexport const setCustomerUser = (auth) => {\r\n return { type: SET_CUSTOMER_USER, payload: auth }\r\n}\r\n\r\nexport const logout = () => {\r\n return { type: SET_CUSTOMER_USER, payload: {} }\r\n}\r\n\r\nconst initialState = {\r\n}\r\n\r\nexport const customerUserReducer = (state = initialState,action) => {\r\n const { type, payload } = action\r\n\r\n switch (type) {\r\n case SET_CUSTOMER_USER: {\r\n return {\r\n ...state,\r\n ...payload\r\n }\r\n }\r\n\r\n default:\r\n return state\r\n }\r\n}","const ADD_CREDITCARD = 'ADD_CREDITCARD'\r\nconst REMOVE_CREDITCARD = 'REMOVE_CREDITCARD'\r\n\r\nexport const addCreditCard = (card) => {\r\n return { type: ADD_CREDITCARD, payload: card }\r\n}\r\nexport const removeCreditCard = (id) => {\r\n return { type: REMOVE_CREDITCARD, payload: {id} }\r\n}\r\n\r\nconst initialState = []\r\n\r\nexport const cardsReducer = (state = initialState,action) => {\r\n const { type, payload } = action\r\n const { creditcards } = state\r\n\r\n switch (type) {\r\n case ADD_CREDITCARD: {\r\n return [\r\n ...state,\r\n payload\r\n ]\r\n }\r\n case REMOVE_CREDITCARD: {\r\n return state.filter(x => x.id != payload.id)\r\n }\r\n\r\n default:\r\n return state\r\n }\r\n}","const SET_ROUTE = 'SET_ROUTE';\r\n\r\nexport const setRoute = (route) => {\r\n return { type: SET_ROUTE, payload: route }\r\n}\r\n\r\nconst initialState = {\r\n route: '/'\r\n}\r\n\r\nexport const routeReducer = (state = initialState, action) => {\r\n const { type, payload } = action\r\n\r\n switch (type) {\r\n case SET_ROUTE: {\r\n //console.log('SET_ROUTE:', payload)\r\n return {\r\n route: payload\r\n }\r\n }\r\n default:\r\n return state\r\n }\r\n}","import AsyncStorage from '@react-native-async-storage/async-storage';\r\nimport { createStore, combineReducers, compose, applyMiddleware } from 'redux'\r\nimport { persistStore, autoRehydrate } from 'redux-persist'\r\nimport thunk from 'redux-thunk'\r\nimport { logger } from 'redux-logger'\r\nimport localForage from 'localforage'\r\nimport { catalogReducer } from './catalogReducer'\r\nimport { salesReducer } from './salesReducer'\r\nimport { cartsReducer } from './cartsReducer'\r\nimport { authReducer } from './authReducer'\r\nimport { usersReducer } from './usersReducer';\r\nimport { customerUserReducer } from './customerUserReducer';\r\nimport { cardsReducer } from './cardsReducer';\r\nimport { Platform } from 'react-native';\r\nimport { routeReducer } from './routeReducer'\r\n\r\nconst initStore = () => {\r\n const store = createStore(\r\n combineReducers({\r\n cart: cartsReducer,\r\n catalog: catalogReducer,\r\n creditcards: cardsReducer,\r\n sales: salesReducer,\r\n auth: authReducer,\r\n route: routeReducer,\r\n users: usersReducer,\r\n customerUser: customerUserReducer,\r\n //connectivity: connectivityReducer\r\n }),\r\n {},\r\n compose(autoRehydrate(), applyMiddleware(thunk/* ,logger*/))\r\n )\r\n \r\n const MyStorage = Platform.OS === 'web' ? localForage : AsyncStorage;\r\n var persistor = persistStore(store, { storage: MyStorage}, (a) => {\r\n //console.log('restored store:',JSON.stringify(a));\r\n //console.log('localForage:',localForage);\r\n })\r\n \r\n return store;\r\n }\r\n\r\n export default initStore(); ","import store from './../store/store';\r\nimport { catalogReducer, setProducts } from './../store/catalogReducer';\r\n\r\nimport axios from 'axios'\r\nimport { setSale } from '../store/salesReducer';\r\nvar moment = require('moment');\r\n\r\nconst CompanyName = 'SOS Chocolate';\r\nconst BaseURL = \"https://www.soschocolate.com.br\";\r\n//const BaseURL = \"https://homolog.soschocolate.com.br\";\r\n//const BaseURL = \"http://localhost:64649\";\r\n//const BaseURL = \"http://10.0.0.104:64650\";\r\n//const BaseURL = \"http://192.168.0.6:64650\";\r\n//const BaseURL = \"http://10.0.0.101:64650\";\r\nconst ApiURL = BaseURL + \"/api/v1\";\r\nconst AdminURL = BaseURL + \"/admin\";\r\n\r\nconst SaleOrigins = { Site: 1, App: 2, POS: 3, iFood: 4 }\r\n\r\nvar Api = {\r\n CompanyName,\r\n BaseURL,\r\n ApiURL,\r\n AdminURL,\r\n SaleOrigins,\r\n Login: (user, pass) => {\r\n return axios.post(ApiURL + '/user/login', { email: user, password: pass })\r\n },\r\n AddressSuggestions: (text) => {\r\n return axios.get(ApiURL + '/public/places?address=' + text);\r\n },\r\n Geocode: (text) => {\r\n return axios.get(ApiURL + '/public/geocode?address=' + text);\r\n },\r\n GooglePlaceDetails: (placeId) => {\r\n return axios.get(ApiURL + '/public/placeDetails?placeId=' + placeId);\r\n },\r\n GetBanners: () => {\r\n return axios.get(ApiURL + '/public/getBanners');\r\n },\r\n GetBrands: () => {\r\n return axios.get(ApiURL + '/public/getBrands');\r\n },\r\n GetShipping: (address, storeId, deliveryMethod, scheduledDate, scheduledPeriod, productsJson) => {\r\n var addrQS = Object.keys(address).reduce(function (a, k) { a.push(k + '=' + encodeURIComponent(address[k])); return a }, []).join('&');\r\n return axios.get(ApiURL + '/checkout/GetShipping?storeId=' + storeId\r\n + '&method=' + deliveryMethod\r\n + '&scheduledDate=' + (scheduledDate || '')\r\n + '&scheduledPeriod=' + (scheduledPeriod || '')\r\n + '&productsJson=' + productsJson + '&' + addrQS);\r\n },\r\n Products: {\r\n getAllCategories: (storeId = 0) => {\r\n return axios.get(ApiURL + '/public/getCategoriesOnline?storeId=' + storeId)\r\n },\r\n getProducts: (id = 0, storeId = 0, categoryId = 0, brandId = 0, text = \"\", orderBy = \"\", skip = 0, take = 50) => {\r\n return axios.get(ApiURL + '/public/GetProductsOnline?id=' + id + '&storeId=' + storeId\r\n + '&categoryId=' + categoryId\r\n + '&brandId=' + brandId\r\n + '&text=' + text\r\n + '&orderBy=' + orderBy\r\n + '&skip=' + skip\r\n + '&take=' + take)\r\n // .then(x => {\r\n // //console.log('Setting products:', x.data);\r\n // store.dispatch(setProducts(x.data));\r\n // }).catch(e => {\r\n // console.error(e);\r\n // })\r\n },\r\n getProductsSelfService: (id = 0, storeId = 0, categoryId = 0, brandId = 0, text = \"\", orderBy = \"\", skip = 0, take = 50) => {\r\n return axios.get(ApiURL + '/public/GetProductsSelfService?id=' + id + '&storeId=' + storeId\r\n + '&categoryId=' + categoryId\r\n + '&brandId=' + brandId\r\n + '&text=' + text\r\n + '&orderBy=' + orderBy\r\n + '&skip=' + skip\r\n + '&take=' + take)\r\n // .then(x => {\r\n // //console.log('Setting products:', x.data);\r\n // store.dispatch(setProducts(x.data));\r\n // }).catch(e => {\r\n // console.error(e);\r\n // })\r\n },\r\n },\r\n Customers: {\r\n getCustomer: (document = \"\", telephone = \"\", email = \"\") => {\r\n return axios.get(ApiURL + '/customer/find?document=' + document + '&telephone=' + telephone + '&email=' + email)\r\n .then(x => {\r\n console.log('Got customer:', x.data);\r\n return x.data;\r\n }).catch(e => {\r\n console.error(e);\r\n })\r\n }\r\n },\r\n GetCategoryInfo: (catId) => {\r\n return axios.get(ApiURL + '/public/getCategoryInfo?id=' + catId);\r\n },\r\n GetStoreByAlias: (alias) => {\r\n return axios.get(ApiURL + '/public/getStoreByAlias?alias=' + alias);\r\n },\r\n GetStoreById: (id) => {\r\n return axios.get(ApiURL + '/public/getStoreById?Id=' + id);\r\n },\r\n GetSaleStatus: (saleId) => {\r\n return axios.get(ApiURL + '/public/getSaleStatus?Id=' + saleId);\r\n },\r\n GetMarketPlaceSaleStatus: (saleId) => {\r\n return axios.get(ApiURL + '/checkout/getMarketPlaceSaleStatus?Id=' + saleId);\r\n },\r\n Checkout: (sale) => {\r\n return axios.post(ApiURL + '/public/checkout', { ...sale })\r\n },\r\n CheckoutMarketPlace: (sale) => {\r\n return axios.post(ApiURL + '/checkout/marketplace', { ...sale })\r\n },\r\n CheckoutSelfService: (sale) => {\r\n return axios.post(ApiURL + '/public/SaveSelfServiceOrder', { ...sale })\r\n },\r\n // GetCheckoutStatus: (saleId) => {\r\n // return axios.post(ApiURL + '/public/getCheckoutStatus', { email: user, password: pass })\r\n // },\r\n // Sales: {\r\n // syncSale: (sale) => {\r\n // if (Api.Sales.syncing) return;\r\n // Api.Sales.syncing = true;\r\n // store.dispatch(setSale(sale.guid, { ...sale, loading: true }));\r\n // var sSale = { ...sale, soldDate: moment(sale.soldDate).utc().format() }\r\n // return axios.post(ApiURL + '/sale/save', sale)\r\n // .then(function (response) {\r\n // console.log(response);\r\n // Api.Sales.syncing = false;\r\n // var serverSaleId = response.data.id;\r\n // sale.loading = false;\r\n // sale.id = serverSaleId;\r\n // sale.dateSync = new Date();\r\n // sale.synced = true;\r\n // store.dispatch(setSale(sale.guid, sale));\r\n // })\r\n // .catch(function (error) {\r\n // Api.Sales.syncing = false;\r\n // sale.loading = false;\r\n // store.dispatch(setSale(sale.guid, sale));\r\n // console.log(error);\r\n // });\r\n // }\r\n // }\r\n}\r\nexport default Api;","var themeColor = '#ae3027';// '#002e82'; //,\r\nexport default {\r\n bgColor: '#fff',\r\n themeColor: themeColor,\r\n lines: '#eeeeee',\r\n darkText: '#3f3e3e',\r\n secondaryText: '#717171',\r\n darkLines: '#bbb',\r\n success: '#87d068',\r\n greenStrong: '#00a650',\r\n textColor: '#3f3e3e',\r\n secondaryTextColor: 'rgba(0, 0, 0, 0.65)',\r\n red: '#f04134',\r\n headerText: themeColor,\r\n buttonText: '#fff',\r\n}","import Colors from \"./Colors\";\r\nimport { Platform } from 'react-native';\r\n\r\nexport default {\r\n textBase: {\r\n fontFamily: 'Montserrat',\r\n color: Colors.textColor\r\n },\r\n textBaseBold: {\r\n fontFamily: 'MontserratBold',\r\n fontWeight: 'bold',\r\n color: Colors.textColor\r\n },\r\n titleText: {\r\n color: Colors.darkText,\r\n fontWeight: 'bold', fontFamily: 'MontserratBold',\r\n fontSize: 16,\r\n paddingVertical: 6\r\n },\r\n defaultButton: {\r\n flexDirection: 'row', alignItems: 'center', justifyContent: 'center',\r\n paddingHorizontal: 10, paddingVertical: 6, borderRadius: 5,\r\n backgroundColor: Colors.themeColor\r\n },\r\n defaultButtonText: {\r\n fontFamily: 'Montserrat',\r\n fontSize: 14, color: Colors.buttonText\r\n },\r\n defaultButtonInverted: {\r\n flexDirection: 'row', alignItems: 'center', justifyContent: 'center',\r\n paddingHorizontal: 10, paddingVertical: 6, borderRadius: 5,\r\n backgroundColor: Colors.bgColor, borderWidth: 1, borderColor: Colors.themeColor\r\n },\r\n defaultButtonTextInverted: {\r\n fontSize: 14, color: Colors.themeColor, fontFamily: 'Montserrat'\r\n },\r\n bigButton: {\r\n paddingVertical: 10\r\n },\r\n bigButtonText: {\r\n fontSize: 15\r\n },\r\n defaultLinkButton: {\r\n paddingHorizontal: 10, paddingVertical: 3\r\n },\r\n defaultLinkButtonText: {\r\n fontSize: 14, color: Colors.themeColor, fontFamily: 'Montserrat',\r\n textDecorationLine: 'underline'\r\n },\r\n leftCol: {\r\n display: 'flex', flexDirection: 'column', justifyContent: 'flex-start', alignItems: 'center',\r\n maxWidth: 420, minWidth: 280, background: '#fff', borderRight: '1px solid #eee'\r\n },\r\n shadow3: {\r\n shadowColor: \"#000\",\r\n shadowOffset: {\r\n width: 0,\r\n height: 1,\r\n },\r\n shadowOpacity: 0.25,\r\n shadowRadius: 4,\r\n elevation: 3,\r\n },\r\n cleanLink: Platform.OS === 'web' && {\r\n textDecorationLine: 'none'\r\n },\r\n}","import Helpers from './Helpers';\r\nvar Big = require('big.js');\r\nexport default {\r\n getProductPriceToDisplay: (product) => {\r\n return Helpers.FloatToReais(product.Bulk ?\r\n Number(new Big(product.Price).times(product.QtyToDisplayPrice)) :\r\n product.Price);\r\n }\r\n}","import React, { Component } from 'react';\r\n//import Colors from '../constants/Colors'\r\nimport Helpers from '../utils/Helpers'\r\nimport Colors from '../constants/Colors';\r\nimport { View, Text, TouchableOpacity, Platform, Image } from 'react-native';\r\nimport { connect } from 'react-redux';\r\nimport { getCart, setProductToActiveCart, clearAllCarts } from '../store/cartsReducer';\r\nimport GlobalStyles from '../constants/GlobalStyles';\r\nimport SosHelpers from '../utils/SosHelpers';\r\nimport MaterialIcons from 'react-native-vector-icons/MaterialIcons';\r\nimport MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons';\r\n//const isImageUrl = require('is-image-url');\r\n\r\nclass Product extends Component {\r\n render() {\r\n var prod = this.props.Product;\r\n var mywidth = this.props.style && this.props.style.width || 200\r\n // iniciais do nome do produto pra qdo nao tem imagem\r\n var prodNameArr = prod.Name.split(' ');\r\n return \r\n \r\n {/* FLYING LABELS */}\r\n {/* Quantidade no carrinho */}\r\n {\r\n this.props.quantityOnCart > 0 &&\r\n \r\n {this.props.quantityOnCart}\r\n \r\n }\r\n {/* inStock? */}\r\n {prod.QtyInStock <= 0 && prod.TrackStock ?\r\n \r\n esgotado\r\n \r\n : null\r\n }\r\n {/* SITE SALE */}\r\n {/* {prod.SiteSale ?\r\n Preço Site : null\r\n } */}\r\n\r\n\r\n {/* FOTO DO PRODUTO */}\r\n {/* */}\r\n \r\n {Platform.OS != 'web' && }\r\n {/* {!hasImg ? {prod.Name} : null} */}\r\n {/* */}\r\n \r\n {/* */}\r\n\r\n {/* INFO DO PRODUTO */}\r\n \r\n {/* NAME */}\r\n {prod.Name}\r\n {/* DESCRIPTION */}\r\n {prod.Description}\r\n {/* PRICE */}\r\n {prod.Price ?\r\n \r\n {SosHelpers.getProductPriceToDisplay(prod)}\r\n : null\r\n }\r\n {/* LEAD TIME */}\r\n {/* {prod.LeadTimeInHours == -1 ? null // HACK PARA ESCONDER LEAD TIME \r\n :\r\n \r\n } */}\r\n \r\n\r\n\r\n \r\n {/* \r\n console.log('Pressed')}>\r\n Ver\r\n \r\n console.log('Pressed')}>\r\n Comprar\r\n \r\n */}\r\n \r\n }\r\n}\r\n\r\nexport const ProductLeadTimeComponent = ({ leadTimeInHours, fontSize, iconSize, style }) => {\r\n return leadTimeInHours == 0 ?\r\n \r\n \r\n \r\n Entrega imediata\r\n \r\n \r\n :\r\n \r\n \r\n \r\n Encomenda ({leadTimeInHours < 24 ? leadTimeInHours + 'h' : (leadTimeInHours / 24) + 'd'})\r\n \r\n \r\n}\r\n\r\nconst tryGetCartProductQuantity = (objCartProducts, id) => {\r\n //debugger;\r\n if (id in objCartProducts) {\r\n return objCartProducts[id].Quantity\r\n }\r\n return 0;\r\n}\r\nexport default connect(\r\n (state, ownProps) => ({\r\n quantityOnCart: tryGetCartProductQuantity(getCart(state.cart.carts, state.cart.activeCartId).products, ownProps.Product.Id),\r\n }),\r\n null)(Product);","import React, { Component } from 'react';\r\nimport { Animated, Easing } from 'react-native';\r\n\r\nconst ANIMATED_EASING_PREFIXES = ['easeInOut', 'easeOut', 'easeIn'];\r\n\r\nexport default class Collapsible extends Component {\r\n\r\n static defaultProps = {\r\n align: 'top',\r\n collapsed: true,\r\n collapsedHeight: 0,\r\n enablePointerEvents: false,\r\n duration: 300,\r\n easing: 'easeOutCubic',\r\n onAnimationEnd: () => null,\r\n };\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n measuring: false,\r\n measured: false,\r\n height: new Animated.Value(props.collapsedHeight),\r\n contentHeight: 0,\r\n animating: false,\r\n };\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (prevProps.collapsed !== this.props.collapsed) {\r\n this.setState({ measured: false }, () =>\r\n this._componentDidUpdate(prevProps)\r\n );\r\n } else {\r\n this._componentDidUpdate(prevProps);\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n this.unmounted = true;\r\n }\r\n\r\n _componentDidUpdate(prevProps) {\r\n if (prevProps.collapsed !== this.props.collapsed) {\r\n this._toggleCollapsed(this.props.collapsed);\r\n } else if (\r\n this.props.collapsed &&\r\n prevProps.collapsedHeight !== this.props.collapsedHeight\r\n ) {\r\n this.state.height.setValue(this.props.collapsedHeight);\r\n }\r\n }\r\n\r\n contentHandle = null;\r\n\r\n _handleRef = ref => {\r\n this.contentHandle = ref;\r\n };\r\n\r\n _measureContent(callback) {\r\n this.setState(\r\n {\r\n measuring: true,\r\n },\r\n () => {\r\n requestAnimationFrame(() => {\r\n if (!this.contentHandle) {\r\n this.setState(\r\n {\r\n measuring: false,\r\n },\r\n () => callback(this.props.collapsedHeight)\r\n );\r\n } else {\r\n this.contentHandle.getNode().measure((x, y, width, height) => {\r\n this.setState(\r\n {\r\n measuring: false,\r\n measured: true,\r\n contentHeight: height,\r\n },\r\n () => callback(height)\r\n );\r\n });\r\n }\r\n });\r\n }\r\n );\r\n }\r\n\r\n _toggleCollapsed(collapsed) {\r\n if (collapsed) {\r\n this._transitionToHeight(this.props.collapsedHeight);\r\n } else if (!this.contentHandle) {\r\n if (this.state.measured) {\r\n this._transitionToHeight(this.state.contentHeight);\r\n }\r\n return;\r\n } else {\r\n this._measureContent(contentHeight => {\r\n this._transitionToHeight(contentHeight);\r\n });\r\n }\r\n }\r\n\r\n _transitionToHeight(height) {\r\n const { duration } = this.props;\r\n let easing = this.props.easing;\r\n if (typeof easing === 'string') {\r\n let prefix;\r\n let found = false;\r\n for (let i = 0; i < ANIMATED_EASING_PREFIXES.length; i++) {\r\n prefix = ANIMATED_EASING_PREFIXES[i];\r\n if (easing.substr(0, prefix.length) === prefix) {\r\n easing =\r\n easing.substr(prefix.length, 1).toLowerCase() +\r\n easing.substr(prefix.length + 1);\r\n prefix = prefix.substr(4, 1).toLowerCase() + prefix.substr(5);\r\n easing = Easing[prefix](Easing[easing || 'ease']);\r\n found = true;\r\n break;\r\n }\r\n }\r\n if (!found) {\r\n easing = Easing[easing];\r\n }\r\n if (!easing) {\r\n throw new Error('Invalid easing type \"' + this.props.easing + '\"');\r\n }\r\n }\r\n\r\n if (this._animation) {\r\n this._animation.stop();\r\n }\r\n this.setState({ animating: true });\r\n this._animation = Animated.timing(this.state.height, {\r\n toValue: height,\r\n duration,\r\n easing,\r\n }).start(() => {\r\n if (this.unmounted) {\r\n return;\r\n }\r\n this.setState({ animating: false }, () => {\r\n if (this.unmounted) {\r\n return;\r\n }\r\n this.props.onAnimationEnd();\r\n });\r\n });\r\n }\r\n\r\n _handleLayoutChange = event => {\r\n const contentHeight = event.nativeEvent.layout.height;\r\n if (\r\n this.state.animating ||\r\n this.props.collapsed ||\r\n this.state.measuring ||\r\n this.state.contentHeight === contentHeight\r\n ) {\r\n return;\r\n }\r\n\r\n this.state.height.setValue(contentHeight);\r\n this.setState({ contentHeight });\r\n };\r\n\r\n render() {\r\n const { collapsed, enablePointerEvents } = this.props;\r\n const { height, contentHeight, measuring, measured } = this.state;\r\n const hasKnownHeight = !measuring && (measured || collapsed);\r\n const style = hasKnownHeight && {\r\n overflow: 'hidden',\r\n height: height,\r\n };\r\n const contentStyle = {};\r\n if (measuring) {\r\n contentStyle.position = 'absolute';\r\n contentStyle.opacity = 0;\r\n } else if (this.props.align === 'center') {\r\n contentStyle.transform = [\r\n {\r\n translateY: height.interpolate({\r\n inputRange: [0, contentHeight],\r\n outputRange: [contentHeight / -2, 0],\r\n }),\r\n },\r\n ];\r\n } else if (this.props.align === 'bottom') {\r\n contentStyle.transform = [\r\n {\r\n translateY: height.interpolate({\r\n inputRange: [0, contentHeight],\r\n outputRange: [-contentHeight, 0],\r\n }),\r\n },\r\n ];\r\n }\r\n return (\r\n \r\n \r\n {this.props.children}\r\n \r\n \r\n );\r\n }\r\n}","'use strict';\r\nimport React, { PropTypes, useState } from 'react';\r\nimport {\r\n StyleSheet,\r\n TouchableOpacity,\r\n View,\r\n Text,\r\n LayoutAnimation\r\n} from 'react-native';\r\nimport Collapsible from './Collapsible';\r\n\r\nconst CustomLayoutLinear = {\r\n duration: 200,\r\n create: {\r\n type: LayoutAnimation.Types.linear,\r\n property: LayoutAnimation.Properties.opacity,\r\n },\r\n update: {\r\n type: LayoutAnimation.Types.linear,\r\n },\r\n};\r\n\r\nclass MyAccordion extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n is_visible: true,\r\n height: 0,\r\n content_height: 0,\r\n inited: false\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n // Gets content height when component mounts\r\n // without setTimeout, measure returns 0 for every value.\r\n // See https://github.com/facebook/react-native/issues/953\r\n setTimeout(() => this._getContentHeight(() => this.setState({ height: this.props.expanded ? this.state.content_height : 0 })), 1);\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n LayoutAnimation.configureNext(CustomLayoutLinear);\r\n this.setState({ height: nextProps.expanded ? this.state.content_height : 0 })\r\n }\r\n\r\n close = () => {\r\n this.state.is_visible && this.toggle();\r\n }\r\n\r\n open = () => {\r\n !this.state.is_visible && this.toggle();\r\n }\r\n\r\n toggle = () => {\r\n LayoutAnimation.configureNext(CustomLayoutLinear);\r\n console.log('Toggle MyAccordion: Height => ', this.state.height === 0 ? this.state.content_height : 0);\r\n this.setState({\r\n is_visible: !this.state.is_visible,\r\n height: this.state.height === 0 ? this.state.content_height : 0\r\n }, () => console.log(this.state))\r\n }\r\n\r\n _onPress = () => {\r\n this.toggle();\r\n if (this.props.onPress) {\r\n this.props.onPress.call(this);\r\n }\r\n }\r\n\r\n _getContentHeight = (cb) => {\r\n if (this.AccordionContent) {\r\n this.AccordionContent.measure((ox, oy, width, height, px, py) => {\r\n console.log('measure (ox, oy, width, height, px, py) ', ox, oy, width, height, px, py)\r\n // Sets content height in state\r\n this.setState({\r\n inited: true,\r\n height: this.props.expanded ? height : 0,\r\n content_height: height\r\n }, () => {\r\n //console.log('myaccordion state:',this.state)\r\n if (cb) cb();\r\n });\r\n });\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n /*jshint ignore:start */\r\n \r\n \r\n {this.props.header}\r\n \r\n this.AccordionContentWrapper = r}\r\n style={[this.state.inited ? { height: this.state.height } : {}]}\r\n >\r\n this.AccordionContent = r}>\r\n {this.props.children}\r\n \r\n \r\n \r\n /*jshint ignore:end */\r\n );\r\n }\r\n};\r\nMyAccordion.defaultProps = {\r\n activeOpacity: 1,\r\n animationDuration: 300,\r\n easing: 'linear',\r\n expanded: true,\r\n underlayColor: '#000',\r\n style: {}\r\n}\r\nexport default MyAccordion;\r\n\r\nexport const MyAccordionXP = (props) => {\r\n const [opened, setOpened] = useState(false);\r\n return \r\n setOpened(!opened)}>\r\n {typeof(props.header) === 'function' ? props.header(opened) : props.header}\r\n \r\n \r\n {props.children}\r\n \r\n \r\n}","import React, { Component } from 'react';\r\nimport { View, Text, TextInput } from 'react-native';\r\nimport Colors from '../constants/Colors';\r\nimport GlobalStyles from '../constants/GlobalStyles';\r\nexport default class MyTextInput extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = { focused: false }\r\n }\r\n render() {\r\n return \r\n {this.props.label}\r\n this.setState({ focused: true })}\r\n onBlur={() => this.setState({ focused: false }, this.props.onBlur ? this.props.onBlur : () => { })}\r\n style={{\r\n ...GlobalStyles.textBase,\r\n fontSize: 16, borderBottomColor: this.state.focused ? Colors.themeColor : Colors.darkLines, borderBottomWidth: 2, padding: 4,\r\n ...this.props.inputStyle\r\n }} multiline={this.props.multiline}\r\n placeholder={this.props.placeholder}\r\n value={this.props.value}\r\n type={this.props.type}\r\n keyboardType={this.props.keyboardType}\r\n onChangeText={this.props.onChangeText}\r\n />\r\n \r\n }\r\n}","import React from 'react';\r\nimport { Picker, Platform, TouchableOpacity, ScrollView, View, Text } from \"react-native\";\r\nimport Menu, { MenuItem, MenuDivider } from 'react-native-material-menu';\r\n\r\nexport default class DropdownXP extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n width: 120,\r\n opened: false\r\n }\r\n }\r\n\r\n setMenuRef = ref => {\r\n this._menu = ref;\r\n };\r\n\r\n measureall = () => {\r\n this.btn.measure((ox, oy, width, height, px, py) => {\r\n this.setState({ width });\r\n });\r\n }\r\n render() {\r\n return { this.btn = c; }} onLayout={this.measureall}>\r\n {Platform.OS == 'web' ?\r\n this.props.onValueChange(itemValue)}>\r\n {this.props.data.map(x => {\r\n return \r\n })}\r\n \r\n :\r\n \r\n this._menu.show()} style={{ flex: 1 }}>\r\n {this.props.data.filter(z => z.value == this.props.selectedValue)[0].label}\r\n \r\n \r\n ▼\r\n \r\n \r\n }>\r\n \r\n {this.props.data.map(x => {\r\n return {\r\n this._menu.hide();\r\n this.props.onValueChange(x.value);\r\n }} style={{ borderBottomWidth: 1, borderBottomColor: '#eee', width: this.state.width }}>\r\n {x.label ? x.label : x.value ? x.value : x}\r\n \r\n })}\r\n \r\n \r\n }\r\n \r\n }\r\n}","import * as React from 'react';\r\nimport { View, TouchableOpacity, Text, TextInput } from 'react-native';\r\nimport { Button, Dialog, Portal, ActivityIndicator } from 'react-native-paper';\r\nimport axios from 'axios';\r\nimport Api from './../api/Api';\r\nimport Colors from '../constants/Colors';\r\nimport Helpers from '../utils/Helpers';\r\nimport MyTextInput from './MyTextInput';\r\nimport GlobalStyles from './../constants/GlobalStyles';\r\nimport MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons';\r\nimport DropdownXP from './DropdownXP';\r\n\r\nexport default class AdressDialog extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n visible: this.props.opened,\r\n suggestions: [],\r\n query: ''\r\n }\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n this.setState({ visible: nextProps.opened })\r\n }\r\n _showDialog = () => this.setState({ visible: true });\r\n _hideDialog = () => { this.setState({ visible: false }); if (this.props.onHideDialog) this.props.onHideDialog(); }\r\n\r\n getFilteredSuggestions = () => {\r\n return this.state.suggestions;\r\n }\r\n\r\n _timeout = 0;\r\n fetchSuggestions = () => {\r\n if (this._timeout > 0) clearTimeout(this._timeout);\r\n this._timeout = setTimeout(this.reallyFetch, 250);\r\n }\r\n cancelReq = null;\r\n reallyFetch = () => {\r\n if (this.state.query.length < 5) return;\r\n this.setState({ loading: true, outOfReach: false, address: null })\r\n Api.AddressSuggestions(this.state.query + ', Rio de Janeiro, Brasil')\r\n .then(data => {\r\n //console.log('data is back!', data);\r\n this.setState({ suggestions: data.data.predictions, noItemsFound: data.data.predictions.length === 0, loading: false })\r\n })\r\n .catch(() => {\r\n console.log('post Request canceled');\r\n this.setState({ loading: false })\r\n });\r\n }\r\n\r\n getAddressDetails = () => {\r\n this.setState({ loadingDetails: true });\r\n Api.GooglePlaceDetails(this.state.selectedAddress.place_id)\r\n .then(data => {\r\n var addr = this.getAddressFromGoogleResult(data.data.result);\r\n this.setState({ loadingDetails: false, address: addr, query: addr.nomeRua + ' ' + addr.numero });\r\n }).\r\n catch(() => {\r\n this.setState({ loadingDetails: false });\r\n })\r\n }\r\n\r\n getAddressFromGoogleResult = (result) => {\r\n var endereco = { resumo: '' };\r\n if (result && result.address_components) {\r\n var addr = result.address_components;\r\n endereco.numero = Helpers.FirstOrDefault(addr, x => Helpers.Any(x.types, null, 'street_number'), { short_name: '' }).short_name;\r\n if (!endereco.numero) endereco.veioSemNumero = true;\r\n endereco.nomeRua = Helpers.FirstOrDefault(addr, x => Helpers.Any(x.types, null, 'route'), { short_name: '' }).short_name;\r\n endereco.bairro = Helpers.FirstOrDefault(addr, x => Helpers.Any(x.types, null, 'sublocality_level_1'), { short_name: '' }).short_name;\r\n endereco.cidade = Helpers.FirstOrDefault(addr, x => Helpers.Any(x.types, null, 'administrative_area_level_2'), { short_name: '' }).short_name;\r\n endereco.estado = Helpers.FirstOrDefault(addr, x => Helpers.Any(x.types, null, 'administrative_area_level_1'), { short_name: '' }).short_name;\r\n }\r\n if (result.geometry && result.geometry.location) {\r\n endereco.lat = result.geometry.location.lat;\r\n endereco.lon = result.geometry.location.lng;\r\n }\r\n if (this.state.address) {\r\n endereco.complemento = this.state.address.complemento;\r\n endereco.referencia = this.state.address.referencia;\r\n }\r\n console.log('address:', endereco);\r\n endereco.resumo = endereco.nomeRua + ' ' + (endereco.numero.toString())\r\n + (endereco.complemento ? ', ' + endereco.complemento : '')\r\n + (endereco.referencia ? ' (' + endereco.referencia + ')' : '')\r\n + ', ' + endereco.cidade + ', ' + endereco.estado\r\n return endereco;\r\n }\r\n\r\n // getShippingRate = () => {\r\n // Api.GetShipping(this.state.formattedAddress)\r\n // .then(data => {\r\n // console.log(data);\r\n // this.setState({ address: this.state.formattedAddress, shipping: data, loadingDetails: false });\r\n // }).catch(e => {\r\n // this.setState({ outOfReach: true, loadingDetails: false })\r\n // })\r\n // }\r\n\r\n geocodeAndConfirm = (forceNumeroValidation) => {\r\n var addr = this.state.address;\r\n this.setState({ loading: true })\r\n Api.Geocode(addr.nomeRua + ' ' + addr.numero + ', ' + addr.cidade + ', ' + addr.estado)\r\n .then(data => {\r\n debugger;\r\n if (data.data.results && data.data.results.length > 0) {\r\n var addr = this.getAddressFromGoogleResult(data.data.results[0]);\r\n if (forceNumeroValidation && this.state.address.numero != addr.numero) {\r\n return this.setState({ loading: false, feedbackMsg: 'Ops, o Google não encontrou um endereço com este número.' })\r\n }\r\n this.setState({ loading: false, address: addr }, this.confirmAddress);\r\n } else {\r\n this.setState({ loading: false, feedbackMsg: 'Ops, o Google não encontrou um endereço com este número.' });\r\n }\r\n })\r\n }\r\n\r\n confirmAddress = () => {\r\n if (!this.state.address.numero) return this.setState({ feedbackMsg: 'Ops, faltou o número do endereço.' });\r\n if (this.state.address.veioSemNumero) {\r\n // se ele veio sem numero da busca google e agora ja tem um numero é pq o user digitou na mão, \r\n // então vamos geocodar o endereço e depois fechar o modal (pra pegar um lat lon correto)\r\n return this.geocodeAndConfirm(true);\r\n }\r\n if (this.props.onAddressSelect) {\r\n this.props.onAddressSelect({ address: this.state.address, shipping: this.state.shipping });\r\n this._hideDialog();\r\n }\r\n }\r\n\r\n geocodeThenConfirm = () => {\r\n\r\n }\r\n\r\n render() {\r\n var suggestions = this.getFilteredSuggestions();\r\n return (\r\n \r\n \r\n {/* Endereço de entrega */}\r\n \r\n Endereço de entrega\r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* CIDADE E ESTADO */}\r\n this.setState({ CidadeEstadoLOL: itemValue })}\r\n data={[\r\n { label: \"Rio de Janeiro, RJ\", value: \"1\" },\r\n ]}\r\n />\r\n\r\n {/* QUERY / NOME RUA */}\r\n this.setState({ query: text, noItemsFound: false, selectedAddress: null }, this.fetchSuggestions)} />\r\n\r\n {/* MSG ADDRESS NOT FOUND */}\r\n {this.state.noItemsFound &&\r\n \r\n Endereço não encontrado\r\n }\r\n\r\n {/* LISTA DE SUGESTOES */}\r\n {this.state.address == null ?\r\n \r\n {suggestions && suggestions.slice(0, 3).map(item => (\r\n this.setState({ query: item.description, selectedAddress: item }, this.getAddressDetails)}>\r\n \r\n 📍 {item.description}\r\n \r\n \r\n ))}\r\n \r\n :\r\n // LOADING\r\n this.state.loadingDetails ?\r\n \r\n \r\n \r\n // \r\n // ENDERECO SELECIONADO, form para resto dos dados\r\n :\r\n \r\n \r\n {this.state.address.veioSemNumero &&\r\n this.setState({ address: { ...this.state.address, numero: t } })} />\r\n }\r\n this.setState({ address: { ...this.state.address, complemento: t } })} />\r\n this.setState({ address: { ...this.state.address, referencia: t } })} />\r\n \r\n {/* Seus dados:\r\n \r\n this.setState({ address: { ...this.state.address, nome: t } })} />\r\n this.setState({ address: { ...this.state.address, celular: t } })} />\r\n */}\r\n \r\n }\r\n \r\n \r\n {this.state.feedbackMsg && {this.state.feedbackMsg}}\r\n \r\n {/* */}\r\n {this.state.loading || this.state.loadingDetails ?\r\n \r\n :\r\n this.state.address ?\r\n : null\r\n }\r\n \r\n \r\n \r\n );\r\n }\r\n}","import { Platform } from 'react-native';\r\nimport { Linking } from 'expo';\r\nexport default {\r\n OpenURL: (url, target) => {\r\n if (Platform.OS == 'web') {\r\n window.open(url, target)\r\n } else {\r\n Linking.openURL(url)\r\n }\r\n }\r\n};","export * from \"react-router-dom\";\r\nexport { BrowserRouter as Router } from \"react-router-dom\";\r\nexport const BackButton = () => null\r\n","import React, { Component } from 'react';\r\nimport { View, Text, TouchableOpacity, Platform, Image } from 'react-native';\r\nimport GlobalStyles from '../constants/GlobalStyles';\r\nimport Colors from '../constants/Colors';\r\n\r\nexport default class MyPanel extends Component {\r\n render() {\r\n var backgroundColor = this.props.backgroundColor || '#fff';\r\n return \r\n \r\n {this.props.icon || this.props.title ?\r\n \r\n {this.props.icon ? this.props.icon : null}\r\n {this.props.title}\r\n : null}\r\n {this.props.rightContent && \r\n {this.props.rightContent}\r\n }\r\n \r\n \r\n {this.props.children}\r\n \r\n \r\n\r\n return \r\n {this.props.rightContent && \r\n {this.props.rightContent}\r\n }\r\n {this.props.icon || this.props.title ?\r\n \r\n {this.props.icon ? this.props.icon : null}\r\n {this.props.title}\r\n : null}\r\n \r\n {this.props.children}\r\n \r\n \r\n }\r\n render2() {\r\n var backgroundColor = this.props.backgroundColor || '#fff';\r\n return \r\n {this.props.rightContent && \r\n {this.props.rightContent}\r\n }\r\n {this.props.icon || this.props.title ?\r\n \r\n {this.props.icon ? this.props.icon : null}\r\n {this.props.title}\r\n : null}\r\n \r\n {this.props.children}\r\n \r\n \r\n }\r\n}","import React, { Component } from 'react';\r\nimport { View, Text, TextInput, TouchableOpacity } from 'react-native';\r\nimport Colors from '../constants/Colors';\r\nimport GlobalStyles from '../constants/GlobalStyles';\r\nimport MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons';\r\nvar Big = require('big.js');\r\n\r\nexport default class MyQtdInput extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n }\r\n\r\n render() {\r\n return \r\n {this.props.readOnly || this.props.value === 0 ? null :\r\n {\r\n let newVal = Number(new Big(this.props.value).minus(this.props.step || 1));\r\n this.props.onChangeValue(newVal < this.props.min ? this.props.min : newVal);\r\n }}\r\n style={{ borderRadius: 15 }}>\r\n \r\n \r\n }\r\n {this.props.value === 0 ? null :\r\n \r\n {this.props.value}{this.props.appendText}\r\n \r\n }\r\n {this.props.readOnly ? null :\r\n this.props.onChangeValue(\r\n Number(new Big(this.props.value).plus(this.props.step || 1))\r\n )}\r\n style={{ borderRadius: 15 }}>\r\n \r\n \r\n }\r\n \r\n }\r\n}","import React from 'react';\r\nimport { Platform, Text, View, Image, TouchableOpacity } from 'react-native';\r\nimport Helpers from '../utils/Helpers';\r\nimport MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons';\r\nimport Colors from '../constants/Colors';\r\nimport GlobalStyles from '../constants/GlobalStyles';\r\nimport MyQtdInput from './MyQtdInput';\r\nimport { ProductLeadTimeComponent } from './Product';\r\n//const isImageUrl = require('is-image-url');\r\nvar Big = require('big.js');\r\nimport 'moment/locale/pt';\r\n\r\nconst styles = {\r\n rowStyle: {\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n marginHorizontal: 3,\r\n marginHorizontal: 3,\r\n paddingVertical: 10,\r\n borderBottomWidth: 1,\r\n borderBottomColor: '#e6e6e6'\r\n }\r\n}\r\n\r\nexport default (props) => {\r\n return (\r\n { props.hideImage ? null :\r\n {\r\n if (props.onOpenProduct) props.onOpenProduct(props.prod);\r\n }} style={{\r\n width: 44,\r\n height: 44,\r\n backgroundImage: `url('${props.prod.PhotoURL}')`,\r\n display: 'flex',\r\n borderRadius: 5,\r\n backgroundRepeat: 'no-repeat',\r\n backgroundPosition: 'center center',\r\n backgroundSize: 'contain',\r\n margin: 4\r\n }}>\r\n {\r\n props.prod.showImage ?\r\n \r\n {Platform.OS != 'web' && }\r\n \r\n : null\r\n }\r\n \r\n }\r\n {\r\n if (props.onOpenProduct) props.onOpenProduct(props.prod);\r\n }} style={{\r\n flex: 1\r\n }}>\r\n \r\n \r\n {props.prod.Name}\r\n \r\n {\r\n props.outOfStock &&\r\n \r\n Esgotado\r\n \r\n }\r\n \r\n {\r\n /* PRODUCT HAS LEAD TIME > 0 */\r\n }\r\n {props.prod.LeadTimeInHours > 0 ? : null}\r\n {\r\n /* PRODUCT COMMENTS */\r\n }\r\n {props.prod.Comments && props.prod.Comments.length > 0 ? \r\n {props.prod.Comments}\r\n : null}\r\n\r\n {\r\n // PRODUCT PRICE ON EVERY ROW?\r\n }\r\n {\r\n props.showPriceOnEveryRow &&\r\n \r\n {Helpers.FloatToReais(Number(props.prod.Price))}\r\n \r\n }\r\n \r\n {\r\n /* INPUT DE QTD DE PRODUTO */\r\n }\r\n \r\n props.setProductQty({\r\n ...props.prod,\r\n Quantity: v\r\n })} readOnly={props.reviewMode || props.outOfStock} value={props.prod.Quantity} appendText={props.prod.QtyName} step={props.prod.QtyStep} />\r\n \r\n {props.prod.Bulk || true ?\r\n Helpers.FloatToReais(Number(new Big(props.prod.Price).times(props.prod.Quantity)))\r\n :\r\n Helpers.FloatToReais(Number(props.prod.Price))\r\n }\r\n \r\n \r\n );\r\n}","import React from 'react';\r\nimport { TextInput } from 'react-native';\r\n//import VMasker from '../utils/VanillaMasker'\r\n\r\nexport default class MyInputMask extends React.PureComponent {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n value: props.value\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n var maskedVal = VMasker.toPattern(this.props.value, this.props.mask);\r\n this.setState({ value: maskedVal });\r\n }\r\n\r\n innerOnChange = (text) => {\r\n var maskedVal = VMasker.toPattern(text, this.props.mask);\r\n text = maskedVal;\r\n if (maskedVal.length == this.props.mask.length && this.props.onCompleteMask) {\r\n this.props.onChangeText(text);\r\n setTimeout(() => this.props.onCompleteMask(maskedVal), 1)\r\n } else {\r\n this.props.onChangeText(text);\r\n }\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n if (nextProps.value != this.state.value) {\r\n var maskedVal = VMasker.toPattern(nextProps.value, nextProps.mask);\r\n this.setState({ value: maskedVal })\r\n }\r\n }\r\n\r\n render() {\r\n return this.innerOnChange(text)}\r\n />\r\n }\r\n}\r\n\r\nvar DIGIT = \"9\",\r\n ALPHA = \"A\",\r\n ALPHANUM = \"S\",\r\n BY_PASS_KEYS = [9, 16, 17, 18, 36, 37, 38, 39, 40, 91, 92, 93],\r\n isAllowedKeyCode = function (keyCode) {\r\n for (var i = 0, len = BY_PASS_KEYS.length; i < len; i++) {\r\n if (keyCode == BY_PASS_KEYS[i]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n },\r\n mergeMoneyOptions = function (opts) {\r\n opts = opts || {};\r\n opts = {\r\n precision: opts.hasOwnProperty(\"precision\") ? opts.precision : 2,\r\n separator: opts.separator || \",\",\r\n delimiter: opts.delimiter || \".\",\r\n unit: opts.unit && (opts.unit.replace(/[\\s]/g, '') + \" \") || \"\",\r\n suffixUnit: opts.suffixUnit && (\" \" + opts.suffixUnit.replace(/[\\s]/g, '')) || \"\",\r\n zeroCents: opts.zeroCents,\r\n lastOutput: opts.lastOutput\r\n };\r\n opts.moneyPrecision = opts.zeroCents ? 0 : opts.precision;\r\n return opts;\r\n },\r\n // Fill wildcards past index in output with placeholder\r\n addPlaceholdersToOutput = function (output, index, placeholder) {\r\n for (; index < output.length; index++) {\r\n if (output[index] === DIGIT || output[index] === ALPHA || output[index] === ALPHANUM) {\r\n output[index] = placeholder;\r\n }\r\n }\r\n return output;\r\n }\r\n ;\r\n\r\n\r\n// var VMasker = function (el) {\r\n// if (!el) {\r\n// throw new Error(\"VanillaMasker: There is no element to bind.\");\r\n// }\r\n// var elements = (\"length\" in el) ? (el.length ? el : []) : [el];\r\n// return new VanillaMasker(elements);\r\n// };\r\n\r\nconst VMasker = {\r\n toMoney: function (value, opts) {\r\n opts = mergeMoneyOptions(opts);\r\n if (opts.zeroCents) {\r\n opts.lastOutput = opts.lastOutput || \"\";\r\n var zeroMatcher = (\"(\" + opts.separator + \"[0]{0,\" + opts.precision + \"})\"),\r\n zeroRegExp = new RegExp(zeroMatcher, \"g\"),\r\n digitsLength = value.toString().replace(/[\\D]/g, \"\").length || 0,\r\n lastDigitLength = opts.lastOutput.toString().replace(/[\\D]/g, \"\").length || 0\r\n ;\r\n value = value.toString().replace(zeroRegExp, \"\");\r\n if (digitsLength < lastDigitLength) {\r\n value = value.slice(0, value.length - 1);\r\n }\r\n }\r\n var number = value.toString().replace(/[\\D]/g, \"\"),\r\n clearDelimiter = new RegExp(\"^(0|\\\\\" + opts.delimiter + \")\"),\r\n clearSeparator = new RegExp(\"(\\\\\" + opts.separator + \")$\"),\r\n money = number.substr(0, number.length - opts.moneyPrecision),\r\n masked = money.substr(0, money.length % 3),\r\n cents = new Array(opts.precision + 1).join(\"0\")\r\n ;\r\n money = money.substr(money.length % 3, money.length);\r\n for (var i = 0, len = money.length; i < len; i++) {\r\n if (i % 3 === 0) {\r\n masked += opts.delimiter;\r\n }\r\n masked += money[i];\r\n }\r\n masked = masked.replace(clearDelimiter, \"\");\r\n masked = masked.length ? masked : \"0\";\r\n if (!opts.zeroCents) {\r\n var beginCents = number.length - opts.precision,\r\n centsValue = number.substr(beginCents, opts.precision),\r\n centsLength = centsValue.length,\r\n centsSliced = (opts.precision > centsLength) ? opts.precision : centsLength\r\n ;\r\n cents = (cents + centsValue).slice(-centsSliced);\r\n }\r\n var output = opts.unit + masked + opts.separator + cents + opts.suffixUnit;\r\n return output.replace(clearSeparator, \"\");\r\n },\r\n toPattern: function (value, opts) {\r\n var pattern = (typeof opts === 'object' ? opts.pattern : opts),\r\n patternChars = pattern.replace(/\\W/g, ''),\r\n output = pattern.split(\"\"),\r\n values = value ? value.toString().replace(/\\W/g, \"\") : '',\r\n charsValues = values.replace(/\\W/g, ''),\r\n index = 0,\r\n i,\r\n outputLength = output.length,\r\n placeholder = (typeof opts === 'object' ? opts.placeholder : undefined)\r\n ;\r\n\r\n for (i = 0; i < outputLength; i++) {\r\n // Reached the end of input\r\n if (index >= values.length) {\r\n if (patternChars.length == charsValues.length) {\r\n return output.join(\"\");\r\n }\r\n else if ((placeholder !== undefined) && (patternChars.length > charsValues.length)) {\r\n return addPlaceholdersToOutput(output, i, placeholder).join(\"\");\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n // Remaining chars in input\r\n else {\r\n if ((output[i] === DIGIT && values[index].match(/[0-9]/)) ||\r\n (output[i] === ALPHA && values[index].match(/[a-zA-Z]/)) ||\r\n (output[i] === ALPHANUM && values[index].match(/[0-9a-zA-Z]/))) {\r\n output[i] = values[index++];\r\n } else if (output[i] === DIGIT || output[i] === ALPHA || output[i] === ALPHANUM) {\r\n if (placeholder !== undefined) {\r\n return addPlaceholdersToOutput(output, i, placeholder).join(\"\");\r\n }\r\n else {\r\n return output.slice(0, i).join(\"\");\r\n }\r\n }\r\n }\r\n }\r\n return output.join(\"\").substr(0, i);\r\n }, toNumber: function (value) {\r\n return value.toString().replace(/(?!^-)[^0-9]/g, \"\");\r\n }, toAlphaNumeric: function (value) {\r\n return value.toString().replace(/[^a-z0-9 ]+/i, \"\");\r\n }\r\n}\r\n\r\nexport const Masker = VMasker;","import React from 'react';\r\nimport { Platform, Text, View, Image, TouchableOpacity } from 'react-native';\r\nimport { TouchableRipple, ActivityIndicator } from 'react-native-paper';\r\nimport Api from './../api/Api';\r\nimport { connect } from 'react-redux'\r\nimport Helpers from '../utils/Helpers';\r\nimport { getCart, setProductToActiveCart, removeFromCart, setCart, sumProducts, getCartFullTotal, getCartFullShippingTotal } from '../store/cartsReducer';\r\nimport MyAccordion from './../components/MyAccordion';\r\nimport AddressDialog from './../components/AddressDialog';\r\nimport MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons';\r\nimport Colors from '../constants/Colors';\r\nimport GlobalStyles from '../constants/GlobalStyles';\r\nimport { setCustomerUser } from '../store/customerUserReducer';\r\nimport LinkXP from '../utils/LinkXP';\r\nimport { Link } from './router';\r\nimport MyPanel from './MyPanel';\r\nimport Entypo from 'react-native-vector-icons/Entypo';\r\nimport MyQtdInput from './MyQtdInput';\r\nimport { ProductLeadTimeComponent } from './Product';\r\nvar loggi = require('../assets/loggi.png')\r\n//const isImageUrl = require('is-image-url');\r\nvar Big = require('big.js');\r\nvar moment = require('moment');\r\nimport 'moment/locale/pt';\r\nimport Feather from 'react-native-vector-icons/Feather';\r\nimport store from '../store/store';\r\nimport DropdownXP from './DropdownXP';\r\nimport MyTextInput from './MyTextInput';\r\nimport ProductRow from './ProductRow';\r\nimport { Masker } from './MyInputMask';\r\n\r\nconst cachedShippings = {};\r\n\r\nclass Cart extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n addressDialogOpened: false,\r\n address: props.customerUser ? props.customerUser.address : null\r\n }\r\n if (props.myref) props.myref(this);\r\n }\r\n\r\n componentDidMount() {\r\n this.getShippingRate()//this.state.address);\r\n if (this.props.forcedShippingInfo) {\r\n this.setForcedShippingInfo(this.props.forcedShippingInfo);\r\n }\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n //console.log('will receive props', this.props, nextProps);\r\n if ((nextProps.customerUser && nextProps.customerUser.address && nextProps.customerUser.address != this.props.customerUser.address)\r\n ||\r\n (!this.props.activeCartShippingTotal == -1)\r\n ||\r\n this.props.activeCartTotalProds != nextProps.activeCartTotalProds\r\n ) {\r\n //if(this.props.customerUser.address != nextProps.customerUser.address || )\r\n if (nextProps.customerUser)\r\n this.setState({ address: nextProps.customerUser.address },\r\n this.getShippingRate()//nextProps.customerUser ? nextProps.customerUser.address : null);\r\n );\r\n }\r\n\r\n // recebeu forced shipping info? (normalmente usado para mostrar o Cart como resumo do pedido, ai forçamos o shipping info para mostrar as mesmas estimativas de frete e etc que o user view na hora q estava comprando)\r\n if (nextProps.forcedShippingInfo && (this.props.forcedShippingInfo != nextProps.forcedShippingInfo)) {\r\n this.setForcedShippingInfo(nextProps.forcedShippingInfo);\r\n }\r\n }\r\n\r\n setProductQty = (prod) => {\r\n if (prod.Quantity == 0) {\r\n this.props.dispatch(removeFromCart(prod, this.props.activeCartId));\r\n } else {\r\n this.props.dispatch(setProductToActiveCart(prod));\r\n }\r\n }\r\n\r\n getShippingRate = () => {\r\n let address = this.state.address;\r\n // if(this.lastCheckedAddress == address)\r\n // return;\r\n this.lastCheckedAddress = address;\r\n var prods = Helpers.ObjToArray(this.props.activeCart.products);\r\n var stt = this.state;\r\n this.getProdsPerStore(prods).map(s => {\r\n let deliveryMethod = stt['deliveryMethod' + s.StoreId];\r\n let scheduledDate = stt['scheduledDate' + s.StoreId];\r\n let scheduledPeriod = stt['scheduledPeriod' + s.StoreId];\r\n this.getShippingRateForStore(address, s.StoreId,\r\n s.Products.map(x => ({\r\n ProductId: x.Id,\r\n Quantity: x.Quantity\r\n })),\r\n deliveryMethod, scheduledDate, scheduledPeriod,\r\n );\r\n });\r\n // console.log('getShippingRate::', address);\r\n // if (!address) return;\r\n // this.setState({ loadingShipping: true });\r\n // Api.GetShipping(address)\r\n // .then(data => {\r\n // console.log(data);\r\n // if (!isNaN(data.data)) {\r\n // this.props.dispatch(setCart(this.props.activeCartId, { ...this.props.activeCart, shipping: data.data }));\r\n // this.setState({ loadingShipping: false });\r\n // }\r\n // }).catch(() => {\r\n // this.setState({ outOfReach: true, loadingShipping: false })\r\n // })\r\n }\r\n\r\n getShippingRateForStore = (address, storeId, products, deliveryMethod, scheduledDate, scheduledPeriod) => {\r\n console.log('getShippingRateForStore::', address, storeId);\r\n if (!address || !storeId || this.props.forcedShippingInfo) return;\r\n this.setState({ ['loadingShipping' + storeId]: true });\r\n Api.GetShipping(address, storeId, deliveryMethod, scheduledDate, scheduledPeriod, JSON.stringify(products))\r\n .then(data => {\r\n //console.log(data);\r\n if (data.data && !isNaN(data.data.price)) {\r\n this.props.dispatch(setCart(this.props.activeCartId, {\r\n ...this.props.activeCart,\r\n ['shippingFor' + storeId]: data.data\r\n }));\r\n this.setState({\r\n ['loadingShipping' + storeId]: false,\r\n ['outOfReach' + storeId]: false,\r\n });\r\n if (!this.state['deliveryMethod' + storeId]) {\r\n this.setState({\r\n ['deliveryMethod' + storeId]: data.data && data.data.deliveryMethods && data.data.deliveryMethods.length > 0 ? data.data.deliveryMethods[0].Name : 'Immediate'\r\n }, () => {\r\n if (this.state['deliveryMethod' + storeId] == 'Scheduled' && !this.state['scheduledDate' + storeId]) {\r\n this.setState({ ['scheduledDate' + storeId]: moment(new Date()).add(1, 'days').format(\"DD/MM/YY\") },\r\n () => { setTimeout(this.getShippingRate,1000) })\r\n }\r\n });\r\n }\r\n }\r\n }).catch((e) => {\r\n console.log(e);\r\n // seta na store a info de shipping com outOfReach se der erro\r\n this.props.dispatch(setCart(this.props.activeCartId, {\r\n ...this.props.activeCart,\r\n ['shippingFor' + storeId]: {\r\n price: 0,\r\n //outOfReach: true,\r\n ok: false,\r\n message: 'Ocorreu um erro'\r\n }\r\n }));\r\n // seta no state tambem, porque eh usado aqui no state tb!\r\n this.setState({\r\n //['outOfReach' + storeId]: true,\r\n ['loadingShipping' + storeId]: false\r\n })\r\n })\r\n }\r\n\r\n getShippingInfo = () => {\r\n var allShippingInfos = [];\r\n var stt = this.state;\r\n var prps = this.props;\r\n this.getProdsPerStore(this.props.prods).map(x => {\r\n debugger;\r\n allShippingInfos.push({\r\n StoreId: x.StoreId,\r\n // dados de preferencia do usuario\r\n DeliveryMethod: stt['deliveryMethod' + x.StoreId] ||\r\n (prps.activeCart['shippingFor' + x.StoreId].deliveryMethods ?\r\n prps.activeCart['shippingFor' + x.StoreId].deliveryMethods[0].Name\r\n : 'Immediate'),\r\n ScheduledDate: stt['scheduledDate' + x.StoreId],\r\n ScheduledPeriod: stt['scheduledPeriod' + x.StoreId],\r\n // retorno da API para as preferencias do usuario\r\n ShippingReturn: prps.activeCart['shippingFor' + x.StoreId]\r\n })\r\n });\r\n return allShippingInfos;\r\n }\r\n // macete para injetar shipping info (ja calculada se quiser) nesse componente Cart\r\n setForcedShippingInfo = (shinfo) => {\r\n if (shinfo && shinfo.map) shinfo.map(x => {\r\n debugger\r\n this.setState({\r\n StoreId: x.StoreId,\r\n // dados de preferencia do usuario\r\n ['deliveryMethod' + x.StoreId]: x.DeliveryMethod,\r\n ['scheduledDate' + x.StoreId]: x.ScheduledDate,\r\n ['scheduledPeriod' + x.StoreId]: x.ScheduledPeriod,\r\n // retorno da API para as preferencias do usuario\r\n ['shippingFor' + x.StoreId]: x.ShippingReturn\r\n\r\n })\r\n })\r\n }\r\n\r\n getInnerCart = (storeWithProducts) => {\r\n let prods = storeWithProducts.Products;\r\n let storeId = storeWithProducts.StoreId;\r\n let storeName = storeWithProducts.StoreName;\r\n let maxLeadTimeInHours = Helpers.MaxFromArray(prods, 'LeadTimeInHours');\r\n let myShippingInfo = this.props.activeCart['shippingFor' + storeId];\r\n let isScheduled = this.state['deliveryMethod' + storeId] == 'Scheduled';\r\n let canChangeDeliveryMethod = myShippingInfo && myShippingInfo.deliveryMethods && myShippingInfo.deliveryMethods.length > 1;\r\n let notOk = !(myShippingInfo) || myShippingInfo.ok == false;\r\n return \r\n\r\n {/* NOME DA LOJA QUE VENDE E EMPRESA QUE ENTREGA */}\r\n {\r\n storeName &&\r\n \r\n \r\n Vendido por \r\n {storeName}\r\n {!this.props.productsOnly && myShippingInfo && \r\n e entregue por \r\n LinkXP.OpenURL('https://www.loggi.com.br', '_blank')}>\r\n {myShippingInfo && myShippingInfo.companyName ?\r\n (myShippingInfo.companyName.toLowerCase() == 'loggi' ?\r\n \r\n :\r\n \r\n {myShippingInfo.companyName}\r\n )\r\n :\r\n {storeName}\r\n }\r\n \r\n \r\n }\r\n \r\n \r\n }\r\n\r\n {/* BOX DE PRODUTOS DO CARRINHO DA LOJA */}\r\n {/* {!this.props.productsOnly &&\r\n\r\n \r\n \r\n \r\n } */}\r\n {\r\n prods.map(prod => )\r\n }\r\n\r\n {/* TIPO DE ENTREGA */}\r\n {\r\n // !this.props.productsOnly && prods.length > 0 && this.props.activeCart\r\n // &&\r\n // \r\n // \r\n // Forma de envio:\r\n // this.setState({ ['deliveryMethod' + storeId]: itemValue })}\r\n // data={[\r\n // { value: \"Immediate\", label: \"Imediata\" },\r\n // { value: \"Scheduled\", label: \"Agendada\" },\r\n // ]}\r\n // />\r\n // \r\n // \r\n // {isScheduled ?\r\n // \r\n // this.setState({ ['scheduledDate' + storeId]: Masker.toPattern(t, '99/99/99') })} placeholder={'dd/mm/aa'} />\r\n // {/* \r\n // Período do dia\r\n // \r\n // this.setState({ ['scheduledPeriod' + storeId]: itemValue })}\r\n // data={[\r\n // { label: \"Manhã\", value: \"1\" },\r\n // { label: \"Tarde\", value: \"2\" },\r\n // { label: \"Noite\", value: \"3\" },\r\n // ]}\r\n // />\r\n // \r\n // */}\r\n // \r\n // : null}\r\n // \r\n // \r\n }\r\n\r\n {/* VALOR DO FRETE ou FEEDBACK SOBRE FORA DE AREA */}\r\n {!this.props.productsOnly &&\r\n prods.length > 0 &&\r\n \r\n \r\n Frete:\r\n {/* LinkXP.OpenURL('https://www.loggi.com.br', '_blank')}>\r\n \r\n \r\n : */}\r\n \r\n {this.state['loadingShipping' + storeId] ?\r\n \r\n :\r\n this.state['outOfReach' + storeId]\r\n ?\r\n \r\n {'Fora da área de cobertura'}\r\n \r\n :\r\n this.props.activeCart && myShippingInfo && (myShippingInfo != -1) // se tem algum valor no frete mostra o preco (ate 0 pode, eh frete gratis)\r\n ?\r\n \r\n {notOk ? '-' : myShippingInfo.price == 0 ? 'Frete grátis!' : Helpers.FloatToReais(myShippingInfo.price)}\r\n \r\n :\r\n // sem endereco preenchido\r\n { this.setState({ addressDialogOpened: true }) }}>\r\n \r\n Informar endereço\r\n \r\n \r\n\r\n }\r\n \r\n }\r\n\r\n {/* INFORMAÇÕES SOBRE O ENVIO */}\r\n {!this.props.productsOnly &&\r\n prods.length > 0 && this.props.activeCart && myShippingInfo &&\r\n \r\n \r\n\r\n {/* ENVIO ( e botão de agendar) */}\r\n \r\n \r\n Envio:\r\n {!this.props.reviewMode && <>\r\n {isScheduled ? // --- ENTREGA IMEDIATA\r\n !canChangeDeliveryMethod ? // se só tem um delivery method nao mostra como botão, e sim como text\r\n (agendado)\r\n : // mostrando como botão a opção de alterar a forma de entrega\r\n this.setState({ ['deliveryMethod' + storeId]: 'Immediate' }, () => this.getShippingRate())}>\r\n (alterar)\r\n \r\n : // --- ENTREGA AGENDADA\r\n !canChangeDeliveryMethod ? // se só tem um delivery method nao mostra como botão, e sim como text\r\n (agendado)\r\n : // mostrand botao pra alterar forma de entrega\r\n this.setState({ ['deliveryMethod' + storeId]: 'Scheduled', ['scheduledDate' + storeId]: moment(new Date()).add(1, 'days').format(\"DD/MM/YY\") },\r\n () => this.getShippingRate())}>\r\n (agendar)\r\n \r\n }\r\n }\r\n \r\n \r\n {\r\n // DEU ALGUM PROBLEMA?\r\n notOk ?\r\n \r\n {!(myShippingInfo) ? \"...\"\r\n : myShippingInfo.message}\r\n \r\n :\r\n // Envio agendado? Mostra input de data\r\n (isScheduled ?\r\n {\r\n // readonly?\r\n if (this.props.reviewMode) return;\r\n this.setState({ ['scheduledDate' + storeId]: Masker.toPattern(t, '99/99/99') },\r\n // se tem length == 6 no input ja parece data entao chama getShipping na API\r\n () => { if (Helpers.NumbersFromString(this.state['scheduledDate' + storeId]).length == 6) this.getShippingRate() })\r\n }\r\n }\r\n placeholder={'dd/mm/aa'} />\r\n :\r\n // se não mostra a previsão da entrega\r\n \r\n {myShippingInfo.shipsNow == true ? // entrega imediata?\r\n \r\n : // se nao mostra previsao do envio\r\n \r\n \r\n \r\n {moment(myShippingInfo.shipsBy).fromNow()}\r\n \r\n \r\n }\r\n )\r\n }\r\n \r\n\r\n { // MENSAGENS SOBRE PREVISAO DE ENVIO\r\n // ships now && leadtime = 0: ⚡️ entrega imediata\r\n // loja fechada e tudo eh leadTime = 0 => \"Esta loja esta fechada. Seu pedido será despachado assim que a loja abrir (dd/mm/yy)\"\"\r\n // loja aberta e pedido encomenda => \"Seu pedido será despachado assim que a sua encomenda estiver pronta (dd/mm/yy)\"\r\n // ljoa fechada e pedido encomenda => \r\n }\r\n \r\n {(myShippingInfo && maxLeadTimeInHours > 0 || isScheduled)\r\n ? // Pedido agendado ou encomenda?\r\n \r\n Seu pedido será enviado assim que a sua encomenda estiver pronta e a loja estiver aberta ({moment(myShippingInfo.shipsBy).format(\"dddd\")}{isScheduled ? ' ' + moment(myShippingInfo.shipsBy).format(\"DD/MM\") : ''} a partir das {moment(myShippingInfo.shipsBy).format(\"h:mmA\")})\r\n \r\n :\r\n <>\r\n {myShippingInfo && myShippingInfo.storeIsOpen == true && maxLeadTimeInHours == 0\r\n && // loja aberta e pedido não tem nada de encomenda: Envia assim q pagar\r\n \r\n { // mas aqui se o cara ta vendo o Cart como um review da venda ele ja pagou, entao mudamos a mensagem\r\n this.props.reviewMode\r\n ?\r\n 'Seu pedido será enviado pela loja daqui a pouco.'\r\n :\r\n 'Seu pedido será enviado pela loja assim que o pagamento for concluído.'\r\n }\r\n\r\n \r\n }\r\n {myShippingInfo && myShippingInfo.storeIsOpen == false && maxLeadTimeInHours == 0\r\n && // loja fech:mmAda e produtos são de envio imediato\r\n \r\n Esta loja está fechada no momento. Seu pedido será enviado assim que a loja abrir ({moment(myShippingInfo.shipsBy).format(\"dddd\")} a partir das {moment(myShippingInfo.shipsBy).format(\"hA\")})\r\n \r\n }\r\n \r\n }\r\n \r\n \r\n }\r\n\r\n {\r\n false && prods.length > 0 &&\r\n \r\n SubTotal:\r\n \r\n {Helpers.FloatToReais(sumProducts(prods) + (myShippingInfo.price ? myShippingInfo.price : 0))}\r\n \r\n \r\n }\r\n\r\n \r\n \r\n Devido a pandemia, o prazo de entrega dos pedidos é de até 24h\r\n \r\n \r\n \r\n }\r\n\r\n getProdsPerStore = (prods) => {\r\n var stores = [];\r\n prods.map(x => {\r\n let myStore;\r\n if (stores.filter(z => z.StoreId == x.StoreId).length == 0) {\r\n myStore = { StoreName: x.StoreName, StoreId: x.StoreId, Products: [] }\r\n stores.push(myStore);\r\n } else {\r\n myStore = stores.filter(z => z.StoreId == x.StoreId)[0]\r\n }\r\n myStore.Products.push(x);\r\n });\r\n return stores;\r\n }\r\n\r\n render() {\r\n var prods = this.props.prods;\r\n var prodsPerStore = this.getProdsPerStore(prods);\r\n // 🛵 📍 \r\n return \r\n\r\n {/* ENDERECO */}\r\n {this.props.productsOnly || prods.length == 0 ? null :\r\n }\r\n title={'Endereço de entrega'} color={Colors.darkText}\r\n borderColor={Colors.lines} rightContent={this.props.customerUser && this.props.customerUser.address && !this.props.reviewMode &&\r\n { this.setState({ addressDialogOpened: true }) }}>\r\n \r\n \r\n alterar\r\n \r\n || null}>\r\n \r\n \r\n {this.props.customerUser && this.props.customerUser.address ?\r\n \r\n {/* {`${this.props.customerUser.address.resumo} ${this.props.customerUser.address.numero} ${this.props.customerUser.address.complemento ? ', ' + this.props.customerUser.address.complemento : ''} ${this.props.customerUser.address.referencia ? ', ' + this.props.customerUser.address.referencia : ''}`} */}\r\n {this.props.customerUser.address.resumo}\r\n \r\n :\r\n { this.setState({ addressDialogOpened: true }) }}>\r\n \r\n \r\n Informe seu endereço\r\n \r\n \r\n }\r\n \r\n \r\n \r\n }\r\n {/* {'Seu pedido em ' + (prodsPerStore.length == 1 ? prodsPerStore[0].StoreName : (prodsPerStore.length) + ' lojas')} */}\r\n\r\n {/* PRODUTOS */}\r\n \r\n\r\n {/* EMPTY CART */}\r\n {prods.length == 0 &&\r\n \r\n \r\n Seu carrinho está vazio\r\n \r\n \r\n \r\n Voltar pra loja\r\n \r\n \r\n \r\n \r\n }\r\n\r\n {/*prodsPerStore.length == 1 ?\r\n this.getInnerCart(prodsPerStore[0])\r\n :*/\r\n prodsPerStore.map((x, i) => (\r\n }\r\n // se for productsonly o carrinho não motra o panel de endereco acima dos panels de produtos\r\n // entao removemos a marginTop do primeiro panel nesse caso:\r\n style={this.props.productsOnly && i == 0 ? { marginTop: 0 } /*primeiro sem marginTop*/ : {}}\r\n title={`Entrega ${i + 1} de ${prodsPerStore.length}` /*x.StoreName*/}\r\n borderColor={Colors.lines} color={Colors.darkText} borderWidth={2}>\r\n {this.getInnerCart(x)}\r\n )\r\n )\r\n }\r\n\r\n this.setState({ addressDialogOpened: false })}\r\n onAddressSelect={(data) => {\r\n this.setState({ address: data.address, shipping: data.shipping, addressDialogOpened: false }, () => {\r\n this.props.dispatch(setCustomerUser({ address: data.address }))\r\n });\r\n }} />\r\n \r\n\r\n\r\n \r\n }\r\n}\r\n\r\nconst styles = {\r\n rowStyle: {\r\n flexDirection: 'row',\r\n alignItems: 'center',\r\n marginHorizontal: 3,\r\n marginHorizontal: 3,\r\n paddingVertical: 10,\r\n borderBottomWidth: 1,\r\n borderBottomColor: '#e6e6e6'\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state) => ({\r\n carts: state.cart.carts,\r\n prods: Helpers.ObjToArray(getCart(state.cart.carts, state.cart.activeCartId).products),\r\n activeCartId: state.cart.activeCartId,\r\n activeCart: getCart(state.cart.carts, state.cart.activeCartId),\r\n activeCartTotalProds: getCart(state.cart.carts, state.cart.activeCartId) && getCart(state.cart.carts, state.cart.activeCartId).sum || 0,\r\n activeCartShippingTotal: getCartFullShippingTotal(getCart(state.cart.carts, state.cart.activeCartId)) || -1,\r\n customerUser: state.customerUser,\r\n }),\r\n null)(Cart);\r\n\r\n\r\n\r\n\r\nconst TotalsComponent = (props) => {\r\n const prods = props.prods;\r\n return \r\n {/* TOTAL EM PRODUTOS */}\r\n {prods.length > 0 &&\r\n \r\n Total em produtos:\r\n \r\n {Helpers.FloatToReais(sumProducts(prods))}\r\n \r\n }\r\n\r\n {/* TOTAL DE FRETE */}\r\n {!props.productsOnly && prods.length > 0 &&\r\n \r\n Total de frete:\r\n \r\n {props.activeCartShippingTotal > -1 ?\r\n Helpers.FloatToReais(props.activeCartShippingTotal) :\r\n '?'}\r\n \r\n }\r\n\r\n {!props.productsOnly && prods.length > 0 &&\r\n \r\n Total:\r\n \r\n {Helpers.FloatToReais(getCartFullTotal(props.activeCart))}\r\n \r\n }\r\n \r\n}\r\nexport const ConnectedTotalsComponent = connect(\r\n (state) => ({\r\n prods: Helpers.ObjToArray(getCart(state.cart.carts, state.cart.activeCartId).products),\r\n activeCart: getCart(state.cart.carts, state.cart.activeCartId),\r\n activeCartTotalProds: getCart(state.cart.carts, state.cart.activeCartId) && getCart(state.cart.carts, state.cart.activeCartId).sum || 0,\r\n activeCartShippingTotal: getCartFullShippingTotal(getCart(state.cart.carts, state.cart.activeCartId)) || -1,\r\n }),\r\n null)(TotalsComponent);","export const cyberCashFlags = {\r\n 'visa': 1,\r\n 'electron': 1,\r\n 'maestro': 2,\r\n 'mastercard': 2,\r\n 'diners': 3,\r\n 'discover': 4,\r\n 'elo': 5,\r\n 'amex': 6,\r\n};\r\n\r\nconst __slice = [].slice, __indexOf = [].indexOf || function (item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };\r\n\r\nconst defaultFormat = /(\\d{1,4})/g;\r\nconst cards = [\r\n {\r\n type: 'maestro',\r\n patterns: [5018, 502, 503, 506, 56, 58, 639, 6220, 67],\r\n format: defaultFormat,\r\n length: [12, 13, 14, 15, 16, 17, 18, 19],\r\n cvcLength: [3],\r\n luhn: true\r\n }, {\r\n type: 'forbrugsforeningen',\r\n patterns: [600],\r\n format: defaultFormat,\r\n length: [16],\r\n cvcLength: [3],\r\n luhn: true\r\n }, {\r\n type: 'dankort',\r\n patterns: [5019],\r\n format: defaultFormat,\r\n length: [16],\r\n cvcLength: [3],\r\n luhn: true\r\n }, {\r\n type: 'visa',\r\n patterns: [4],\r\n format: defaultFormat,\r\n length: [13, 16],\r\n cvcLength: [3],\r\n luhn: true\r\n }, {\r\n type: 'mastercard',\r\n patterns: [51, 52, 53, 54, 55, 22, 23, 24, 25, 26, 27],\r\n format: defaultFormat,\r\n length: [16],\r\n cvcLength: [3],\r\n luhn: true\r\n }, {\r\n type: 'amex',\r\n patterns: [34, 37],\r\n format: /(\\d{1,4})(\\d{1,6})?(\\d{1,5})?/,\r\n length: [15],\r\n cvcLength: [3, 4],\r\n luhn: true\r\n }, {\r\n type: 'dinersclub',\r\n patterns: [30, 36, 38, 39],\r\n format: /(\\d{1,4})(\\d{1,6})?(\\d{1,4})?/,\r\n length: [14],\r\n cvcLength: [3],\r\n luhn: true\r\n }, {\r\n type: 'discover',\r\n patterns: [60, 64, 65, 622],\r\n format: defaultFormat,\r\n length: [16],\r\n cvcLength: [3],\r\n luhn: true\r\n }, {\r\n type: 'unionpay',\r\n patterns: [62, 88],\r\n format: defaultFormat,\r\n length: [16, 17, 18, 19],\r\n cvcLength: [3],\r\n luhn: false\r\n }, {\r\n type: 'jcb',\r\n patterns: [35],\r\n format: defaultFormat,\r\n length: [16],\r\n cvcLength: [3],\r\n luhn: true\r\n }\r\n];\r\n\r\nexport function cardFromNumber(num) {\r\n var card, p, pattern, _i, _j, _len, _len1, _ref;\r\n num = (num + '').replace(/\\D/g, '');\r\n for (_i = 0, _len = cards.length; _i < _len; _i++) {\r\n card = cards[_i];\r\n _ref = card.patterns;\r\n for (_j = 0, _len1 = _ref.length; _j < _len1; _j++) {\r\n pattern = _ref[_j];\r\n p = pattern + '';\r\n if (num.substr(0, p.length) === p) {\r\n card.cyberCashFlag = cyberCashFlags[card.type];\r\n return card;\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport function validateCardNumber(num) {\r\n var card, _ref;\r\n num = (num + '').replace(/\\s+|-/g, '');\r\n console.log('validating card: ' + num);\r\n if (!/^\\d+$/.test(num)) {\r\n return false;\r\n }\r\n card = cardFromNumber(num);\r\n if (!card) {\r\n return false;\r\n }\r\n return (_ref = num.length, __indexOf.call(card.length, _ref) >= 0) && (card.luhn === false || luhnCheck(num));\r\n};\r\n\r\nexport function formatCardNumber2(num) {\r\n var card, length, re, upperLength, value;\r\n console.log('formatCardNumber -- > '+num);\r\n if (num == null || num.length <= 1){\r\n console.log('num is null:');\r\n return;\r\n }\r\n num = replaceFullWidthChars(num);\r\n num = (num + '').replace(/\\D/g, '');\r\n console.log('card value:'+num);\r\n value = num.substr(0, num.length - 1);\r\n console.log('->value:'+value); \r\n var digit = num.substr(num.length - 1,1);\r\n console.log('->digit:'+digit); \r\n card = cardFromNumber(value + digit);\r\n length = (value.replace(/\\D/g, '') + digit).length;\r\n upperLength = 16;\r\n if (card) {\r\n upperLength = card.length[card.length.length - 1];\r\n }\r\n if (length >= upperLength) {\r\n console.log('length >= upperLength');\r\n return;\r\n }\r\n if (card && card.type === 'amex') {\r\n re = /^(\\d{4}|\\d{4}\\s\\d{6})$/;\r\n } else {\r\n re = /(?:^|\\s)(\\d{4})$/;\r\n }\r\n\r\n if (re.test(value)) {\r\n console.log('space before digit');\r\n return value + ' ' + digit;\r\n } else if (re.test(value + digit)) {\r\n console.log('space after digit');\r\n return value + digit + ' ';\r\n }\r\n};\r\n\r\nexport function formatCardNumber(num) {\r\n var card, groups, upperLength, _ref;\r\n num = num.replace(/\\D/g, '');\r\n card = cardFromNumber(num);\r\n if (!card) {\r\n return num;\r\n }\r\n upperLength = card.length[card.length.length - 1];\r\n num = num.slice(0, upperLength);\r\n if (card.format.global) {\r\n return (_ref = num.match(card.format)) != null ? _ref.join(' ') : void 0;\r\n } else {\r\n groups = card.format.exec(num);\r\n if (groups == null) {\r\n return;\r\n }\r\n groups.shift();\r\n groups = grep(groups, function(n) {\r\n return n;\r\n });\r\n return groups.join(' ');\r\n }\r\n };\r\n\r\nconst replaceFullWidthChars = function(str) {\r\n var chars, chr, fullWidth, halfWidth, idx, value, _i, _len;\r\n if (str == null) {\r\n str = '';\r\n }\r\n fullWidth = '\\uff10\\uff11\\uff12\\uff13\\uff14\\uff15\\uff16\\uff17\\uff18\\uff19';\r\n halfWidth = '0123456789';\r\n value = '';\r\n chars = str.split('');\r\n for (_i = 0, _len = chars.length; _i < _len; _i++) {\r\n chr = chars[_i];\r\n idx = fullWidth.indexOf(chr);\r\n if (idx > -1) {\r\n chr = halfWidth[idx];\r\n }\r\n value += chr;\r\n }\r\n return value;\r\n };\r\n\r\nconst luhnCheck = function (num) {\r\n var digit, digits, odd, sum, _i, _len;\r\n odd = true;\r\n sum = 0;\r\n digits = (num + '').split('').reverse();\r\n for (_i = 0, _len = digits.length; _i < _len; _i++) {\r\n digit = digits[_i];\r\n digit = parseInt(digit, 10);\r\n if ((odd = !odd)) {\r\n digit *= 2;\r\n }\r\n if (digit > 9) {\r\n digit -= 9;\r\n }\r\n sum += digit;\r\n }\r\n return sum % 10 === 0;\r\n};\r\n\r\nfunction grep(a,b,d){for(var f=[],e=0,i=a.length;e {\r\n var stt = this.state;\r\n var allOk = true;\r\n // card number\r\n if (\r\n //!validateCardNumber(stt.cardNumber)\r\n stt.cardNumber.length < 14\r\n ) {\r\n allOk = false;\r\n stt.cardNumberValid = false\r\n } else {\r\n stt.cardNumberValid = true\r\n }\r\n // card expiration date:\r\n var exp = stt.cardExp;\r\n var expArr = exp.split('/');\r\n if (exp.length < 5 || exp.indexOf('/') === -1 || expArr[0] > 12 || expArr[1] < (new Date().getFullYear() - 2000)) {\r\n allOk = false;\r\n stt.cardExpValid = false\r\n } else {\r\n stt.cardExpValid = true\r\n }\r\n // card cvv\r\n if (stt.cardCVV.length <= 2 || stt.cardCVV.length > 4) {\r\n allOk = false;\r\n stt.cardCVVValid = false\r\n } else {\r\n stt.cardCVVValid = true\r\n }\r\n // card holder name\r\n if (stt.cardHolder.length <= 2) {\r\n allOk = false;\r\n stt.cardHolderValid = false\r\n } else {\r\n stt.cardHolderValid = true\r\n }\r\n // card holder document\r\n if (stt.cardHolderDoc.length <= 2) {\r\n allOk = false;\r\n stt.cardHolderDocValid = false\r\n } else {\r\n stt.cardHolderDocValid = true\r\n }\r\n this.setState({ ...stt }, (e) => {\r\n //console.log('New State:', { ...stt }, 'this.state:', this.state, e);\r\n });\r\n return allOk;\r\n }\r\n\r\n getCard = () => {\r\n var valid = this.validateCard();\r\n if (!valid) return null;\r\n var flag;\r\n try {\r\n var card = cardFromNumber(this.state.cardNumber);\r\n flag = card.cyberCashFlag;\r\n } catch (e) { }\r\n return {\r\n Number: this.state.cardNumber,\r\n HolderName: this.state.cardHolder,\r\n ExpirationDate: this.state.cardExp,\r\n SecurityCode: this.state.cardCVV,\r\n OwnerDocumentIdentifier: this.state.cardHolderDoc,\r\n Flag: flag,\r\n CardRemember: this.state.cardRemember\r\n }\r\n }\r\n\r\n render() {\r\n //console.log('RENDER!!!');\r\n const a = { ...this.state };\r\n return \r\n {/* \r\n \r\n */}\r\n\r\n \r\n \r\n this.setState({ cardNumber: formatCardNumber(text) })}\r\n />\r\n \r\n \r\n this.setState({ cardExp: Masker.toPattern(text, '99/99') })}\r\n />\r\n this.setState({ cardCVV: Masker.toPattern(text, '9999') })}\r\n />\r\n \r\n \r\n \r\n this.setState({ cardHolder: text })}\r\n />\r\n {this.props.hideCpf ? null :\r\n {\r\n //console.log('setting cardholderdoc:', Masker.toPattern(text, '999.999.999-99'));\r\n this.setState({ cardHolderDoc: Masker.toPattern(text, '999.999.999-99') })\r\n }}\r\n />}\r\n \r\n \r\n this.setState({ cardRemember: !this.state.cardRemember })}>\r\n \r\n \r\n \r\n Salvar para próximas compras\r\n \r\n \r\n \r\n \r\n \r\n }\r\n}","import React from 'react';\r\nimport { TouchableOpacity, View, Text } from 'react-native';\r\nimport Icon from 'react-native-vector-icons/FontAwesome';\r\nimport { TextInput, Button } from 'react-native-paper';\r\nimport Colors from '../constants/Colors';\r\nimport GlobalStyles from '../constants/GlobalStyles';\r\nimport MyTextInput from './MyTextInput';\r\n\r\nexport default class CreditCardPaperComponent extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n cardNumber: props.cardNumber || '',\r\n cardHolder: props.cardHolder || '',\r\n cardExp: props.cardExp || '',\r\n cardFlag: props.cardFlag || '',\r\n }\r\n }\r\n\r\n render() {\r\n const a = { ...this.state };\r\n var iconName = this.state.cardFlag == cyberCashFlags.visa ? 'cc-visa' :\r\n this.state.cardFlag == cyberCashFlags.electron ? 'cc-visa' :\r\n this.state.cardFlag == cyberCashFlags.mastercard ? 'cc-mastercard' :\r\n this.state.cardFlag == cyberCashFlags.maestro ? 'cc-mastercard' :\r\n this.state.cardFlag == cyberCashFlags.diners ? 'cc-diners' :\r\n this.state.cardFlag == cyberCashFlags.amex ? 'cc-amex' :\r\n this.state.cardFlag == cyberCashFlags.discover ? 'cc-discover' :\r\n 'credit-card';\r\n return \r\n {/* \r\n \r\n */}\r\n\r\n \r\n this.setState({ cardHolder: text })}\r\n />\r\n \r\n \r\n \r\n \r\n \r\n this.setState({ cardNumber: formatCardNumber(text) })}\r\n />\r\n this.setState({ cardExp: Masker.toPattern(text, '99/99') })}\r\n />\r\n \r\n \r\n this.props.onRemoveCard()}>\r\n Remover cartão\r\n \r\n \r\n \r\n }\r\n}\r\n\r\nexport const cyberCashFlags = {\r\n 'visa': 1,\r\n 'electron': 1,\r\n 'maestro': 2,\r\n 'mastercard': 2,\r\n 'diners': 3,\r\n 'discover': 4,\r\n 'elo': 5,\r\n 'amex': 6,\r\n};","import * as React from 'react';\r\nimport { View, TouchableOpacity, Text, ScrollView } from 'react-native';\r\nimport { Button, Dialog, Portal, ActivityIndicator } from 'react-native-paper';\r\nimport axios from 'axios';\r\nimport Api from './../api/Api';\r\nimport Colors from '../constants/Colors';\r\nimport Helpers from '../utils/Helpers';\r\nimport { Linking } from 'expo';\r\nimport { Platform } from '@unimodules/core';\r\nimport MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons';\r\nimport Feather from 'react-native-vector-icons/Feather';\r\nimport { Event } from 'expo-analytics';\r\nimport GlobalStyles from '../constants/GlobalStyles';\r\nimport Cart, { ConnectedTotalsComponent } from './Cart';\r\n\r\n\r\nexport default class ConfirmSaleDialog extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n visible: this.props.opened,\r\n saleId: this.props.saleId,\r\n message: '...'\r\n }\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n this.setState({ visible: nextProps.opened, saleId: nextProps.saleId });\r\n this.taimaut = setTimeout(this.getSaleStatus, 3000);\r\n }\r\n _showDialog = () => this.setState({ visible: true });\r\n _hideDialog = () => {\r\n this.setState({ visible: false });\r\n clearTimeout(this.taimaut);\r\n if (this.props.onHideDialog)\r\n this.props.onHideDialog(this.state.status == 'Confirmed');\r\n }\r\n\r\n componentDidMount() {\r\n setTimeout(this.getSaleStatus, 3000)\r\n }\r\n\r\n getSaleStatus = () => {\r\n if (!this.state.saleId) return;\r\n this.setState({ loading: true })\r\n Api.GetMarketPlaceSaleStatus(this.state.saleId)\r\n .then(data => {\r\n console.log('got sale status', data)\r\n if (data.data && data.data.status) {\r\n Api.Analytics.event(new Event(\"Confirmation\", 'Received_' + data.data.status));\r\n this.setState({ message: data.data.msg, status: data.data.status, loading: false })\r\n } else {\r\n setTimeout(this.getSaleStatus, 3000)\r\n }\r\n })\r\n .catch(() => {\r\n console.log('post Request canceled');\r\n setTimeout(this.getSaleStatus, 3000)\r\n //this.setState({ loading: false })\r\n });\r\n }\r\n\r\n render() {\r\n const whatsappBtn = ;\r\n\r\n return (\r\n \r\n \r\n Confirmação de entrega\r\n \r\n \r\n \r\n \r\n\r\n \r\n {\r\n this.state.status == 'Confirmed' // 🛵🆘🍫👏😃😔\r\n ?\r\n \r\n Pagamento autorizado! Pedido confirmado!\r\n {/* 🛵🍫😃 */}\r\n \r\n {this.state.message}\r\n {whatsappBtn}\r\n Veja o resumo do seu pedido:\r\n \r\n \r\n Obrigado por comprar na SOS Chocolate!\r\n this._hideDialog()} style={{ marginVertical: 20, alignItems: 'center', ...GlobalStyles.defaultLinkButton }}>\r\n Voltar para a loja\r\n \r\n \r\n :\r\n this.state.status == 'Denied'\r\n ?\r\n \r\n Pedido não confirmado! O pagamento será estornado em seu cartão!\r\n {/* 😔 */}\r\n \r\n {this.state.message}\r\n {whatsappBtn}\r\n this._hideDialog()} style={{ marginVertical: 20, alignItems: 'center', ...GlobalStyles.defaultLinkButton }}>\r\n Voltar para a loja\r\n \r\n \r\n :\r\n \r\n Pagamento autorizado! {'\\n'}Aguardando confirmação da equipe de entrega:\r\n \r\n Não feche esta janela.\r\n Se a entrega não for confirmada o pagamento será estornado em seu cartão.\r\n \r\n }\r\n \r\n \r\n {/* \r\n \r\n */}\r\n \r\n \r\n );\r\n }\r\n}","import React from 'react';\r\nimport { Text, View } from 'react-native';\r\nimport { connect } from 'react-redux'\r\nimport { getCart } from '../store/cartsReducer';\r\nimport Colors from '../constants/Colors';\r\nimport GlobalStyles from '../constants/GlobalStyles';\r\n\r\nclass _CartCountBadge extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n showingTip: false\r\n }\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n //console.log('show tip', nextProps);\r\n if (this.props.cartCount == 0 && nextProps.cartCount > 0) {\r\n this.setState({ showingTip: true });\r\n setTimeout(() => {\r\n this.setState({ showingTip: false });\r\n }, 5000);\r\n } else if (this.props.cartCount < nextProps.cartCount) {\r\n this.setState({ showingTip: true });\r\n setTimeout(() => {\r\n this.setState({ showingTip: false });\r\n }, 1000);\r\n }\r\n }\r\n\r\n render() {\r\n return \r\n {Math.ceil(this.props.cartCount)}\r\n {\r\n this.state.showingTip\r\n ?\r\n \r\n 👏😍 Produto adicionado ao carrinho!\r\n \r\n :\r\n null\r\n }\r\n \r\n }\r\n}\r\nexport const CartCountBadge = connect(\r\n (state) => ({\r\n cartCount: getCart(state.cart.carts, state.cart.activeCartId).qtd,\r\n }),\r\n null)(_CartCountBadge);","import React, { useState, useEffect } from 'react';\r\nimport { View, Dimensions } from 'react-native';\r\n\r\nexport const ViewportNames = {\r\n mobile: 'mobile',\r\n tablet: 'tablet',\r\n desktop: 'desktop'\r\n}\r\nexport const getViewportName = width =>\r\n width < 768 ? ViewportNames.mobile : width < 992 ? ViewportNames.tablet : ViewportNames.desktop;\r\n\r\nexport default class ResponsiveView extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n var _window = Dimensions.get('window');\r\n var cview = getViewportName();\r\n this.state = {\r\n windowWidth: _window.width,\r\n ...this.getScreenStateFromViewport(cview),\r\n };\r\n Dimensions.addEventListener('change', e => {\r\n const { width, height } = e.window;\r\n if (this.state.lastWindowWidth != width) {\r\n this.setState({\r\n ...this.getScreenStateFromViewport(getViewportName(width)),\r\n windowWidth: width,\r\n });\r\n }\r\n });\r\n if (props.myref) props.myref(this);\r\n }\r\n getScreenStateFromViewport = currentViewport => {\r\n return { currentViewport: currentViewport };\r\n };\r\n render() {\r\n var ww = this.state.windowWidth;\r\n var viewport = this.state.currentViewport;\r\n if (\r\n (this.props && this.props.minWidth !== null\r\n ? ww >= this.props.minWidth\r\n : true) &&\r\n (this.props && this.props.maxWidth !== null\r\n ? ww <= this.props.maxWidth\r\n : true)\r\n ) {\r\n return {this.props.children};\r\n } else {\r\n return null;\r\n }\r\n }\r\n}\r\n\r\nexport const MobileView = props => (\r\n \r\n {props.children}\r\n \r\n);\r\nexport const TabletView = props => (\r\n \r\n {props.children}\r\n \r\n);\r\nexport const DesktopView = props => (\r\n \r\n {props.children}\r\n \r\n);\r\n\r\nexport const ViewportRenderer = props => {\r\n const [screenWidth, setScreenWidth] = useState(Dimensions.get('window').width);\r\n useEffect(() => {\r\n const onChange = result => {\r\n setScreenWidth(result.window.width);\r\n };\r\n Dimensions.addEventListener('change', onChange);\r\n return () => Dimensions.removeEventListener('change', onChange);\r\n });\r\n return props.render(getViewportName(screenWidth), screenWidth);\r\n}\r\n\r\nexport class ViewportRendererReact extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n screenWidth: Dimensions.get('window').width\r\n }\r\n }\r\n componentDidMount() {\r\n Dimensions.addEventListener('change', this.onChangeDimensions);\r\n }\r\n componentWillUnmount() {\r\n Dimensions.removeEventListener('change', this.onChange)\r\n }\r\n onChangeDimensions = (result) => {\r\n this.setState({ screenWidth: result.window.width });\r\n }\r\n render() {\r\n return this.props.render(getViewportName(this.state.screenWidth), this.state.screenWidth);\r\n }\r\n}","import React, { useEffect, useState } from 'react';\r\nimport { Platform, Text, View, Image, TouchableOpacity, TextInput, ActivityIndicator, ScrollView } from 'react-native';\r\nimport Api from './../api/Api';\r\nimport Helpers from '../utils/Helpers';\r\nimport { addToCart, removeFromCart, getCart } from '../store/cartsReducer';\r\nimport MaterialIcons from 'react-native-vector-icons/MaterialIcons';\r\nimport Entypo from 'react-native-vector-icons/Entypo';\r\nimport MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons';\r\nimport Colors from '../constants/Colors';\r\nimport { Event } from 'expo-analytics';\r\nimport Modal from 'react-native-modalbox';\r\nimport store from '../store/store';\r\nimport GlobalStyles from '../constants/GlobalStyles';\r\nimport MyQtdInput from './MyQtdInput';\r\nimport { setProductToActiveCart } from './../store/cartsReducer';\r\nimport { connect } from 'react-redux';\r\nimport SosHelpers from '../utils/SosHelpers';\r\nimport { ProductLeadTimeComponent } from './Product';\r\nvar Big = require('big.js');\r\n\r\nclass ModalProduct extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n qtdNow: props.productOnCart ? props.productOnCart.Quantity : props.product.QtyToDisplayPrice,\r\n comments: props.productOnCart && props.productOnCart.Comments ? props.productOnCart.Comments : ''\r\n }\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n this.setState({ comments: nextProps.productOnCart && nextProps.productOnCart.Comments ? nextProps.productOnCart.Comments : '' })\r\n this.setState({ qtdNow: nextProps.productOnCart && nextProps.productOnCart.Quantity ? nextProps.productOnCart.Quantity : nextProps.product.QtyToDisplayPrice });\r\n }\r\n\r\n addToCartPress = () => {\r\n // nao tava no carrinho e quer add zero? nao pode\r\n if (!this.props.productOnCart && this.props.product.QtyInStock <= 0 && this.props.product.TrackStock) {\r\n return;\r\n } else {\r\n // ja estava no carrinho?\r\n if (this.props.productOnCart) {\r\n // mudou pra zero eh pra remover\r\n if (this.state.qtdNow == 0) {\r\n Api.Analytics.event(new Event(\"RemoveCart\", this.props.product.Id));\r\n this.props.dispatch(removeFromCart(this.props.product, this.props.activeCartId));\r\n } else {\r\n Api.Analytics.event(new Event(\"ChangeProductOnCart\", this.props.product.Id, 'qtd', this.state.qtdNow));\r\n Api.Analytics.event(new Event(\"ChangeProductOnCart\", this.props.product.Id, 'comments', this.state.comments));\r\n this.props.dispatch(setProductToActiveCart({ ...this.props.product, Quantity: this.state.qtdNow, Comments: this.state.comments }));\r\n }\r\n }\r\n else // novo no carrinho\r\n {\r\n Api.Analytics.event(new Event(\"AddToCart\", this.props.product.Id, 'qtd', this.state.qtdNow));\r\n Api.Analytics.event(new Event(\"ChangeProductOnCart\", this.props.product.Id, 'comments', this.state.comments));\r\n this.props.dispatch(setProductToActiveCart({ ...this.props.product, Quantity: this.state.qtdNow, Comments: this.state.comments }));\r\n }\r\n // ok, close\r\n this.props.onClosed();\r\n }\r\n }\r\n\r\n render() {\r\n let outOfStock = this.props.product.QtyInStock <= 0 && this.props.product.TrackStock;\r\n var BContent = {\r\n this.props.onClosed()\r\n }} style={{\r\n margin: 10,\r\n backgroundColor: \"#3B5998\",\r\n padding: 10,\r\n position: \"absolute\",\r\n top: 0,\r\n right: 0,\r\n width: 50,\r\n height: 50,\r\n backgroundColor: \"transparent\",\r\n overflow: 'hidden'\r\n }}>;\r\n return {\r\n this.props.onClosed();\r\n }}\r\n style={ModalStyle} position={\"center\"} backdropContent={BContent}>\r\n {this.props.product &&\r\n \r\n {/* CLOSE BTN */}\r\n this.props.onClosed()}>\r\n \r\n \r\n {/* FOTO DO PRODUTO */}\r\n \r\n {Platform.OS != 'web' && }\r\n \r\n {/* NOME E PRECO */}\r\n \r\n {this.props.product.Name}\r\n \r\n {SosHelpers.getProductPriceToDisplay(this.props.product)}\r\n \r\n \r\n {/* DESCRICAO */}\r\n {this.props.product.Description &&\r\n \r\n \r\n {this.props.product.Description}\r\n \r\n \r\n }\r\n\r\n {/* INGREDIENTES */}\r\n {!!this.props.product.Ingredients ?\r\n Ingredientes: {this.props.product.Ingredients}\r\n : null}\r\n\r\n\r\n {/* SELLER E LEAD TIME*/}\r\n \r\n {!!this.props.product.StoreName ?\r\n \r\n \r\n {this.props.product.StoreName}\r\n \r\n : null}\r\n {this.props.product.LeadTime == -1 ? null :\r\n \r\n }\r\n \r\n\r\n {/* OBSERVACOES */}\r\n \r\n \r\n \r\n Observações\r\n \r\n \r\n {this.state.comments.length}/200\r\n \r\n \r\n this.setState({ comments: t })}\r\n placeholder={'Algum comentário?'} maxLength={200}\r\n style={{\r\n paddingHorizontal: 8, paddingVertical: 8, //height: 60,\r\n borderRadius: 5, borderWidth: 2, borderColor: Colors.lines\r\n }} />\r\n \r\n\r\n {/* BOTAO DE COMPRAR */}\r\n \r\n {/* INPUT DE QTD */}\r\n {\r\n this.setState({ qtdNow: v > 0 ? v : (this.props.productOnCart ? 0 : this.props.product.MinQtyPerSale) })\r\n }}\r\n style={{ borderWidth: 1, borderColor: Colors.lines, borderRadius: 5, height: 42, padding: 5 }}\r\n value={this.state.qtdNow}\r\n appendText={this.props.product.QtyName}\r\n min={this.props.product.MinQtyPerSale}\r\n step={this.props.product.QtyStep} />\r\n {/* BOTAO */}\r\n this.addToCartPress()}>\r\n {/* */}\r\n \r\n {outOfStock ? 'Esgotado' :\r\n this.props.productOnCart ?\r\n (this.state.qtdNow == 0 ? 'Remover' : 'Atualizar')\r\n : 'Adicionar'}\r\n \r\n {this.state.qtdNow > 0 &&\r\n \r\n {Helpers.FloatToReais(Number(new Big(this.props.product.Price).times(this.state.qtdNow)))}\r\n \r\n }\r\n \r\n \r\n\r\n {/* \r\n {this.props.product.Description}\r\n \r\n \r\n {this.props.product.Description}\r\n */}\r\n {/* {JSON.stringify(this.props.product)} */}\r\n \r\n }\r\n \r\n }\r\n}\r\n\r\nconst BgModalStyle = {\r\n position: 'absolute',\r\n zIndex: 999,\r\n margin: 0,\r\n backgroundColor: \"rgba(0,0,0,0.1)\",\r\n flex: 10,\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n top: 0,\r\n right: 0,\r\n left: 0,\r\n bottom: 0,\r\n};\r\nconst ModalStyle = {\r\n justifyContent: 'flex-start', alignItems: 'center',\r\n //minHeight: 250,\r\n //height: Helpers.percentH(46),\r\n height: null,\r\n //width: Helpers.percentW(85),\r\n maxHeight: Helpers.percentH(85),\r\n maxWidth: Helpers.Min(480, Helpers.percentW(100) - 15),\r\n borderRadius: 10,\r\n overflow: 'hidden',\r\n backgroundColor: '#fff'\r\n};\r\n\r\nconst ConnectedModalProduct = connect(\r\n (state, ownProps) => {\r\n let activeCartProducts = getCart(state.cart.carts, state.cart.activeCartId).products;\r\n var productOnCart = ownProps.product &&\r\n Object.keys(activeCartProducts).filter(x => x == ownProps.product.Id).length > 0 ?\r\n activeCartProducts[ownProps.product.Id] : null;\r\n return {\r\n activeCartId: state.cart.activeCartId,\r\n productOnCart\r\n }\r\n },\r\n null)(ModalProduct);\r\n\r\nexport default ConnectedModalProduct;\r\n\r\n// componente que wrappa o modal, recebe só o prodId nos props \r\n// (ele baixa na API e dps mostra o modal de produto)\r\nexport const ModalProductWithGet = (props) => {\r\n const [prod, setProd] = useState(null);\r\n useEffect(() => {\r\n if (props.prodId) Api.Products.getProducts(Number(props.prodId), props.storeId).then(x => {\r\n if (x && x.data && x.data.length > 0 && x.data[0].Id == props.prodId) {\r\n setProd(x.data[0]);\r\n }\r\n })\r\n else setProd(null);\r\n }, [props.prodId])\r\n return !prod && props.prodId ? // nao tem produto completo mas ja tem Id, então mostra o modal de loading\r\n \r\n : prod ? // ja tem produto completo, mostra modal\r\n props.onClosed()} />\r\n : null; // modal escondido\r\n}","import React from 'react';\r\nimport { ScrollView, StyleSheet, View, Text, Picker, TouchableOpacity } from 'react-native';\r\nimport AsyncStorage from '@react-native-async-storage/async-storage';\r\nimport { Button, Paragraph, Appbar, TouchableRipple, RadioButton, Portal, Dialog } from 'react-native-paper';\r\nimport Api from './../api/Api';\r\nimport { connect } from 'react-redux'\r\nimport { getCart, setProductToActiveCart, clearAllCarts, getCartFullTotal, getCartFullShippingTotal, isAnyShippingOurOfReach } from '../store/cartsReducer';\r\nimport MyAccordion from './../components/MyAccordion';\r\nimport MaterialIcons from 'react-native-vector-icons/MaterialIcons';\r\nimport MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons';\r\nimport Feather from 'react-native-vector-icons/Feather';\r\nimport Colors from '../constants/Colors';\r\nimport Cart, { ConnectedTotalsComponent } from '../components/Cart';\r\nimport CreditCardPaperInput from '../components/CreditCardPaperInput';\r\nimport CreditCardPaperView from '../components/CreditCardPaperView';\r\nimport MyTextInput from './../components/MyTextInput';\r\nimport { Masker } from './MyInputMask';\r\nimport ConfirmSaleDialog from './ConfirmSaleDialog';\r\nimport { CartCountBadge } from '../components/CartCountBadge';\r\nimport { Platform } from '@unimodules/core';\r\nimport { EnumOriginSale } from '../constants/Enums';\r\nimport { addCreditCard, removeCreditCard } from './../store/cardsReducer';\r\nimport DropdownXP from './DropdownXP';\r\nimport { Analytics, Event } from 'expo-analytics';\r\nimport moment from 'moment';\r\nimport 'moment/locale/pt';\r\nimport MyPanel from './MyPanel';\r\nimport GlobalStyles from '../constants/GlobalStyles';\r\nimport { ViewportRenderer, ViewportNames } from './ResponsiveView';\r\nimport Helpers from './../utils/Helpers';\r\nimport { ModalProductWithGet } from './ModalProduct';\r\nvar Big = require('big.js');\r\n\r\nclass Checkout extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n //deliveryMethod: 'Immediate',\r\n confirmSaleId: 0,\r\n customerLoaded: {},\r\n periodoEntrega: '1'\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.getLoadedCustomer();\r\n }\r\n\r\n getCC = () => {\r\n if (this.props.creditcards.length == 0)\r\n return this.ccComponent.getCard();\r\n else\r\n return this.props.creditcards[0];\r\n }\r\n\r\n tryMakeOrder = async () => {\r\n this.setState({ feedbackMsg: '' })\r\n\r\n if (this.props.cartCount == 0) {\r\n this.setState({ feedbackMsg: 'Ops! Parece que seu carrinho está vazio.' })\r\n return;\r\n }\r\n if (!this.props.customerUser || !this.props.customerUser.address) {\r\n this.setState({ feedbackMsg: 'Ops! Parece que seu endereço não foi preenchido.' })\r\n return;\r\n }\r\n // if (this.state.deliveryMethod == 'Scheduled') {\r\n // try {\r\n // console.log('will validate date:', this.state.dataEntrega);\r\n // console.log(moment(this.state.dataEntrega, 'DD/MM/YY', true).isValid());\r\n // if (!moment(this.state.dataEntrega, 'DD/MM/YY', true).isValid())\r\n // throw \"invalidDate\";\r\n // } catch {\r\n // this.setState({ feedbackMsg: 'Ops! Parece que a data da entrega está incorreta.' })\r\n // return;\r\n // }\r\n // }\r\n if (!this.props.activeCart || !this.props.activeCartShippingTotal) {\r\n this.setState({ feedbackMsg: 'Ops! Parece que seu endereço está fora da nossa área de atendimento.' })\r\n return;\r\n }\r\n if (!this.customerForm.isValid()) {\r\n this.setState({ feedbackMsg: 'Ops! Preencha seus dados de identificação (Nome,Email,CPF,Telefone).' })\r\n return;\r\n }\r\n var cc = this.getCC();\r\n console.log(cc);\r\n if (!cc || (!cc.hash && !this.ccComponent.validateCard())) {\r\n this.setState({ feedbackMsg: 'Ops! Verifique os dados do seu cartão de crédito.' })\r\n return;\r\n }\r\n\r\n\r\n var customer = this.customerForm.getData();\r\n var cartProducts = Helpers.ObjToArray(this.props.activeCart.products);//.map(x => { return { Id: x.Id, Quantity: x.Quantity, Price: x.Price } })\r\n\r\n var card = this.getCC();\r\n if (card.ExpirationDate) card.ExpirationDate = new Date((card.ExpirationDate.split('/')[1] * 1) + 2000, card.ExpirationDate.split('/')[0] - 1, 1);\r\n if (!card.SecurityCode) card.SecurityCode = card.cvv;\r\n\r\n var sale = {\r\n Guid: Helpers.NewGuid(),\r\n Origin: Platform.OS == 'web' ? EnumOriginSale.Site : EnumOriginSale.App,\r\n Customer: customer,\r\n Address: this.props.customerUser.address,\r\n Products: cartProducts,\r\n Card: card,\r\n // DeliveryMethod: this.state.deliveryMethod,\r\n // ScheduledDate: this.state.dataEntrega,\r\n // ScheduledPeriod: this.state.periodoEntrega,\r\n GiftSignature: this.state.cartinhaDe,\r\n GiftName: this.state.cartinhaPara,\r\n GiftMsg: this.state.msgCartinha,\r\n ShippingInfo: this.CartRef.getShippingInfo()\r\n }\r\n //debugger;\r\n // save customer offline\r\n await AsyncStorage.setItem('customer', JSON.stringify(customer));\r\n if (this.CheckingOut === true) return;\r\n this.CheckingOut = true;\r\n this.setState({ loadingPayment: true });\r\n Api.Analytics.event(new Event(\"Checkout\", 'TentouFecharVenda'));\r\n console.log('checking out', sale);\r\n Api.CheckoutMarketPlace(sale, card).then(x => {\r\n //console.log('VOLTOU! SHOW!', x);\r\n this.CheckingOut = false;\r\n if (x.data.success) // venda concluida\r\n {\r\n Api.Analytics.event(new Event(\"Checkout\", 'ConcluiuComSucesso'));\r\n // salva cartao?\r\n if (x.data.cardHash && cc.CardRemember) {\r\n this.props.dispatch(addCreditCard({\r\n id: 1,\r\n hash: x.data.cardHash,\r\n number: Helpers.MaskCreditCard(Helpers.NumbersFromString(cc.Number)),\r\n holderName: cc.HolderName,\r\n exp: cc.ExpirationDate,\r\n cvv: cc.SecurityCode,\r\n flag: cc.Flag\r\n }))\r\n }\r\n this.setState({ loadingPayment: false, feedbackMsg: '', confirmModalOpened: true, confirmSaleId: x.data.saleId });\r\n }\r\n else // nao concluiu:\r\n {\r\n Api.Analytics.event(new Event(\"Checkout\", 'Falhou'));\r\n this.setState({ loadingPayment: false, feedbackMsg: x.data.Msg });\r\n if (x.data.products) {\r\n cartProducts.map(lProd => {\r\n var srvProd = x.data.products.filter(f => f.Id == lProd.Id)[0];\r\n if (lProd.Quantity != srvProd.Quantity) {\r\n lProd.Quantity = Number(new Big(srvProd.Quantity));\r\n this.props.dispatch(setProductToActiveCart(lProd));\r\n }\r\n });\r\n }\r\n }\r\n }).catch(e => {\r\n this.CheckingOut = false;\r\n console.log('ERRO!', e)\r\n this.setState({ loadingPayment: false, feedbackMsg: 'Ops, ocorreu um erro! Verifique seus dados e tente novamente por favor.' });\r\n });\r\n\r\n //console.log('will checkout!', sale)\r\n }\r\n\r\n getLoadedCustomer = async () => {\r\n try {\r\n //debugger\r\n const value = await AsyncStorage.getItem('customer');\r\n console.log('getLoadedCustomer', value);\r\n if (value !== null) {\r\n this.setState({ customerLoaded: JSON.parse(value) });\r\n }\r\n } catch (e) {\r\n }\r\n }\r\n\r\n removeCard = (id) => {\r\n this.setState({ showRemoveCardDialog: true, cardIdToRemove: id });\r\n }\r\n reallyRemoveCard = () => {\r\n this.props.dispatch(removeCreditCard(this.state.cardIdToRemove));\r\n }\r\n\r\n render() {\r\n var feedbackMsg = this.state.feedbackMsg;\r\n if (!this.state.feedbackMsg && (!this.props.customerUser.address || !this.props.customerUser.address.nomeRua) && this.props.cartCount > 0) {\r\n feedbackMsg = \"Faltou informar o\" + '\\n' + \"endereço de entrega!\";\r\n } else if (!this.state.feedbackMsg && this.props.isAnyShippingOurOfReach === true) {\r\n feedbackMsg = \"Ops, parece que seu endereço está fora da área de entrega. Por favor, reveja seu carrinho acima.\"\r\n }\r\n var customerLoaded = this.state.customerLoaded;\r\n\r\n\r\n //console.log('....render:', customerLoaded)\r\n return (\r\n \r\n {/* HEADER CARRINHO */}\r\n this.props.onClosed()}>\r\n \r\n \r\n {/* */}\r\n \r\n Checkout\r\n \r\n \r\n \r\n {/* */}\r\n \r\n \r\n\r\n {this.state.openedProduct &&\r\n { this.setState({ openedProduct: null }) }}\r\n />\r\n }\r\n \r\n {\r\n let myColumnStyle = {\r\n flex: 1,\r\n marginHorizontal: 15,\r\n padding: 10,\r\n paddingTop: 0,\r\n maxWidth: Helpers.Max(640, Helpers.percentW(49))\r\n }\r\n let isMobile = viewport == ViewportNames.mobile;\r\n let myContentMaxWidth = 1280\r\n let hasProductsAndAdress = this.props.cartCount > 0 && this.props.customerUser.address;\r\n return (\r\n \r\n \r\n this.CartRef = r} onOpenProduct={(prod) => this.setState({ openedProduct: prod })} />\r\n {/* \r\n */}\r\n \r\n {/* COLUNA 2 NO DESKTOP ou RESTO DO CARRINHO NO MOBILE */}\r\n {this.props.cartCount > 0 &&\r\n \r\n\r\n {/* DADOS DO CLIENTE */}\r\n this.customerForm = r} customer={customerLoaded} />\r\n\r\n {/* CARTINHA */}\r\n {/* }\r\n borderColor={Colors.lines} title={'Cartinha (opcional)'} color={Colors.themeColor}>\r\n \r\n this.setState({ cartinhaDe: t })} />\r\n this.setState({ cartinhaPara: t })} />\r\n \r\n this.setState({ msgCartinha: t })} multiline={true} />\r\n */}\r\n\r\n {/* CARTAO DE CREDITO INPUT */}\r\n }\r\n borderColor={Colors.lines} title={'Cartão de crédito'} color={Colors.themeColor}>\r\n (\r\n this.props.creditcards.length == 0 ?\r\n this.ccComponent = r}\r\n slim={false} hideCpf={false}\r\n style={{ backgroundColor: '#fff', padding: 0, borderRadius: 0, flex: 1 }}\r\n />\r\n :\r\n this.removeCard(this.props.creditcards[0].id)}\r\n cardNumber={this.props.creditcards[0].number}\r\n cardHolder={this.props.creditcards[0].holderName}\r\n cardExp={this.props.creditcards[0].exp}\r\n cardFlag={this.props.creditcards[0].flag}\r\n />\r\n )} />\r\n \r\n\r\n \r\n\r\n {/* BOTAO FINAL E MSGS DE FEEDBACK */}\r\n \r\n {feedbackMsg ?\r\n {feedbackMsg}\r\n : null}\r\n \r\n\r\n {/* CADEADO */}\r\n \r\n \r\n Pagamento seguro\r\n \r\n \r\n \r\n Cybercash.com.br\r\n \r\n \r\n \r\n \r\n }\r\n \r\n );\r\n }} />\r\n \r\n\r\n {/* DIALOG DE CONFIRMACAO */}\r\n {\r\n if (saleConfirmed) {\r\n this.props.dispatch(clearAllCarts());\r\n this.setState({ GiftSignature: '', GiftName: '', GiftMsg: '' });\r\n }\r\n this.setState({ confirmSaleId: null, confirmModalOpened: false });\r\n if (this.props.onClosed) this.props.onClosed();\r\n }}\r\n opened={this.state.confirmModalOpened} saleId={this.state.confirmSaleId}\r\n forcedShippingInfoForReview={this.state.confirmModalOpened && this.CartRef ? this.CartRef.getShippingInfo() : {}} />\r\n \r\n {/* CONFIRM REMOVE CARD MODAL */}\r\n this.setState({ showRemoveCardDialog: false })}>\r\n Remover cartão\r\n \r\n \r\n Deseja apagar este cartão de crédito?\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default connect(\r\n (state) => ({\r\n cartCount: getCart(state.cart.carts, state.cart.activeCartId).qtd,\r\n customerUser: state.customerUser,\r\n creditcards: state.creditcards,\r\n activeCartTotal: getCartFullTotal(getCart(state.cart.carts, state.cart.activeCartId)) || 0,\r\n isAnyShippingOurOfReach: isAnyShippingOurOfReach(getCart(state.cart.carts, state.cart.activeCartId)) || false,\r\n activeCartShippingTotal: getCartFullShippingTotal(getCart(state.cart.carts, state.cart.activeCartId)) || 0,\r\n activeCart: getCart(state.cart.carts, state.cart.activeCartId),\r\n }),\r\n null)(Checkout)\r\n\r\n\r\n// class _CartCountBadge extends React.Component {\r\n// render() {\r\n// return \r\n// {this.props.cartCount}\r\n// \r\n// }\r\n// }\r\n// const CartCountBadge = connect(\r\n// (state) => ({\r\n// cartCount: getCart(state.cart.carts, state.cart.activeCartId).qtd,\r\n// }),\r\n// null)(_CartCountBadge);\r\n\r\n\r\nclass CustomerForm extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n Name: props.customer ? props.customer.Name : '',\r\n Telephone: props.customer ? props.customer.Telephone : '',\r\n Document: props.customer ? props.customer.Document : '',\r\n Email: props.customer ? props.customer.Email : ''\r\n }\r\n }\r\n componentWillReceiveProps(nextProps) {\r\n if (nextProps.customer) {\r\n this.setState({\r\n Name: nextProps.customer.Name && !this.state.Name ? nextProps.customer.Name : this.state.Name,\r\n Telephone: nextProps.customer.Telephone && !this.state.Telephone ? nextProps.customer.Telephone : this.state.Telephone,\r\n Document: nextProps.customer.Document && !this.state.Document ? nextProps.customer.Document : this.state.Document,\r\n Email: nextProps.customer.Email && !this.state.Email ? nextProps.customer.Email : this.state.Email\r\n })\r\n }\r\n }\r\n getData = () => {\r\n return this.state;\r\n }\r\n isValid = () => this.state.Name && this.state.Telephone && this.state.Document && this.state.Email;\r\n render() {\r\n return }\r\n borderColor={Colors.lines} title={'Identificação do comprador'} color={Colors.darkText}>\r\n \r\n this.setState({ Name: t })} />\r\n this.setState({ Telephone: t })} />\r\n \r\n \r\n this.setState({ Email: t })} />\r\n this.setState({ Document: Masker.toPattern(t, '999.999.999-99') })} />\r\n \r\n \r\n }\r\n}","var DIGIT = \"9\",\r\n ALPHA = \"A\",\r\n ALPHANUM = \"S\",\r\n BY_PASS_KEYS = [9, 16, 17, 18, 36, 37, 38, 39, 40, 91, 92, 93],\r\n isAllowedKeyCode = function (keyCode) {\r\n for (var i = 0, len = BY_PASS_KEYS.length; i < len; i++) {\r\n if (keyCode == BY_PASS_KEYS[i]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n },\r\n mergeMoneyOptions = function (opts) {\r\n opts = opts || {};\r\n opts = {\r\n precision: opts.hasOwnProperty(\"precision\") ? opts.precision : 2,\r\n separator: opts.separator || \",\",\r\n delimiter: opts.delimiter || \".\",\r\n unit: opts.unit && (opts.unit.replace(/[\\s]/g, '') + \" \") || \"\",\r\n suffixUnit: opts.suffixUnit && (\" \" + opts.suffixUnit.replace(/[\\s]/g, '')) || \"\",\r\n zeroCents: opts.zeroCents,\r\n lastOutput: opts.lastOutput\r\n };\r\n opts.moneyPrecision = opts.zeroCents ? 0 : opts.precision;\r\n return opts;\r\n },\r\n // Fill wildcards past index in output with placeholder\r\n addPlaceholdersToOutput = function (output, index, placeholder) {\r\n for (; index < output.length; index++) {\r\n if (output[index] === DIGIT || output[index] === ALPHA || output[index] === ALPHANUM) {\r\n output[index] = placeholder;\r\n }\r\n }\r\n return output;\r\n }\r\n ;\r\n\r\nvar VanillaMasker = function (elements) {\r\n this.elements = elements;\r\n};\r\n\r\nVanillaMasker.prototype.unbindElementToMask = function () {\r\n for (var i = 0, len = this.elements.length; i < len; i++) {\r\n this.elements[i].lastOutput = \"\";\r\n this.elements[i].onkeyup = false;\r\n this.elements[i].onkeydown = false;\r\n\r\n if (this.elements[i].value.length) {\r\n this.elements[i].value = this.elements[i].value.replace(/\\D/g, '');\r\n }\r\n }\r\n};\r\n\r\nVanillaMasker.prototype.bindElementToMask = function (maskFunction) {\r\n var that = this,\r\n onType = function (e) {\r\n e = e || window.event;\r\n var source = e.target || e.srcElement;\r\n\r\n if (isAllowedKeyCode(e.keyCode)) {\r\n setTimeout(function () {\r\n that.opts.lastOutput = source.lastOutput;\r\n source.value = VMasker[maskFunction](source.value, that.opts);\r\n source.lastOutput = source.value;\r\n if (source.setSelectionRange && that.opts.suffixUnit) {\r\n source.setSelectionRange(source.value.length, (source.value.length - that.opts.suffixUnit.length));\r\n }\r\n }, 0);\r\n }\r\n }\r\n ;\r\n for (var i = 0, len = this.elements.length; i < len; i++) {\r\n this.elements[i].lastOutput = \"\";\r\n this.elements[i].onkeyup = onType;\r\n if (this.elements[i].value.length) {\r\n this.elements[i].value = VMasker[maskFunction](this.elements[i].value, this.opts);\r\n }\r\n }\r\n};\r\n\r\nVanillaMasker.prototype.maskMoney = function (opts) {\r\n this.opts = mergeMoneyOptions(opts);\r\n this.bindElementToMask(\"toMoney\");\r\n};\r\n\r\nVanillaMasker.prototype.maskNumber = function () {\r\n this.opts = {};\r\n this.bindElementToMask(\"toNumber\");\r\n};\r\n\r\nVanillaMasker.prototype.maskAlphaNum = function () {\r\n this.opts = {};\r\n this.bindElementToMask(\"toAlphaNumeric\");\r\n};\r\n\r\nVanillaMasker.prototype.maskPattern = function (pattern) {\r\n this.opts = { pattern: pattern };\r\n this.bindElementToMask(\"toPattern\");\r\n};\r\n\r\nVanillaMasker.prototype.unMask = function () {\r\n this.unbindElementToMask();\r\n};\r\n\r\nvar VMasker = function (el) {\r\n if (!el) {\r\n throw new Error(\"VanillaMasker: There is no element to bind.\");\r\n }\r\n var elements = (\"length\" in el) ? (el.length ? el : []) : [el];\r\n return new VanillaMasker(elements);\r\n};\r\n\r\nVMasker.toMoney = function (value, opts) {\r\n opts = mergeMoneyOptions(opts);\r\n if (opts.zeroCents) {\r\n opts.lastOutput = opts.lastOutput || \"\";\r\n var zeroMatcher = (\"(\" + opts.separator + \"[0]{0,\" + opts.precision + \"})\"),\r\n zeroRegExp = new RegExp(zeroMatcher, \"g\"),\r\n digitsLength = value.toString().replace(/[\\D]/g, \"\").length || 0,\r\n lastDigitLength = opts.lastOutput.toString().replace(/[\\D]/g, \"\").length || 0\r\n ;\r\n value = value.toString().replace(zeroRegExp, \"\");\r\n if (digitsLength < lastDigitLength) {\r\n value = value.slice(0, value.length - 1);\r\n }\r\n }\r\n var number = value.toString().replace(/[\\D]/g, \"\"),\r\n clearDelimiter = new RegExp(\"^(0|\\\\\" + opts.delimiter + \")\"),\r\n clearSeparator = new RegExp(\"(\\\\\" + opts.separator + \")$\"),\r\n money = number.substr(0, number.length - opts.moneyPrecision),\r\n masked = money.substr(0, money.length % 3),\r\n cents = new Array(opts.precision + 1).join(\"0\")\r\n ;\r\n money = money.substr(money.length % 3, money.length);\r\n for (var i = 0, len = money.length; i < len; i++) {\r\n if (i % 3 === 0) {\r\n masked += opts.delimiter;\r\n }\r\n masked += money[i];\r\n }\r\n masked = masked.replace(clearDelimiter, \"\");\r\n masked = masked.length ? masked : \"0\";\r\n if (!opts.zeroCents) {\r\n var beginCents = number.length - opts.precision,\r\n centsValue = number.substr(beginCents, opts.precision),\r\n centsLength = centsValue.length,\r\n centsSliced = (opts.precision > centsLength) ? opts.precision : centsLength\r\n ;\r\n cents = (cents + centsValue).slice(-centsSliced);\r\n }\r\n var output = opts.unit + masked + opts.separator + cents + opts.suffixUnit;\r\n return output.replace(clearSeparator, \"\");\r\n};\r\n\r\nVMasker.toPattern = function (value, opts) {\r\n var pattern = (typeof opts === 'object' ? opts.pattern : opts),\r\n patternChars = pattern.replace(/\\W/g, ''),\r\n output = pattern.split(\"\"),\r\n values = value.toString().replace(/\\W/g, \"\"),\r\n charsValues = values.replace(/\\W/g, ''),\r\n index = 0,\r\n i,\r\n outputLength = output.length,\r\n placeholder = (typeof opts === 'object' ? opts.placeholder : undefined)\r\n ;\r\n\r\n for (i = 0; i < outputLength; i++) {\r\n // Reached the end of input\r\n if (index >= values.length) {\r\n if (patternChars.length == charsValues.length) {\r\n return output.join(\"\");\r\n }\r\n else if ((placeholder !== undefined) && (patternChars.length > charsValues.length)) {\r\n return addPlaceholdersToOutput(output, i, placeholder).join(\"\");\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n // Remaining chars in input\r\n else {\r\n if ((output[i] === DIGIT && values[index].match(/[0-9]/)) ||\r\n (output[i] === ALPHA && values[index].match(/[a-zA-Z]/)) ||\r\n (output[i] === ALPHANUM && values[index].match(/[0-9a-zA-Z]/))) {\r\n output[i] = values[index++];\r\n } else if (output[i] === DIGIT || output[i] === ALPHA || output[i] === ALPHANUM) {\r\n if (placeholder !== undefined) {\r\n return addPlaceholdersToOutput(output, i, placeholder).join(\"\");\r\n }\r\n else {\r\n return output.slice(0, i).join(\"\");\r\n }\r\n }\r\n }\r\n }\r\n return output.join(\"\").substr(0, i);\r\n};\r\n\r\nVMasker.toNumber = function (value) {\r\n return value.toString().replace(/(?!^-)[^0-9]/g, \"\");\r\n};\r\n\r\nVMasker.toAlphaNumeric = function (value) {\r\n return value.toString().replace(/[^a-z0-9 ]+/i, \"\");\r\n};\r\n\r\n\r\nexport default VMasker;","import React from 'react';\r\nimport { Text, View, Image, TouchableOpacity } from 'react-native';\r\nimport Api from './../api/Api';\r\nimport Helpers from '../utils/Helpers';\r\nimport { addToCart } from '../store/cartsReducer';\r\nimport MaterialIcons from 'react-native-vector-icons/MaterialIcons';\r\nimport Feather from 'react-native-vector-icons/Feather';\r\nimport Colors from '../constants/Colors';\r\nimport { Event } from 'expo-analytics';\r\nimport store from '../store/store';\r\nimport { connect } from 'react-redux';\r\nimport { getCart, setProductToActiveCart, clearAllCarts } from '../store/cartsReducer';\r\nimport Checkout from './Checkout';\r\nimport GlobalStyles from '../constants/GlobalStyles';\r\nimport { GetHistoryHack } from '../App';\r\n\r\nclass CheckoutStrip extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n }\r\n render() {\r\n var hist = GetHistoryHack();\r\n var carOpened = this.props.route.indexOf('/cart') != -1\r\n return <>\r\n {this.props.cartCount > 0 && !carOpened &&\r\n {\r\n hist.push(hist.location.pathname + '/cart');\r\n }}\r\n style={{\r\n zIndex: 3, borderTopLeftRadius: 5, borderTopRightRadius: 5,\r\n maxWidth: Helpers.percentW(100), width: 420, alignSelf: 'center',\r\n backgroundColor: Colors.themeColor, height: 44, position: 'fixed', bottom: 0,\r\n flexDirection: 'row', paddingHorizontal: 10, alignItems: 'center', justifyContent: 'space-between'\r\n }}>\r\n \r\n \r\n \r\n {this.props.cartCount}\r\n \r\n \r\n \r\n Ver carrinho\r\n \r\n \r\n {Helpers.FloatToReais(\r\n this.props.cartSum // somente preco dos produtos\r\n // + (this.props.cartShipping || 0))}\r\n )}\r\n \r\n \r\n }\r\n \r\n }\r\n}\r\n\r\nexport default connect(\r\n (state) => ({\r\n cartCount: getCart(state.cart.carts, state.cart.activeCartId).qtd,\r\n cartSum: getCart(state.cart.carts, state.cart.activeCartId).sum,\r\n route: state.route.route\r\n //cartShipping: getCart(state.cart.carts, state.cart.activeCartId).shipping\r\n }),\r\n null)(CheckoutStrip)\r\n\r\n// MINI CART BUTTON\r\n\r\nclass _CartButton extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n checkoutOpened: false\r\n }\r\n }\r\n render() {\r\n return <>\r\n {this.props.cartCount > 0 && !this.state.checkoutOpened &&\r\n { \r\n //this.setState({ checkoutOpened: true })\r\n //debugger;\r\n var hist = GetHistoryHack();\r\n hist.push(hist.location.pathname + '/cart');\r\n }}\r\n style={{\r\n zIndex: 3, borderRadius: 5, alignSelf: 'center',\r\n backgroundColor: Colors.themeColor, height: 38, minWidth: this.props.cartSum >= 100 ? 118 : 80,\r\n flexDirection: 'row', paddingHorizontal: 10, alignItems: 'center', justifyContent: 'space-between',\r\n ...this.props.style\r\n }}>\r\n \r\n \r\n \r\n {this.props.cartCount}\r\n \r\n \r\n \r\n {Helpers.FloatToReais(\r\n this.props.cartSum // somente preco dos produtos\r\n // + (this.props.cartShipping || 0))}\r\n )}\r\n \r\n \r\n }\r\n {/* this.setState({ checkoutOpened: false })} /> */}\r\n \r\n }\r\n}\r\nexport const CartButton = connect(\r\n (state) => ({\r\n cartCount: getCart(state.cart.carts, state.cart.activeCartId).qtd,\r\n cartSum: getCart(state.cart.carts, state.cart.activeCartId).sum,\r\n //cartShipping: getCart(state.cart.carts, state.cart.activeCartId).shipping\r\n }),\r\n null)(_CartButton)\r\n\r\n","import React, { Component } from 'react';\r\nimport { View, Text, TextInput } from 'react-native';\r\nimport Colors from '../constants/Colors';\r\nimport GlobalStyles from '../constants/GlobalStyles';\r\nimport Helpers from '../utils/Helpers';\r\nimport MaterialIcons from 'react-native-vector-icons/MaterialIcons';\r\nexport default class MyTextInput extends React.Component {\r\n constructor(props){\r\n super(props);\r\n this.state = { \r\n searchText: ''\r\n }\r\n }\r\n\r\n onChangeTextDelayed = () => {\r\n if (this.timeOut > 0) clearTimeout(this.timeOut);\r\n this.timeOut = setTimeout(() => {\r\n this.props.onChangeText(this.state.searchText);\r\n }, this.props.delay || 250);\r\n }\r\n\r\n render() {\r\n return \r\n {\r\n this.setState({\r\n searchText: query,\r\n }, this.onChangeTextDelayed);\r\n }} placeholder=\"Busque seu chocolate...\"\r\n value={this.state.searchText} />\r\n \r\n \r\n }\r\n}","import React from 'react';\r\nimport { Platform, ScrollView, Text, View, Image, TouchableOpacity, TextInput as RNTextInput } from 'react-native';\r\nimport { Button, Searchbar, TextInput, Appbar, TouchableRipple, ActivityIndicator } from 'react-native-paper';\r\nimport ResponsiveColumns, { FloatingColumn } from './../components/ResponsiveColumns';\r\nimport Api from './../api/Api';\r\nimport { connect } from 'react-redux'\r\nimport Helpers from '../utils/Helpers';\r\nimport Product from './../components/Product';\r\nimport Checkout from './../components/Checkout';\r\nimport { addToCart } from '../store/cartsReducer';\r\nimport MyAccordion from './../components/MyAccordion';\r\nimport FontAwesome from 'react-native-vector-icons/FontAwesome';\r\nimport MaterialIcons from 'react-native-vector-icons/MaterialIcons';\r\nimport MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons';\r\nimport Colors from '../constants/Colors';\r\nimport { TabletView, MobileView, DesktopView } from '../components/ResponsiveView';\r\nimport VMasker from './../utils/VanillaMasker';\r\nimport LinkXP from '../utils/LinkXP';\r\nimport { Event } from 'expo-analytics';\r\nimport { CartCountBadge } from '../components/CartCountBadge';\r\nimport DropdownXP from './../components/DropdownXP';\r\nimport Carousel from 'react-native-snap-carousel';\r\nimport Modal from 'react-native-modalbox';\r\nimport MyPanel from '../components/MyPanel';\r\nimport ModalProduct from '../components/ModalProduct';\r\nimport CheckoutStrip from '../components/CheckoutStrip';\r\nimport GlobalStyles from '../constants/GlobalStyles';\r\nimport MySearchInput from '../components/MySearchInput';\r\nimport { Video } from 'expo-av';\r\n\r\nconst defaultShowingProds = 40;\r\nclass Products extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n var categories = null;\r\n if (props.catalog && props.catalog.products)\r\n categories = this.prepareCatalog(props.catalog.products);\r\n this.state = {\r\n categoriesShown: false,\r\n categories: categories,\r\n selectedCategory: categories && categories[0] || null,\r\n searchText: '',\r\n showOnlinePrice: true,\r\n showingProds: defaultShowingProds,\r\n orderBy: '-Priority',\r\n brands: [],\r\n selectedBrand: '0',\r\n loadingProducts: !categories || categories.length < 2,\r\n banners: [],\r\n products: [],\r\n storeId: 0\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n let preventProdsLoad = false;\r\n //console.log('fetch products from PDV.js')\r\n Api.GetBanners().then(data => {\r\n console.log('fetch Banners: ', data);\r\n this.setState({ banners: data.data }, () => {\r\n // set first banner timeout \r\n if (data && data.data && data.data[0] && data.data[0].length)\r\n this._tOut = setTimeout(() => this._carousel && this._carousel.snapToNext(), data.data[0].length);\r\n });\r\n\r\n // autoplay videos on ios\r\n if (Platform.OS == 'web') {\r\n setTimeout(function () {\r\n try {\r\n var vids = document.getElementsByTagName('video');\r\n for (let i = 0; i < vids.length; i++) {\r\n const vid = vids[i];\r\n vid.muted = true;\r\n vid.playsInline = true;\r\n }\r\n } catch (e) { }\r\n }, 1);\r\n }\r\n }).catch(e => {\r\n this.setState({ banners: null });\r\n });\r\n\r\n // URL detection! Hackermode! kkkkk\r\n if (Platform.OS == 'web') {\r\n //\r\n // macete pra abrir modal de produto:\r\n if (window.location && window.location.hash && window.location.hash.toLowerCase().indexOf('id=') > -1) {\r\n var prodId = window.location.hash.toLowerCase().split('id=')[1].split('&')[0];\r\n // pega prod na Api e abre modal\r\n Api.Products.getProducts(Number(prodId)).then(x => {\r\n if (x && x.data && x.data.length > 0 && x.data[0].Id == prodId) {\r\n this.setState({ modalProductOpened: x.data[0] });\r\n }\r\n })\r\n }\r\n //\r\n // filtro de loja:\r\n if (window.location && window.location.hash && window.location.hash.toLowerCase().indexOf('storeid=') > -1) {\r\n var storeId = window.location.hash.toLowerCase().split('storeid=')[1].split('&')[0];\r\n this.setState({ storeId: Number(storeId) }, this.getProducts);\r\n preventProdsLoad = true;\r\n }\r\n }\r\n\r\n // GET PRODS FROM API!\r\n if (!preventProdsLoad)\r\n this.getProducts(true);\r\n }\r\n\r\n replayAllVidsHack = () => {\r\n if (Platform.OS == 'web') {\r\n try {\r\n var vids = document.getElementsByTagName('video');\r\n for (let i = 0; i < vids.length; i++) {\r\n const vid = vids[i];\r\n vid.currentTime = 0;\r\n vid.play();\r\n }\r\n } catch (e) { }\r\n }\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n if (nextProps.catalog && nextProps.catalog.products)\r\n this.setState({ categories: this.prepareCatalog(nextProps.catalog.products), loadingProducts: false },\r\n () => {\r\n //if (!this.state.selectedCategory)\r\n this.setState({ selectedCategory: this.state.categories[0] });\r\n })\r\n }\r\n\r\n getProducts = (clear = true) => {\r\n var pageSize = 50;\r\n if (clear) this.lastProductIndex = 0;\r\n this.setState({ loadingProducts: true })\r\n Api.Products.getProducts(0, this.state.storeId, 0, \"\", this.state.searchText, this.state.orderBy, this.lastProductIndex, pageSize).then(x => {\r\n this.lastProductIndex += x.data.length;\r\n this.setState({\r\n loadingProducts: false,\r\n hasMoreProdsToLoad: x.data.length == 50, // se voltar menos de 50 eh pq acabou a paginacao\r\n products: clear ? x.data : [...this.state.products, ...x.data]\r\n })\r\n }).catch(e => {\r\n\r\n });\r\n }\r\n\r\n prepareCatalog = (products) => {\r\n var cats = [\r\n {\r\n Id: 0, Name: 'Todos', Products: products\r\n // Products: categories.reduce((prev, curr, idx) => {\r\n // return prev.concat(curr.Products);\r\n // }, [])\r\n }\r\n ];\r\n\r\n //divide categories:\r\n if (products && Helpers.Any(products, 'Category')) {\r\n var generatedCategories = Helpers.GroupBy(products, 'Category');\r\n var auxArr = Helpers.ObjToArray(generatedCategories);\r\n var auxCats = auxArr.map(x => ({ Id: x[0].CategoryId, Name: x[0].Category, Products: x.sort((a, b) => a.Order < b.Order) }));\r\n cats = cats.concat(auxCats.sort((a, b) => a.CategoryOrder < b.CategoryOrder));\r\n }\r\n\r\n //divide tags:\r\n if (products && Helpers.Any(products, 'Tags')) {\r\n var objTags = {};\r\n products.map(x => x.Tags && x.Tags.map(t => { t = '#' + t; objTags[t] = objTags[t] || []; objTags[t].push(x) }))\r\n var auxArr = Object.keys(objTags).map(x => ({ Id: x, Name: x, Products: objTags[x].sort((a, b) => a.Order < b.Order) }))\r\n cats = cats.concat(auxArr.sort((a, b) => {\r\n var aName = a.Name.replace('#', '').toLowerCase();\r\n var bName = b.Name.replace('#', '').toLowerCase();\r\n return aName < bName ? -1 : aName > bName ? 1 : 0;\r\n }));\r\n }\r\n\r\n // process brands\r\n var brands = Helpers.Distinct(products.filter(z => z.Brand).map(z => z.Brand));\r\n this.setState({ brands: brands.sort((a, b) => a < b ? -1 : a > b ? 1 : 0) });\r\n console.log('brands::', brands);\r\n //console.log('RETURNING CATEGORIESSS =>>> ', cats)\r\n\r\n // MACETE! ABRIR MODAL DE PRODUTO SE TIVER NA URL\r\n if (Platform.OS === 'web') {\r\n if (window.location && window.location.hash && window.location.hash.toLowerCase().indexOf('id=') > -1) {\r\n // se tiver o produto no catalog retorna ele daqui a pouco\r\n if (products.filter(p => p.Id == window.location.hash.toLowerCase().split('id=')[1]).length > 0) {\r\n setTimeout(() => {\r\n var prod = products.filter(p => p.Id == window.location.hash.toLowerCase().split('id=')[1])[0];\r\n this.setState({ modalProductOpened: prod });\r\n }, 150);\r\n }\r\n }\r\n }\r\n\r\n return cats;\r\n }\r\n\r\n filteredProducts = (prods) => {\r\n prods = prods.filter(p => /*!(p.QtyInStock <= 0 && p.TrackStock) &&*/(this.state.showOnlinePrice ? p.SellingOnline : p.SellingOnStore));\r\n if (this.state.searchText) {\r\n var tx = Helpers.NormalizeString(this.state.searchText.toLowerCase());\r\n prods = prods.filter(p => {\r\n return Helpers.NormalizeString(p.Name.toLowerCase()).indexOf(tx) > -1 // name search\r\n || // price search\r\n (p.Price.toFixed(2).toString().indexOf(tx.replace(',', '.')) > -1)\r\n || // sku search\r\n (p.SKU && p.SKU.toString().toLowerCase().indexOf(tx) > -1)\r\n || // tags search\r\n (p.Tags && p.Tags.filter(x => Helpers.NormalizeString('#' + x.toLowerCase()).indexOf(tx) > -1).length > 0)\r\n })\r\n }\r\n\r\n // price filter\r\n if (this.state.fromPrice && !isNaN(Helpers.NumbersFromString(this.state.fromPrice))) {\r\n var fromPrice = Helpers.NumbersFromString(this.state.fromPrice) / 100;\r\n prods = prods.filter(p => p.Price >= fromPrice);\r\n }\r\n if (this.state.toPrice && !isNaN(Helpers.NumbersFromString(this.state.toPrice))) {\r\n var toPrice = Helpers.NumbersFromString(this.state.toPrice) / 100;\r\n prods = prods.filter(p => p.Price <= toPrice);\r\n }\r\n\r\n // brands filter\r\n if (this.state.selectedBrand && this.state.selectedBrand != '0') {\r\n prods = prods.filter(p => p.Brand == this.state.selectedBrand);\r\n }\r\n\r\n return prods;\r\n }\r\n\r\n orderedProducts = (prods) => {\r\n var desc = this.state.orderBy.indexOf('-') == 0;\r\n var key = this.state.orderBy.replace('-', '');\r\n var ordered = Helpers.OrderBy(prods, key, desc);\r\n var orderedInStock = ordered.filter(x => x.QtyInStock > 0);\r\n var orderedOutOfStock = ordered.filter(x => x.QtyInStock <= 0);\r\n // if (key === 'TempSellsCount') { // maceta ordem inicial\r\n // orderedInStock = Helpers.OrderBy(orderedInStock, 'Priority', true);\r\n // orderedOutOfStock = Helpers.OrderBy(orderedOutOfStock, 'Priority', true);\r\n // }\r\n var ret = orderedInStock.concat(orderedOutOfStock);\r\n return ret;\r\n }\r\n\r\n renderAllProds = () => {\r\n return this.state.products.map(p => {\r\n console.log(p)\r\n if (Platform.OS === 'web') window.location.hash = '#id=' + p.Id;\r\n return this.setState({ modalProductOpened: p });\r\n }} />)\r\n }\r\n\r\n renderProds = (selectedCategory) => {\r\n var prods = selectedCategory.Products;\r\n // filtering and ordering:\r\n prods = this.filteredProducts(prods);\r\n prods = this.orderedProducts(prods);\r\n\r\n // styles\r\n var defaultStyles = {\r\n display: 'flex', flex: 1, flexDirection: 'row', flexWrap: 'wrap',\r\n justifyContent: 'flex-start', alignItems: 'flex-start', alignContent: 'flex-start', placeContent: 'center'\r\n };\r\n\r\n var totallen = prods.length;\r\n prods = prods.filter((x, i) => i <= this.state.showingProds);\r\n var len = prods.length;\r\n\r\n prods = prods.map(x => { return { ...x, Price: this.state.showOnlinePrice ? x.PriceOnline : x.Price, SiteSale: this.state.showOnlinePrice } });\r\n if (!prods || prods.length == 0) return null;\r\n return [...(prods.map(p => {\r\n console.log(p)\r\n if (Platform.OS === 'web') window.location.hash = '#id=' + p.Id;\r\n return this.setState({ modalProductOpened: p });\r\n if (p.QtyInStock <= 0 && prod.TrackStock) {\r\n\r\n } else {\r\n Api.Analytics.event(new Event(\"AddToCart\", p.Id));\r\n this.props.dispatch(addToCart(p, this.props.activeCartId))\r\n }\r\n }} />))\r\n ,\r\n len < totallen ?\r\n \r\n this.setState({ showingProds: this.state.showingProds + 40 })}>\r\n \r\n \r\n \r\n 🍫😍\r\n \r\n \r\n Mostrar mais produtos\r\n \r\n \r\n \r\n \r\n : null];\r\n\r\n return (\r\n \r\n {prods.map(p => this.props.dispatch(addToCart(p, this.props.activeCartId))} />)}\r\n {len < totallen ?\r\n \r\n \r\n \r\n : null}\r\n );\r\n }\r\n\r\n renderCategoriesList = () => {\r\n if (!this.props.catalog) return;\r\n return this.state.categories.map(c => (\r\n { this.setState({ selectedCategory: c }) }}>\r\n {c.Name}\r\n ));\r\n }\r\n\r\n renderSideMenu = () => {\r\n var btnStyle = { ...GlobalStyles.textBase, display: 'flex', alignItems: 'center', fontSize: 15, paddingHorizontal: 8, paddingVertical: 10, color: Colors.themeColor };\r\n if (Platform.OS != 'web') { btnStyle.fontSize = 15; btnStyle.paddingHorizontal = 4; }\r\n return \r\n {\r\n LinkXP.OpenURL('https://www.google.com/maps/place/SOS+Chocolate/@-23.0008128,-43.3962244,15z/data=!4m5!3m4!1s0x0:0xa535e4dece617423!8m2!3d-23.0008128!4d-43.3962244', '_blank')\r\n Api.Analytics.event(new Event(\"OpenedLink\", 'Maps'));\r\n }}>\r\n \r\n Av. Américas 8585, lj. 146\r\n \r\n \r\n {\r\n LinkXP.OpenURL('https://api.whatsapp.com/send?phone=5521975005115', '_blank')\r\n Api.Analytics.event(new Event(\"OpenedLink\", 'WhatsApp'));\r\n }}>\r\n \r\n (21)97500-5115\r\n \r\n \r\n {\r\n LinkXP.OpenURL('https://www.instagram.com/soschocolate.com.br/', '_blank');\r\n Api.Analytics.event(new Event(\"OpenedLink\", 'Instagram'));\r\n }}>\r\n \r\n @soschocolate.com.br\r\n \r\n \r\n {\r\n LinkXP.OpenURL('https://www.facebook.com/soschocolate.com.br/', '_blank');\r\n Api.Analytics.event(new Event(\"OpenedLink\", 'Facebook'));\r\n }}>\r\n \r\n /soschocolate.com.br\r\n \r\n \r\n {\r\n LinkXP.OpenURL('mailto:atendimento@soschocolate.com.br', '_blank')\r\n Api.Analytics.event(new Event(\"OpenedLink\", 'Email'));\r\n }}>\r\n \r\n contato por e-mail\r\n \r\n \r\n \r\n }\r\n\r\n render() {\r\n var columnWidth = Helpers.Min(300, Helpers.percentW(70))\r\n return <>\r\n\r\n {/* PRODUCT MODAL */}\r\n this.setState({ modalProductOpened: null }, () => {\r\n if (Platform.OS === 'web') window.location.hash = '';\r\n })} />\r\n\r\n {/* CHECKOUT STRIP */}\r\n \r\n\r\n \r\n {/* BANNERS */}\r\n {this.state.banners !== null &&\r\n \r\n {this.state.banners && this.state.banners.length ? <>\r\n { this._carousel = c; }}\r\n onBeforeSnapToItem={async (index) => {\r\n //console.log('SLIDE WILL CHANGE:', index, this['Slide' + index])\r\n // timeout\r\n if (this._tOut) clearTimeout(this._tOut);\r\n if (this.state.banners[index] && this.state.banners[index].length)\r\n this._tOut = setTimeout(() => this._carousel.snapToNext(), this.state.banners[index].length);\r\n // try replay video\r\n if (this.state.banners[index] && this.state.banners[index].type === 'video') {\r\n this.replayAllVidsHack();\r\n\r\n var vidRef = this['Slide' + index];\r\n //await vidRef.unloadAsync();\r\n //await vidRef.loadAsync({ uri: this.state.banners[index].url + '?v=' + Helpers.NewGuid() });\r\n await vidRef.setIsLoopingAsync(false);\r\n await vidRef.stopAsync(false);\r\n await vidRef.playFromPositionAsync(0);\r\n await vidRef.setIsLoopingAsync(true);\r\n }\r\n }}\r\n data={this.state.banners}\r\n renderItem={({ item, index }) => item.type == 'video' ? \r\n \r\n :\r\n \r\n \r\n \r\n }\r\n style={{ maxWidth: Helpers.percentW(100), width: 420 }}\r\n sliderWidth={Helpers.Min(420, Helpers.percentW(100))}\r\n itemWidth={Helpers.Min(420, Helpers.percentW(90)) - Helpers.percentW(10)}\r\n />\r\n this._carousel.snapToPrev()}>\r\n \r\n \r\n this._carousel.snapToNext()}>\r\n \r\n \r\n \r\n :\r\n this.state.banners === null ?\r\n \r\n :\r\n <>\r\n \r\n Carregando destaques...\r\n \r\n }\r\n \r\n }\r\n\r\n {/* BUSCA TEXTO, FILTROS E ORDENACAO */}\r\n \r\n {/* TEXT SEARCH */}\r\n \r\n this.setState({ searchText: q }, this.getProducts)}\r\n delay={250} style={{\r\n maxWidth: Helpers.percentW(94), width: 420, flex: 1, marginHorizontal: 18, paddingHorizontal: 6, borderWidth: 1, borderColor: Colors.darkLines,\r\n paddingVertical: 2, backgroundColor: '#fff', flexDirection: 'row', alignItems: 'center', borderRadius: 3, height: 38\r\n }}\r\n />\r\n \r\n {/* BRANDS AND ORDERING */}\r\n \r\n {/* BRANDS FILTER */}\r\n \r\n this.setState({\r\n selectedBrand: itemValue,\r\n showingProds: defaultShowingProds\r\n })}\r\n data={[\r\n { label: \"Todas as marcas\", value: \"0\" },\r\n ...this.state.brands.map(x => x ? { value: x, label: x } : null)\r\n ]} />\r\n \r\n\r\n {/* ORDER BY */}\r\n \r\n this.setState({\r\n orderBy: itemValue, showingProds: defaultShowingProds\r\n }\r\n , () => this.getProducts())}\r\n data={[\r\n { label: \"Destaques\", value: \"-Priority\" },\r\n { label: \"Nome A-Z\", value: \"Name\" },\r\n { label: \"Nome Z-A\", value: \"-Name\" },\r\n { label: \"Menor preço\", value: \"Price\" },\r\n { label: \"Maior preço\", value: \"-Price\" },\r\n ]} />\r\n \r\n\r\n \r\n \r\n\r\n {/* PRODUCTS */}\r\n \r\n {this.state.loadingProducts &&\r\n \r\n \r\n Carregando produtos...\r\n }\r\n {this.renderAllProds()}\r\n\r\n {/* BOTAO CARREGAR MAIS PRODUTOS */}\r\n {this.state.hasMoreProdsToLoad && \r\n {\r\n //this.setState({ showingProds: this.state.showingProds + 40 });\r\n this.getProducts(false);\r\n }}>\r\n \r\n \r\n Carregar mais produtos\r\n \r\n \r\n \r\n }\r\n {/* {this.props.catalog && this.state.selectedCategory ?\r\n this.renderProds(this.state.selectedCategory) : null\r\n } */}\r\n \r\n \r\n \r\n }\r\n}\r\n\r\nexport default connect(\r\n (state) => ({\r\n catalog: state.catalog,\r\n activeCartId: state.cart.activeCartId,\r\n //cartCount: getCart(state.cart.carts, state.cart.activeCartId).qtd,\r\n }),\r\n null)(Products);\r\n\r\n\r\n\r\n","import React, {Component} from 'react';\r\nimport PropTypes from 'prop-types';\r\nimport {\r\n Image,\r\n Text,\r\n View,\r\n ScrollView,\r\n StyleSheet,\r\n Animated,\r\n PanResponder,\r\n TouchableHighlight,\r\n TouchableOpacity,\r\n Dimensions,\r\n} from 'react-native';\r\n\r\n// const reactNativePackage = require('react-native/package.json');\r\n// const splitVersion = reactNativePackage.version.split('.');\r\n// const majorVersion = +splitVersion[0];\r\n// const minorVersion = +splitVersion[1];\r\n\r\nconst styles = StyleSheet.create({\r\n container: {\r\n flexDirection: 'row',\r\n backgroundColor: '#222',\r\n },\r\n layoutIndicator: {\r\n height: 15,\r\n position: 'absolute',\r\n bottom: 5,\r\n left: 0,\r\n right: 0,\r\n justifyContent: 'center',\r\n alignItems: 'center',\r\n flexDirection: 'row',\r\n backgroundColor: 'transparent',\r\n },\r\n indicator: {\r\n margin: 3,\r\n opacity: 0.9\r\n },\r\n indicatorSelected: {\r\n opacity: 1,\r\n },\r\n containerImage : {\r\n flex: 1,\r\n width: Dimensions.get('window').width,\r\n },\r\n overlay: {\r\n opacity: 0.5,\r\n backgroundColor: 'black',\r\n },\r\n layoutText: {\r\n position: 'absolute',\r\n paddingHorizontal: 15,\r\n bottom: 30,\r\n left: 0,\r\n right: 0,\r\n justifyContent: 'flex-start',\r\n alignItems: 'flex-start',\r\n flexDirection: 'column',\r\n backgroundColor: 'transparent',\r\n },\r\n textTitle: {\r\n fontWeight: 'bold',\r\n fontSize: 15, \r\n color: 'white',\r\n },\r\n textCaption: {\r\n fontWeight: '400',\r\n fontSize: 12, \r\n color: 'white',\r\n }\r\n});\r\n\r\nexport default class Slideshow extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n position: 0,\r\n height: Dimensions.get('window').width * (4 / 9),\r\n width: Dimensions.get('window').width,\r\n scrolling: false,\r\n };\r\n }\r\n\r\n _onRef(ref) {\r\n this._ref = ref;\r\n if (ref && this.state.position !== this._getPosition()) {\r\n this._move(this._getPosition());\r\n }\r\n }\r\n\r\n _move(index) {\r\n const isUpdating = index !== this._getPosition();\r\n const x = this.state.width * index;\r\n //if (majorVersion === 0 && minorVersion <= 19) {\r\n // this._ref.scrollTo(0, x, true); // use old syntax\r\n //} else {\r\n this._ref.scrollTo({x: this.state.width * index, y: 0, animated: true});\r\n //}\r\n this.setState({position: index});\r\n if (isUpdating && this.props.onPositionChanged) {\r\n this.props.onPositionChanged(index);\r\n }\r\n }\r\n\r\n _getPosition() {\r\n if (typeof this.props.position === 'number') {\r\n return this.props.position;\r\n }\r\n return this.state.position;\r\n }\r\n\r\n _next() {\r\n const pos = this.state.position === this.props.dataSource.length-1 ? 0 : this.state.position + 1;\r\n this._move(pos);\r\n this.setState({position: pos});\r\n }\r\n\r\n _prev() {\r\n const pos = this.state.position === 0 ? this.props.dataSource.length-1 : this.state.position - 1;\r\n this._move(pos);\r\n this.setState({position: pos});\r\n }\r\n\r\n componentDidUpdate(prevProps) {\r\n if (prevProps.position !== this.props.position) {\r\n this._move(this.props.position);\r\n }\r\n }\r\n\r\n UNSAFE_componentWillMount() {\r\n const width = this.state.width;\r\n\r\n let release = (e, gestureState) => {\r\n const width = this.state.width;\r\n const relativeDistance = gestureState.dx / width;\r\n const vx = gestureState.vx;\r\n let change = 0;\r\n\r\n if (relativeDistance < -0.5 || (relativeDistance < 0 && vx <= 0.5)) {\r\n change = 1;\r\n } else if (relativeDistance > 0.5 || (relativeDistance > 0 && vx >= 0.5)) {\r\n change = -1;\r\n }\r\n const position = this._getPosition();\r\n if (position === 0 && change === -1) {\r\n change = 0;\r\n } else if (position + change >= this.props.dataSource.length) {\r\n change = (this.props.dataSource.length) - (position + change);\r\n }\r\n this._move(position + change);\r\n return true;\r\n };\r\n\r\n this._panResponder = PanResponder.create({\r\n onPanResponderRelease: release\r\n });\r\n\r\n this._interval = setInterval(() => {\r\n const newWidth = Dimensions.get('window').width;\r\n if (newWidth !== this.state.width) {\r\n this.setState({width: newWidth});\r\n }\r\n }, 16);\r\n }\r\n\r\n componentWillUnmount() {\r\n clearInterval(this._interval);\r\n }\r\n\r\n render() {\r\n const width = this.state.width;\r\n const height = this.props.height || this.state.height;\r\n const position = this._getPosition();\r\n return (\r\n \r\n {/* SECTION IMAGE */}\r\n this._onRef(ref)}\r\n decelerationRate={0.99}\r\n horizontal={true}\r\n showsHorizontalScrollIndicator={false}\r\n scrollEnabled={this.props.scrollEnabled}\r\n {...this._panResponder.panHandlers}\r\n style={[\r\n styles.container, \r\n { height: height }\r\n ]}>\r\n {this.props.dataSource.map((image, index) => {\r\n const imageObject = typeof image.url === 'string' ? {uri: image.url} : image.url;\r\n const textComponent = (\r\n \r\n {image.title === undefined ? null : {image.title}}\r\n {image.caption === undefined ? null : {image.caption}}\r\n \r\n );\r\n const imageComponent = (\r\n \r\n \r\n {textComponent}\r\n \r\n );\r\n const imageComponentWithOverlay = (\r\n \r\n \r\n \r\n \r\n {textComponent}\r\n \r\n );\r\n if (this.props.onPress) {\r\n return (\r\n this.props.onPress({image, index})}\r\n delayPressIn={200}>\r\n {this.props.overlay ? imageComponentWithOverlay : imageComponent}\r\n \r\n );\r\n } else {\r\n return this.props.overlay ? imageComponentWithOverlay : imageComponent \r\n }\r\n })}\r\n \r\n {/* END SECTION IMAGE */}\r\n {/* SECTION INDICATOR */}\r\n \r\n {this.props.dataSource.map((image, index) => {\r\n return (\r\n { return this._move(index); }}\r\n style={[\r\n [\r\n styles.indicator, \r\n setIndicatorSize(this.props.indicatorSize), \r\n setIndicatorColor(this.props.indicatorColor)\r\n ], \r\n position === index && \r\n [\r\n styles.indicatorSelected, \r\n setIndicatorColor(this.props.indicatorSelectedColor)\r\n ]\r\n ]}>\r\n \r\n );\r\n })}\r\n \r\n {/* END SECTION INDICATOR */}\r\n {/* SECTION ARROW LEFT */}\r\n \r\n this._prev()}>\r\n {\r\n this.props.arrowRight == undefined ? \r\n \r\n : \r\n this.props.arrowLeft\r\n }\r\n \r\n \r\n {/* END SECTION ARROW LEFT */}\r\n {/* SECTION ARROW RIGHT */}\r\n \r\n this._next()}>\r\n {\r\n this.props.arrowRight == undefined ? \r\n \r\n : \r\n this.props.arrowRight\r\n }\r\n \r\n \r\n {/* END SECTION ARROW RIGHT */}\r\n \r\n );\r\n }\r\n}\r\n\r\nSlideshow.defaultProps = {\r\n height: 200,\r\n indicatorSize: 8,\r\n indicatorColor: '#CCCCCC',\r\n indicatorSelectedColor: '#FFFFFF',\r\n scrollEnabled: true,\r\n arrowSize: 16,\r\n}\r\n\r\nSlideshow.propTypes = {\r\n\tdataSource: PropTypes.arrayOf(PropTypes.shape({\r\n\t title: PropTypes.string,\r\n\t caption: PropTypes.string,\r\n\t url: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\r\n })).isRequired, \r\n\tindicatorSize: PropTypes.number,\r\n\tindicatorColor: PropTypes.string,\r\n\tindicatorSelectedColor: PropTypes.string,\r\n\theight: PropTypes.number,\r\n\tposition: PropTypes.number,\r\n scrollEnabled: PropTypes.bool,\r\n containerStyle: PropTypes.object,\r\n overlay: PropTypes.bool,\r\n\tarrowSize: PropTypes.number,\r\n arrowLeft: PropTypes.object,\r\n arrowRight: PropTypes.object,\r\n\tonPress: PropTypes.func,\r\n\tonPositionChanged: PropTypes.func,\r\n};\r\n\r\nconst setIndicatorSize = function (size) {\r\n return {\r\n width: size,\r\n height: size,\r\n borderRadius: size / 2,\r\n };\r\n}\r\n\r\nconst setIndicatorColor = function (color) {\r\n return {\r\n backgroundColor: color,\r\n };\r\n}\r\n\r\nconst layoutArrow = function (imageHeight, iconHeight) {\r\n return {\r\n position: 'absolute',\r\n backgroundColor: 'transparent',\r\n justifyContent: 'flex-start',\r\n alignItems: 'flex-start',\r\n top: (imageHeight-iconHeight)/2,\r\n bottom: (imageHeight-iconHeight)/2,\r\n };\r\n}\r\n\r\nconst iconArrow = function (iconHeight) {\r\n return {\r\n width: 0,\r\n height: 0,\r\n margin: 5,\r\n backgroundColor: 'transparent',\r\n borderStyle: 'solid',\r\n borderTopColor: 'transparent',\r\n borderBottomColor: 'transparent',\r\n borderTopWidth: iconHeight/2,\r\n borderBottomWidth: iconHeight/2,\r\n };\r\n}\r\n\r\nconst iconArrowRight = function (iconHeight) {\r\n return {\r\n borderRightWidth: 0,\r\n borderLeftWidth: iconHeight*75/100,\r\n borderRightColor: 'transparent',\r\n borderLeftColor: 'white',\r\n };\r\n}\r\n\r\nconst iconArrowLeft = function (iconHeight) {\r\n return {\r\n borderRightWidth: iconHeight*75/100,\r\n borderLeftWidth: 0,\r\n borderRightColor: 'white',\r\n borderLeftColor: 'transparent',\r\n };\r\n}","import React from 'react';\r\nimport { Text, View } from 'react-native';\r\nimport { Link } from '../../components/router';\r\n\r\nexport default function ProductItem() {\r\n return (\r\n \r\n \r\n foto\r\n \r\n PRODUTO\r\n R$ 10,00\r\n \r\n Ver\r\n \r\n \r\n );\r\n}\r\n\r\n\r\n","import React, { useRef, useState } from 'react';\r\nimport { ScrollView, StyleSheet, Dimensions } from 'react-native';\r\n\r\nexport const ProductsScrollView = ({ ...props }) => {\r\n const scrollRef = useRef(null)\r\n const [currentX, setCurrentX] = useState(0)\r\n\r\n const scrollX = (px) => scrollRef.current.scrollTo({ x: currentX + px })\r\n let scrollPad = Dimensions.get('window').width / 4;\r\n if (scrollPad < 200) scrollPad = 200;\r\n return <>\r\n \r\n
\r\n setCurrentX(nativeEvent.contentOffset.x)}\r\n horizontal contentContainerStyle={styles.innerList} {...props}/>\r\n scrollX(-scrollPad)}>\r\n \r\n \r\n scrollX(scrollPad)}>\r\n \r\n \r\n
\r\n ;\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n innerList: {\r\n flexDirection: 'row',\r\n justifyContent: 'flex-start',\r\n alignItems: 'center',\r\n }\r\n});\r\n","import React from 'react';\r\nimport { Text, View, StyleSheet } from 'react-native';\r\nimport ProductItem from './ProductItem'\r\nimport { ProductsScrollView } from './ProductsScrollView';\r\n\r\nexport default function ProductsCarousel(props) {\r\n return (\r\n \r\n {typeof props.title === 'string' ? {props.title} : props.title}\r\n \r\n {props.products && props.products.map((p,i) => props.renderProduct ? props.renderProduct(p) : )}\r\n \r\n \r\n );\r\n}\r\n\r\nconst styles = StyleSheet.create({\r\n row: {\r\n //borderWidth: 1, \r\n },\r\n innerList: {\r\n flexDirection: 'row',\r\n justifyContent: 'flex-start',\r\n alignItems: 'center',\r\n }\r\n});\r\n","import React from 'react';\r\nimport { ScrollView, Platform } from 'react-native';\r\n\r\nexport default (props) =>
\r\n \r\n {props.children || null}\r\n \r\n
","import React from 'react';\r\nimport { Platform, Text, View, Image, TouchableOpacity } from 'react-native';\r\nimport { Appbar, TouchableRipple } from 'react-native-paper';\r\nimport { FloatingColumn } from './../components/ResponsiveColumns';\r\nimport Api from './../api/Api';\r\nimport Helpers from '../utils/Helpers';\r\nimport MaterialCommunityIcons from 'react-native-vector-icons/MaterialCommunityIcons';\r\nimport Colors from '../constants/Colors';\r\nimport { TabletView, MobileView, DesktopView } from '../components/ResponsiveView';\r\nimport LinkXP from '../utils/LinkXP';\r\nimport { Event } from 'expo-analytics';\r\nimport GlobalStyles from '../constants/GlobalStyles';\r\nimport { CartButton } from './CheckoutStrip';\r\nimport { GetHistoryHack } from '../App';\r\nimport { connect } from 'react-redux';\r\n\r\nexport const SocialNetworksItems = (props) => {\r\n var btnStyle = {\r\n ...GlobalStyles.textBase, display: 'flex', alignItems: 'center', fontSize: 15,\r\n paddingHorizontal: props.horizontal ? 16 : 8, paddingVertical: 10, color: Colors.themeColor\r\n };\r\n if (Platform.OS != 'web') { btnStyle.fontSize = 15; btnStyle.paddingHorizontal = 4; }\r\n return \r\n {\r\n LinkXP.OpenURL('https://www.google.com/maps/place/SOS+Chocolate/@-23.0008128,-43.3962244,15z/data=!4m5!3m4!1s0x0:0xa535e4dece617423!8m2!3d-23.0008128!4d-43.3962244', '_blank')\r\n Api.Analytics.event(new Event(\"OpenedLink\", 'Maps'));\r\n }}>\r\n \r\n \r\n {props.hideLabels ? '' : ' Av. Américas 8585, lj. 146'}\r\n \r\n \r\n {\r\n LinkXP.OpenURL('https://api.whatsapp.com/send?phone=5521975005115', '_blank')\r\n Api.Analytics.event(new Event(\"OpenedLink\", 'WhatsApp'));\r\n }}>\r\n \r\n \r\n {props.hideLabels ? '' : ' (21)97500-5115'}\r\n \r\n \r\n {\r\n LinkXP.OpenURL('https://www.instagram.com/razcau/', '_blank');\r\n Api.Analytics.event(new Event(\"OpenedLink\", 'Instagram'));\r\n }}>\r\n \r\n \r\n {props.hideLabels ? '' : ' @razcau'}\r\n \r\n \r\n {/* {\r\n LinkXP.OpenURL('https://www.facebook.com/soschocolate.com.br/', '_blank');\r\n Api.Analytics.event(new Event(\"OpenedLink\", 'Facebook'));\r\n }}>\r\n \r\n \r\n {props.hideLabels ? '' : ' /soschocolate.com.br'}\r\n \r\n */}\r\n {\r\n LinkXP.OpenURL('mailto:sac@razcau.com', '_blank')\r\n Api.Analytics.event(new Event(\"OpenedLink\", 'Email'));\r\n }}>\r\n \r\n \r\n {props.hideLabels ? '' : ' contato por e-mail'}\r\n \r\n \r\n \r\n}\r\n\r\nclass Header extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {}\r\n }\r\n\r\n render() {\r\n var columnWidth = Helpers.Min(300, Helpers.percentW(70))\r\n console.log('header! route:', this.props.route)\r\n return <>\r\n \r\n { this.setState({ menuOpened: true }) }}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {(\r\n this.props.route\r\n &&\r\n (\r\n this.props.route.indexOf('/checkout') != -1\r\n ||\r\n this.props.route.indexOf('cardapio') != -1\r\n ||\r\n this.props.route.indexOf('selfservice') != -1\r\n )\r\n )\r\n ||\r\n this.props.hideCartButton\r\n ? null :\r\n \r\n }\r\n {\r\n LinkXP.OpenURL('https://api.whatsapp.com/send?phone=5521975005115', '_blank')\r\n Api.Analytics.event(new Event(\"OpenedLink\", 'WhatsApp'));\r\n }}>\r\n \r\n \r\n \r\n \r\n\r\n {/* MENU SIDEBAR */}\r\n this.setState({ menuOpened: false })}>\r\n { this.setState({ menuOpened: false }) }}>\r\n \r\n \r\n \r\n \r\n \r\n {/* \r\n Delivery de emergência para chocólatras!\r\n */}\r\n \r\n \r\n \r\n }\r\n}\r\n\r\nexport default connect(\r\n (state) => ({\r\n route: state.route.route,\r\n }),\r\n null)(Header)\r\n\r\n\r\n\r\n","import React, { useState, useEffect } from 'react';\r\nimport { ScrollView, Text, View, TouchableOpacity, Alert, Image } from 'react-native';\r\nimport Slideshow from './../components/SlideShow';\r\nimport ProductsCarousel from './../components/products/ProductsCarousel';\r\nimport { Link } from '../components/router';\r\nimport MySearchInput from '../components/MySearchInput';\r\nimport Helpers from './../utils/Helpers';\r\nimport Colors from '../constants/Colors';\r\nimport Api from '../api/Api';\r\nimport { ActivityIndicator } from 'react-native-paper';\r\nimport { Analytics, Event } from 'expo-analytics';\r\nimport Product from '../components/Product';\r\nimport GlobalStyles from '../constants/GlobalStyles';\r\nimport { MaterialCommunityIcons } from 'react-native-vector-icons';\r\nimport DropdownXP from '../components/DropdownXP';\r\nimport ScrollViewXP from '../components/ScrollViewXP';\r\nimport MyAccordion, { MyAccordionXP } from './../components/MyAccordion';\r\nimport { ViewportRenderer, ViewportNames } from './../components/ResponsiveView';\r\nimport { SocialNetworksItems } from '../components/Header';\r\nimport Feather from 'react-native-vector-icons/Feather';\r\n\r\nexport default class Home extends React.Component {\r\n\r\n constructor(props, context) {\r\n super(props);\r\n this.state = {\r\n categories: [],\r\n prodsByCategoryId: {},\r\n products: [],\r\n categoryName: ''\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.updateStateFromProps(this.props);\r\n // this.getAllCategories();\r\n // this.getProducts(true, this.props.params);\r\n // this.getCategoryInfo(this.props.params.catId);\r\n }\r\n\r\n componentWillReceiveProps(nextProps) {\r\n // changed categories? trigger getProducts again!\r\n if (this.props.params.catId != nextProps.params.catId) {\r\n this.updateStateFromProps(nextProps);\r\n // this.getProducts(true, nextProps.params);\r\n // this.getCategoryInfo(nextProps.params.catId);\r\n }\r\n }\r\n getAllData = (props) => {\r\n this.getProducts(true, props.params);\r\n this.getAllCategories();\r\n this.getCategoryInfo(props.params.catId);\r\n }\r\n updateStateFromProps = async (props) => {\r\n if (props.storeAlias) {\r\n try {\r\n var ret = await Api.GetStoreByAlias(props.params.storeAlias);\r\n if (ret.data.Id > 0)\r\n this.setState({ store: ret.data }, () => this.getAllData(props))\r\n } catch {\r\n Alert.alert(\"Ops\", \"Loja não encontrada\");\r\n this.props.history.push(`/`);\r\n //this.getAllData(props)\r\n }\r\n } else {\r\n // get main banner from store soschocolate\r\n var ret = await Api.GetStoreById(1);\r\n if (ret.data.Id > 0)\r\n this.setState({ marketplaceStore: { ...ret.data, BannerURL: null } })\r\n this.getAllData(props)\r\n }\r\n }\r\n\r\n getTodayDeliverySchedule = () => this.state.store.DeliveryTimes.filter(x => x.Day == (new Date()).getDay())[0];\r\n\r\n getWeekDayName = (d) => d == 0 ? 'Domingo' :\r\n d == 1 ? 'Segunda' :\r\n d == 2 ? 'Terça' :\r\n d == 3 ? 'Quarta' :\r\n d == 4 ? 'Quinta' :\r\n d == 5 ? 'Sexta' : 'Sábado';\r\n\r\n renderDeliveryhoursForDay = (deliveryDayInfo) => {\r\n var dayName = this.getWeekDayName(deliveryDayInfo.Day);\r\n return \r\n {dayName}\r\n {!deliveryDayInfo.OpenTime1 ? Fechado :\r\n {deliveryDayInfo.OpenTime1} às {deliveryDayInfo.CloseTime1}\r\n {deliveryDayInfo.OpenTime2 ? (' | ' + deliveryDayInfo.OpenTime2 + ' às ' + deliveryDayInfo.CloseTime2) : ''}\r\n }\r\n \r\n }\r\n\r\n isStoreOpened = () => {\r\n if (this.state.store && this.state.store.DeliveryTimes) {\r\n try {\r\n var todaySchedule = this.getTodayDeliverySchedule();\r\n var now = new Date();\r\n var arrD1Init = todaySchedule.OpenTime1.split(':');\r\n var dt1init = new Date(now.getFullYear(), now.getMonth(), now.getDate(), arrD1Init[0], arrD1Init[1], 0);\r\n var arrD1Fim = todaySchedule.CloseTime1.split(':');\r\n var dt1Fim = new Date(now.getFullYear(), now.getMonth(), now.getDate(), arrD1Fim[0], arrD1Fim[1], 0);\r\n if (now >= dt1init && now < dt1Fim)\r\n return true;\r\n\r\n var arrD2Init = todaySchedule.OpenTime2.split(':');\r\n var dt2init = new Date(now.getFullYear(), now.getMonth(), now.getDate(), arrD2Init[0], arrD2Init[1], 0);\r\n var arrD2Fim = todaySchedule.CloseTime2.split(':');\r\n var dt2Fim = new Date(now.getFullYear(), now.getMonth(), now.getDate(), arrD2Fim[0], arrD2Fim[1], 0);\r\n if (now >= dt2init && now < dt2Fim)\r\n return true;\r\n return false;\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n }\r\n else return false;\r\n }\r\n\r\n getAllCategories = () => {\r\n Api.Products.getAllCategories(this.state.store ? this.state.store.Id : 0).then(x => {\r\n if (x && x.data && x.data.length > 0) {\r\n this.setState({ categories: x.data },\r\n () => x.data.map(x => this.getTopProductsForCategory(x.Id)));\r\n }\r\n })\r\n }\r\n\r\n getTopProductsForCategory = (categoryId) => {\r\n Api.Products.getProducts(0, this.state.store ? this.state.store.Id : 0, categoryId, 0, '', '', 0, 12).then(x => {\r\n if (x && x.data && x.data.length > 0) {\r\n this.setState({ prodsByCategoryId: { ...this.state.prodsByCategoryId, [categoryId]: x.data } });\r\n }\r\n })\r\n }\r\n\r\n getProducts = async (clear = true, params) => {\r\n // loja?\r\n //let storeAlias = (params || this.props.params).storeAlias || '';\r\n //let storeId = (params || this.props.params).storeId || 0;\r\n let storeId = this.state.store ? this.state.store.Id : 0;\r\n let catId = (params || this.props.params).catId || 0;\r\n var pageSize = 50;\r\n if (clear) this.lastProductIndex = 0;\r\n this.setState({ loadingProducts: true })\r\n Api.Products.getProducts(0, storeId, catId, this.state.selectedBrand ? this.state.selectedBrand.Id : 0, this.state.searchText, this.state.orderBy, this.lastProductIndex, pageSize).then(x => {\r\n this.lastProductIndex += x.data.length;\r\n this.setState({\r\n loadingProducts: false,\r\n hasMoreProdsToLoad: x.data.length == 50, // se voltar menos de 50 eh pq acabou a paginacao\r\n products: clear ? x.data : [...this.state.products, ...x.data]\r\n })\r\n }).catch(e => {\r\n\r\n });\r\n }\r\n\r\n selectCategory = (id) => {\r\n this.props.history.push(id == 0 ? this.props.baseUrl : `${this.props.baseUrl}/categoria/${id}`)\r\n }\r\n\r\n getCategoryInfo = (id) => {\r\n if (!id) this.setState({ categoryName: '' });\r\n else Api.GetCategoryInfo(id).then(x => {\r\n if (x && x.data && x.data.Name) {\r\n this.setState({ categoryName: x.data.Name });\r\n }\r\n });\r\n }\r\n\r\n onPressProduct = (p) => {\r\n this.props.history.push(`${this.props.url}/produto/${p.Id}`);\r\n }\r\n\r\n render() {\r\n //console.log('PROPSSSSS:', this.props);\r\n let wBanner = Helpers.Min(Helpers.percentW(100), 1200);\r\n //console.log('WIDTH:' + Helpers.percentW(100))\r\n // modal prod aberto\r\n let modalProdOpened = this.props.params.prodId;\r\n let openedCategoryId = this.props.params.catId || 0;\r\n let storeAlias = this.props.params.storeAlias || '';\r\n let todayDelivery = this.state.store ? this.getTodayDeliverySchedule() : null;\r\n let sectionTitle = this.state.searchText ? ('Buscando por \"' + this.state.searchText + (openedCategoryId == 0 || this.state.categoryName.length == 0 ? '\"' : ('\" em ' + this.state.categoryName)))\r\n : openedCategoryId > 0 ? this.state.categoryName\r\n : this.state.selectedBrand && this.state.selectedBrand.Id > 0 ? this.state.selectedBrand.Name\r\n : 'Carregando...';\r\n return \r\n\r\n {/* BANNERS */}\r\n {(this.state.store && this.state.store.BannerURL\r\n ||\r\n this.state.marketplaceStore && this.state.marketplaceStore.BannerURL\r\n ) ?\r\n \r\n \r\n \r\n : null}\r\n {/* */}\r\n\r\n {/* PAGINA DE LOJA */}\r\n {\r\n this.state.store ? // mostra info sobre a loja\r\n \r\n \r\n \r\n \r\n {this.state.store.Name}\r\n {this.state.store.Description}\r\n \r\n \r\n {this.isStoreOpened() ? 'Loja aberta' : 'Somente entregas agendadas'}\r\n \r\n \r\n \r\n {this.renderDeliveryhoursForDay(todayDelivery)}\r\n \r\n }>\r\n \r\n {this.state.store.DeliveryTimes.map(x => this.renderDeliveryhoursForDay(x))}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n : \r\n // Pagina Home do Marketplace: mostra stories das marcas\r\n {\r\n if(b && b.Name) Api.Analytics.event(new Event(\"FilteredBrand\", b.Name));\r\n this.setState({ selectedBrand: b, openedCategoryId: 0, searchText: '' }, this.getProducts)\r\n }} />\r\n }\r\n\r\n {/* BUSCA DE TEXTO E TAB BAR DE CATEGORIAS */}\r\n {this.state.selectedBrand ? : // se ta com marca selecionada esconde a busca de texto e as tabs (por enquanto)\r\n \r\n {/* BUSCA TEXTO, FILTROS E ORDENACAO */}\r\n \r\n {/* TEXT SEARCH */}\r\n \r\n this.setState({ searchText: q }, () => { this.getProducts() })}\r\n delay={250} style={{\r\n maxWidth: Helpers.percentW(94), width: 420, flex: 1, marginHorizontal: 18, paddingHorizontal: 6, borderWidth: 1, borderColor: Colors.darkLines,\r\n paddingVertical: 2, backgroundColor: '#fff', flexDirection: 'row', alignItems: 'center', borderRadius: 5, height: 38\r\n }}\r\n />\r\n \r\n \r\n\r\n {/* TAB BAR CATEGORIAS */}\r\n {this.state.categories.length > 0 &&\r\n \r\n {[{ Id: 0, Name: 'Todos' }, ...this.state.categories].map(c => this.selectCategory(c.Id)}\r\n style={[{ padding: 12, justifyContent: 'center', borderBottomWidth: 3 },\r\n // SELECTED TAB\r\n openedCategoryId == c.Id ? { borderBottomColor: Colors.themeColor } : { borderBottomColor: 'transparent' }\r\n ]}>\r\n \r\n {c.Name}\r\n )}\r\n \r\n }\r\n\r\n \r\n }\r\n\r\n\r\n {/* HOME MOSTRANDO PRODUTOS EM GRID */}\r\n {\r\n (openedCategoryId || this.state.searchText || this.state.selectedBrand)\r\n ?\r\n /* PRODUCTS */\r\n \r\n {/* TITULO DA SECAO */}\r\n {\r\n return \r\n \r\n {this.state.selectedBrand && this.setState({ selectedBrand: null })}>\r\n }\r\n {sectionTitle}\r\n {this.state.loadingProducts && }\r\n \r\n {/* ORDER BY */}\r\n \r\n {viewport != ViewportNames.mobile &&\r\n Ordernar por\r\n }\r\n this.setState({\r\n orderBy: itemValue\r\n }\r\n , () => this.getProducts())}\r\n data={[\r\n { label: \"Destaques\", value: \"-Priority\" },\r\n { label: \"Nome A-Z\", value: \"Name\" },\r\n { label: \"Nome Z-A\", value: \"-Name\" },\r\n { label: \"Menor preço\", value: \"Price\" },\r\n { label: \"Maior preço\", value: \"-Price\" },\r\n ]} />\r\n \r\n \r\n }} />\r\n {\r\n return \r\n {/* PRODUCTS GRID */}\r\n {this.state.products.map((p) =>\r\n { this.onPressProduct(p) }} />)}\r\n\r\n {/* SEM PRODUTOS? */}\r\n {!this.state.loadingProducts && (!this.state.products || this.state.products.length == 0) ?\r\n \r\n Nenhum produto encontrado\r\n \r\n : null}\r\n\r\n {/* BOTAO CARREGAR MAIS PRODUTOS */}\r\n {this.state.hasMoreProdsToLoad && \r\n {\r\n //this.setState({ showingProds: this.state.showingProds + 40 });\r\n this.getProducts(false);\r\n }}>\r\n \r\n \r\n Carregar mais produtos\r\n \r\n \r\n \r\n }\r\n \r\n }} />\r\n \r\n /* HOME LOADING E CAROUSEIS DE PRODUTOS */\r\n :\r\n (this.state.categories.length == 0 ?\r\n \r\n \r\n Carregando...\r\n \r\n :\r\n this.state.categories.map(c => \r\n {c.Name}\r\n \r\n \r\n \r\n ver mais\r\n \r\n \r\n \r\n \r\n
}\r\n products={c.Id in this.state.prodsByCategoryId ? this.state.prodsByCategoryId[c.Id] : []}\r\n renderProduct={(p) =>\r\n { this.onPressProduct(p); }} />\r\n }\r\n />)\r\n )\r\n }\r\n