{"version":3,"sources":["App/Dispatcher/AppDispatcher.js","App/Styles/Colors.js","App/Fonts/HelveticaNeue-Light.ttf","App/Fonts/HelveticaNeue-Bold.ttf","App/Img/TSS_Background.jpg","node_modules/moment/locale sync /^/.//.*$","App/img/ic_add_black.png","App/img/ic_minus_black.png","App/img/ic_cart_white.png","App/Img/img_background_obbar.png","App/Img/img_background_jjk.jpeg","App/Img/ic_no_order.png","UseFonts.js","App/Routes/Routing.js","App/Utils/Device.js","App/Utils/Config.js","App/Styles/StyleHelper.js","App/Styles/ThemeStyles.js","App/Components/SmallSpinner.js","App/Components/ImageBackground.js","App/Utils/Services.js","App/Utils/Endpoint.js","App/Utils/API.js","App/Stores/StoreStore.js","App/Constants/AppConstants.js","App/Actions/StoreActions.js","App/Actions/OrderActions.js","App/Actions/MenuActions.js","App/Stores/OrderStore.js","App/Screens/Splash.js","App/Components/ImageProduct.js","App/Components/RadioModifierGroup.js","App/Components/IconPlus.js","App/Components/IconMinus.js","App/Components/Modifier.js","App/Actions/CartActions.js","App/Components/ProductModal.js","App/Stores/CartStore.js","App/Stores/MenuStore.js","App/Screens/Home.js","App/Components/OrderInfo.js","App/Screens/Cart.js","App/Screens/Confirmation.js","App/Screens/Lost.js","App/Screens/Welcome.js","App/Components/ExtraCharge.js","App/Components/ProductOrder.js","App/Screens/MyOrder.js","App/Screens/Expired.js","App/Screens/Offset.js","App/Routes/ParentStack.js","App/Components/Spinner.js","App.js","webpack:///./index.js?41f5","App/Utils/Storage.js"],"names":["Dispatcher","require","module","exports","Colors","yellow","grey","greyDark","blackSecond","blackSecondDark","lightGrey","soupOrange","whiteTransparent","blackTransparent","greyTransparent","red","xdark","darkStatusBar","DarkOrange","Pink","DarkBlue","Gray","DarkGreen","LightPink","Green","DarkPink","LightOrange","white","black","Ivory","Orange","HeavyOrange","RustRed","PeachPuff","Linen","Ming","LightCoral","map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","UseFonts","Font","navigationRef","React","navigate","name","params","current","deviceWidth","Math","round","Dimensions","get","width","deviceHeight","height","Device","getSize","size","PixelRatio","roundToNearestPixel","this","pixelScale","getRatio","pixelScaleV2","isSmallScreen","isTablet","isBefore23","Platform","Version","isBefore22","isBefore21","isBefore19","isAfter21","is16","is21","is22","is23","isIOS","OS","isAndroid","isWeb","heightNavBar","keyboardMargin","Config","errorTitle","activeOpacity","hitslopSmall","top","bottom","left","right","marginTopNav","heightStatusBar","contentHeight","input","autoCapitalize","autoCorrect","underlineColorAndroid","lightStatusBar","barStyle","backgroundColor","hidden","orangeStatusBar","keyboardAvoid","behavior","keyboardVerticalOffset","keyboardAvoidLogin","deviceID","mapZoom","initialZoom","coordSG","latitude","longitude","formatDateTime","cartSummaryDateTimeFormat","formatDate","formatDateTimeText","formatTime","formatYMD","formatSuperholic","url_image","imageSizeLandscape","thresholdLazyLoad","isProductionEnv","isTss","isTgk","isJjk","timezone","gst","storeId","posStoreCode","theme","versionNo","fontHelveticaNeue","regular","bold","HEIGHT_INPUT","StyleHelper","StyleSheet","create","containerTopFit","paddingTop","flex","position","containerHeightFit","backgroundImage","imageIcon","padding","containerTiny","paddingVertical","paddingHorizontal","containerSmall","customContainerNormal","customContainerNormal2","customContainerNormal3","customContainerNormal4","containerNormal","containerCustom","paddingLeft","paddingRight","containerLarge","containerMiddle","containerVertical2","containerVerticalXTiny","containerVerticalVTiny","containerVerticalTiny","containerVerticalSmall","containerVerticalSmall2","containerVerticalNormal","containerHorizontalTiny","containerHorizontalSmall","containerHorizontalNormal","containerTouchableBig","containerFullHeight","heightScrollViewContent","containerText","marginVertical","containerTitle","marginBottom","containerBigSection","minHeight","containerMarginFullWidth","marginHorizontal","containerNormalXSmallIcon","containerNormalSmallIcon","containerMarginTopSmall","marginTop","containerMarginTopNormal","containerMarginTopLarge","containerMarginBottomSmall","containerNumber","containerNotification","borderRadius","alignItems","containerDeviceHeight","inputWhiteRound","color","fontFamily","inputLoupe","iconLoupeInput","inputWhite","fontSize","borderColor","borderWidth","borderStyle","inputWhiteLeftIconReal","inputWhiteLeftIcon","inputWhiteRightIcon","inputTransparent","iconInputLeft","textInputLeft","textAlign","iconInputRight","inputBorderRadius","borderTopWhite","borderTopColor","borderTopWidth","borderBottomWhite","borderBottomColor","borderBottomWidth","borderTopBlackTransparent","borderBottomBlackTransparent","borderBottomWhiteTransparent","borderTopWhiteTransparent","borderTopWhite2","borderBottomWhite2","borderVerticalWhite2","borderVerticalWhite","borderVerticalWhiteTransparent","borderLeftWhiteTransparent","borderLeftColor","borderLeftWidth","borderTopRed","borderGrey","borderDarkGreen","DarkPinkBorder","JjkLightGreen","OrangeDarkBorder","bgBlack","bgBlackTransparent","bgBlackSecond","bgBlackSecondDark","bgLightGrey","bgSoupOrange","bgWhite","bgGrey","bgOrange","bgPink","bgDarkGreen","bgRed","bgTransparent","OrangeDarkBg","JjkGreen","HeavyOrangeDarkBg","LightOrangeDarkBg","TgkLightGrey","OrangePinkBg","LightOrangePinkBg","PinkBg","BlueGreyBg","TgkGrey","OrangeGreyBg","OrangeDarkFont","TgkBlue","PinkGreenFont","JjkGold","VeryGreyFont","DarkFont","DarkPinkFont","WhiteDarkFont","OrangePinkFont","TgkRed","OrangeBlackFont","GrayGreenFont","RedGreenFont","BlackBlueFont","BlackGreyFont","DarkRedFont","WhiteGreyFont","DarkGreenFont","JjkDarkGreen","fontWhite","fontWhiteGold","fontRed","fontWhiteTransparent","fontOrange","fontBlack","greyFont","fontGrey","fontBlackReal","fontBlackSecond","fontBebasNeueBold","Bold","fontHelveticaNeueRegular","fontHelveticaNeueBold","fontRegular","fontBold","fontTitleRegular","fontTitleBold","fontRalewayBold","font8","font9","font10","font11","font12","font13","font14","font15","font16","font17","font18","font19","font20","font22","font23","font25","font30","font40","fontPink","fontLightGreen","fontDarkGreen","fontXDark","fontErrorWhite","textCenter","alignSelf","flexDirection","overlay","zIndex","overlayNoZIndex","overlayBlack","overlayInputDisabled","flex1","flex2","flex3","flexCenter","justifyContent","flexMiddle","flexRight","flexRow","flexRowTop","flexColumn","flexJustifyEnd","flexSpaceBetween","alignSelfStretch","alignSelfCenter","flexRowSpaceBetween","flexRowSpaceBetweenAlignTop","fullHeight","navBarTransparent","navBarOrange","navBarFake","touchableNavLeft","marginLeft","marginRight","touchableNavRight","touchableNavRightCartPlus","touchableRightTiny","touchableRightSmall","logoBig","containerModalCenter","containerPaddingModalContent","titleNav","imgTitle","xsmallIconSize","verysmallIconSize","bitsmallIconSize","smallIconSize","mediumIconSize","largeIconSize","LargeIconSize2","LargeIconSize3","LargeIconSize4","LargeIconSize5","LargeIconSize6","LargeIconSize7","LargeIconSize8","largeIconBg","largeIconBg2","iconRight","containerListRow","blockLeftHalfMargin","blockRightHalfMargin","textMiddle","relative","seperatorGrey","seperatorBlack","seperatorWhite","imgNavBar","transparent","opacity","heightHalfWidth","sectionQuantity","sectionRowBig","textSelection","absoluteLeftTop","absoluteRightTop","seperatorBigBlack","touchableCancelCamera","seperatorBigTransparent","textWhite","textBlack","leftSpace15","rightSpace15","shadow","shadowColor","shadowOffset","shadowRadius","shadowOpacity","qrContainer","orderInfo","paddingBottom","customBtn","Theme","obbar","jjk","ThemeStyles","assign","EventEmitter","prototype","primaryBtnColor","secondaryBtnColor","primaryBtnFontColor","secondaryBtnFontColor","primaryFontColor","primaryFontActiveColor","secondaryFontColor","tersierFontColor","primaryBgColor","secondaryBgColor","tableNumberPosition","customBtnBorder","activeBorderColor","iconColor","productBtn","ivoryBg","expireQrLogo","new_width","sqrt","transform","rotateZ","SmallSpinner","props","ActivityIndicator","style","noMargin","ImageBg","View","styleHelper","children","emptyFunc","Services","showSideView","Storage","Components","SideView","show","hideSideView","hide","showSpinner","Spinner","hideSpinner","onFocusCallback","callback","InteractionManager","runAfterInteractions","parseErrorMsg","error","messages","reduce","previous","message","toString","call","validateEmail","email","test","validatePassword","password","showAlertError","alert","showAlert","title","Alert","text","onPress","cancelable","showConfirm","button","callbackCancel","textCancel","textAgree","showContinue","showLostConnectionAlert","trimTextInObject","obj","forEach","key","trim","clearStringInObject","capitalize","str","toLowerCase","split","i","length","toUpperCase","join","getTodayDateTime","moment","format","getTodayDate","date","add","time","formatCartSummaryDateTime","datetime","formatSuperholicDate","convertToEpochTime","Date","getTime","convertMMMDDYYYYToEpochTime","utc","getImageURL","type","findMatchItemInArrays","subarr","arr","matchItem","some","e2","i2","convertArrayToObject","attr","item","convertObjectToArray","push","popToRoute","route","Navigator","getCurrentRoutes","filter","getImageScaledSize","expectWidth","newWidth","newHeight","ratio","formatPrice","price","Number","isFinite","toFixed","cloneObject","JSON","parse","stringify","findObjectInArray","result","isMatched","every","parseOrderType","parseOrderTypeV2","convertTextToArray","getDiscountDisplay","discounts","discount","amount","value","percentage","reason","promotion","voucher","parseDiscountValueByType","removeArrayElement","index","indexOf","splice","removeArrayFromArray","arrSub","getParamFromUrl","url","paramName","results","RegExp","exec","replace","console","log","Ep","Endpoint","Host","AUTH_KEY","BASE_URL","HOST","_suffixURL","ajaxURL","response","fetch","method","credentials","headers","callbackAfterFetch","distinguishAPIError","post","data","body","callbackAPIError","generateResponseJson","then","json","responseJson","callbackComplete","complete","ok","success","status","_type","API","getStores","storeID","getMenu","getProduct","productId","getCategory","getCategoryById","categoryId","createOrder","postOrder","getTssCustomModifierMapping","getOrder","token","getV2","ActionTypes","keyMirror","AJAX_GET_STORE","SELECT_STORE","AJAX_GET_MENU","AJAX_GET_CUSTOMER_DETAILS","AJAX_GET_CUSTOMER_LATEST_POINTS","AJAX_GET_PROMOTIONS","AJAX_GET_ORDER","AJAX_GET_ORDERS","AJAX_GET_ORDERS_ALL","AJAX_POST_ORDER","SET_ORDER_TYPE","SET_ORDER_TYPE_2","SELECT_TABLE","SELECT_DATETIME_TAKEAWAY","SELECT_VARIANT","SELECT_MODIFIER","RESET_MODIFIER","SELECT_PRODUCT","SELECT_VOUCHER","DESELECT_MODIFIER","SELECT_MODIFIER_V2","ADD_PRODUCT_TO_CART","REMOVE_PRODUCT_FROM_CART","INIT_VARIANT","SET_BOOKING_TYPE","AJAX_LOGOUT","SUBMIT_PROMO_CODE","SET_SOUPERHOLIC","UPDATE_CART_AFTER_CHANGE_STORE","RESET_CART","SET_REWARD_POINTS_IN_CART","UPDATE_PROFILE","SYNC_PERSIST_STORE","CLEAR_PERSIST_STORE","SAVE_PAIR_STATUS","SET_PAYMENT_AMOUNT","SET_PAYMENT_TRANSID","AJAX_GET_BRAND_DATA","ROUTE_CHANGE","UPDATE_MENU_SECTIONS","ADD_PAYMENT_CARD","SET_TOKEN_PAYMENT_ID","SET_GIFT_CARD","SET_FOLIO","SET_MOBILE","SET_ACTION","RESET_ACTION","SET_COUNTDOWN","INIT_MENU","SET_TSS_VOUCHER","SELECT_TSS_VOUCHER","SET_MODIFIER_MAP","StoreActions","getData","AppDispatcher","dispatch","Constants","select","store","summaryIp","sessionId","pricelistId","userId","configId","tableId","selectTable","tableID","selectDatetime","setType","bookingType","OrderActions","selectVariant","variant","selectModifier","modifier","deselectModifier","selectModifierV2","modifierGroup","resetModifierGroup","selectProduct","product","setOrderType","orderType","setOrderType2","MenuActions","updateMenuSection","initMenu","categories","setCustomModifierMapping","modifierMap","_data","_selectedStore","_selectedTable","_selectedTableId","_selectedEpochTime","_selectedDayTakeAway","_timeETA","_isDineInAvailable","_posStoreCode","_categoryId","_configId","_tableId","_token","_summaryIp","_sessionId","_pricelistId","_userId","_findSelectedDayDineIn","day_of_week","_isDineInAvailableInTime","dayOfWeek","startEpoch","start_time","valueOf","endEpoch","end_time","currentEpoch","StoreStore","getAll","getAllStoreForSelectedType","getAllStoreForType","getSelectedStore","checkStoreAvailableForType","getSelectedDayTakeAway","getSelectedTable","getType","getEpochTime","getDateTime","getTables","tables","getETA","clear","setSelectedStore","categoryids","pos_category_ids","substring","kitchen_prep_time","buffer_time","checkDineInAvailable","emitSelect","_ajaxETA","setTable","emitSelectTable","emitChange","emit","addChangeListener","on","removeChangeListener","removeListener","addSelectListener","removeSelectListener","addSelectTableListener","removeSelectTableListener","emitSelectTime","addSelectTimeListener","removeSelectTimeListener","isTypeValid","msgError","setDatetime","_findSelectedDayTakeAway","isDineInAvailable","getPosStoreCode","getCategoryId","getConfigId","getTableId","getQRToken","getSummaryIp","getSessionId","getPriceListId","getUserId","getTableNo","tableno","floor_ids","floor","table_ids","table","parseInt","dispatchData","register","action","res","_getData","_selectedVariant","_currentSubtotal","_selectedProduct","_dateTimeText","epochTime","_isSelectedModifierValid","_orderType","_initEachModifierQuantityToVariant","isForced","modifier_group_line_ids","product_modifier_ids","isAddedToCart","pre_selected","quantity","_calculateCurrentSubtotal","currentSubtotal","lst_price","list_price","numberSelectedModifier","_checkSelectedModifierValid","min_modifier","max_modifier","OrderStore","getStore","setType2","isValid","setTableId","setEpochTime","setStore","setSelectedVariant","isAdded","emitChangeVariant","setSelectedModifier","SelectModifierV2","modifierr","setSelectedProduct","product_variant_ids","_findSelectedVariant","getType2","getTypeText","getDatetime","getTable","getStoreName","getSelectedProduct","getSelectedVariant","getCurrentSubtotal","getModifierGroups","isSelectedModifierValid","addChangeVariantListener","removeChangeVariantListener","clearSelectedStore","checkModifierGroupsValid","modifierGroupsValid","Splash","state","getTimezoneOffset","Navigation","setState","ImageBackground","Text","Component","LoadMenu","bind","setTypeStore","setBookingToStores","navigateHome","urlParams","URLSearchParams","window","location","search","table_id","summary_ip","session_id","user_id","setTimeout","oT","selectedStore","find","undefined","ImageProduct","getImageSize","imageHeight","imageWidth","uri","imageID","Image","scaledImage","source","resizeMode","RadioModifierGroup","variants","selected","TouchableRadio","TouchableOpacity","Ionicons","attribute_value_ids","ImageIconPlus","IconPlus","disabled","ImageIconMinus","IconMinus","Modifier","renderPrice","renderAdd","updateModifierValid","updateModifier","reselectModifier","onModifierChange","toggleCustomModifiers","max_qty","onPressMinus","onPressPlus","product_id","modifierGroups","modifiers","isOos","isDisabled","available_in_store","oos_store","x","disabled_store","ref","modifierNodes","set","description","BoxQuantity","renderRadio","CartActions","addProductToCart","qty","removeProduct","cartID","errorCallback","isRedemption","updateCartAfterChangeStore","reset","setPaymentAmount","setPaymentTransId","transId","timeoutResetCart","_orderAttrType","_authToken","RCTUIManager","UIManager","styles","blurBg","productStyles","popupContainer","maxHeight","qtyInput","ProductModal","handleModifierScroll","addProduct","hideProduct","renderProductQty","Map","productQty","isOne","modifierY","event","nativeEvent","contentOffset","y","is_oos","is_timeout","available_for_order","err_msg","category_ids","re","oos_shop_ids","shop_id","pos_category_day_ids","today","dayname","toLocaleDateString","weekday","getHours","getMinutes","activeTime","checkModifierValid","do_scroll","modifierValid","modifierNode","findNodeHandle","measure","fx","fy","w","h","px","py","modifierScroll","scrollTo","animated","err","msg","onProductClose","containerNumber2","cart","Modal","animationType","visible","ScrollView","scrollEventThrottle","onScroll","imgWidth","imgHeight","productSubtotal","description_sale","ProductDescription","products","displayProducts","serverProducts","extraCharges","promotions","vouchers","promoCodes","discountId","_grandTotal","_subtotal","_discountAmount","_isAvailable","_discounts","_fulfillmentTime","_discountsDisplay","_discountsDisplayPromoCode","_discountsDisplayVouchers","_order","_rewardPoints","_promotionsAll","_postOrder","_clearOrderBeforePost","order","jsonrpc","subtotal","total","CartStore","resetProductServer","_assignCartIDToServerProducts","items","string","service_charge","_updateProductFromServer","_setDiscount","_setTimeoutClearCart","emitChangeProductCart","resetTo","hasPrevRoute","serverProduct","pluCode","_setAddedModifiersFromServerProduct","serverModifiers","serverModifierIDs","modifierId","serverQuantityModifiers","includes","uid","productUniqueId","_setModifiersFromServerProduct","_resetTotal","clearTimeout","resetCart","emitExpireCart","_filterDiscountsDisplay","_resetDiscountDisplay","pricelist_id","draft","origin","getDisplayProducts","orderProduct","productName","productPrice","variantName","variantPrice","modifierGroupName","groupName","modifierName","_addCartMarkToModifiers","discountsDisplay","updatedProduct","setProductUniqueId","_updateProduct","_setVariantAddedToCart","isNewProduct","updateDisplayProducts","displayProduct","default_code","currentProduct","newProduct","voucherCode","getSubtotal","getDiscountAmount","getSubtotalAfterDiscount","subtotalAfterDiscount","extraCharge","max","getSubtotalAfterDiscount_wo_giftcard","getGrandTotal","getPaymentsTotal","paymentTotal","payment","getPayments","getExtraCharge","getServerProducts","getQuantity","getProductQuantity","productID","getDiscountsDisplay","getDiscountsDisplayPromoCodes","getTssDiscounts","getDiscountsDisplayVouchers","getSelectedVouchers","getFulfillmentTime","getRewardPoints","getGiftCardRewardPoints","hasProducts","isEmpty","addChangeProductCart","removeChangeProductCart","addExpireCartListener","removeExpireCartListener","emitSuccessfulPayment","addSuccessfulPaymentListener","removeSuccessfulPaymentListener","filterProductsAfterChangeType","findProduct","getPromotionNotIncludesType","promotionNotApplicable","selectedPromotions","concat","selectedPromotion","isUnavailable","paymentTypes","getPromotionHasNoCreditCard","getPromotionIncludesType","promotionForPaymentType","setCartExpired","isPromoOrVoucherApplied","getPromotions","getPointPayment","setAuthToken","getAuthToken","resetTssDiscount","setMaxListeners","newProductIds","_paymentAmount","_paymentTransId","_sections","_categories","_modifierMap","_brand","_initMenuSections","category","section","_getMenuSections","productNoSubCategory","subcategories","_updateQuantityForProductInArray","productArray","serversProducts","subcategoryIDs","child_id","subcategory","_addProductsToCategories","_removeEmptySubcategories","_disableUnavailableSubcategories","_hideUnavailableSubcategories","sort","a","b","sequence","selectedCategory","categoryID","available","oos","isAvail","startTime","endTime","pos_available_time_ids","start_hour","start_mins","end_hour","end_mins","slice","_addCartQuantityToProduct","c","_subcategories","_children","child","_products","_sortCategories","_sortSubCategories","_sortProducts","product_sequence","_sortProductsModifiers","MenuStore","getMultipleCategories","categoryIDs","isInteger","getMenuDetailsSections","getCategories","getCategoriesV2","getBrand","checkProductAvailability","take_away","dine_in","checkCartProductsAvailability","productsNotAvailable","cartProducts","storeType","getAllProducts","getModifierMap","product_template_ids","hasOwnProperty","_updateMenuSections","contentBox","categoryContainer","container","subcategoryContainer","categoryName","cartSection","cartButton","cartQtyBox","menuContainer","Home","onCartChange","MenuDetails","onVariantChange","handleScroll","sortProducts","navigateWelcome","navigateToProduct","refreshView","applyTssCustomModifier","renderTopNav","renderSubCategory","renderPopupMsg","renderProducts","renderContent","hidePopupMsg","sections","activeIndex","nodes","positions","subPositions","grandTotal","showProduct","cartQuantity","showPopupMsg","pos","pos2","j","node","node2","position2","BreakException","subScroll","sortedProducts","productChunk","modifierMaps","newModifierGroups","modifier1","modifier2","apply_to_show","mg","m","newMG","parentModifier","mg2","modifierValids","offset","myScroll","len","horizontal","sortedProduct","Cart","itemCount","navigateToCart","ProductBox","OrderInfo","bottomSeparator","suggestionItem","spaceTop","minWidth","maxWidth","breadcum","productImg","navigateMenu","renderConfirmOrder","onConfirmOrder","refreshingData","hasCard","numberValid","expiryValid","cvcValid","cardNumber","expiryMonth","expiryYear","cvc","spawnSlash","spawnDash1","spawnDash2","spawnDash3","spawnDash4","showPaymentCard","navigation","price_unit","price_subtotal","price_subtotal_incl","modifier_line","cartId","parseFloat","param","summary_printer_ip","pos_reference","amount_tax","amount_total","amount_paid","amount_return","lines","order_mode","error_descrip","KeyboardAvoidingView","CartDetails","Products","editProduct","keyboardShouldPersistTaps","containerVeryTiny","_key","containerVeryXTiny","Subtotal","Discount","ExtraCharges","k","GrandTotal","ProductVariant","fontDark","Confirmation","renderDone","subTotal","showDone","smallSpinner","SectionBlackTop","containerVerticalTop","Lost","customBtnStyle1","customBtnStyle2","customBtnSpacing","Login","orderExist","isCheck","img_url","address","line1","navigateMyOrder","CheckBox","onValueChange","ExtraCharge","fontBlackTransparent","money","Modifiers","DiscountProducts","discount_products","Total","ProductOrder","MyOrder","line","modifier_lines","renderTopNavBar","persistentScrollbar","Expired","Offset","Stack","createStackNavigator","ParentStack","initialRouteName","screenOptions","gestureEnabled","gestureDirection","Screen","component","options","headerShown","Welcome","isShowed","animating","scale","SoupSpoonWeb","useFonts","_loadFontsAsync","headTag","document","querySelector","icon","createElement","attributeRel","createAttribute","attributeHref","setAttributeNode","appendChild","NavigationContainer","StatusBar","AppRegistry","registerComponent","expo","ReactDOM","createRoot","getElementById","render"],"mappings":"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","file":"static/js/app.52b7053b.chunk.js","sourcesContent":["var Dispatcher = require('flux').Dispatcher;\n\nmodule.exports = new Dispatcher();","module.exports = Colors = {\n yellow: '#FFFF00',\n grey: '#CCCCCC',\n greyDark: '#BBBBBC',\n blackSecond: '#252931',\n blackSecondDark: '#1C2027',\n lightGrey: '#4B4B4B',\n soupOrange: '#FFA500',\n whiteTransparent: 'rgba(255,255,255,0.5)',\n blackTransparent: 'rgba(0,0,0,0.5)',\n greyTransparent: 'rgba(190,190,190,0.5)',\n red: '#E02315',\n xdark: '#333',\n darkStatusBar: '#50535B',\n DarkOrange: '#9E621E',\n Pink: \"#FFD1B8\",\n DarkBlue: \"#010353\",\n Gray: \"#9B99A9\",\n DarkGreen: \"#1A3B49\",\n LightPink: \"#FFD3C3\",\n Green: \"#B4D4BC\",\n DarkPink: \"#F8AB9E\",\n LightOrange: \"#fee1d1\",\n\n white: '#FFFFFF',\n black: '#000000',\n Ivory: '#f8f5f0',\n Orange: \"#ca6d4f\",\n HeavyOrange: \"#A1412B\",\n\n // Obbar\n RustRed: '#A2412B',\n PeachPuff: '#F5DBD3',\n Linen: '#FAF7F1',\n\n // JJK\n Ming: '#357767',\n LightCoral: '#f3746f',\n }\n ","module.exports = \"data:font/ttf;base64,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AM8A0ADRABAA0gDTANQA1QDWANcA2ADZANoA2wDcAN0A3gDfAOAA4QDiAOMA5ADlAOYAAAAAABAAAADsCQoFAAMDAgMFBQgFAwICAwUDAwMDBQUFBQUFBQUFBQMDBQUFBQcGBgYGBQUHBgIFBgUHBgcGBwYGBQYFCAUFBQIDAgUFAgUFBQUFAgUFAgIFAgcFBQUFAwQDBQQHBAQEAwIDBQIFBQUFAgUCBwMEBQcEBQMDAgUCAwMECAgIBQYGBgYGBggGBQUFBQICAgIGBgcHBwcHBQcGBgYGBQYFBQUFBQUFCAUFBQUFAgICAgUFBQUFBQUFBQUFBQUEBQQCBQIKCAYEBQUEBQICAgICAgICAgUFCQMDAwMDAwUFBQkKAgICCQUDBAQDAAAKCwUAAwMCBAYGCQYDAgIEBgMEAwMGBgYGBgYGBgYGAwMGBgYFCAYHBwcGBQcHAgUGBQgHBwYHBwYGBwYJBgYGAgMCBgUCBQYFBgUDBgUCAgUCCAUGBgYDBQMFBQcFBQUDAgMGAgYGBgYCBgIIAwQGCAQGAwMCBgIDAwQICAgFBgYGBgYGCQcGBgYGAgICAgcHBwcHBwcGBwcHBwcGBgUFBQUFBQUJBQUFBQUCAgICBgUGBgYGBgYGBQUFBQUGBQIFAgsJBgUGBgUGAgICAgICAgICBQUKAwMDBAQEBgYFCgsDAwIKBgMEBAMAAAsMBgADAwMEBgYKBwMDAwQHAwQDBAYGBgYGBgYGBgYDAwcHBwYJBwcICAcGCAgCBgcGCQgIBwgHBwYIBwoGBwYDBAMHBgIGBgYGBgMGBgICBgIJBgYGBgMFAwYFCAUFBQQCBAcDBgYGBgIGAgkDBQcJBAcEBAIHAgQEBQkJCQYHBwcHBwcKCAcHBwcCAgICCAgICAgICAcICAgICAcHBgYGBgYGBgoGBgYGBgICAgIGBgYGBgYGBwYGBgYGBQYFAgYCDAoHBQcGBQYCAgICAgICAgIGBgsDAwMEBAQGBgYLDAMDAgsHAwUFAwAADA0GAAMDAwQHBwsHAwMDBAcDBAMEBwcHBwcHBwcHBwMDBwcHBgoICAgIBwYJCAMGCAYKCAkICQgIBwgHCwcHBwMEAwcGAgYHBgcGAwcGAgIGAgoGBwcHBAYEBgYJBgYGBAMEBwMHBwcHAwcCCgQFBwoFBwQEAgcCBAQFCgoKBggICAgICAsIBwcHBwMDAwMICAkJCQkJBwkICAgIBwgGBgYGBgYGCgYGBgYGAgICAgcGBwcHBwcHBwYGBgYGBwYCBgINCwgGBwcGBwICAgICAgICAgYGDAMDAwQEBAcHBgwNAwMCDAcDBQUDAAANDgcABAQDBQcHDAgEAwMFCAQFBAQHBwcHBwcHBwcHBAQICAgHCggJCQkIBwoJAwcIBwsJCggKCQgHCQgMBwgHAwQDCAcCBwcHBwcDBwcCAgcCCwcHBwcEBgQHBgoGBgYEAwQIAwcHBwcDBwIKBAYICgUIBAQCCAIEBAYLCwsHCAgICAgIDAkICAgIAwMDAwkJCgoKCgoICgkJCQkICAcHBwcHBwcLBwcHBwcCAgICBwcHBwcHBwgHBwcHBwYHBgIHAg4MCAYIBwYHAgICAgICAgICBwcNBAQEBQUFBwcHDQ4DAwINCAQGBgQAAA4QBwAEBAMFCAgMCQQDAwUIBAUEBQgICAgICAgICAgEBAgICAgLCQkKCggICgoDBwkIDAoKCQoJCQgKCA0ICQgDBQMIBwMHCAcIBwQICAMDBwMMCAgICAQHBAgGCgcGBgUDBQgDCAgICAMIAwsEBggLBggFBQMIAwUFBgwMDAgJCQkJCQkNCggICAgDAwMDCgoKCgoKCggKCgoKCgkJCAcHBwcHBwwHBwcHBwMDAwMICAgICAgICAgICAgIBggGAwgDDwwJBwkIBggDAwMDAwMDAwMIBw4EBAQFBQUICAcOEAQEAg4IBAYGBAAADxEIAAQEBAYICA0JBAQEBQkEBgQFCAgICAgICAgICAQECQkJCAwJCgsKCQgLCwMICggMCwsJCwoJCAoJDgkJCQQFBAkIAwgJCAkIBAgIAwMIAwwICAkJBQcECAcLBwcHBQMFCQQICAgIAwgDDAUGCQwGCQUFAwkDBQUGDQ0NCAkJCQkJCQ4LCQkJCQMDAwMKCwsLCwsLCQsKCgoKCQkICAgICAgIDQgICAgIAwMDAwgICAgICAgJCAgICAgHCQcDCAMQDQkHCQkHCAMDAwMDAwMDAwgIDwQEBAYGBggICA8RBAQDDwkEBwcEAAAQEggABAQEBgkJDgoEBAQGCgQGBAUJCQkJCQkJCQkJBAQKCgoJDQoLCwsJCQwLBAgKCQ0LDAoMCwoJCwkPCQoJBAUECggDCAkICQgECQkDAwgDDQkJCQkFCAUJBwwIBwcFBAUKBAkJCQkECQMNBQcKDQYKBQUDCgMFBQcNDQ0JCgoKCgoKDwsJCQkJBAQEBAsLDAwMDAwKDAsLCwsKCgkICAgICAgOCAgICAgDAwMDCQkJCQkJCQoJCQkJCQcJBwMJAxEOCggKCQcJAwMDAwMDAwMDCQgQBAQEBgYGCQkIEBIEBAMQCgQHBwQAABETCQAFBQQGCQkPCgUEBAYKBQYFBgkJCQkJCQkJCQkFBQoKCgkOCwsMDAoJDQwECQsJDgwNCw0LCwkMCg8KCgoEBgQKCQMJCgkKCQQJCQMDCQMOCQkKCgUIBQkIDQgICAYEBgoECQkJCQQJAw4FBwoOBwoGBgMKAwYGBw4ODgkLCwsLCwsPDAoKCgoEBAQEDAwNDQ0NDQoNDAwMDAoLCQkJCQkJCQ8JCQkJCQMDAwMJCQkJCQkJCgkJCQkJCAoIAwkDEg8LCAoKCAkDAwMDAwMDAwMJCREFBQUGBgYJCQkREwQEAxEKBQgIBQAAEhQJAAUFBAcKChALBQQEBgsFBwUGCgoKCgoKCgoKCgUFCwsLCg4LDA0MCwoNDQQJDAoPDQ0LDQwLCgwLEAoLCgQGBAsJAwkKCQoJBQoKAwMJAw8KCgoKBgkFCggNCQgIBgQGCwQKCgoKBAoDDgYICw4HCwYGAwsDBgYIDw8PCgsLCwsLCxANCwsLCwQEBAQMDQ0NDQ0NCw0MDAwMCwsKCQkJCQkJEAkJCQkJAwMDAwoKCgoKCgoLCgoKCgoICggDCgMTEAsJCwoICgMDAwMDAwMDAwoJEgUFBQcHBwoKCRIUBQUDEgsFCAgFAAATFQoABQUFBwsLEQwFBQUHCwUHBQYLCwsLCwsLCwsLBQULCwsKDwwNDQ0LCg4NBAoMChANDgwODQwLDQsRCwwLBQYFCwoECgsKCwoFCwoEBAoEEAoLCwsGCQYKCQ4JCQkGBAYLBQsLCwsECwQPBggLDwgLBgYECwQGBggQEBAKDAwMDAwMEQ0LCwsLBAQEBA0NDg4ODg4LDg0NDQ0MDAoKCgoKCgoRCgoKCgoEBAQECwoLCwsLCwsLCgoKCgkLCQQKBBQRDAkMCwkLBAQEBAQEBAQECgoTBQUFBwcHCwsKExUFBQMTCwUICAUAABQWCgAGBgUHCwsSDAYFBQcMBgcGBwsLCwsLCwsLCwsGBgwMDAsQDQ0ODgwLDw4ECg0LEQ4PDQ8NDQsODBILDAsFBwUMCgQKCwoLCgULCwQECgQRCwsLCwYKBgsJDwoJCQcEBwwFCwsLCwQLBBAGCQwQCAwHBwQMBAcHCREREQsNDQ0NDQ0SDgwMDAwEBAQEDg4PDw8PDwwPDg4ODgwNCwoKCgoKChEKCgoKCgQEBAQLCwsLCwsLDAsLCwsLCQsJBAsEFRINCgwLCQsEBAQEBAQEBAQLChQGBgYHBwcLCwoUFgUFAxQMBgkJBgAAFRcLAAYGBQgMDBMNBgUFBw0GCAYHDAwMDAwMDAwMDAYGDQ0NCxENDg8ODAsQDwULDgsRDxANEA4NDA4MEwwNDAUHBQ0LBAsMCwwLBQwLBAQLBBELDAwMBwoGCwoQCgoKBwUHDQUMDAwMBQwEEQcJDREIDQcHBA0EBwcJEhISCw0NDQ0NDRMPDAwMDAUFBQUODxAQEBAQDRAODg4ODQ0LCwsLCwsLEgsLCwsLBAQEBAwLDAwMDAwNDAsLCwsKDAoECwQXEw0KDQwKDAQEBAQEBAQEBAsLFQYGBggICAwMCxUXBQUEFQ0GCQkGAAAWGAsABgYFCAwMFA0GBQUIDQYIBgcMDAwMDAwMDAwMBgYNDQ0MEg4PDw8NDBAPBQsODBIPEA4QDw4MDw0UDQ0NBQcFDQsECw0LDQsGDAwEBAsEEgwMDQ0HCwcMChALCgoHBQcNBQwMDAwFDAQSBwkNEgkNBwcEDQQHBwkSEhIMDg4ODg4OFA8NDQ0NBQUFBQ8PEBAQEBANEA8PDw8NDgwLCwsLCwsTCwsLCwsEBAQEDAwMDAwMDA0MDAwMDAoNCgQMBBgUDgsNDQoMBAQEBAQEBAQEDAsWBgYGCAgIDAwLFhgGBgQWDQYKCgYAABcaDAAGBgYJDQ0UDgYGBggOBgkGCA0NDQ0NDQ0NDQ0GBg4ODgwSDg8QEA4MERAFDA8MExARDhEPDg0QDhUNDg0GCAYODAQMDQwNDAYNDAQEDAQTDA0NDQcLBwwLEQsLCwgFCA4GDQ0NDQUNBBIHCg4SCQ4ICAQOBAgIChMTEwwODg4ODg4VEA4ODg4FBQUFEBAREREREQ4REBAQEA4ODAwMDAwMDBQMDAwMDAQEBAQNDA0NDQ0NDg0MDAwMCw0LBAwEGRQOCw4NCw0EBAQEBAQEBAQMDBcGBgYJCQkNDQwXGgYGBBcOBgoKBgAAGBsMAAcHBgkNDRUPBwYGCA4HCQcIDQ0NDQ0NDQ0NDQcHDg4ODRMPEBEQDg0SEQUMEA0UERIPEhAPDRAOFg4PDgYIBg4MBAwODA4MBg0NBAQMBBQNDQ4OCAwHDQsSDAsLCAUIDgYNDQ0NBQ0EEwcKDhMKDggIBA4ECAgKFBQUDQ8PDw8PDxYRDg4ODgUFBQUQERISEhISDhIQEBAQDw8NDAwMDAwMFQwMDAwMBAQEBA0NDQ0NDQ0ODQ0NDQ0LDgsEDQQaFQ8MDw4LDQQEBAQEBAQEBA0MGAcHBwkJCQ0NDBgbBgYEGA4HCwsHAAAAAQGtAZAABQAAArwCigAAAI8CvAKKAAABxQAyAQMAAAAABAAAAAAAAAAAAAADAAAAAAAAAAAAAAAATUFDUgBAACDwAgPH/y0AAAPHANMAAAABAAAAAAAAAAEAAIAAAAABFgIEAABgAALKAnVIZWx2ZXRpY2FOZXUgICAg/////zf///5IRUxSMDAAAAAAAAAAAQAAAAEAAFaQtZNfDzz1AAAD6AAAAACyZ05IAAAAALJnTkj/Wv8tBBoDxwAAAAMAAgABAAAAAAABAAADx/8tAAAEV/9a/1kEGgABAAAAAAAAAAAAAAAAAAAA6AABAAAA6ABLAAcAUAAEAAIACABAAAoAAABrAMwAAgAB\"","module.exports = \"data:font/ttf;base64,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ADUANgA3ADgAOQA6ADsAPAA9AD4APwBAAEEAQgBDAEQARQBGAEcASABJAEoASwBMAE0ATgBPAFAAUQBSAFMAVABVAFYAVwBYAFkAWgBbAFwAXQBeAF8AYABhAGIAYwBkAGUAZgBnAGgAaQBqAGsAbABtAOMAbgDKAG8AcABxAHIAcwDRAHQA5AB1AHYAdwB4AHkAegB7AHwAfQB+AH8AgACBAIIAgwCEAIUAhgCHAIgAiQCKAIsAjACNAI4AjwCQAJEAkgCTAJQAlQCWAJcAmACZAJoAmwCcAJ0AngCfAKAAoQCiAKMApAClAKYApwCoAKkAqgCrAKwArQCuAK8AsACxALIAswC0ALUAtgC3ALgAuQC6ALsAvAC9AL4AvwDAAMEAwgDDAMQAxQDGAMcAyADJAMoAywDMAM0AzgDPANAA0QAQANIA0wDUANUA1gDXANgA2QDaANsA3ADdAN4A3wDgAOEA4gDjAOQA5QDmAAAAAAAQAAAA7AkKBQADAwMEBQUJBgMDAwQFAwQDAwUFBQUFBQUFBQUDAwUFBQUHBgYHBwYFBwcDBQYFCAcHBgcGBgUHBggGBgYDAwMFBQIFBQUFBQMFBQIDBQIIBQUFBQQFAwUFBwUFBQMCAwUDBQUFBQIFAgcDBAUHBAUEBAIGAgQDBAgICAUGBgYGBgYJBwYGBgYDAwMDBwcHBwcHBwUHBwcHBwYGBQUFBQUFBQgFBQUFBQICAgIFBQUFBQUFBQUFBQUFBQUFAgUCCggGBQYGBQUCAgICAgICAgIFBQkDAwMEBAQFBQUJCgICAgkFAwUFAwAACgsFAAMDAwUGBgoHAwMDBAYDBAMEBgYGBgYGBgYGBgMDBgYGBggHBwcHBgYIBwMGBwYJBwgHCAcGBgcGCQcHBgMEAwYFAwYGBgYGAwYGAwMGAwkGBgYGBAUEBgUIBQUFAwIDBgMGBgYGAgYDCAMEBggEBgQEAwYDBAQECQkJBgcHBwcHBwoHBgYGBgMDAwMHBwgICAgIBggHBwcHBwcGBgYGBgYGCQYGBgYGAwMDAwYGBgYGBgYGBgYGBgYFBgUDBgMLCQYFBwYFBgMDAwMDAwMDAwYFCgMDAwUFBQYGBQoLAgICCgYDBgYDAAALDQYAAwMDBQYGCwgDAwMEBwMEAwQGBgYGBgYGBgYGAwMHBwcGCQgICAgHBwgIAwYIBwoICQcJCAcHCAcKBwcHBAQEBwYDBgcGBwYEBwcDAwYDCgcHBwcEBgQHBgkGBgYEAgQHAwYGBgYCBgMJBAUHCQQHBAQDBwMEBAUKCgoGCAgICAgICwgHBwcHAwMDAwgICQkJCQkHCQgICAgHBwcGBgYGBgYKBgYGBgYDAwMDBwcHBwcHBwcHBwcHBwYHBgMHAwwKBwYHBwYGAwMDAwMDAwMDBwYLAwMDBQUFBgYGCw0DAwILBwMHBwMAAAwOBgADAwMGBwcMCAMEBAUHAwUDBAcHBwcHBwcHBwcDAwcHBwcKCAgJCQgHCQkEBwkHCwkJCAkJCAcJCAsICAgEBAQHBgMHBwcHBwQHBwMDBwMLBwcHBwUGBAcGCgYGBgQDBAcDBwcHBwMHAwoEBQcKBQcFBQMHAwUEBQsLCwcICAgICAgMCQgICAgEBAQECQkJCQkJCQcJCQkJCQgIBwcHBwcHBwsHBwcHBwMDAwMHBwcHBwcHBwcHBwcHBgcGAwcDDQsIBggIBgcDAwMDAwMDAwMHBgwDAwMGBgYHBwYMDgMDAgwHAwcHAwAADQ8HAAQEBAYHBw0JBAQEBQgEBQQFBwcHBwcHBwcHBwQECAgIBwoJCQoKCAgKCgQHCQgMCgoJCgkICAoIDAkJCAQFBAgHAwcIBwgHBAgIAwQHAwwICAgIBQcFCAcLBwcHBAMECAQHBwcHAwcDCgQGCAoFCAUFAwgDBQUGDAwMBwkJCQkJCQ0KCAgICAQEBAQKCgoKCgoKCAoKCgoKCQkIBwcHBwcHDAcHBwcHAwMDAwgICAgICAgICAgICAgHCAcDCAMODAgHCQgHBwMDAwMDAwMDAwgHDQQEBAYGBgcHBw0PAwMCDQgECAgEAAAOEAcABAQEBggIDgoEBAQGCAQGBAUICAgICAgICAgIBAQICAgICwoKCgoJCAsKBAgKCA0KCwkLCgkJCgkNCQkJBQUFCAcECAkICQgFCQgEBAgEDQgJCQkFCAUIBwsIBwcFAwUIBAgICAgDCAQLBQYICwYIBQUECQQFBQYMDAwICgoKCgoKDgoJCQkJBAQEBAoKCwsLCwsICwoKCgoJCQkICAgICAgNCAgICAgEBAQECQgJCQkJCQgJCAgICAcJBwQIBA8NCQgJCQcIBAQEBAQEBAQECAcOBAQEBgYGCAgHDhADAwIOCAQJCQQAAA8RCAAEBAQHCAgPCgQEBAYJBAYEBggICAgICAgICAgEBAkJCQgMCgsLCwoJCwsECAsJDgsMCgwLCgkLCQ4KCgoFBgUJCAQJCQkJCQUJCQQECQQOCQkJCQYIBQkIDAgICAUDBQkECAgICAMIBAwFBwkMBgkGBgQJBAYGBw0NDQgKCgoKCgoPCwoKCgoEBAQECwsMDAwMDAkMCwsLCwoKCQkJCQkJCQ4JCQkJCQQEBAQJCQkJCQkJCQkJCQkJCAkIBAkEEA4KCAoKCAgEBAQEBAQEBAQJCA8EBAQHBwcICAgPEQQEAw8JBAkJBAAAEBIIAAQEBAcJCRALBAUFBwoEBwQGCQkJCQkJCQkJCQQECgoKCQ0LCwwMCgkMDAUJDAkPDAwLDAwKCgwKDwsLCgUGBQoIBAkKCQoJBQoJBAQJBA4JCgoKBgkGCQgNCQgIBQQFCgQJCQkJBAkEDQYHCg0GCgYGBAoEBgYHDg4OCQsLCwsLCxAMCgoKCgUFBQUMDAwMDAwMCgwMDAwMCwsKCQkJCQkJDwkJCQkJBAQEBAoJCgoKCgoKCgkJCQkICggECQQRDwoJCwoICQQEBAQEBAQEBAkIEAQEBAcHBwkJCBASBAQDEAoECgoEAAAREwkABQUFCAkJEQwFBQUHCgUHBQYJCQkJCQkJCQkJBQUKCgoJDgwMDQ0LCg0NBQkMCg8NDQsNDAsKDQsQCwsLBgYGCgkECgoKCgoGCgoEBQoEDwoKCgoHCQYKCQ4JCQkGBAYKBQkJCQkECQQOBggKDgcKBwcECwQHBggPDw8JDAwMDAwMEQ0LCwsLBQUFBQ0NDQ0NDQ0KDQ0NDQ0LCwoKCgoKCgoPCgoKCgoEBAQECgoKCgoKCgoKCgoKCgkKCQQKBBMQCwkLCwkJBAQEBAQEBAQECgkRBQUFCAgICQkJERMEBAMRCgUKCgUAABIVCQAFBQUICgoSDAUFBQcLBQcFBwoKCgoKCgoKCgoFBQsLCwoODA0NDQwLDg0FCg0LEA0ODA4NDAsNCxEMDAwGBwYLCQUKCwoLCgYLCwUFCgUQCwsLCwcKBgsJDwoJCQYEBgsFCgoKCgQKBQ4GCAsOBwsHBwULBQcHCBAQEAoMDAwMDAwSDQwMDAwFBQUFDQ0ODg4ODgsODQ0NDQwMCwoKCgoKChAKCgoKCgUFBQULCwsLCwsLCwsLCwsLCQsJBQsFFBEMCgwMCQoFBQUFBQUFBQULCRIFBQUICAgKCgkSFQQEAxILBQsLBQAAExYKAAUFBQkLCxMNBQYGCAsFCAUHCwsLCwsLCwsLCwUFCwsLCw8NDQ4ODAsODgYLDgsRDg8NDw4MDA4MEg0NDAYHBgsKBQsMCwwLBgwLBQULBRELDAwMBwoHCwoPCgoKBgQGCwULCwsLBAsFDwcICw8ICwcHBQwFBwcIERERCw0NDQ0NDRMODAwMDAYGBgYODg8PDw8PCw8ODg4ODQ0MCwsLCwsLEQsLCwsLBQUFBQwLDAwMDAwLDAsLCwsKDAoFCwUVEgwKDQwKCwUFBQUFBQUFBQsKEwUFBQkJCQsLChMWBQUDEwsFDAwFAAAUFwoABgYGCQsLFA4GBgYIDAYIBgcLCwsLCwsLCwsLBgYMDAwLEA4ODw8NDA8PBgsODBIPEA0QDg0MDw0TDQ0NBwcHDAoFCwwLDAsHDAwFBgsFEgwMDAwICwcMChALCgoHBAcMBgsLCwsECwUQBwkMEAgMCAgFDAUIBwkSEhILDg4ODg4OFA8NDQ0NBgYGBg8PEBAQEBAMEA8PDw8NDQwLCwsLCwsSCwsLCwsFBQUFDAwMDAwMDAwMDAwMDAoMCgUMBRYTDQsNDQoLBQUFBQUFBQUFDAoUBgYGCQkJCwsKFBcFBQMUDAYMDAYAABUYCwAGBgYKDAwVDgYGBgkNBgkGCAwMDAwMDAwMDAwGBg0NDQwRDg8QEA4MEBAGDA8MExAQDhAPDg0QDRQODg4HCAcNCwUMDQwNDAcNDAUGDAUTDA0NDQgLBwwLEQsLCwcFBw0GDAwMDAUMBREHCQ0RCA0ICAUNBQgICRMTEwwODg4ODg4VEA4ODg4GBgYGEBAQEBAQEA0QEBAQEA4ODQwMDAwMDBMMDAwMDAUFBQUNDA0NDQ0NDQ0MDAwMCw0LBQwFFxMOCw4OCwwFBQUFBQUFBQUMCxUGBgYKCgoMDAsVGAUFBBUNBg0NBgAAFhkLAAYGBgoMDBYPBgcHCQ0GCQYIDAwMDAwMDAwMDAYGDQ0NDBIPDxAQDg0REAYMEA0UEBEPERAODRAOFQ8PDgcIBw0LBg0NDQ0NBw0NBgYNBhQNDQ0NCQwIDQsSDAsLBwUHDQYMDAwMBQwGEggKDRIJDQkJBg4GCQgKFBQUDA8PDw8PDxYQDg4ODgYGBgYQEBERERERDREQEBAQDw8NDQ0NDQ0NFA0NDQ0NBgYGBg0NDQ0NDQ0NDQ0NDQ0LDQsGDQYYFA4MDw4LDAYGBgYGBgYGBg0LFgYGBgoKCgwMCxYZBQUEFg0GDQ0GAAAXGgwABgYGCw0NFxAGBwcJDgYJBgkNDQ0NDQ0NDQ0NBgYODg4NEhAQEREPDhERBw0RDhUREg8SEQ8OEQ4WDw8PCAkIDgwGDQ4NDg0IDg4GBg0GFQ4ODg4JDAgODBMMDAwIBQgOBg0NDQ0FDQYSCAoOEgkOCQkGDgYJCAoVFBQNEBAQEBAQFxEPDw8PBwcHBxEREhISEhIOEhEREREPDw4NDQ0NDQ0VDQ0NDQ0GBgYGDg4ODg4ODg4ODg4ODgwODAYOBhkVDwwPDwwNBgYGBgYGBgYGDgwXBgYGCwsLDQ0MFxoGBgQXDgYODgYAABgcDAAHBwcLDQ0YEAcHBwoOBwoHCQ0NDQ0NDQ0NDQ0HBw4ODg0TEBESEhAOEhIHDREOFhITEBMREA8SDxcQEBAICQgODAYODw4PDggPDgYHDgYWDg8PDwkNCA4MFA0MDAgFCA4HDQ0NDQUNBhMICw4TCg4JCQYPBgkJCxUVFQ0QEBAQEBAYEhAQEBAHBwcHEhITExMTEw4TEhISEhAQDw4ODg4ODhYODg4ODgYGBgYPDg8PDw8PDg8ODg4ODA8MBg4GGhYQDRAQDA0GBgYGBgYGBgYODBgHBwcLCwsNDQwYHAYGBBgOBw8PBwAAAAEB3gGQAAUAAgK8AooAAACPArwCigAAAcUAMgEDAAAAAAQAAAAAAAAAAAAAAwAAAAAAAAAAAAAAAE1BQ1IAQAAg8AIDz/8mAAADzwDaAAAAAQAAAAAAAAABAACAAAAAARYCBQAAYAACygJ1SGVsdmV0aWNhTmV1ICAgIP////83///+SEVMUjAwAAAAAAAAAAEAAAABAABncdg/Xw889QAAA+gAAAAAsilZdAAAAACyKVl0/1r/JgQ2A88AAAADAAIAAQAAAAAAAQAAA8//JgAABHv/Wv9aBDYAAQAAAAAAAAAAAAAAAAAAAOgAAQAAAOgAVQAHAEQABAACAAgAQAAKAAAAYAC5AAIAAQ==\"","module.exports = __webpack_public_path__ + \"static/media/TSS_Background.e1c79d89.jpg\";","var map = {\n\t\"./af\": 123,\n\t\"./af.js\": 123,\n\t\"./ar\": 124,\n\t\"./ar-dz\": 125,\n\t\"./ar-dz.js\": 125,\n\t\"./ar-kw\": 126,\n\t\"./ar-kw.js\": 126,\n\t\"./ar-ly\": 127,\n\t\"./ar-ly.js\": 127,\n\t\"./ar-ma\": 128,\n\t\"./ar-ma.js\": 128,\n\t\"./ar-sa\": 129,\n\t\"./ar-sa.js\": 129,\n\t\"./ar-tn\": 130,\n\t\"./ar-tn.js\": 130,\n\t\"./ar.js\": 124,\n\t\"./az\": 131,\n\t\"./az.js\": 131,\n\t\"./be\": 132,\n\t\"./be.js\": 132,\n\t\"./bg\": 133,\n\t\"./bg.js\": 133,\n\t\"./bm\": 134,\n\t\"./bm.js\": 134,\n\t\"./bn\": 135,\n\t\"./bn-bd\": 136,\n\t\"./bn-bd.js\": 136,\n\t\"./bn.js\": 135,\n\t\"./bo\": 137,\n\t\"./bo.js\": 137,\n\t\"./br\": 138,\n\t\"./br.js\": 138,\n\t\"./bs\": 139,\n\t\"./bs.js\": 139,\n\t\"./ca\": 140,\n\t\"./ca.js\": 140,\n\t\"./cs\": 141,\n\t\"./cs.js\": 141,\n\t\"./cv\": 142,\n\t\"./cv.js\": 142,\n\t\"./cy\": 143,\n\t\"./cy.js\": 143,\n\t\"./da\": 144,\n\t\"./da.js\": 144,\n\t\"./de\": 145,\n\t\"./de-at\": 146,\n\t\"./de-at.js\": 146,\n\t\"./de-ch\": 147,\n\t\"./de-ch.js\": 147,\n\t\"./de.js\": 145,\n\t\"./dv\": 148,\n\t\"./dv.js\": 148,\n\t\"./el\": 149,\n\t\"./el.js\": 149,\n\t\"./en-au\": 150,\n\t\"./en-au.js\": 150,\n\t\"./en-ca\": 151,\n\t\"./en-ca.js\": 151,\n\t\"./en-gb\": 152,\n\t\"./en-gb.js\": 152,\n\t\"./en-ie\": 153,\n\t\"./en-ie.js\": 153,\n\t\"./en-il\": 154,\n\t\"./en-il.js\": 154,\n\t\"./en-in\": 155,\n\t\"./en-in.js\": 155,\n\t\"./en-nz\": 156,\n\t\"./en-nz.js\": 156,\n\t\"./en-sg\": 157,\n\t\"./en-sg.js\": 157,\n\t\"./eo\": 158,\n\t\"./eo.js\": 158,\n\t\"./es\": 159,\n\t\"./es-do\": 160,\n\t\"./es-do.js\": 160,\n\t\"./es-mx\": 161,\n\t\"./es-mx.js\": 161,\n\t\"./es-us\": 162,\n\t\"./es-us.js\": 162,\n\t\"./es.js\": 159,\n\t\"./et\": 163,\n\t\"./et.js\": 163,\n\t\"./eu\": 164,\n\t\"./eu.js\": 164,\n\t\"./fa\": 165,\n\t\"./fa.js\": 165,\n\t\"./fi\": 166,\n\t\"./fi.js\": 166,\n\t\"./fil\": 167,\n\t\"./fil.js\": 167,\n\t\"./fo\": 168,\n\t\"./fo.js\": 168,\n\t\"./fr\": 169,\n\t\"./fr-ca\": 170,\n\t\"./fr-ca.js\": 170,\n\t\"./fr-ch\": 171,\n\t\"./fr-ch.js\": 171,\n\t\"./fr.js\": 169,\n\t\"./fy\": 172,\n\t\"./fy.js\": 172,\n\t\"./ga\": 173,\n\t\"./ga.js\": 173,\n\t\"./gd\": 174,\n\t\"./gd.js\": 174,\n\t\"./gl\": 175,\n\t\"./gl.js\": 175,\n\t\"./gom-deva\": 176,\n\t\"./gom-deva.js\": 176,\n\t\"./gom-latn\": 177,\n\t\"./gom-latn.js\": 177,\n\t\"./gu\": 178,\n\t\"./gu.js\": 178,\n\t\"./he\": 179,\n\t\"./he.js\": 179,\n\t\"./hi\": 180,\n\t\"./hi.js\": 180,\n\t\"./hr\": 181,\n\t\"./hr.js\": 181,\n\t\"./hu\": 182,\n\t\"./hu.js\": 182,\n\t\"./hy-am\": 183,\n\t\"./hy-am.js\": 183,\n\t\"./id\": 184,\n\t\"./id.js\": 184,\n\t\"./is\": 185,\n\t\"./is.js\": 185,\n\t\"./it\": 186,\n\t\"./it-ch\": 187,\n\t\"./it-ch.js\": 187,\n\t\"./it.js\": 186,\n\t\"./ja\": 188,\n\t\"./ja.js\": 188,\n\t\"./jv\": 189,\n\t\"./jv.js\": 189,\n\t\"./ka\": 190,\n\t\"./ka.js\": 190,\n\t\"./kk\": 191,\n\t\"./kk.js\": 191,\n\t\"./km\": 192,\n\t\"./km.js\": 192,\n\t\"./kn\": 193,\n\t\"./kn.js\": 193,\n\t\"./ko\": 194,\n\t\"./ko.js\": 194,\n\t\"./ku\": 195,\n\t\"./ku.js\": 195,\n\t\"./ky\": 196,\n\t\"./ky.js\": 196,\n\t\"./lb\": 197,\n\t\"./lb.js\": 197,\n\t\"./lo\": 198,\n\t\"./lo.js\": 198,\n\t\"./lt\": 199,\n\t\"./lt.js\": 199,\n\t\"./lv\": 200,\n\t\"./lv.js\": 200,\n\t\"./me\": 201,\n\t\"./me.js\": 201,\n\t\"./mi\": 202,\n\t\"./mi.js\": 202,\n\t\"./mk\": 203,\n\t\"./mk.js\": 203,\n\t\"./ml\": 204,\n\t\"./ml.js\": 204,\n\t\"./mn\": 205,\n\t\"./mn.js\": 205,\n\t\"./mr\": 206,\n\t\"./mr.js\": 206,\n\t\"./ms\": 207,\n\t\"./ms-my\": 208,\n\t\"./ms-my.js\": 208,\n\t\"./ms.js\": 207,\n\t\"./mt\": 209,\n\t\"./mt.js\": 209,\n\t\"./my\": 210,\n\t\"./my.js\": 210,\n\t\"./nb\": 211,\n\t\"./nb.js\": 211,\n\t\"./ne\": 212,\n\t\"./ne.js\": 212,\n\t\"./nl\": 213,\n\t\"./nl-be\": 214,\n\t\"./nl-be.js\": 214,\n\t\"./nl.js\": 213,\n\t\"./nn\": 215,\n\t\"./nn.js\": 215,\n\t\"./oc-lnc\": 216,\n\t\"./oc-lnc.js\": 216,\n\t\"./pa-in\": 217,\n\t\"./pa-in.js\": 217,\n\t\"./pl\": 218,\n\t\"./pl.js\": 218,\n\t\"./pt\": 219,\n\t\"./pt-br\": 220,\n\t\"./pt-br.js\": 220,\n\t\"./pt.js\": 219,\n\t\"./ro\": 221,\n\t\"./ro.js\": 221,\n\t\"./ru\": 222,\n\t\"./ru.js\": 222,\n\t\"./sd\": 223,\n\t\"./sd.js\": 223,\n\t\"./se\": 224,\n\t\"./se.js\": 224,\n\t\"./si\": 225,\n\t\"./si.js\": 225,\n\t\"./sk\": 226,\n\t\"./sk.js\": 226,\n\t\"./sl\": 227,\n\t\"./sl.js\": 227,\n\t\"./sq\": 228,\n\t\"./sq.js\": 228,\n\t\"./sr\": 229,\n\t\"./sr-cyrl\": 230,\n\t\"./sr-cyrl.js\": 230,\n\t\"./sr.js\": 229,\n\t\"./ss\": 231,\n\t\"./ss.js\": 231,\n\t\"./sv\": 232,\n\t\"./sv.js\": 232,\n\t\"./sw\": 233,\n\t\"./sw.js\": 233,\n\t\"./ta\": 234,\n\t\"./ta.js\": 234,\n\t\"./te\": 235,\n\t\"./te.js\": 235,\n\t\"./tet\": 236,\n\t\"./tet.js\": 236,\n\t\"./tg\": 237,\n\t\"./tg.js\": 237,\n\t\"./th\": 238,\n\t\"./th.js\": 238,\n\t\"./tk\": 239,\n\t\"./tk.js\": 239,\n\t\"./tl-ph\": 240,\n\t\"./tl-ph.js\": 240,\n\t\"./tlh\": 241,\n\t\"./tlh.js\": 241,\n\t\"./tr\": 242,\n\t\"./tr.js\": 242,\n\t\"./tzl\": 243,\n\t\"./tzl.js\": 243,\n\t\"./tzm\": 244,\n\t\"./tzm-latn\": 245,\n\t\"./tzm-latn.js\": 245,\n\t\"./tzm.js\": 244,\n\t\"./ug-cn\": 246,\n\t\"./ug-cn.js\": 246,\n\t\"./uk\": 247,\n\t\"./uk.js\": 247,\n\t\"./ur\": 248,\n\t\"./ur.js\": 248,\n\t\"./uz\": 249,\n\t\"./uz-latn\": 250,\n\t\"./uz-latn.js\": 250,\n\t\"./uz.js\": 249,\n\t\"./vi\": 251,\n\t\"./vi.js\": 251,\n\t\"./x-pseudo\": 252,\n\t\"./x-pseudo.js\": 252,\n\t\"./yo\": 253,\n\t\"./yo.js\": 253,\n\t\"./zh-cn\": 254,\n\t\"./zh-cn.js\": 254,\n\t\"./zh-hk\": 255,\n\t\"./zh-hk.js\": 255,\n\t\"./zh-mo\": 256,\n\t\"./zh-mo.js\": 256,\n\t\"./zh-tw\": 257,\n\t\"./zh-tw.js\": 257\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 350;","module.exports = __webpack_public_path__ + \"static/media/ic_add_black.47f2add5.png\";","module.exports = __webpack_public_path__ + \"static/media/ic_minus_black.ae7bc791.png\";","module.exports = __webpack_public_path__ + \"static/media/ic_cart_white.d1e5f040.png\";","module.exports = __webpack_public_path__ + \"static/media/img_background_obbar.019158c7.png\";","module.exports = __webpack_public_path__ + \"static/media/img_background_jjk.303fc4b2.jpeg\";","module.exports = __webpack_public_path__ + \"static/media/ic_no_order.5e25fe99.png\";","import * as Font from \"expo-font\";\n\nconst UseFonts = async () => {\n await Font.loadAsync({\n 'HelveticaNeue-Light': require('./App/Fonts/HelveticaNeue-Light.ttf'),\n 'HelveticaNeue-Bold': require('./App/Fonts/HelveticaNeue-Bold.ttf'),\n });\n};\n\nexport default UseFonts;","import * as React from 'react';\n\nexport const navigationRef = React.createRef();\n\nexport function navigate(name, params) {\n navigationRef.current?.navigate(name, params);\n}\n","import React from 'react';\nimport { Platform, Dimensions, PixelRatio } from 'react-native';\n\nconst deviceWidth=Math.round(Dimensions.get('window').width);\nconst deviceHeight=Math.round(Dimensions.get('window').height);\n\nconst Device = {\n\tgetSize(size){\n\t\t//Scale pixel up for tablets\n\t\treturn Math.round(PixelRatio.roundToNearestPixel(size * this.pixelScale));\n\t},\n\tgetRatio(size) {\n\t\t//Scale pixel up for tablets\n\t\treturn size * this.pixelScaleV2;\n\t},\n\tpixelScale: (()=>{\n\t\tif(deviceWidth >= 768) return 1.5;\n\t\tif(deviceWidth >= 375) return 1.1;\n\t\treturn 1;\n\t})(),\n\tpixelScaleV2: (() => {\n\t\tif (deviceHeight >= 900) {\n\t\t return 1.45;\n\t\t}\n\t\tif (deviceHeight >= 800) {\n\t\t return 1.4;\n\t\t\t// return 1.5;\n\t\t\t// return 1.6;\n\t\t}\n\t\tif (deviceHeight >= 700) {\n\t\t\treturn 1.37;\n\t\t\t// return 1.47;\n\t\t\t// return 1.55;\n\t\t}\n\t\tif (deviceHeight >= 650) {\n\t\t\treturn 1.33;\n\t\t\t// return 1.43;\n\t\t\t// return 1.45;\n\t\t}\n\t\tif (deviceHeight >= 600) {\n\t\t\treturn 1.3;\n\t\t\t// return 1.43;\n\t\t\t// return 1.45;\n\t\t}\n\t\tif (deviceHeight >= 550) {\n\t\t\treturn 1.25;\n\t\t\t// return 1.35;\n\t\t\t// return 1.3;\n\t\t}\n\t\tif (deviceHeight >= 500) {\n\t\t\treturn 1.2;\n\t\t\t// return 1.35;\n\t\t\t// return 1.3;\n\t\t}\n\t\tif (deviceHeight >= 450) {\n\t\t// return 1.25;\n\t\t return 1.1;\n\t\t}\n\t\tif (deviceHeight >= 400) {\n\t\t\t// return 1.25;\n\t\t\t\treturn 1;\n\t\t}\n\t\treturn 1;\n\t})(),\n\tisSmallScreen: deviceWidth < 375,\n\tisTablet: deviceWidth >= 768,\n\tisBefore23: Platform.Version < 23,\n\tisBefore22: Platform.Version < 22,\n\tisBefore21: Platform.Version < 21,\n\tisBefore19: Platform.Version < 19,\n\tisAfter21: Platform.Version >= 21,\n\tis16: Platform.Version === 16,\n\tis21: Platform.Version === 21,\n\tis22: Platform.Version === 22,\n\tis23: Platform.Version === 22,\n\tisIOS: Platform.OS === 'ios',\n\tisAndroid: Platform.OS === 'android',\n\tisWeb: Platform.OS === 'web',\n\twidth: deviceWidth,\n\theight: deviceHeight,\n}\n\n// module.exports = Device;\nexport default Device\n","import {ListView} from 'react-native';\n\nimport DeviceInfo from 'react-native-device-info';\n\nimport Device from '../Utils/Device';\nimport Colors from '../Styles/Colors';\n\nconst heightNavBar = Device.isAndroid === true ? Device.getSize(54) :Device.getSize(14);\nconst keyboardMargin = Device.isIOS === true ? Device.getSize(80):Device.getSize(130);\n\nconst Config = {\n\terrorTitle: 'Oops!',\n\tactiveOpacity: 0.7,\n\t// hitslopSmall: {top: Device.getSize(28), bottom: Device.getSize(28), left: Device.getSize(28), right: Device.getSize(28)},\n\thitslopSmall: {top: Device.getSize(18), bottom: Device.getSize(18), left: Device.getSize(28), right: Device.getSize(28)},\n\tmarginTopNav: Device.getSize(60),\n\theightStatusBar: Device.getSize(20),\n\theightNavBar: heightNavBar,\n\tcontentHeight: Device.height - heightNavBar,\n\tkeyboardMargin: keyboardMargin,\n\tinput: {\n\t\tautoCapitalize: 'none',\n\t\tautoCorrect: false,\n\t\tunderlineColorAndroid: 'rgba(0,0,0,0)',\n\t},\n\tlightStatusBar: {\n\t\tbarStyle: 'light-content',\n\t\tbackgroundColor: Colors.darkStatusBar,\n\t\thidden: true\n\t},\n\tdarkStatusBar: {\n\t\tbarStyle: Device.isIOS === true ? 'dark-content': 'default',\n\t\tbackgroundColor: Colors.darkStatusBar,\n\t\thidden: true\n\t},\n\torangeStatusBar: {\n\t\tbackgroundColor: Colors.Orange\n\t},\n\tkeyboardAvoid: {\n\t\tbehavior: 'position',\n\t\tkeyboardVerticalOffset: Device.isAndroid === true ? Device.getSize(25):0\n\t},\n\tkeyboardAvoidLogin: {\n\t\tbehavior: 'position',\n\t\tkeyboardVerticalOffset: Device.isAndroid === true ? Device.getSize(50):Device.getSize(10)\n\t},\n\tdeviceID: '',\n\tmapZoom: 0.05,\n\tinitialZoom: 0.3,\n\tcoordSG: {\n\t\tlatitude: 1.3424739,\n\t\tlongitude: 103.8293791,\n\t},\n\tformatDateTime: 'MMM DD, YYYY h:mm A',\n\tcartSummaryDateTimeFormat: 'dddd MMM DD, YYYY h:mm A',\n\tformatDate: 'MMM DD, YYYY',\n\tformatDateTimeText: 'DD/MM/YYYY, hh:mm',\n\tformatTime: 'h:mm A',\n\tformatYMD: 'YYYY/MM/DD',\n\tformatSuperholic: 'DD MMM YYYY',\n\turl_image: 'https://vcpos.thesoupspoon.com/web/image?',\n\timageSizeLandscape: {\n\t\twidth: Device.getSize(150),\n\t\theight: Device.getSize(95),\n\t},\n\tthresholdLazyLoad: 200, // margin in pixels to bottom to call next page\n\t// listviewByID: new ListView.DataSource({rowHasChanged: (r1, r2) => r1.id !== r2.id}),\n\tisProductionEnv: true,\n\tisTss: true,\n\tisTgk: false,\n\tisJjk: false,\n\ttimezone: -8,\n\tgst: 9,\n\t/*\n\t* --------------- POSSIBLE VALUES ---------------\n\t* 1. storeId\n\t* obbar : 18\n\t* vc jjk : 19\n\t*\n\t* 2. posStoreCode\n\t* obbar : 1067\n\t* vc jjk : 1064\n\t*\n\t* 3. theme\n\t* obbar : OBBAR\n\t* vc jjk : JJK\n\t*/\n\tstoreId: 19,\n\tposStoreCode: 1064,\n\ttheme: 'JJK',\n\tversionNo: '1.1.2',\n}\n\n// module.exports = Config;\nexport default Config\n","import React from 'react';\nimport {StyleSheet} from 'react-native';\n\nimport Device from '../Utils/Device';\nimport Config from '../Utils/Config';\nimport Colors from './Colors';\n\nconst fontHelveticaNeue = {\n regular: 'HelveticaNeue-Light',\n bold: 'HelveticaNeue-Bold'\n};\n\nconst HEIGHT_INPUT = Device.getSize(48);\n\nconst StyleHelper = StyleSheet.create({\n // CONTAINERS\n containerTopFit: {\n paddingTop: Config.heightNavBar,\n flex: 1,\n position: 'relative'\n },\n containerHeightFit: {\n height: Config.heightNavBar\n },\n backgroundImage: {\n width: Device.width,\n height: Device.height,\n flex: 1\n },\n imageIcon: {\n padding: Device.getSize(30)\n },\n containerTiny: {\n paddingVertical: Device.getSize(5),\n paddingHorizontal: Device.getSize(12)\n },\n containerSmall: {\n paddingVertical: Device.getSize(10),\n paddingHorizontal: Device.getSize(12)\n },\n customContainerNormal: {\n paddingVertical: Device.getSize(5),\n paddingHorizontal: Device.getSize(10),\n },\n customContainerNormal2: {\n paddingTop: Device.getSize(5),\n paddingHorizontal: Device.getSize(10),\n },\n customContainerNormal3: {\n paddingTop: Device.getSize(10),\n paddingHorizontal: Device.getSize(10),\n },\n customContainerNormal4: {\n paddingVertical: Device.getSize(10),\n paddingHorizontal: Device.getSize(10),\n },\n containerNormal: {\n paddingVertical: Device.getSize(15),\n paddingHorizontal: Device.getSize(10)\n },\n containerCustom: {\n paddingVertical: Device.getSize(15),\n paddingLeft: Device.getSize(10),\n paddingRight: Device.getSize(20)\n },\n containerLarge: {\n paddingVertical: Device.getSize(25),\n paddingHorizontal: Device.getSize(10)\n },\n containerMiddle: {\n paddingVertical: Device.getSize(200),\n paddingHorizontal: Device.getSize(25)\n },\n containerVertical2: {\n paddingTop: Device.getSize(15),\n },\n containerVerticalXTiny: {\n paddingVertical: Device.getSize(1),\n },\n containerVerticalVTiny: {\n paddingVertical: Device.getSize(3),\n },\n containerVerticalTiny: {\n paddingVertical: Device.getSize(5),\n },\n containerVerticalSmall: {\n paddingVertical: Device.getSize(10),\n },\n containerVerticalSmall2: {\n paddingVertical: Device.getSize(5),\n },\n containerVerticalNormal: {\n paddingVertical: Device.getSize(15),\n },\n containerHorizontalTiny: {\n paddingHorizontal: Device.getSize(5),\n },\n containerHorizontalSmall: {\n paddingHorizontal: Device.getSize(10),\n },\n containerHorizontalNormal: {\n paddingHorizontal: Device.getSize(15),\n },\n containerTouchableBig: {\n paddingVertical: Device.getSize(14),\n },\n containerFullHeight: {\n height: Device.height\n },\n heightScrollViewContent: {\n height: Device.height - Config.heightNavBar\n },\n containerText: {\n marginVertical : Device.getSize(2)\n },\n containerTitle: {\n marginBottom: Device.getSize(5)\n },\n containerBigSection: {\n minHeight: Device.getSize(85)\n },\n containerMarginFullWidth: {\n marginHorizontal: Device.getSize(-10),\n },\n containerNormalXSmallIcon: {\n paddingVertical: Device.getSize(6),\n },\n containerNormalSmallIcon: {\n paddingVertical: Device.getSize(12),\n paddingHorizontal: Device.getSize(10)\n },\n containerMarginTopSmall: {\n marginTop: Device.getSize(10),\n },\n containerMarginTopNormal: {\n marginTop: Device.getSize(20),\n },\n containerMarginTopLarge: {\n marginTop: Device.getSize(50),\n },\n containerMarginBottomSmall: {\n marginBottom: Device.getSize(10),\n },\n containerNumber: {\n paddingVertical: Device.getSize(5),\n width: Device.getSize(22),\n marginHorizontal: Device.getSize(6),\n },\n\n //top-right number of cart quantity\n containerNotification: {\n width: Device.getSize(12),\n height: Device.getSize(12),\n borderRadius: Device.getSize(8),\n position: 'absolute',\n top: Device.getSize(-2),\n // left: Device.getSize(0),\n right: Device.getSize(-4),\n alignItems: 'center',\n paddingTop: Device.getSize(1),\n },\n containerDeviceHeight: {\n height: Device.height,\n },\n\n //INPUTS\n inputWhiteRound: {\n height: Device.isIOS === true ? Device.getSize(30):Device.getSize(40),\n borderRadius: Device.getSize(4),\n backgroundColor: Colors.white,\n paddingHorizontal: Device.getSize(6),\n color: Colors.blackSecond,\n fontFamily: fontHelveticaNeue.bold,\n },\n inputLoupe: {\n paddingLeft: Device.getSize(27)\n },\n iconLoupeInput: {\n width: Device.getSize(28),\n height: Device.getSize(28),\n position: 'absolute',\n left: Device.getSize(12),\n top: Device.isIOS === true ? Device.getSize(11):Device.getSize(15),\n },\n inputWhite: {\n // height: HEIGHT_INPUT,\n height: Device.getSize(25),\n backgroundColor: Colors.white,\n paddingHorizontal: Device.getSize(12),\n paddingVertical: Device.getSize(5),\n // paddingVertical: Device.getSize(15),\n fontSize: Device.getSize(10),\n // fontSize: Device.getSize(15),\n // fontFamily: fontHelveticaNeue.bold,\n borderColor: Colors.grey,\n borderWidth: Device.getSize(1),\n borderStyle: 'solid'\n },\n inputWhiteLeftIconReal: {\n height: HEIGHT_INPUT,\n backgroundColor: Colors.white,\n paddingRight: Device.getSize(12),\n color: Colors.blackSecond,\n fontFamily: fontHelveticaNeue.bold,\n paddingLeft: Device.getSize(50),\n fontSize: Device.getSize(15)\n },\n inputWhiteLeftIcon: {\n height: HEIGHT_INPUT,\n backgroundColor: Colors.white,\n paddingRight: Device.getSize(12),\n color: Colors.blackSecond,\n fontFamily: fontHelveticaNeue.bold,\n paddingLeft: Device.getSize(83),\n fontSize: Device.getSize(15)\n },\n inputWhiteRightIcon: {\n height: HEIGHT_INPUT,\n backgroundColor: Colors.white,\n paddingLeft: Device.getSize(12),\n color: Colors.blackSecond,\n fontFamily: fontHelveticaNeue.bold,\n paddingRight: Device.getSize(48),\n fontSize: Device.getSize(15)\n },\n inputTransparent: {\n height: HEIGHT_INPUT,\n color: Colors.white,\n backgroundColor: 'transparent',\n fontFamily: fontHelveticaNeue.bold,\n fontSize: Device.getSize(15),\n paddingHorizontal: Device.getSize(12),\n },\n iconInputLeft: {\n width: Device.getSize(28),\n height: Device.getSize(28),\n position: 'absolute',\n left: Device.getSize(12),\n top: Device.getSize(12),\n },\n textInputLeft: {\n width: Device.getSize(33),\n height: Device.getSize(28),\n textAlign: 'right',\n position: 'absolute',\n left: Device.getSize(50),\n top: Device.getSize(14),\n fontSize: Device.getSize(15)\n },\n iconInputRight: {\n width: Device.getSize(28),\n height: Device.getSize(28),\n position: 'absolute',\n right: Device.getSize(12),\n top: Device.getSize(10),\n },\n inputBorderRadius: {\n borderRadius: Device.getSize(3),\n },\n //BORDERSS\n borderTopWhite: {\n borderStyle: 'solid',\n borderTopColor: Colors.white,\n borderTopWidth: Device.getSize(1),\n },\n borderBottomWhite: {\n borderStyle: 'solid',\n borderBottomColor: Colors.white,\n borderBottomWidth: Device.getSize(1),\n },\n borderTopBlackTransparent: {\n borderStyle: 'solid',\n borderTopColor: Colors.blackTransparent,\n borderTopWidth: Device.getSize(1),\n },\n borderBottomBlackTransparent: {\n borderStyle: 'solid',\n borderBottomColor: Colors.blackTransparent,\n borderBottomWidth: Device.getSize(1),\n },\n borderBottomWhiteTransparent: {\n borderStyle: 'solid',\n // borderBottomColor: Colors.whiteTransparent,\n borderBottomColor: Colors.greyTransparent,\n borderBottomWidth: Device.getSize(1),\n },\n borderTopWhiteTransparent: {\n borderStyle: 'solid',\n // borderTopColor: 'rgba(255,255,255,0.7)',\n borderTopColor: 'rgba(0,0,0,0.7)',\n borderTopWidth: Device.getSize(1),\n },\n borderTopWhite2: {\n borderStyle: 'solid',\n // borderTopColor: Colors.white,\n borderTopColor: Colors.black,\n borderTopWidth: Device.getSize(2),\n },\n borderBottomWhite2: {\n borderStyle: 'solid',\n // borderBottomColor: Colors.white,\n borderBottomColor: Colors.black,\n borderBottomWidth: Device.getSize(2),\n },\n borderVerticalWhite2: {\n borderStyle: 'solid',\n // borderTopColor: Colors.white,\n borderTopColor: Colors.black,\n borderTopWidth: Device.getSize(2),\n // borderBottomColor: Colors.white,\n borderBottomColor: Colors.black,\n borderBottomWidth: Device.getSize(2),\n },\n borderVerticalWhite: {\n borderStyle: 'solid',\n // borderTopColor: Colors.white,\n borderTopColor: Colors.black,\n borderBottomColor: Colors.black,\n borderTopWidth: Device.getSize(1),\n // borderBottomColor: Colors.white,\n borderBottomWidth: Device.getSize(1),\n },\n borderVerticalWhiteTransparent: {\n borderStyle: 'solid',\n borderTopColor: Colors.blackTransparent,\n borderBottomColor: Colors.blackTransparent,\n // borderTopColor: Colors.whiteTransparent,\n borderTopWidth: Device.getSize(1),\n // borderBottomColor: Colors.whiteTransparent,\n borderBottomWidth: Device.getSize(1),\n },\n borderLeftWhiteTransparent: {\n borderStyle: 'solid',\n borderLeftColor: Colors.whiteTransparent,\n borderLeftColor: Colors.blackTransparent,\n borderLeftWidth: Device.getSize(1),\n },\n borderBottomWhite: {\n borderStyle: 'solid',\n borderBottomColor: Colors.white,\n borderBottomColor: Colors.black,\n borderBottomWidth: Device.getSize(1),\n },\n borderTopRed: {\n borderStyle: 'solid',\n borderTopColor: Colors.red,\n borderTopWidth: Device.getSize(1),\n },\n borderGrey: {\n borderStyle: 'solid',\n borderColor: '#EEEEEE',\n borderWidth: Device.getSize(1),\n },\n borderDarkGreen: {\n borderStyle: 'solid',\n borderColor: '#1a3b49',\n borderWidth: Device.getSize(1),\n },\n DarkPinkBorder: {\n borderColor: Config.isTss ? Colors.DarkBlue : Config.isJjk ? Colors.JjkLightGreen : Colors.DarkPink\n },\n OrangeDarkBorder: {\n borderColor: Config.isTss ? Colors.Orange : Config.isJjk ? Colors.JjkLightGreen : Colors.DarkGreen,\n borderStyle: 'solid',\n borderWidth: Device.getSize(1),\n },\n // BGS\n bgBlack: {\n // backgroundColor: Colors.black\n backgroundColor: Colors.white\n },\n bgBlackTransparent: {\n // backgroundColor: 'rgba(0,0,0,0.7)',\n backgroundColor: 'rgba(255,255,255,0.7)',\n },\n bgBlackSecond: {\n backgroundColor: Colors.blackSecond\n },\n bgBlackSecondDark: {\n backgroundColor: Colors.blackSecondDark\n },\n bgLightGrey: {\n backgroundColor: Colors.greyDark\n },\n bgSoupOrange: {\n backgroundColor: Colors.soupOrange\n },\n bgWhite: {\n backgroundColor: Colors.white\n },\n bgGrey: {\n backgroundColor: Colors.grey\n },\n bgOrange: {\n backgroundColor: Colors.Orange\n },\n bgPink: {\n backgroundColor: '#FFD3C3'\n },\n bgDarkGreen: {\n backgroundColor: '#1A3B49'\n },\n bgRed: {\n backgroundColor: Colors.red\n },\n bgTransparent: {\n backgroundColor: 'rgba(0,0,0,0)'\n },\n OrangeDarkBg: {\n backgroundColor: Config.isTss ? Colors.Orange : Config.isJjk ? Colors.JjkGreen : Colors.DarkGreen\n },\n HeavyOrangeDarkBg: {\n backgroundColor: Config.isTss ? Colors.HeavyOrange : Config.isJjk ? Colors.JjkGreen : Colors.DarkGreen\n },\n LightOrangeDarkBg: {\n backgroundColor: Config.isTss ? Colors.LightOrange : Config.isTgk ? Colors.TgkLightGrey : Config.isJjk ? Colors.JjkGreen : Colors.DarkGreen\n },\n OrangePinkBg: {\n backgroundColor: Config.isTss ? Colors.Orange : Config.isTgk ? Colors.white : Config.isJjk ? 'rgba(0, 0, 0, 0)' : Colors.LightPink\n },\n LightOrangePinkBg: {\n backgroundColor: Config.isTss ? Colors.LightOrange : Config.isTgk ? Colors.TgkLightGrey : Colors.LightPink\n },\n PinkBg: {\n backgroundColor: Config.isTss ? Colors.Pink : Colors.LightPink\n },\n BlueGreyBg: {\n backgroundColor: Config.isTss ? '#000647' : Config.isTgk ? Colors.TgkGrey : '#000647'\n },\n OrangeGreyBg: {\n backgroundColor: Config.isTss ? Colors.Orange : Config.isTgk ? Colors.TgkGrey : Config.isJjk ? Colors.JjkGreen : Colors.Orange\n },\n // FONTS\n OrangeDarkFont: {\n color: Config.isTss ? Colors.Orange : Config.isTgk ? Colors.TgkBlue : Config.isJjk ? Colors.JjkGreen : Colors.DarkGreen\n },\n PinkGreenFont: {\n color: Config.isTss ? Colors.Pink : Config.isTgk ? Colors.Green : Config.isJjk ? Colors.JjkGold : Colors.Green\n },\n VeryGreyFont: {\n color: Colors.greyTransparent\n },\n DarkFont: {\n color: Config.isTss ? Colors.DarkBlue : Config.isTgk ? Colors.DarkGreen : Config.isJjk ? Colors.JjkGreen : Colors.DarkGreen\n },\n DarkPinkFont: {\n color: Config.isTss ? Colors.DarkBlue : Config.isTgk ? Colors.DarkPink : Config.isJjk ? Colors.JjkGold : Colors.DarkPink\n },\n WhiteDarkFont: {\n color: Config.isTss ? Colors.white : Config.isTgk ? Colors.DarkGreen : Config.isJjk ? Colors.JjkGold : Colors.DarkGreen\n },\n OrangePinkFont: {\n color: Config.isTss ? Colors.Orange : Config.isTgk ? Colors.TgkRed : Config.isJjk ? Colors.JjkGreen : Colors.LightPink\n },\n OrangeBlackFont: {\n color: Config.isTss ? Colors.Orange : Config.isTgk ? Colors.black : Config.isJjk ? Colors.JjkGreen : Colors.LightPink\n },\n GrayGreenFont: {\n color: Config.isTss ? Colors.Gray : Config.isTgk ? Colors.Green : Config.isJjk ? Colors.JjkGold : Colors.Green\n },\n RedGreenFont: {\n color: Config.isTss ? Colors.red : Config.isTgk ? Colors.Green : Config.isJjk ? Colors.JjkGold : Colors.Green\n },\n BlackBlueFont: {\n color: Config.isTss ? Colors.black : Config.isTgk ? Colors.TgkBlue : Config.isJjk ? Colors.JjkGreen : Colors.black\n },\n BlackGreyFont: {\n color: Config.isTss ? Colors.black : Config.isTgk ? Colors.TgkGrey : Config.isJjk ? Colors.JjkGreen : Colors.black\n },\n DarkRedFont: {\n color: Config.isTss ? Colors.HeavyOrange : Config.isTgk ? Colors.TgkRed : Config.isJjk ? Colors.JjkLightGreen : Colors.DarkGreen\n },\n WhiteGreyFont:{\n color: Config.isTss ? Colors.white : Config.isTgk ? Colors.TgkGrey : Config.isJjk ? Colors.JjkLightGreen : Colors.white\n },\n DarkGreenFont:{\n color: Config.isJjk ? Colors.JjkDarkGreen : Colors.black\n },\n fontWhite: {\n color: Colors.white\n },\n fontWhiteGold: {\n color: (Config.isTss || Config.isTgk) ? Colors.white : Config.isJjk ? Colors.JjkGold : Colors.white\n },\n fontRed: {\n color: '#F00'\n },\n fontWhiteTransparent: {\n color: Colors.whiteTransparent,\n },\n fontOrange: {\n color: Colors.Orange\n },\n fontRed: {\n color: Colors.red\n },\n fontBlack: {\n color: Colors.black\n },\n greyFont: {\n color: Colors.grey\n },\n fontGrey: {\n color: Colors.greyDark\n },\n fontBlackReal: {\n color: Colors.black,\n },\n fontBlackSecond: {\n color: Colors.blackSecond,\n },\n fontBebasNeueBold: {\n fontFamily: fontHelveticaNeue.Bold\n },\n fontHelveticaNeueRegular: {\n fontFamily: fontHelveticaNeue.regular\n },\n fontHelveticaNeueBold: {\n fontFamily: fontHelveticaNeue.bold\n },\n fontRegular: {\n fontFamily: fontHelveticaNeue.bold\n },\n fontBold: {\n fontFamily: fontHelveticaNeue.bold\n },\n fontTitleRegular: {\n fontFamily: fontHelveticaNeue.bold\n },\n fontTitleBold: {\n fontFamily: fontHelveticaNeue.bold\n },\n fontRalewayBold: {\n fontFamily: fontHelveticaNeue.bold\n },\n font8: {\n fontSize: Device.getSize(8)\n },\n font9: {\n fontSize: Device.getSize(9)\n },\n font10: {\n fontSize: Device.getSize(10)\n },\n font11: {\n fontSize: Device.getSize(11)\n },\n font12: {\n fontSize: Device.getSize(12)\n },\n font13: {\n fontSize: Device.getSize(13)\n },\n font14: {\n fontSize: Device.getSize(14)\n },\n font15: {\n fontSize: Device.getSize(15)\n },\n font16: {\n fontSize: Device.getSize(16)\n },\n font17: {\n fontSize: Device.getSize(17)\n },\n font18: {\n fontSize: Device.getSize(18)\n },\n font19: {\n fontSize: Device.getSize(19)\n },\n font20: {\n fontSize: Device.getSize(20)\n },\n font22: {\n fontSize: Device.getSize(22)\n },\n font23: {\n fontSize: Device.getSize(23)\n },\n font25: {\n fontSize: Device.getSize(25)\n },\n font30: {\n fontSize: Device.getSize(30)\n },\n font40: {\n fontSize: Device.getSize(40)\n },\n fontPink: {\n color: '#FFD3C3'\n },\n fontLightGreen: {\n color: '#B4D4BC'\n },\n fontDarkGreen: {\n color: '#1a3b49'\n },\n fontXDark: {\n color: Colors.xdark,\n },\n fontErrorWhite: {\n fontFamily: fontHelveticaNeue.bold,\n color: Colors.white,\n fontSize: Device.getSize(12),\n },\n textCenter: {\n alignSelf: 'center',\n flexDirection: 'column',\n textAlign: 'center'\n },\n\n // OVERLAYS\n\n overlay: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n zIndex: 10\n },\n\n // Android picker does not change options when using zIndex\n overlayNoZIndex: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n },\n\n overlayBlack: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(0,0,0,0.5)'\n },\n overlayInputDisabled: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: 'rgba(204, 204, 204, 0.6)'\n },\n // STATUSBARS\n orangeStatusBar: {\n position: 'absolute',\n top: 0,\n left: 0,\n right: 0,\n height: Config.heightStatusBar,\n backgroundColor: Colors.Orange\n },\n\n // LAYOUTS\n flex1: {\n flex: 1\n },\n flex2: {\n flex: 2\n },\n flex3: {\n flex: 3\n },\n flexCenter: {\n justifyContent: 'center',\n alignItems: 'center'\n },\n flexMiddle: {\n alignItems: 'center'\n },\n flexRight: {\n alignItems: 'flex-end',\n },\n flexRow: {\n flexDirection: 'row'\n },\n flexRowTop: {\n flexDirection: 'row',\n alignItems: 'flex-start'\n },\n flexColumn: {\n flexDirection: 'column'\n },\n flexJustifyEnd: {\n justifyContent: 'flex-end'\n },\n flexSpaceBetween: {\n justifyContent: 'space-between'\n },\n alignSelfStretch: {\n alignSelf: 'stretch'\n },\n alignSelfCenter: {\n alignSelf: 'center'\n },\n flexRowSpaceBetween: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'center'\n },\n flexRowSpaceBetweenAlignTop: {\n flexDirection: 'row',\n justifyContent: 'space-between',\n alignItems: 'flex-start'\n },\n fullHeight: {\n height: Device.height\n },\n // NAVBARS\n navBarTransparent: {\n },\n navBarOrange: {\n backgroundColor: Config.isTss ? Colors.Orange : Config.isTgk ? Colors.TgkGrey : Config.isJjk ? Colors.JjkGreen : Colors.LightPink,\n // height: Device.getSize(64),\n height: Device.getSize(44),\n // height: Device.getSize(84),\n },\n navBarFake: {\n height: Device.getSize(64),\n position: 'absolute',\n left: 0,\n right: 0,\n top: 0,\n },\n //TOUCHABLES\n touchableNavLeft: {\n marginLeft: Device.getSize(10),\n marginRight: Device.getSize(50),\n // marginTop: Device.isIOS === true ? Device.getSize(6): Device.getSize(-2)\n marginTop: Device.isIOS === true ? Device.getSize(-2): Device.getSize(-2)\n },\n touchableNavRight: {\n marginRight: Device.getSize(10),\n marginLeft: Device.getSize(50),\n // marginTop: Device.isIOS === true ? Device.getSize(6): Device.getSize(-2)\n marginTop: Device.isIOS === true ? Device.getSize(-2): Device.getSize(-2)\n },\n touchableNavRightCartPlus: {\n marginTop: Device.isIOS === true ? Device.getSize(4): Device.getSize(-4)\n },\n touchableRightTiny: {\n width: Device.getSize(45),\n },\n touchableRightSmall: {\n width: Device.getSize(75),\n },\n //LOGOS\n logoBig: {\n width: Device.getSize(120),\n height: Device.getSize(120),\n },\n // MODALS\n containerModalCenter: {\n borderRadius: Device.getSize(5),\n alignSelf: 'stretch',\n marginHorizontal: Device.getSize(30)\n },\n containerPaddingModalContent: {\n paddingVertical: Device.getSize(20),\n paddingHorizontal: Device.getSize(20)\n },\n // OTHERS\n titleNav: {\n // marginTop: Device.isIOS === true ? Device.getSize(10): Device.getSize(0)\n marginTop: Device.getSize(0)\n },\n imgTitle: {\n width: Device.getSize(150),\n height: Device.getSize(25),\n marginTop: Device.isIOS === true ? Device.getSize(7): 0\n },\n xsmallIconSize: {\n width: Device.getSize(12),\n height: Device.getSize(12),\n },\n verysmallIconSize: {\n width: Device.getSize(17),\n height: Device.getSize(17),\n },\n bitsmallIconSize: {\n width: Device.getSize(23),\n height: Device.getSize(23),\n },\n smallIconSize: {\n width: Device.getSize(25),\n height: Device.getSize(25),\n },\n mediumIconSize: {\n width: Device.getSize(30),\n height: Device.getSize(30),\n },\n largeIconSize: {\n width: Device.getSize(50),\n height: Device.getSize(50),\n },\n LargeIconSize2: {\n width: Device.width * 0.45,\n height: Device.width * 0.45\n },\n LargeIconSize3: {\n width: Device.getSize(380)\n },\n LargeIconSize4: {\n width: Device.getSize(50),\n marginLeft: Device.getSize(7)\n },\n LargeIconSize5: {\n width: Device.getSize(90)\n },\n LargeIconSize6: {\n width: Device.getSize(210)\n },\n LargeIconSize7: {\n width: Config.isTss || Config.isTgk ? Device.getSize(140) : Config.isJjk ? Device.getSize(180): Device.getSize(140)\n },\n LargeIconSize8: {\n width: Device.getSize(20),\n marginLeft: Device.getSize(7)\n },\n largeIconBg: {\n width: Device.getSize(135),\n height: Device.getSize(135),\n },\n largeIconBg2: {\n width: Device.getSize(135),\n height: Device.getSize(55),\n },\n imageSizeLandscape: {\n width: Config.imageSizeLandscape.width,\n height: Config.imageSizeLandscape.height,\n },\n iconRight: {\n marginRight: Device.getSize(12),\n },\n containerListRow: {\n paddingHorizontal: Device.getSize(12),\n paddingVertical: Device.getSize(20),\n borderBottomColor: '#33363D',\n borderStyle: 'solid',\n borderBottomWidth: 1,\n },\n\n blockLeftHalfMargin: {\n flex: 1,\n marginRight: Device.getSize(1),\n alignSelf: 'stretch',\n // borderStyle: 'solid',\n // borderRightColor: Colors.white,\n // borderRightWidth: Device.getSize(2),\n },\n blockRightHalfMargin: {\n flex: 1,\n marginLeft: Device.getSize(1),\n alignSelf: 'stretch',\n // borderStyle: 'solid',\n // borderLeftColor: Colors.white,\n },\n textCenter: {\n textAlign: 'center'\n },\n textMiddle: {\n paddingTop: Device.getSize(4)\n },\n relative: {\n position: 'relative'\n },\n map: {\n width: Device.width,\n height: Device.isSmallScreen ? Device.getSize(170) : Device.getSize(220),\n },\n seperatorGrey: {\n backgroundColor: '#EEEEEE',\n height: Device.getSize(1),\n alignSelf: 'stretch',\n },\n seperatorBlack: {\n backgroundColor: Colors.black,\n height: Device.getSize(1),\n alignSelf: 'stretch',\n },\n seperatorWhite: {\n backgroundColor: Colors.whiteTransparent,\n height: Device.getSize(1),\n alignSelf: 'stretch',\n },\n imgNavBar: {\n width: Device.width,\n position: 'absolute',\n top: 0,\n left: 0,\n height: Config.heightNavBar\n },\n transparent: {\n opacity: 0\n },\n heightHalfWidth: {\n height: Device.width/2\n },\n sectionQuantity: {\n alignSelf: 'stretch',\n paddingHorizontal: Device.getSize(10)\n },\n sectionRowBig: {\n minHeight: Device.getSize(100)\n },\n textSelection: {\n marginTop: Device.getSize(4),\n marginRight: Device.getSize(10)\n },\n absoluteLeftTop: {\n position: 'absolute',\n left: 0,\n top: 0,\n },\n absoluteRightTop: {\n position: 'absolute',\n right: 0,\n top: 0,\n },\n seperatorBigBlack: {\n alignSelf: 'stretch',\n height: Device.getSize(15),\n backgroundColor: Colors.black,\n },\n touchableCancelCamera: {\n position: 'absolute',\n left: Device.getSize(20),\n bottom: Device.getSize(20),\n },\n\n\n\n /* === Custom Styles === */\n seperatorBigTransparent: {\n alignSelf: 'stretch',\n height: Device.getSize(15)\n },\n textWhite: {\n // color: 'white'\n color: 'black'\n },\n textBlack: {\n color: 'white'\n // color: 'black'\n },\n leftSpace15: {\n marginLeft: 15\n },\n rightSpace15: {\n marginRight: 15\n },\n font15: {\n fontSize: Device.getSize(15)\n },\n font18: {\n fontSize: Device.getSize(18)\n },\n shadow: {\n shadowColor: '#000000',\n shadowOffset: {\n width: 0,\n height: 2\n },\n shadowRadius: 5,\n shadowOpacity: 0.7\n },\n qrContainer: {\n width: Device.getSize(300),\n height: Device.getSize(280),\n paddingVertical: Device.getSize(10),\n paddingHorizontal: Device.getSize(15),\n backgroundColor: Colors.white,\n marginBottom: Device.getSize(15)\n },\n orderInfo: {\n paddingTop: Device.getSize(5),\n paddingBottom: Device.getSize(5),\n },\n customBtn: {\n borderStyle: 'solid',\n borderRadius: Device.getSize(10),\n width: Device.width * 0.8,\n },\n});\n\nexport default StyleHelper;\n","import assign from 'object-assign';\nimport { EventEmitter } from 'events';\n\nimport Colors from './Colors';\n\nimport Config from '../Utils/Config';\nimport Device from '../Utils/Device';\n\nlet Theme = {\n obbar: Config.theme == \"OBBAR\",\n jjk: Config.theme == \"JJK\",\n}\n\nlet ThemeStyles = assign({}, EventEmitter.prototype, {\n primaryBtnColor() {\n return {\n backgroundColor: Theme.obbar ? Colors.RustRed :\n Theme.jjk ? Colors.Ming :\n Theme.RustRed,\n borderColor: Theme.obbar ? Colors.PeachPuff :\n Theme.jjk ? Colors.white :\n Colors.PeachPuff,\n }\n },\n\n secondaryBtnColor() {\n return {\n backgroundColor: Theme.obbar ? Colors.PeachPuff :\n Theme.jjk ? Colors.LightCoral :\n Colors.PeachPuff,\n borderColor: Theme.obbar ? Colors.Linen :\n Theme.jjk ? Colors.white :\n Colors.Linen,\n }\n },\n\n primaryBtnFontColor() {\n return {\n color: Theme.obbar ? Colors.white :\n Theme.jjk ? Colors.white :\n Colors.white\n }\n },\n\n secondaryBtnFontColor() {\n return {\n color: Theme.obbar ? Colors.RustRed :\n Theme.jjk ? Colors.white :\n Colors.RustRed\n }\n },\n\n primaryFontColor() {\n return {\n color: Theme.obbar ? Colors.HeavyOrange :\n Theme.jjk ? Colors.Ming :\n Colors.HeavyOrange\n }\n },\n\n primaryFontActiveColor() {\n return {\n opacity: 0.5,\n color: Theme.obbar ? Colors.HeavyOrange :\n Theme.jjk ? Colors.Ming :\n Colors.HeavyOrange\n }\n },\n\n secondaryFontColor() {\n return {\n color: Theme.obbar ? Colors.Orange :\n Theme.jjk ? Colors.Ming :\n Colors.Orange\n }\n },\n\n tersierFontColor() {\n return {\n color: Theme.obbar ? Colors.black :\n Theme.jjk ? Colors.Ming :\n Colors.black\n }\n },\n\n primaryBgColor() {\n return {\n backgroundColor: Theme.obbar ? Colors.Orange :\n Theme.jjk ? Colors.Ming :\n Colors.Orange\n }\n },\n\n secondaryBgColor() {\n return {\n backgroundColor: Theme.obbar ? Colors.HeavyOrange :\n Theme.jjk ? Colors.Ming :\n Colors.HeavyOrange,\n }\n },\n\n tableNumberPosition() {\n return {\n position: 'absolute',\n bottom: Theme.obbar ? Device.height * 0.45 :\n Theme.jjk ? Device.height * 0.21 :\n Device.height * 0.45\n }\n },\n\n customBtnBorder() {\n return {\n borderWidth: Theme.obbar ? 5 :\n Theme.jjk ? 0 :\n 0,\n }\n },\n\n activeBorderColor() {\n return {\n position: 'absolute',\n width: '40%',\n height: Device.getSize(1),\n left: '30%',\n bottom: -10,\n borderWidth: 1,\n borderStyle: 'solid',\n borderColor: Theme.obbar ? Colors.HeavyOrange :\n Theme.jjk ? Colors.Ming :\n Colors.HeavyOrange,\n }\n },\n\n iconColor() {\n return Theme.obbar ? Colors.HeavyOrange :\n Theme.jjk ? Colors.Ming :\n Colors.HeavyOrange\n },\n\n productBtn() {\n return {\n borderWidth: 1,\n borderColor: Theme.obbar ? Colors.Orange :\n Theme.jjk ? Colors.Ming :\n Colors.Orange,\n paddingVertical: Device.getSize(5),\n paddingHorizontal: Device.getSize(15),\n }\n },\n\n ivoryBg() {\n return {\n backgroundColor: Theme.obbar ? Colors.Ivory :\n Theme.jjk ? Colors.Ivory :\n Colors.Ivory\n }\n },\n\n expireQrLogo() {\n let width = Device.width * 0.5;\n let new_width = Math.sqrt((width * width) * 1.5);\n \n return {\n width: new_width,\n height: 10,\n borderRadius: 10,\n backgroundColor: Theme.obbar ? Colors.HeavyOrange :\n Theme.jjk ? Colors.Ming :\n Colors.HeavyOrange,\n transform: [{rotateZ: '315deg'}],\n position: 'absolute',\n top: Device.width * 0.3,\n left: (width - new_width) / 2\n }\n },\n});\n\nexport default ThemeStyles;\n","import React from 'react';\n\nimport {ActivityIndicator} from 'react-native';\nimport Device from '../Utils/Device';\n\nconst SmallSpinner = (props)=>{\n return (\n \n )\n}\n\nexport default SmallSpinner\n","import React from 'react';\nimport {ImageBackground, View} from 'react-native';\n\nimport styleHelper from '../Styles/StyleHelper';\n\nconst ImageBg = (props)=>{\n let uri = require('../Img/TSS_Background.jpg');\n\n\treturn(\n\t\t// \n\t\t// \t{props.children}\n\t\t// \n\t\t\n\t\t \t{props.children}\n\t\t\n\t)\n}\n\nexport default ImageBg","import React from 'react';\nimport {Alert, InteractionManager} from 'react-native';\nimport Storage from './Storage';\nimport Config from './Config';\nimport Device from './Device';\nimport moment from 'moment';\n\nconst emptyFunc = ()=>{};\n\nlet Services = {\n\tshowSideView(){\n\t\tStorage.Components.SideView.show();\n\t},\n\thideSideView(){\n\t\tStorage.Components.SideView.hide();\n\t},\n\tshowSpinner(){\n\t\tif(Storage.Components.Spinner){\n\t\t\tStorage.Components.Spinner.show();\n\t\t}\n\t},\n\thideSpinner(){\n\t\tStorage.Components.Spinner.hide();\n\t},\n\tonFocusCallback(callback){\n\t\tif(typeof callback === 'function'){\n\t\t\tInteractionManager.runAfterInteractions(() => {\n\t\t\t\tcallback();\n\t\t\t});\n\t\t}\n\t}, // Used after navigator transition\n\tparseErrorMsg(error){\n\t\tif(typeof error === 'string'){\n\t\t\treturn error;\n\t\t}\n\t\tif(error){\n\t\t\tif(error.error){\n\t\t\t\tif(error.error.messages){\n\t\t\t\t\tvar messages = error.error.messages;\n\t\t\t\t\treturn messages.reduce((previous, current) => `${previous}\\n${current}` )\n\t\t\t\t}\n\n\t\t\t\treturn error.error;\n\t\t\t}\n\t\t\t\n\t\t\tif(typeof error.message === 'string'){\n\t\t\t\treturn error.message;\n\t\t\t}\n\n\t\t\tif( Object.prototype.toString.call(error) === '[object Array]' ){\n\t\t\t\treturn error.reduce((previous, current) => `${previous}\\n${current}` )\n\t\t\t}\n\t\t}\n\t\t\n\t\treturn \"Something's wrong!\";\n\t},\t\n\n\tvalidateEmail(email) {\n return /^([\\w-]+(?:(\\.|\\+)[\\w-]+)*)@((?:[\\w-]+\\.)*\\w[\\w-]{0,66})\\.([a-z]{2,6}(?:\\.[a-z]{2})?)$/i.test(email);\n },\n validatePassword(password){\n \treturn (/(?=.*?[0-9])(?=.*?[\\~\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)\\_\\+\\|\\}\\{\\\"\\:\\?\\>\\<\\,\\.\\/\\;\\'\\-\\=\\`\\[\\]\\\\]).{6,}$/).test(password);\n },\n showAlertError(message, callback){\n\tif(/.*(token).*(not).*(found)/.test(message) || (message && message.code === -666))\n\t{\n\t\t// skip this damn annoying alert\n\t}\n\telse\n\t{\n\t\talert(\n\t\t\tthis.parseErrorMsg(message)\n\t\t);\n\t}\n },\n showAlert(title, message, callback){\n \tAlert.alert(\n\t\t title,\n\t\t message,\n\t\t [\n\t\t { text: 'OK', onPress: ()=> (callback || emptyFunc)() },\n\t\t ],\n\t\t { cancelable: false }\n\t\t)\n },\n showConfirm(title, message, callback, button={}, callbackCancel){\n \tAlert.alert(\n\t\t title,\n\t\t message,\n\t\t [\n\t\t { text: button.textCancel || 'Cancel', onPress: ()=> (callbackCancel || emptyFunc)() },\n\t\t { text: button.textAgree || 'OK', onPress: ()=> (callback || emptyFunc)() },\n\t\t ],\n\t\t { cancelable: false }\n\t\t)\n },\n showContinue(title, message, callback, button={}, callbackCancel){\n\tAlert.alert(\n\t\ttitle,\n\t\tmessage,\n\t\t[\n\t\t { text: button.textAgree || 'Continue', onPress: ()=> (callback || emptyFunc)() },\n\t\t { text: button.textCancel || 'Exit', onPress: ()=> (callbackCancel || emptyFunc)() },\n\t\t],\n\t\t{ cancelable: false }\n\t )\n },\n showLostConnectionAlert() {\n\tthis.showAlert('Unable to Connect','Please check internet connection to proceed')\n },\n trimTextInObject(obj){\n \tObject.keys(obj).forEach(function (key) {\n obj[key] = obj[key].trim();\n })\n },\n\n clearStringInObject(obj){\n Object.keys(obj).forEach(function (key) {\n obj[key] = '';\n })\n },\n\n capitalize(str){\n\t\tif(str){\n\t\t\tstr = str.toLowerCase().split(' ');\n\n\t\t for(var i = 0; i < str.length; i++){\n\t\t str[i] = str[i].split('');\n\t\t str[i][0] = str[i][0].toUpperCase(); \n\t\t str[i] = str[i].join('');\n\t\t }\n\t\t return str.join(' ');\n\t\t}\n\t\treturn str;\n\t},\n\tgetTodayDateTime(){\n\t\treturn moment().format(Config.formatDateTime);\n\t},\n\tgetTodayDate(){\n\t\treturn moment().format(Config.formatDate);\n\t},\n\tformatDate(date){\n\t\tif(date){\n\t\t\t// return moment(date).utcOffset('+8:00').format(Config.formatDate);\n\t\t\t// moment utcOffset doesn't work on Android so we use add function here to manually add 8 hours into the date\t\t\n\t\t\treturn moment(date).add(8, 'hours').format(Config.formatDate)\n\t\t}\n\t\treturn '';\n\t},\n\tformatDateTime(time){\n\t\tif(time){\n\t\t\treturn moment(time).format(Config.formatDateTime);\n\t\t}\n\t\treturn null;\n\t},\n\tformatCartSummaryDateTime(time){\n\t\tif(time) {\n\t\t\treturn moment(time).format(Config.cartSummaryDateTimeFormat);\n\t\t}\n\t\treturn null\n\t},\n\tformatDateTimeText(datetime){\n\t\tif(datetime){\n\t\t\treturn moment(datetime).format(Config.formatDateTimeText);\t\n\t\t}\n\t\treturn '';\n\t},\n\tformatTime(datetime){\n\t\tif(datetime){\n\t\t\treturn moment(datetime).format(Config.formatTime);\n\t\t}\n\t},\n\tformatYMD(time){\n\t\tif(time){\n\t\t\treturn moment(time).format(Config.formatYMD);\n\t\t}\n\t},\n\tformatSuperholicDate(time) {\n\t\tif (time) {\n\t\t\treturn moment(time).format(Config.formatSuperholic)\n\t\t}\n\t},\n\tconvertToEpochTime(datetime){\n\t\t//MMM DD, YYYY h:mm A\n\t\tif(datetime){\n\t\t\treturn new Date(moment(datetime, Config.formatDateTime)).getTime();\n\t\t}\n\t},\n\tconvertMMMDDYYYYToEpochTime(date){\n\t\tif(date){\n\t\t\treturn new Date(moment.utc(date, Config.formatDate)).getTime();\n\t\t}\n\t\treturn null;\n\t},\n\tgetImageURL(id, type){\n\t\tswitch(type){\n\t\t\tcase 'placeholder': \n\t\t\t\treturn `${Config.url_image}w_50/${id}`;ç\n\t\t\t\tbreak;\n\t\t\tcase 'fullscreen':\n\t\t\t\treturn `${Config.url_image}w_${Device.width+100}/${id}`;\n\t\t\t\tbreak;\n\t\t\tcase 'kiosk':\n\t\t\t\treturn `${Config.url_image}w_${Device.width}/${id}`;\n\t\t\t\tbreak;\n\t\t\tcase 'slider':\n\t\t\t\treturn `${Config.url_image}w_${Device.width}/${id}`;\n\t\t\t\tbreak;\n\t\t\tcase 'product':\n\t\t\t\treturn `${Config.url_image}model=product.template&field=image&id=${id}`;\n\t\t\t\tbreak;\n\t\t\tcase 'category':\n\t\t\t\treturn `${Config.url_image}model=pos.category&field=image&id=${id}`;\n\t\t\t\tbreak\n\t\t\tdefault:\n\t\t\t\treturn `${Config.url_image}c_fit,h_${Config.imageSizeLandscape.width+100},w_${Config.imageSizeLandscape.height+100}/${id}`;\n\t\t}\n\t},\n\tfindMatchItemInArrays(subarr, arr){\n\t\tlet matchItem;\n\t\tsubarr.some((e, i)=>arr.some((e2,i2)=>{\n\t\t\tif(e2 === e) matchItem = e2;\n\t\t\treturn e2===e;\n\t\t}));\n\n\t\treturn matchItem;\n\t},\n\tconvertArrayToObject(arr, attr){\n\t\treturn arr.reduce((obj, item)=>{obj[item[attr]]=item; return obj},{});\n\t},\n\tconvertObjectToArray(obj){\n\t\tlet arr = [];\n\t\tObject.keys(obj).forEach((key, i)=>{\n\t\t\tarr.push(obj[key]);\n\t\t})\n\t\treturn arr;\n\t},\n\tpopToRoute(name){\n\t\tlet route = Storage.Navigator.getCurrentRoutes().filter((route)=>(route.name === name));\n\t\tif(route.length > 0){\n\t\t\treturn Storage.Navigator.popToRoute(route[0]);\n\t\t}\n\t\treturn false;\n\t},\t\n\n\tgetImageScaledSize(width, height, expectWidth){\n\t\tlet ratio = width / height,\n\t\t\t\tnewWidth, newHeight;\n\n\t\tif(ratio > 1){\n\t\t\tnewWidth = expectWidth;\n \t\tnewHeight = expectWidth / ratio;\n\t\t} else {\n\t\t\tnewWidth = expectWidth * ratio;\n \t\tnewHeight = expectWidth;\n\t\t}\n\n\t\treturn {\n\t\t\twidth: newWidth,\n\t\t\theight: newHeight\n\t\t}\n\t},\n\tformatPrice(price){\n\t\tif(Number.isFinite(price) === true){\n\t\t\treturn `$${price.toFixed(2)}`;\n\t\t}\n\t\treturn null;\n\t},\n\tcloneObject(obj){\n\n\t\t//return _cloneObject(obj);\n\t\treturn JSON.parse(JSON.stringify(obj));\n\t},\n\tfindObjectInArray(arr, obj){\n\t\tlet result=null;\n\t\tlet position=null;\n\n\t\tif(obj && typeof(obj) === 'object' && Object.keys(obj).length > 0){\n\t\t\tarr.some((e, i)=>{\n\t\t\t\tlet isMatched = Object.keys(obj).every((key, i)=>obj[key]===e[key]);\n\t\t\t\tif(isMatched === true){\n\t\t\t\t\tposition = i;\n\t\t\t\t\tresult = e;\n\t\t\t\t}\n\t\t\t\treturn isMatched;\n\t\t\t})\n\t\t}\n\t\treturn {position, result: result};\n\t},\n\tparseOrderType(type){\n\t\tswitch(type){\n\t\t\tcase 'takeaway':\n\t\t\t\t// return 'takeAway';\n\t\t\t\treturn 'take_away';\n\t\t\t\tbreak;\n\t\t\tcase 'dinein':\n\t\t\t\t// return 'dineIn';\n\t\t\t\treturn 'dine_in';\n\t\t\t\tbreak;\n\t\t\tdefault: \n\t\t\t\treturn null;\n\t\t}\n\t},\n\tparseOrderTypeV2(type){\n\t\tswitch(type){\n\t\t\tcase 'takeaway':\n\t\t\t\t// return 'takeAway';\n\t\t\t\treturn 'allow_take_away';\n\t\t\t\tbreak;\n\t\t\tcase 'dinein':\n\t\t\t\t// return 'dineIn';\n\t\t\t\treturn 'allow_dine_in';\n\t\t\t\tbreak;\n\t\t\tdefault: \n\t\t\t\treturn null;\n\t\t}\n\t},\n\tconvertTextToArray(text){\n\t\t//Add bullet\n\t\t//return '\\u2022 ' + text.replace(/\\r\\n/g, '\\r\\n\\u2022 ');\n\t\tif(text){\n\t\t\treturn text.split('\\r\\n');\n\t\t}\n\t\treturn [];\n\t},\n\tgetDiscountDisplay(discounts){\n\t\treturn discounts.map((discount)=>({\n type: discount.amount ? 'amount':'percentage',\n value: (discount.amount || discount.percentage) || 0,\n reason: discount.reason,\n promotion: discount.promotion,\n voucher: discount.voucher,\n }))\n\t},\n\n\tparseDiscountValueByType(type, value){\n\t\treturn type === 'amount' ? `-${Services.formatPrice(value)}` : `${value}%`\n\t},\n\n\tremoveArrayElement(arr, e){\n\t\tlet index = arr.indexOf(e);\n\t\tif(index > -1){\n\t\t\tarr.splice(index,1);\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},\n\tremoveArrayFromArray(arrSub, arr){\n\t\treturn arr.filter((e)=>arrSub.indexOf(e) === -1);\n\t},\n\tgetParamFromUrl(url, paramName){\n let regexS = \"[\\\\?&]\"+paramName+\"=([^&#]*)\",\n regex = new RegExp( regexS ),\n results = regex.exec(url);\n \n paramName = paramName.replace(/[\\[]/,\"\\\\\\[\").replace(/[\\]]/,\"\\\\\\]\");\n\n if( results == null ){\n return '';\n }\n else {\n return results[1];\n }\n },\n}\n\nexport default Services;\n","import { Endpoint, Host, AUTH_KEY } from '@env';\n\nconsole.log('._.')\nconst Ep = {\n\tEndpoint,\n\tHost,\n\tAUTH_KEY\n};\n\nexport default Ep;\n","import Endpoint from './Endpoint';\nimport Services from './Services';\n\nconst BASE_URL = Endpoint.Endpoint;\nconst HOST = Endpoint.Host;\nconst AUTH_KEY = Endpoint.AUTH_KEY;\n\nconst emptyFunc = ()=>{};\n\nlet _suffixURL = ''; // add to the end of URL\n\nconst API = {\n\t//*****GET*****\n getStores(storeID, callback){\n const url = '/odoo+menu+integration+1/pos.shop';\n if(storeID){\n _suffixURL = storeID;\n }\n\n return get(url, callback);\n },\n\n getMenu(storeID, callback){\n const url = '/odoo+menu+integration+2/pos.shop';\n\n if(storeID){\n _suffixURL = storeID;\n }\n return get(url, callback);\n },\n\n getProduct(productId, callback){\n const url = '/odoo+menu+integration+2/product.template';\n\n if(productId){\n _suffixURL = productId;\n }\n return get(url, callback);\n },\n\n getCategory(callback){\n const url = '/odoo+menu+integration+1/pos.category';\n\n return get(url, callback);\n },\n\n getCategoryById(categoryId, callback){\n const url = '/odoo+menu+integration+1/pos.category';\n\n if(categoryId){\n _suffixURL = categoryId;\n }\n return get(url, callback);\n },\n\n createOrder(data, callback){\n const url = '/pos.order/create_order';\n\n return post(url, data, callback);\n\n // authenticate({\n // success: (res)=>{\n // try {\n // if(res.result) {\n // return post(url, data, res.result.session_id, callback);\n // } else {\n // (callback.error || emptyFunc)(res);\n // }\n // } catch(BreakException) {\n // }\n // }\n // });\n },\n\n postOrder(data, callback){\n const url = '/pos.order/calculate_price';\n\n return post(url, data, callback);\n\n // authenticate({\n // success: (res)=>{\n // try {\n // console.log(res)\n // if(res.result) {\n // return post(url, data, res.result.session_id, callback);\n // } else {\n // (callback.error || emptyFunc)(res.error.data.message);\n // }\n // } catch(BreakException) {\n // }\n // },\n // error: (err)=>{\n // console.log(err.error.data.message)\n // }\n // });\n },\n\n getTssCustomModifierMapping(callback){\n const url = '/odoo+menu+integration+1/modifier.mapping';\n\n return get(url, callback);\n },\n\n getOrder(token, callback) {\n const url = '/pos.order/get_order/' + token;\n\n return getV2(url, {}, callback);\n }\n}\n\n/** New Odoo Enpoint. 2022 Jul 27 */\nasync function get(url, callback) {\n try{\n const ajaxURL = `${BASE_URL}${url}/${_suffixURL}`;\n _suffixURL = '';\n // console.log(ajaxURL)\n\n const response = await fetch(ajaxURL, {\n method: 'GET',\n credentials: 'omit',\n headers: {\n 'Accept': 'application/json',\n 'Authorization': 'Basic ' + AUTH_KEY\n }\n });\n\n callbackAfterFetch(response, callback);\n } catch (error){\n distinguishAPIError(callback, error);\n }\n}\n\nasync function post(url, data, callback) {\n try{\n const ajaxURL = `${HOST}${url}/${_suffixURL}`;\n _suffixURL = '';\n\n const response = await fetch(ajaxURL, {\n method: 'POST',\n credentials: 'omit',\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n // 'X-Openerp': session\n // 'Authorization': 'Basic ' + AUTH_KEY\n },\n body: JSON.stringify(data)\n });\n\n callbackAfterFetch(response, callback);\n } catch (error){\n distinguishAPIError(callback, error);\n }\n}\n\nasync function getV2(url, body, callback) {\n try{\n const ajaxURL = `${HOST}${url}`;\n\n const response = await fetch(ajaxURL, {\n method: 'GET',\n credentials: 'omit',\n headers: {\n 'Accept': 'application/json',\n 'Authorization': 'Basic ' + AUTH_KEY\n }\n });\n\n callbackAfterFetch(response, callback);\n } catch (error){\n distinguishAPIError(callback, error);\n }\n}\n\n// async function authenticate(callback) {\n// const url = '/web/session/authenticate';\n// let ajaxURL = `${HOST}${url}`;\n\n// let data = {\n// jsonrpc: \"2.0\",\n// params: {\n// db: DB,\n// login: LOGIN,\n// password: PASSWORD\n// }\n// };\n\n// const res = await fetch(ajaxURL, {\n// method: 'POST',\n// credentials: 'include',\n// headers: {\n// 'Accept': 'application/json',\n// 'Content-Type': 'application/json',\n// // 'Access-Control-Request-Credentials': true\n// },\n// body: JSON.stringify(data)\n// });\n\n// console.log(res)\n// console.log(res.headers.get('Content-Type'))\n// console.log(res.headers.get('set-cookie'))\n\n// // ajaxURL = `${HOST}/web/session/get_session_info`;\n// // data = {\n// // jsonrpc: \"2.0\",\n// // params: {}\n// // };\n\n// // const response = await fetch(ajaxURL, {\n// // method: 'POST',\n// // credentials: 'omit',\n// // headers: {\n// // 'Accept': 'application/json',\n// // 'Content-Type': 'application/json'\n// // },\n// // body: JSON.stringify(data)\n// // });\n\n// callbackAfterFetch(response, callback);\n// }\n\n// async function patch(url, data, callback) {\n// try{\n// const ajaxURL = `${BASE_URL}${url}/${_suffixURL}`;\n// _suffixURL = '';\n\n// const response = await fetch(ajaxURL, {\n// method: 'PATCH',\n// credentials: 'omit',\n// headers: {\n// 'Accept': 'application/json',\n// 'Content-Type': 'application/json',\n// 'Authorization': 'Basic ' + AUTH_KEY,\n// },\n// body: JSON.stringify(data)\n// });\n\n// callbackAfterFetch(response, callback);\n// } catch (error){\n// distinguishAPIError(callback, error);\n// }\n// }\n\n// function SouperApi(url, callbackSuccess, callbackFailed, callbackErr, skipResultCheck = false){\n// fetch(`${SOUPERAPI_MOBILE_ENDPOINT}/${url}`, {\n// method: 'GET',\n// credentials: 'omit',\n// headers: {\n// 'X-Api-Key': SOUPERAPI_AUTH_KEY,\n// 'Accept': 'application/json',\n// }\n// })\n// .then(response => response.json())\n// .then(data => {\n// if (data.result == 'Success' || skipResultCheck) {\n// callbackSuccess(data);\n// } else {\n// callbackFailed(data.message);\n// }\n// })\n// .catch(err => {\n// callbackErr(err);\n// })\n// .finally(()=>{\n// Services.hideSpinner();\n// });\n// }\n\n// function SouperApiPost(url, requestBody, callbackSuccess, callbackFailed, callbackErr, skipResultCheck = false){\n// fetch(`${SOUPERAPI_MOBILE_ENDPOINT}/${url}`, {\n// method: 'POST',\n// credentials: 'omit',\n// headers: {\n// 'X-Api-Key': SOUPERAPI_AUTH_KEY,\n// 'Content-Type': 'application/json',\n// 'Access-Control-Allow-Origin': '*'\n// },\n// body: JSON.stringify(requestBody)\n// })\n// .then(response => response.json())\n// .then(data => {\n// if (data.result == 'Success' || skipResultCheck) {\n// callbackSuccess(data);\n// } else {\n// callbackFailed(data.message);\n// }\n// })\n// .catch(err => {\n// callbackErr(err);\n// })\n// .finally(()=>{\n// Services.hideSpinner();\n// });\n// }\n\nfunction distinguishAPIError(callback, error){\n //Detect whether this api error is because of no connections\n // NetInfo.isConnected.fetch().done(isConnected => {\n // if(Storage.Components.Spinner){\n // Storage.Components.Spinner.hide();\n // }\n // //If the device still has network conntection, pass through the api error\n // if (isConnected == true) {\n // callbackAPIError(callback, error);\n // }\n // else {\n // //If device loss network connection, show no connections alert\n // Services.showLostConnectionAlert()\n // }\n // })\n callbackAPIError(callback, error);\n}\n\nconst callbackAfterFetch = (response, callback)=>{\n generateResponseJson(response).then((json)=>{\n let responseJson = json;\n\n // console.log('*********DEBUG************');\n // console.log(response);\n // console.log(responseJson);\n // console.log('**************************');\n\n\n if(callback){\n callbackComplete(callback.complete);\n if(response.ok === false){\n (callback.error || emptyFunc)(responseJson);\n } else {\n // if(responseJson.success === false){\n // (callback.error || emptyFunc)(responseJson);\n // }else{\n (callback.success || emptyFunc)(responseJson);\n // }\n }\n }\n\n })\n}\n\nasync function generateResponseJson(response){\n try{\n return await response.json();\n } catch(error){\n if(response.status === 500){\n return 'Server error!';\n }\n if(response.status === 404){\n return 'URL not found!';\n }\n }\n}\n\nasync function callbackComplete(callback){\n try{\n await (callback || emptyFunc)();\n } catch(error){\n Services.showAlertError(error.message);\n }\n}\n\nconst callbackAPIError = (callback, error)=>{\n if(callback){\n (callback.complete || emptyFunc)();\n (callback.error || emptyFunc)(error.message);\n }\n}\n\nexport default API;\n","import moment from 'moment';\nimport assign from 'object-assign';\nimport { EventEmitter } from 'events';\n\nimport API from '../Utils/API';\nimport Services from '../Utils/Services';\nimport Config from '../Utils/Config';\n\nimport AppDispatcher from '../Dispatcher/AppDispatcher';\nimport Constants from '../Constants/AppConstants';\n\nconst CHANGE_EVENT = 'change',\n SELECT_EVENT = 'select',\n SELECT_TABLE_EVENT = 'select_table',\n SELECT_TIME_EVENT = 'select_time',\n UNAVAILABLE_STORE = 'unavailable_store',\n MSG_STORE_UNAVAILABLE = 'Store is closed';\n\nconst formatDate = 'MMM DD, YYYY h:mm:ss a';\nconst TIME_FORMAT = 'HH:mm:ss';\n\nconst emptyFunc = () => { };\n\nlet _data = [];\nlet _selectedStore = {};\nlet _selectedTable = {};\nlet _selectedTableId = 0;\n// {\n// \"id\": 4,\n// \"number\": \"03B\"\n// }\n\nlet _selectedEpochTime = null; // miliseconds\n\nlet _selectedDayTakeAway = null;\n/* 1 of the day as below\n \"takeAwayHours\": [\n {\n \"dayOfWeek\": \"SUNDAY\",\n \"startTime\": \"11:00:00.000\",\n \"endTime\": \"22:00:00.000\"\n },\n {\n \"dayOfWeek\": \"MONDAY\",\n \"startTime\": \"11:00:00.000\",\n \"endTime\": \"22:00:00.000\"\n },\n*/\n\nlet _type; // takeaway || dinein\n\nlet _timeETA = 0, // Time to prepare a meal, in MINUTES\n _epochETA = 0; //Time to prepare a meal, in Miliseconds\n\nlet _isDineInAvailable = false; //Check DineIn day of week from API\nlet _posStoreCode = 0;\nlet _categoryId = 0;\nlet _configId = 0;\nlet _tableId = 0;\n// let _suggestionId = 0;\n// let _showSuggestionOn = 0;\n// let _homeSliderId = 0;\nlet _token = \"\";\nlet _summaryIp = 0;\nlet _sessionId = 0;\nlet _pricelistId = 0;\nlet _userId = 0;\n\n// const _findSelectedDayTakeAway = (store, miliseconds)=>{\n// \treturn store['take_away_hours'].filter((date)=>date.day_of_week.toLowerCase() === moment(miliseconds).format('dddd').toLowerCase())[0];\n// }\n\nconst _findSelectedDayDineIn = (store) => {\n return store['dine_in_hours'].filter((date) => date.day_of_week.toLowerCase() === moment(new Date()).format('dddd').toLowerCase())[0];\n}\n\nconst _isDineInAvailableInTime = (dayOfWeek) => {\n if (dayOfWeek) {\n let startEpoch = moment(dayOfWeek.start_time, TIME_FORMAT).valueOf(),\n endEpoch = moment(dayOfWeek.end_time, TIME_FORMAT).valueOf();\n let currentEpoch = (new Date()).getTime();\n\n if (currentEpoch > startEpoch && currentEpoch < endEpoch) {\n return true;\n }\n }\n\n return false;\n}\n\nconst _getData = (storeID, callback = {}) => {\n API.getStores(storeID, {\n success: (res) => {\n let data = [];\n data.push(res)\n _data = data;\n StoreStore.emitChange();\n },\n error: (error) => {\n Services.showAlertError(error);\n },\n complete: () => {\n (callback.complete || emptyFunc)();\n }\n })\n};\n\nconst _ajaxETA = (store) => {\n _timeETA = store.kitchen_prep_time + store.buffer_time;\n _epochETA = _timeETA * 60 * 1000;\n StoreStore.checkDineInAvailable(store);\n _selectedTable = null;\n\n StoreStore.emitSelect();\n}\n\n\nlet StoreStore = assign({}, EventEmitter.prototype, {\n getAll() {\n return _data;\n },\n getAllStoreForSelectedType() {\n return this.getAllStoreForType(_type);\n },\n getSelectedStore() {\n return _selectedStore;\n },\n checkStoreAvailableForType(type) {\n return this.getAllStoreForType(type).length > 0;\n },\n getAllStoreForType(type) {\n let orderType = Services.parseOrderTypeV2(type);\n return _data.filter((store) => store[orderType] == true);\n },\n getSelectedDayTakeAway() {\n return _selectedDayTakeAway;\n },\n\n getSelectedTable() {\n return _selectedTable || {};\n },\n getType() {\n return _type;\n },\n getEpochTime() {\n return _selectedEpochTime;\n },\n getDateTime() {\n //MMM DD, YYYY h:mm A\n return Services.formatDateTime(_selectedEpochTime);\n },\n getTables() {\n if (_isDineInAvailable === true) {\n return _selectedStore.tables;\n } else {\n return [];\n }\n },\n\n // getEarliestTakeAwayEpochTime(){\n // /*\n // _ Set TakeAway date/time picker to earliest day of a store (TaweAway hours + ETA)\n // */\n // let epochToday = (new Date()).getTime(),\n // todayTakeAway = _findSelectedDayTakeAway(_selectedStore, (new Date()).getTime()),\n // timeEarliest = epochToday + _epochETA;\n\n // if(todayTakeAway){\n // let epochStartTime = moment(todayTakeAway.startTime, 'HH:mm:ss').valueOf();\n // epochStartTime += _epochETA;\n // if(epochStartTime > epochToday){\n // timeEarliest = epochStartTime;\n // }\n\n // return timeEarliest;\n // }\n\n // return epochToday + _epochETA;\n\n // },\n\n getETA() {\n return _timeETA; //minute\n },\n\n\n clear() {\n _data = [];\n },\n\n setSelectedStore(store, posStoreCode, categoryId, token, summaryIp, sessionId, pricelistId, userId, configId, tableId) {\n _selectedStore = store;\n _posStoreCode = posStoreCode;\n // _categoryId = categoryId;\n _configId = configId;\n _tableId = tableId;\n _token = token;\n _summaryIp = summaryIp;\n _sessionId = sessionId;\n _pricelistId = pricelistId;\n _userId = userId;\n\n // mapped categories\n let categoryids = '';\n _selectedStore.pos_category_ids.forEach(categoryId => {\n categoryids += categoryId.id + ',';\n });\n _categoryId = categoryids.substring(0, categoryids.length - 1);\n\n _ajaxETA(store);\n },\n\n setTable(tableID) {\n // _selectedTable = _selectedStore.tables.filter((table)=>table.id === tableID)[0];\n _selectedTableId = tableID;\n _selectedEpochTime = null;\n this.emitSelectTable();\n },\n\n setType(type) {\n _type = type.toLowerCase();\n },\n\n emitChange() {\n this.emit(CHANGE_EVENT);\n },\n addChangeListener(callback) {\n this.on(CHANGE_EVENT, callback);\n },\n removeChangeListener(callback) {\n this.removeListener(CHANGE_EVENT, callback);\n },\n\n emitSelect() {\n this.emit(SELECT_EVENT);\n },\n addSelectListener(callback) {\n this.on(SELECT_EVENT, callback);\n },\n removeSelectListener(callback) {\n this.removeListener(SELECT_EVENT, callback);\n },\n\n emitSelectTable() {\n this.emit(SELECT_TABLE_EVENT);\n },\n addSelectTableListener(callback) {\n this.on(SELECT_TABLE_EVENT, callback);\n },\n removeSelectTableListener(callback) {\n this.removeListener(SELECT_TABLE_EVENT, callback);\n },\n\n emitSelectTime() {\n this.emit(SELECT_TIME_EVENT);\n },\n addSelectTimeListener(callback) {\n this.on(SELECT_TIME_EVENT, callback);\n },\n removeSelectTimeListener(callback) {\n this.removeListener(SELECT_TIME_EVENT, callback);\n },\n\n clear() {\n _selectedStore = null;\n },\n\n isTypeValid(store = _selectedStore, selectedEpochTime, timeETA, type = _type) {\n if (!store) {\n return {\n result: false,\n msgError: 'Please select a store',\n }\n }\n\n switch (type) {\n // case 'takeaway':\n // let check = _checkDatetimeTakeAway(store, selectedEpochTime, timeETA);\n // if(check.result===false){\n // return{\n // result: false,\n // msgError: check.message,\n // }\n // }\n // return{result: true}\n case 'dinein':\n if (!_selectedTable || Object.keys(_selectedTable).length === 0) {\n return {\n result: false,\n msgError: 'Please select a table'\n }\n }\n return { result: true }\n }\n },\n setDatetime(datetime) {\n _selectedTable = {};\n _selectedEpochTime = datetime;\n _selectedDayTakeAway = _findSelectedDayTakeAway(_selectedStore, _selectedEpochTime);\n this.emitSelectTime();\n },\n\n checkDineInAvailable(store = _selectedStore) {\n let dayOfWeek = _findSelectedDayDineIn(store);\n _isDineInAvailable = _isDineInAvailableInTime(dayOfWeek);\n return _isDineInAvailable;\n },\n\n isDineInAvailable() {\n /*\n _ Used to hide Next button at the bottom if DineIn is not available\n */\n return _isDineInAvailable;\n },\n\n getPosStoreCode() {\n return _posStoreCode;\n },\n\n getCategoryId() {\n return _categoryId;\n },\n\n getConfigId() {\n return _configId;\n },\n\n getTableId() {\n return _tableId;\n },\n\n // getSuggestionId(){\n // return _suggestionId;\n // },\n\n // getShowSuggestionOn() {\n // return _showSuggestionOn;\n // },\n\n // getHomeSliderId() {\n // return _homeSliderId;\n // },\n\n getQRToken() {\n return _token;\n },\n\n getSummaryIp() {\n return _summaryIp;\n },\n\n getSessionId() {\n return _sessionId;\n },\n\n getPriceListId() {\n return _pricelistId;\n },\n\n getUserId() {\n return _userId;\n },\n\n getTableNo() {\n let tableno = '';\n _selectedStore.floor_ids.forEach(floor => {\n if (floor.table_ids.filter((table) => table.id === parseInt(_selectedTableId)).length > 0) {\n tableno = floor.table_ids.filter((table) => table.id === parseInt(_selectedTableId))[0].name;\n }\n });\n return tableno\n }\n})\n\n\nStoreStore.dispatchData = AppDispatcher.register((action) => {\n switch (action.type) {\n case Constants.ActionTypes.AJAX_GET_STORE:\n _getData(action.storeID, action.callback);\n break;\n case Constants.ActionTypes.SELECT_STORE:\n StoreStore.setSelectedStore(action.store, action.posStoreCode, action.categoryId, action.token, action.summaryIp, action.sessionId, action.pricelistId, action.userId, action.configId, action.tableId);\n break;\n case Constants.ActionTypes.SELECT_TABLE:\n StoreStore.setTable(action.tableID);\n break;\n case Constants.ActionTypes.SELECT_DATETIME_TAKEAWAY:\n StoreStore.setDatetime(action.datetime);\n break;\n case Constants.ActionTypes.SET_BOOKING_TYPE:\n StoreStore.setType(action.bookingType);\n break;\n }\n})\n\nexport default StoreStore;\n","import keyMirror from 'keymirror';\n\nexport default {\n\tActionTypes: keyMirror({\n\t\tAJAX_GET_STORE: null,\n\t\tSELECT_STORE: null,\n\t\tAJAX_GET_MENU: null,\n\t\tAJAX_GET_CUSTOMER_DETAILS: null,\n\t\tAJAX_GET_CUSTOMER_LATEST_POINTS: null,\n\t\tAJAX_GET_PROMOTIONS: null,\n\t\tAJAX_GET_ORDER: null,\n\t\tAJAX_GET_ORDERS: null,\n\t\tAJAX_GET_ORDERS_ALL: null, \n\t\tAJAX_POST_ORDER: null,\n\t\t// AJAX_GET_ALL_PROMOTIONS: null,\n\t\tSET_ORDER_TYPE: null,\n\t\tSET_ORDER_TYPE_2: null,\n\t\tSELECT_TABLE: null,\n\t\tSELECT_DATETIME_TAKEAWAY: null,\n\t\tSELECT_VARIANT: null,\n\t\tSELECT_MODIFIER: null,\n\t\tRESET_MODIFIER: null,\n\t\tSELECT_PRODUCT: null,\n\t\tSELECT_VOUCHER: null,\n\t\t// DELETE_PROMOTION: null,\n\t\tDESELECT_MODIFIER: null,\n\t\tSELECT_MODIFIER_V2: null,\n\t\tADD_PRODUCT_TO_CART: null,\n\t\tREMOVE_PRODUCT_FROM_CART: null,\n\t\tINIT_VARIANT: null,\n\t\tSET_BOOKING_TYPE: null,\n\t\tAJAX_LOGOUT: null,\n\t\tSUBMIT_PROMO_CODE: null,\n\t\tSET_SOUPERHOLIC: null,\n\t\tUPDATE_CART_AFTER_CHANGE_STORE: null,\n\t\tRESET_CART: null,\n\t\tSET_REWARD_POINTS_IN_CART: null,\n\t\tUPDATE_PROFILE: null,\n\t\tSYNC_PERSIST_STORE: null,\n\t\tCLEAR_PERSIST_STORE: null,\n\t\tSAVE_PAIR_STATUS: null,\n\t\tSET_PAYMENT_AMOUNT: null,\n\t\tSET_PAYMENT_TRANSID: null,\n\t\tAJAX_GET_BRAND_DATA: null,\n\t\tROUTE_CHANGE: null,\n\t\tUPDATE_MENU_SECTIONS: null,\n\t\tADD_PAYMENT_CARD: null,\n\t\tSET_TOKEN_PAYMENT_ID: null,\n\t\tSET_GIFT_CARD: null,\n\t\tSET_FOLIO: null,\n\t\tSET_MOBILE: null,\n\t\tSET_ACTION: null,\n\t\tRESET_ACTION: null,\n\t\tSET_COUNTDOWN: null,\n\t\tINIT_MENU: null,\n\t\tSET_TSS_VOUCHER: null,\n\t\tSELECT_TSS_VOUCHER: null,\n\t\t// SET_UPSELL_PRODUCT: null,\n\t\tSET_MODIFIER_MAP: null,\n\t\t// SET_STAFF_GROUP: null\n\t}),\n}\n\n","import AppDispatcher from '../Dispatcher/AppDispatcher';\nimport Constants from '../Constants/AppConstants';\n\nconst StoreActions = {\n\tgetData(storeID, callback) {\n AppDispatcher.dispatch({\n type: Constants.ActionTypes.AJAX_GET_STORE,\n storeID: storeID,\n callback: callback\n })\n },\n select(store, posStoreCode, categoryId, token, summaryIp, sessionId, pricelistId, userId, configId, tableId) {\n AppDispatcher.dispatch({\n type: Constants.ActionTypes.SELECT_STORE,\n store: store,\n posStoreCode: posStoreCode,\n categoryId: categoryId,\n token: token,\n summaryIp: summaryIp,\n sessionId: sessionId,\n pricelistId: pricelistId,\n userId: userId,\n configId: configId,\n tableId: tableId,\n })\n },\n selectTable(tableID){\n AppDispatcher.dispatch({\n type: Constants.ActionTypes.SELECT_TABLE,\n tableID: tableID\n })\n },\n selectDatetime(datetime){\n AppDispatcher.dispatch({\n type: Constants.ActionTypes.SELECT_DATETIME_TAKEAWAY,\n datetime: datetime\n })\n },\n setType(bookingType){\n AppDispatcher.dispatch({\n type: Constants.ActionTypes.SET_BOOKING_TYPE,\n bookingType: bookingType\n })\n }\n}\n\nexport default StoreActions;\n","import AppDispatcher from '../Dispatcher/AppDispatcher';\nimport Constants from '../Constants/AppConstants';\n\nconst OrderActions = {\n selectVariant(variant){\n AppDispatcher.dispatch({\n type: Constants.ActionTypes.SELECT_VARIANT,\n variant: variant\n })\n },\n selectModifier(modifier){\n AppDispatcher.dispatch({\n type: Constants.ActionTypes.SELECT_MODIFIER,\n modifier: modifier\n })\n },\n deselectModifier(modifier){\n AppDispatcher.dispatch({\n type: Constants.ActionTypes.DESELECT_MODIFIER,\n modifier: modifier\n })\n },\n selectModifierV2(modifier, modifierGroup){\n AppDispatcher.dispatch({\n type: Constants.ActionTypes.SELECT_MODIFIER_V2,\n modifier: modifier,\n modifierGroup: modifierGroup\n })\n },\n resetModifierGroup(modifierGroup){\n AppDispatcher.dispatch({\n type: Constants.ActionTypes.RESET_MODIFIER,\n modifierGroup: modifierGroup\n })\n },\n selectProduct(product){\n AppDispatcher.dispatch({\n type: Constants.ActionTypes.SELECT_PRODUCT,\n product: product,\n })\n },\n\n //Used after tapping on Update cart/Next in OrderMap\n setOrderType(orderType){\n AppDispatcher.dispatch({\n type: Constants.ActionTypes.SET_ORDER_TYPE,\n orderType: orderType,\n })\n },\n\n setOrderType2(orderType){\n AppDispatcher.dispatch({\n type: Constants.ActionTypes.SET_ORDER_TYPE_2,\n orderType: orderType,\n })\n }\n}\n\nexport default OrderActions;\n","import AppDispatcher from '../Dispatcher/AppDispatcher';\nimport Constants from '../Constants/AppConstants';\n\nconst MenuActions = {\n\tgetData(storeID, callback) {\n AppDispatcher.dispatch({\n type: Constants.ActionTypes.AJAX_GET_MENU,\n storeID: storeID,\n callback\n })\n },\n updateMenuSection(callback) {\n AppDispatcher.dispatch({\n type: Constants.ActionTypes.UPDATE_MENU_SECTIONS,\n callback\n })\n },\n initMenu(categories, callback){\n AppDispatcher.dispatch({\n type: Constants.ActionTypes.INIT_MENU,\n categories: categories,\n callback\n })\n },\n setCustomModifierMapping(modifierMap, callback){\n AppDispatcher.dispatch({\n type: Constants.ActionTypes.SET_MODIFIER_MAP,\n modifierMap: modifierMap,\n callback\n })\n },\n}\n\nexport default MenuActions;\n","import AppDispatcher from '../Dispatcher/AppDispatcher';\nimport Constants from '../Constants/AppConstants';\n\nimport moment from 'moment';\nimport assign from 'object-assign';\nimport {EventEmitter} from 'events';\n\nimport Services from '../Utils/Services';\n\nlet _data = {\n type: null, // takeaway || dinein\n epochTime: null, // epoch time for TakeAway\n store: null,\n table: null,\n tableId: null\n};\n\nlet _selectedVariant;\n/*\n \"id\": 54,\n \"price\": 11.2,\n \"modifierGroups\": [\n \"id\": 44,\n \"name\": \"Choose 1 Soup for your Sandwich Set (Regular)\",\n \"minModifiers\": 1,\n \"maxModifiers\": 1,\n \"childGroups\": [],\n\n numberSelectedModifier: 0,\n isSelectedModifierValid: true/false\n\n \"modifiers\": [\n {\n \"id\": 706,\n \"name\": \"Meatless Minestrone\",\n \"price\": 0,\n \"minQuantity\": 0,\n \"maxQuantity\": 1,\n \"preSelected\": false,\n \"sortIndex\": 0,\n \"product\": null\n },\n ]\n\n*/\n\nlet _currentSubtotal;\nlet _selectedProduct;\nlet _selectedProduct2;\nlet _dateTimeText; ////MMM DD, YYYY h:mm:ss A\nlet _isSelectedModifierValid = true; // check number of selected modifier with minModifiers/maxModifiers\nlet _orderType = 'dinein';\n\nconst _assignQuantityToModifiers = ()=>{\n /*\n _ Assign Quantity = 0 if quantity == null\n _ Assign Quantity = 1 if preSelected == true\n */\n\n if(_selectedProduct.product_variant_ids && _selectedProduct.product_variant_ids.length > 0){\n _selectedProduct.product_variant_ids.forEach((variant)=>{\n _initEachModifierQuantityToVariant(variant);\n })\n } else {\n _initEachModifierQuantityToVariant(_selectedProduct.product_variant_ids[0]);\n }\n}\n\nconst _initEachModifierQuantityToVariant = (variant, isForced)=>{\n /*\n isForced: used to reset quantity when switching between variants in Product screeen\n */\n variant.modifier_group_line_ids.forEach((modifierGroup)=>{\n modifierGroup.product_modifier_ids.forEach((modifier)=>{\n if(!modifier.isAddedToCart || isForced === true){\n modifier.isAddedToCart = false;\n if(modifier.pre_selected === true){\n modifier.quantity = 1;\n } else {\n modifier.quantity = 0; \n }\n }\n })\n })\n}\n\nconst _deselectVarianModifiers = ()=>{\n if(_selectedVariant){\n _initEachModifierQuantityToVariant(_selectedVariant, true);\n }\n}\n\nconst _calculateCurrentSubtotal = ()=>{\n let currentSubtotal = 0;\n\n _isSelectedModifierValid = true;\n\n if(_selectedVariant.lst_price){\n currentSubtotal = _selectedVariant.lst_price;\n } else {\n currentSubtotal = _selectedProduct.list_price;\n }\n\n _selectedVariant.modifier_group_line_ids.forEach((modifierGroup)=>{\n let numberSelectedModifier = 0;\n modifierGroup.product_modifier_ids.forEach((modifier)=>{\n if(modifier.quantity > 0){\n numberSelectedModifier+=modifier.quantity; // Track number of selected modifier\n currentSubtotal += (modifier.price * modifier.quantity);\n }\n })\n modifierGroup.numberSelectedModifier = numberSelectedModifier; \n if(_isSelectedModifierValid === true){\n _checkSelectedModifierValid(modifierGroup, numberSelectedModifier);\n }\n })\n\n _currentSubtotal = currentSubtotal;\n\n}\n\nconst _findSelectedVariant = (product)=>{\n let {position, result} = Services.findObjectInArray(product.product_variant_ids, {isAdded: true});\n return result;\n}\n\nconst _checkSelectedModifierValid = (modifierGroup, numberSelectedModifier)=>{\n //Check number of selected modifier with minQuantity, maxQuantity\n if(numberSelectedModifier < modifierGroup.min_modifier || numberSelectedModifier > modifierGroup.max_modifier ) {\n _isSelectedModifierValid = false;\n }\n}\n\nconst SELECT_VARIANT_EVENT = 'select_variant',\n CHANGE_VARIANT_EVENT = 'change_variant';\n\nlet OrderStore = assign({}, EventEmitter.prototype, {\n getData(){\n return _data;\n },\n getStore(){\n return _data.store;\n },\n \n setType(type){\n _data.type = type.toLowerCase();\n },\n\n setType2(type){\n _orderType = type.toLowerCase();\n },\n\n setTable(table){\n _data.epochTime = null;\n _dateTimeText = null;\n\n _data.table = table;\n _data.isValid = true;\n },\n\n setTableId(tableId){\n _data.tableId = tableId;\n },\n\n setEpochTime(epochTime){\n _data.table = null;\n _data.epochTime = epochTime;\n _dateTimeText = Services.formatCartSummaryDateTime(epochTime);\n },\n\n setStore(store){\n _data.store = store;\n },\n\n setSelectedVariant(variant){\n if(_selectedVariant){\n _selectedVariant.isAdded = false;\n }\n _deselectVarianModifiers();\n _selectedVariant = variant;\n _selectedVariant.isAdded = true;\n _calculateCurrentSubtotal();\n this.emitChangeVariant();\n },\n\n setSelectedModifier(modifier, quantity){\n //quantity: add: 1/ remove: -1\n\n modifier.quantity+=quantity;\n (modifier.quantity) < 0 && (modifier.quantity = 0);\n _calculateCurrentSubtotal();\n this.emitChangeVariant();\n },\n\n SelectModifierV2(modifier, modifierGroup){\n modifierGroup.product_modifier_ids.forEach((modifierr,i)=>{\n if(!modifierr.pre_selected) {\n modifierr.quantity = 0;\n }\n });\n\n modifier.quantity+=1;\n (modifier.quantity) < 0 && (modifier.quantity = 0);\n _calculateCurrentSubtotal();\n this.emitChangeVariant();\n },\n\n resetModifierGroup(modifierGroup) {\n modifierGroup.product_modifier_ids.forEach((modifierr,i)=>{\n if(!modifierr.pre_selected) {\n modifierr.quantity = 0;\n }\n });\n this.emitChangeVariant();\n },\n\n setSelectedProduct(product){\n _selectedProduct = Services.cloneObject(product);\n\n if(_selectedProduct.product_variant_ids && _selectedProduct.product_variant_ids.length > 0) {\n _selectedVariant = _findSelectedVariant(_selectedProduct);\n if(!_selectedVariant){\n _selectedVariant = _selectedProduct.product_variant_ids[0];\n }\n } else {\n //Assign product.modifierGroups to product.variants if variants do not exist\n _selectedVariant = {modifier_group_line_ids: _selectedProduct.product_variant_ids[0].modifier_group_line_ids};\n }\n _selectedVariant.isAdded = true;\n _assignQuantityToModifiers();\n _calculateCurrentSubtotal();\n },\n\n getType(){\n return _data.type;\n },\n getType2(){\n return _orderType;\n },\n getTypeText(){\n return \"TSS QR Ordering.\";\n },\n getEpochTime(){\n return _data.epochTime;\n },\n getDatetime(){\n //MMM DD, YYYY h:mm:ss A\n return _dateTimeText;\n },\n getTable(){\n return _data.table;\n },\n getStore(){\n return _data.store;\n },\n getStoreName() {\n return `${_data.store.name}`;\n },\n getSelectedProduct(){\n return _selectedProduct;\n },\n getSelectedVariant(){\n return _selectedVariant;\n },\n getCurrentSubtotal(){\n return _currentSubtotal;\n },\n getModifierGroups(){\n if(_selectedVariant) {\n if(_selectedVariant.modifier_group_line_ids)\n {\n return _selectedVariant.modifier_group_line_ids;\n }\n }\n return null;\n },\n isSelectedModifierValid(){\n return _isSelectedModifierValid;\n },\n\n emitChangeVariant(){\n this.emit(SELECT_VARIANT_EVENT);\n },\n\n addChangeVariantListener(callback){\n this.on(SELECT_VARIANT_EVENT, callback);\n },\n removeChangeVariantListener(callback) {\n this.removeListener(SELECT_VARIANT_EVENT, callback);\n },\n\n clearSelectedStore(){\n _data.epochTime = null;\n _data.store = null;\n _data.table = null;\n },\n\n checkModifierGroupsValid() {\n let modifierGroupsValid = [];\n _selectedVariant.modifier_group_line_ids.forEach((modifierGroup)=>{\n let numberSelectedModifier = 0;\n modifierGroup.product_modifier_ids.forEach((modifier)=>{\n if(modifier.quantity > 0){\n numberSelectedModifier+=modifier.quantity; // Track number of selected modifier\n }\n })\n modifierGroup.numberSelectedModifier = numberSelectedModifier; \n if(numberSelectedModifier < modifierGroup.min_modifier || numberSelectedModifier > modifierGroup.max_modifier ){\n modifierGroupsValid.push(false);\n } else {\n modifierGroupsValid.push(true);\n }\n });\n\n return modifierGroupsValid;\n },\n})\n\nOrderStore.dispatchData = AppDispatcher.register((action)=>{\n switch(action.type) {\n case Constants.ActionTypes.SET_ORDER_TYPE:\n OrderStore.setType(action.orderType);\n break;\n case Constants.ActionTypes.SET_ORDER_TYPE_2:\n OrderStore.setType2(action.orderType);\n break;\n case Constants.ActionTypes.SELECT_VARIANT:\n OrderStore.setSelectedVariant(action.variant);\n break;\n case Constants.ActionTypes.SELECT_MODIFIER:\n OrderStore.setSelectedModifier(action.modifier, 1);\n break;\n case Constants.ActionTypes.DESELECT_MODIFIER:\n OrderStore.setSelectedModifier(action.modifier, -1);\n break;\n case Constants.ActionTypes.RESET_MODIFIER:\n OrderStore.resetModifierGroup(action.modifierGroup);\n break;\n case Constants.ActionTypes.SELECT_MODIFIER_V2:\n OrderStore.SelectModifierV2(action.modifier, action.modifierGroup);\n break;\n case Constants.ActionTypes.SELECT_PRODUCT:\n OrderStore.setSelectedProduct(action.product);\n break;\n }\n})\n\nexport default OrderStore;\n","import React from 'react';\nimport {\n Text,\n View,\n} from 'react-native';\n\nimport * as Navigation from '../Routes/Routing';\n\nimport styleHelper from '../Styles/StyleHelper';\nimport ThemeStyles from '../Styles/ThemeStyles';\n\nimport SmallSpinner from '../Components/SmallSpinner';\nimport ImageBackground from '../Components/ImageBackground';\n\nimport Config from '../Utils/Config';\nimport Services from '../Utils/Services';\nimport API from '../Utils/API';\n\nimport StoreActions from '../Actions/StoreActions';\nimport OrderActions from '../Actions/OrderActions';\nimport MenuActions from '../Actions/MenuActions';\n\nimport StoreStore from '../Stores/StoreStore';\nimport OrderStore from '../Stores/OrderStore';\n\nexport default class Splash extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n showSpinner: true,\n };\n }\n\n componentDidMount() {\n Services.onFocusCallback(() => {\n let today = new Date();\n let offset = today.getTimezoneOffset() / 60;\n if (offset != Config.timezone && Config.isProductionEnv) {\n Navigation.navigate('Offset');\n return;\n } else {\n StoreActions.getData(Config.storeId, {\n complete: () => {\n this.setState({\n showSpinner: false\n });\n }\n });\n }\n });\n }\n\n render() {\n if (this.state.showSpinner) {\n return (\n \n \n \n {Config.theme == \"OBBAR\" && 'Fun sips, quips and bites...'}\n {Config.theme == \"JJK\" && 'Everyday Comfort Soul Food...'}\n \n \n \n \n );\n }\n\n return (\n \n )\n }\n}\n\nclass LoadMenu extends React.Component {\n constructor(props) {\n super(props);\n this.setStore = this.setStore.bind(this);\n this.setTypeStore = this.setTypeStore.bind(this);\n this.setBookingToStores = this.setBookingToStores.bind(this);\n this.navigateHome = this.navigateHome.bind(this);\n\n const urlParams = new URLSearchParams(window.location.search);\n const table_id = urlParams.get('table_id');\n const summary_ip = urlParams.get('summary_ip');\n const session_id = urlParams.get('pos_session');\n const user_id = urlParams.get('user_id');\n let token = '';\n \n if(Config.isProductionEnv) {\n token = urlParams.get('token');\n if (!token || !table_id || !summary_ip || !session_id || !user_id) {\n Navigation.navigate('Lost');\n } \n } else {\n if (!table_id || !summary_ip || !session_id || !user_id) {\n // invalid url\n Navigation.navigate('Lost');\n }\n }\n\n this.state = {\n categoryId: '',\n configId: 0,\n tableId: table_id,\n token: token,\n summaryIp: summary_ip,\n sessionId: session_id,\n pricelistId: 1,\n userId: user_id,\n };\n }\n\n componentDidMount() {\n if(Config.isProductionEnv) {\n API.getOrder(this.state.token, {\n success: (res) => {\n if (res.error) {\n Navigation.navigate('Expired')\n } else {\n this.setStore('dinein', () => {\n setTimeout(() => {\n MenuActions.getData(StoreStore.getSelectedStore().id, () => {\n this.navigateHome();\n });\n }, 1000);\n });\n }\n },\n error: () => {\n // err here\n }\n });\n } else {\n this.setStore('dinein', () => {\n setTimeout(() => {\n MenuActions.getData(StoreStore.getSelectedStore().id, () => {\n this.navigateHome();\n });\n }, 1000);\n });\n }\n }\n\n setStore(orderType, callback) {\n let oT = orderType;\n this.setTypeStore(oT);\n\n // Set Selected Store\n let selectedStore = StoreStore.getAllStoreForSelectedType().find((store) => store.id === Config.storeId);\n if (selectedStore === undefined) {\n // Set Alternative Order Type\n oT = 'takeaway';\n this.setTypeStore(oT);\n selectedStore = StoreStore.getAllStoreForSelectedType().find((store) => store.id === Config.storeId);\n }\n StoreActions.select(selectedStore, Config.posStoreCode, this.state.categoryId, this.state.token, this.state.summaryIp, this.state.sessionId, this.state.pricelistId, this.state.userId, this.state.configId, this.state.tableId);\n\n OrderStore.setTableId(this.state.tableId);\n this.setBookingToStores(oT, this.state.tableId, callback);\n }\n\n setTypeStore(type) {\n if (StoreStore.checkStoreAvailableForType(type) == false) {\n return Services.showAlertError('Services temporarily unavailable', () => { });\n }\n\n StoreActions.setType(type);\n if (OrderStore.getType() !== type) {\n StoreStore.clear();\n }\n }\n\n setBookingToStores(orderType, tableId, callback) {\n OrderActions.setOrderType(orderType);\n OrderStore.setStore(StoreStore.getSelectedStore());\n\n if (orderType == 'dinein') {\n StoreActions.selectTable(tableId);\n OrderStore.setTable(StoreStore.getSelectedTable());\n } else if (orderType == 'takeaway') {\n // OrderStore.setEpochTime(StoreStore.getEpochTime());\n }\n\n callback();\n }\n\n navigateHome() {\n const urlParams = new URLSearchParams(window.location.search);\n const table_id = urlParams.get('table_id');\n const summary_ip = urlParams.get('summary_ip');\n const session_id = urlParams.get('pos_session');\n const user_id = urlParams.get('user_id');\n if(Config.isProductionEnv) {\n const token = urlParams.get('token');\n if (token && table_id && summary_ip && session_id && user_id) {\n Navigation.navigate('Welcome');\n } \n } else {\n if (table_id && summary_ip && session_id && user_id) {\n Navigation.navigate('Welcome');\n }\n }\n }\n\n render() {\n return (\n \n \n \n {Config.theme == \"OBBAR\" && 'Fun sips, quips and bites...'}\n {Config.theme == \"JJK\" && 'Everyday Comfort Soul Food...'}\n \n \n \n \n );\n }\n}","import React from 'react';\nimport {View, Image} from 'react-native';\n\nimport styleHelper from '../Styles/StyleHelper';\n\nimport Device from '../Utils/Device';\nimport Services from '../Utils/Services';\n\nexport default class ImageProduct extends React.Component {\n constructor(props) {\n super(props);\n this.getImageSize = this.getImageSize.bind(this);\n this.state = {\n imageHeight: this.props.height || 1,\n imageWidth: this.props.width || 1,\n uri: Services.getImageURL(this.props.imageID, 'product')\n };\n }\n \n componentDidMount() {\n if(!this.props.height){\n Services.onFocusCallback(()=>{\n this.getImageSize();\n })\n }\n }\n\n getImageSize() {\n Image.getSize(Services.getImageURL(this.props.imageID, 'product'), (imageWidth, imageHeight) => {\n let scaledImage = Services.getImageScaledSize(imageWidth, imageHeight, Device.width);\n this.setState({\n imageWidth: scaledImage.width,\n imageHeight: scaledImage.height\n });\n });\n }\n\n render(){\n if(this.props.imageID) {\n return(\n \n )\n }\n\n return(\n \n )\n\n }\n}","import React from 'react';\nimport {Text, Image, View, TouchableOpacity} from 'react-native';\nimport Ionicons from '@expo/vector-icons/Ionicons';\n\nimport styleHelper from '../Styles/StyleHelper';\nimport ThemeStyles from '../Styles/ThemeStyles';\n\nimport Services from '../Utils/Services';\n\nimport OrderStore from '../Stores/OrderStore';\nimport OrderActions from '../Actions/OrderActions';\n\nexport default class RadioModifierGroup extends React.Component {\n constructor(props) {\n super(props);\n this.onPress = this.onPress.bind(this);\n\n\t\tthis.state = {\n variants: OrderStore.getSelectedProduct().product_variant_ids,\n }\n\t}\n\n\tonPress(position, variant) {\n\t\tlet variants = this.state.variants;\n\t\tvariants[position].isAdded = true;\n\t\tOrderActions.selectVariant(variant);\n\n\t\tthis.setState({\n\t\t\tvariants: variants,\n\t\t})\n\t}\n\n\trender(){\n\t\tif(!this.state.variants[0]){\n\t\t\treturn null;\n\t\t}\n\t\treturn(\n\t\t\t\n\t\t\t\t{\n\t\t\t\t\tthis.state.variants.map((variant, i)=>{\n\t\t\t\t\t\tif(i%2===0){\n\t\t\t\t\t\t\treturn(\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t(i+1\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\t\t\t\t}\n\t\t\t\n\t\t)\n\t}\n}\n\nconst TouchableRadio = (props)=>{\n\tlet renderRadio = (selected)=>{\n\t\tif(selected === true){\n\t\t\treturn(\n \n\t\t\t)\n\t\t}\n\n\t\treturn(\n \n\t\t)\n\n\t}\n\n\treturn(\n\t\tprops.onPress(props.position, props.data)}\n\t\t\tstyle={[styleHelper.flexRow, styleHelper.containerTiny, styleHelper.flex1]}>\n\n\t\t\t{renderRadio(props.selected)}\n\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{props.data.attribute_value_ids[0].name}\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t+{Services.formatPrice(props.data.lst_price)}\n\t\t\t\t\n\t\t\t\n\t\t\n\t)\n}\n","import React from 'react';\nimport { View, TouchableOpacity, Image } from 'react-native';\n\nimport styleHelper from '../Styles/StyleHelper';\n\nimport Config from '../Utils/Config';\n\nconst IconPlus = (props) => {\n if (props.disabled === true) {\n return (\n \n \n \n )\n }\n\n return (\n \n \n \n )\n\n}\n\nconst ImageIconPlus = () => {\n return (\n \n )\n}\n\nexport default IconPlus;","import React from 'react';\nimport { View, TouchableOpacity, Image } from 'react-native';\n\nimport styleHelper from '../Styles/StyleHelper';\n\nimport Config from '../Utils/Config';\n\nconst IconMinus = (props) => {\n if (props.disabled === true) {\n return (\n \n \n \n )\n }\n\n return (\n \n \n \n )\n}\n\nconst ImageIconMinus = () => {\n return (\n \n )\n}\n\nexport default IconMinus;","import React from 'react';\nimport { Text, View, TouchableOpacity } from 'react-native';\nimport Ionicons from '@expo/vector-icons/Ionicons';\n\nimport styleHelper from '../Styles/StyleHelper';\nimport ThemeStyles from '../Styles/ThemeStyles';\n\nimport IconPlus from './IconPlus';\nimport IconMinus from './IconMinus';\n\nimport Device from '../Utils/Device';\nimport Services from '../Utils/Services';\n\nimport StoreStore from '../Stores/StoreStore';\nimport OrderStore from '../Stores/OrderStore';\n\nimport OrderActions from '../Actions/OrderActions';\n\nexport default class Modifier extends React.Component {\n constructor(props) {\n super(props);\n\n this.modifier = this.modifier.bind(this);\n this.renderPrice = this.renderPrice.bind(this);\n this.renderAdd = this.renderAdd.bind(this);\n this.updateModifierValid = this.updateModifierValid.bind(this);\n this.updateModifier = this.updateModifier.bind(this);\n this.reselectModifier = this.reselectModifier.bind(this);\n this.deselectModifier = this.deselectModifier.bind(this);\n }\n\n updateModifierValid(index) {\n let modifierGroupsValid = this.props.modifierGroupsValid;\n modifierGroupsValid[index] = OrderStore.checkModifierGroupsValid()[index];\n\n this.props.onModifierChange(modifierGroupsValid);\n }\n\n updateModifier(modifier, modifierGroup, index) {\n OrderActions.selectModifier(modifier);\n this.updateModifierValid(index);\n\n // show certain modifierGroup\n this.props.toggleCustomModifiers(modifierGroup, false);\n }\n\n reselectModifier(modifier, modifierGroup, index) {\n OrderActions.selectModifierV2(modifier, modifierGroup);\n this.updateModifierValid(index);\n }\n\n deselectModifier(modifier, modifierGroup, index) {\n OrderActions.deselectModifier(modifier);\n this.updateModifierValid(index);\n\n // hide certain modifierGroup\n this.props.toggleCustomModifiers(modifierGroup, true);\n }\n\n renderAdd(modifier, modifierGroup, index) {\n // console.log(modifierGroup)\n /**\n * Selected\n * Max selection is 1\n */\n if (modifier.max_qty == 1 && modifier.quantity > 0) {\n if (modifier.pre_selected) {\n return (\n \n )\n } else {\n return (\n \n )\n }\n } else {\n /**\n * Not Selected, OR Selected but max qty not reached\n * Max qty of modifier group not reached\n */\n if (modifierGroup.numberSelectedModifier < modifierGroup.max_modifier && modifier.quantity < modifier.max_qty) {\n if (modifier.max_qty > 1) {\n //Render quantity box\n return (\n {\n OrderActions.deselectModifier(modifier);\n this.updateModifierValid(index);\n }}\n onPressPlus={() => {\n OrderActions.selectModifier(modifier);\n this.updateModifierValid(index);\n }}\n modifier={modifier} />\n )\n } else {\n return (\n \n )\n }\n /**\n * Selected but max qty not reached\n * Max qty or modifier group reached\n * else chunk below almost imposible to trigger\n */\n } else { // not selected, \n if (modifier.max_qty > 1) {\n //Render quantity box\n return (\n {\n OrderActions.deselectModifier(modifier)\n this.updateModifierValid(index);\n }}\n disabled={true}\n modifier={modifier} />\n )\n } else { // almost imposible to trigger\n return (\n \n )\n }\n }\n }\n }\n\n renderPrice(price) {\n if (price > 0) {\n return (\n \n (+{Services.formatPrice(price)})\n \n )\n }\n }\n\n modifier(modifierGroup, index) {\n return (\n \n {\n modifierGroup.product_modifier_ids.map((modifier, i) => (\n \n \n 0 && styleHelper.DarkFont]}>\n {modifier.product_id.name}\n \n \n\n \n {this.renderPrice(modifier.price)}\n {this.renderAdd(modifier, modifierGroup, index)}\n \n\n \n ))\n }\n \n )\n }\n\n render() {\n let modifierGroups = [];\n let modifiers = [];\n\n if (this.props.modifierGroups.length === 0) {\n return null;\n } else {\n // oos modifier\n let isOos = false;\n let isDisabled = false;\n modifierGroups = [];\n this.props.modifierGroups.map((modifierGroup, i) => {\n if (modifierGroup.available_in_store) {\n isOos = false;\n isDisabled = false;\n modifiers = [];\n modifierGroup.product_modifier_ids.map((modifier, i) => {\n isOos = modifier.product_id.oos_store.find(x => x.id === StoreStore.getSelectedStore().id);\n if (modifier.product_id.disabled_store) {\n isDisabled = modifier.product_id.disabled_store.find(x => x.id === StoreStore.getSelectedStore().id);\n }\n\n if (!isOos && modifier.available_in_store && !isDisabled) {\n modifiers.push(modifier);\n }\n });\n modifierGroup.product_modifier_ids = modifiers;\n modifierGroups.push(modifierGroup);\n }\n });\n }\n\n return (\n \n {\n modifierGroups.map((modifierGroup, i) => (\n !modifierGroup.hide ?\n (\n \n \n {\n !this.props.modifierGroupsValid[i] &&\n \n \n !\n \n \n }\n\n {\n this.props.modifierNodes.set(i, ref);\n }}>\n {modifierGroup.name}\n \n \n\n \n \n {modifierGroup.description}\n \n \n\n {this.modifier(modifierGroup, i)}\n \n ) : \n ))\n }\n \n )\n }\n}\n\nconst BoxQuantity = (props) => {\n return (\n \n \n \n \n {props.modifier.quantity}\n \n \n \n \n )\n}\n\nconst TouchableRadio = (props) => {\n let renderRadio = (selected) => {\n if (selected === true) {\n return (\n \n )\n }\n\n return (\n \n )\n\n }\n\n if (props.disabled) {\n return (\n \n {renderRadio(props.selected)}\n \n )\n }\n\n return (\n props.onPress(props.modifier, props.modifierGroup, props.index)}\n >\n\n {renderRadio(props.selected)}\n\n \n )\n}\n\n","import AppDispatcher from '../Dispatcher/AppDispatcher';\nimport Constants from '../Constants/AppConstants';\n\nconst CartActions = {\n\taddProductToCart(product, qty) {\n AppDispatcher.dispatch({\n type: Constants.ActionTypes.ADD_PRODUCT_TO_CART,\n product: product,\n qty: qty,\n })\n },\n removeProduct(cartID) {\n AppDispatcher.dispatch({\n type: Constants.ActionTypes.REMOVE_PRODUCT_FROM_CART,\n cartID: cartID\n })\n },\n postOrder(store, errorCallback = true, isRedemption = false){\n AppDispatcher.dispatch({\n type: Constants.ActionTypes.AJAX_POST_ORDER,\n store: store,\n errorCallback: errorCallback,\n isRedemption: isRedemption\n })\n },\n // submitPromoCode(code, auto = false){\n // AppDispatcher.dispatch({\n // type: Constants.ActionTypes.SUBMIT_PROMO_CODE,\n // code: code,\n // auto: auto,\n // })\n // },\n // selectVoucher(voucherID) {\n // AppDispatcher.dispatch({\n // type: Constants.ActionTypes.SELECT_VOUCHER,\n // voucherID: voucherID\n // })\n // },\n // selectTssVoucher(voucherID, voucherCode) {\n // AppDispatcher.dispatch({\n // type: Constants.ActionTypes.SELECT_TSS_VOUCHER,\n // voucherID: voucherID,\n // voucherCode: voucherCode\n // })\n // },\n // deletePromotion(promotionID, voucherID){\n // AppDispatcher.dispatch({\n // type: Constants.ActionTypes.DELETE_PROMOTION,\n // promotionID,\n // voucherID,\n // })\n // },\n updateCartAfterChangeStore(store, callback){\n AppDispatcher.dispatch({\n type: Constants.ActionTypes.UPDATE_CART_AFTER_CHANGE_STORE,\n store: store,\n callback: callback,\n })\n },\n reset(){\n AppDispatcher.dispatch({\n type: Constants.ActionTypes.RESET_CART,\n })\n },\n //Add user's souperholic points to cart\n // setRewardPoints(points){\n // AppDispatcher.dispatch({\n // type: Constants.ActionTypes.SET_REWARD_POINTS_IN_CART,\n // points: points,\n // })\n // },\n // setGiftCardRewardPoints(points){\n // AppDispatcher.dispatch({\n // type: Constants.ActionTypes.SET_GIFT_CARD_REWARD_POINTS_IN_CART,\n // points: points,\n // })\n // },\n // getAllPromotions(){\n // AppDispatcher.dispatch({\n // type: Constants.ActionTypes.AJAX_GET_ALL_PROMOTIONS,\n // })\n // },\n\n // setCartExpired(){\n // AppDispatcher.dispatch({\n // type: Constants.ActionTypes.SET_CART_EXPIRED,\n // })\n // },\n setPaymentAmount(amount){\n AppDispatcher.dispatch({\n type: Constants.ActionTypes.SET_PAYMENT_AMOUNT,\n amount: amount\n })\n },\n setPaymentTransId(transId){\n AppDispatcher.dispatch({\n type: Constants.ActionTypes.SET_PAYMENT_TRANSID,\n transId: transId\n })\n },\n}\n\nexport default CartActions;\n","import React from 'react';\nimport { Text, View, Image, TouchableOpacity, StyleSheet, ScrollView, Modal, findNodeHandle, UIManager } from 'react-native';\nimport Ionicons from '@expo/vector-icons/Ionicons';\n\nimport styleHelper from '../Styles/StyleHelper';\nimport ThemeStyles from '../Styles/ThemeStyles';\n\nimport RadioModifierGroup from './RadioModifierGroup';\nimport Modifier from './Modifier';\nimport IconPlus from './IconPlus';\nimport IconMinus from './IconMinus';\n\nimport API from '../Utils/API';\nimport Device from '../Utils/Device';\nimport Config from '../Utils/Config';\nimport Services from '../Utils/Services';\n\nimport StoreStore from '../Stores/StoreStore';\nimport OrderStore from '../Stores/OrderStore';\n\nimport CartActions from '../Actions/CartActions';\n\nvar RCTUIManager = UIManager;\n\nconst styles = StyleSheet.create({\n blurBg: {\n width: Device.width,\n height: Device.height,\n backgroundColor: 'rgba(0,0,0,0.8)',\n },\n});\n\nconst productStyles = StyleSheet.create({\n popupContainer: {\n width: Device.width * 0.9,\n height: Device.height ?\n Device.height * 0.85 :\n Device.getSize(400),\n backgroundColor: '#FFF',\n paddingVertical: Device.getSize(10),\n marginTop: Device.getSize(20),\n marginBottom: Device.getSize(20),\n borderColor: '#000',\n borderWidth: 1,\n borderRadius: Device.getSize(10)\n },\n customBtn: {\n maxHeight: Device.getSize(30),\n marginTop: Device.getSize(10)\n },\n qtyInput: {\n width: Device.getSize(100)\n }\n});\n\nexport default class ProductModal extends React.Component {\n constructor(props) {\n super(props);\n this.handleModifierScroll = this.handleModifierScroll.bind(this);\n this.addProduct = this.addProduct.bind(this);\n this.hideProduct = this.hideProduct.bind(this);\n this.renderProductQty = this.renderProductQty.bind(this);\n\n this.state = {\n modifierNodes: new Map(),\n productQty: 1,\n isOne: false,\n modifierY: 0,\n };\n }\n\n handleModifierScroll(event) {\n this.setState({\n modifierY: event.nativeEvent.contentOffset.y\n });\n }\n\n addProduct() {\n let is_oos = true;\n let is_timeout = true;\n const product = OrderStore.getSelectedProduct();\n\n // oos err msg\n if (product.available_for_order) {\n product.available_for_order = false;\n product.err_msg = 'We’re sorry, this item is unavailable right now!';\n }\n\n API.getCategoryById(product.category_ids[0].id, {\n success: re => {\n API.getProduct(product.id, {\n success: (res) => {\n // check oos\n let storeId = StoreStore.getSelectedStore().id;\n res.oos_shop_ids.forEach(shop_id => {\n if (shop_id.id == storeId) {\n is_oos = false;\n }\n });\n\n // category available time\n if (re.pos_category_day_ids.length > 0) {\n let today = new Date();\n let dayname = today.toLocaleDateString('en-us', { weekday: 'long' });\n let hour = today.getHours();\n let min = today.getMinutes();\n let time = hour + (min / 60);\n re.pos_category_day_ids.forEach(activeTime => {\n if (activeTime.name == dayname.toLowerCase()) {\n if (activeTime.start_time <= time && activeTime.end_time > time) {\n is_timeout = false;\n }\n }\n });\n } else {\n is_timeout = false;\n }\n\n if (!is_oos && !is_timeout) {\n product.available_for_order = true;\n product.err_msg = '';\n }\n\n if (product.available_for_order || !Config.isProductionEnv) {\n if (OrderStore.isSelectedModifierValid() === true) {\n CartActions.addProductToCart(product, this.state.productQty);\n CartActions.postOrder(OrderStore.getData());\n\n this.hideProduct();\n } else {\n this.props.checkModifierValid();\n\n try {\n let do_scroll = true;\n OrderStore.checkModifierGroupsValid().forEach((modifierValid, i) => {\n if (!modifierValid && do_scroll) {\n do_scroll = false;\n const modifierNode = this.state.modifierNodes.get(i);\n const position = findNodeHandle(modifierNode);\n RCTUIManager.measure(position, (fx, fy, w, h, px, py) => {\n this.setState({\n modifierY: this.state.modifierY + py - 300\n });\n this.modifierScroll.scrollTo({ x: 0, y: this.state.modifierY + py - 300, animated: true });\n });\n // throw BreakException;\n }\n });\n } catch (e) {\n // do nothing\n }\n }\n } else {\n if (product.err_msg) {\n this.hideProduct(product.err_msg);\n } else {\n this.hideProduct('We’re sorry, this item is unavailable right now!');\n }\n }\n },\n error: (err) => {\n Services.showAlertError(error);\n }\n });\n },\n error: e => {\n Services.showAlertError(e);\n }\n })\n }\n\n hideProduct(msg = '') {\n this.setState({\n productQty: 1,\n isOne: false\n });\n this.props.onProductClose(msg);\n }\n\n renderProductQty(qty) {\n return (\n \n {\n if (qty > 1 && this.state.productQty <= 1 && !this.state.isOne) {\n this.setState({\n productQty: qty - 1\n })\n\n // trick's key\n if (this.state.productQty == 1) {\n this.setState({\n isOne: true\n })\n }\n } else {\n if (this.state.productQty > 1) {\n this.setState({\n productQty: this.state.productQty - 1\n })\n }\n }\n }} />\n \n \n {this.state.productQty > 1 ? this.state.productQty : this.state.isOne ? 1 : qty > 0 ? qty : 1}\n \n \n {\n if (qty > 0 && this.state.productQty <= 1 && !this.state.isOne) {\n this.setState({\n productQty: qty + 1\n })\n } else {\n this.setState({\n productQty: this.state.productQty + 1\n })\n }\n }} />\n \n )\n }\n\n render() {\n let product = OrderStore.getSelectedProduct();\n let cart = require('../img/ic_cart_white.png');\n if (!product) {\n return ;\n }\n\n return (\n \n\n \n \n\n \n \n Product\n \n\n this.hideProduct()}\n style={[{ position: 'absolute', top: Device.getSize(5), right: Device.getSize(5) }]}>\n\n \n {/* */}\n \n \n\n {\n this.modifierScroll = ref\n }}\n scrollEventThrottle={0}\n onScroll={this.handleModifierScroll}>\n \n\n \n \n \n {product.name}\n \n\n \n \n {Services.formatPrice(this.props.productSubtotal)}\n \n\n \n Base price\n \n \n \n\n \n\n \n {product.product_variant_ids.length > 1 &&\n \n }\n \n \n \n \n\n \n {this.renderProductQty(product.quantity)}\n\n { this.addProduct() }}\n activeOpacity={Config.activeOpacity}\n style={[productStyles.customBtn, styleHelper.customBtn, styleHelper.containerTouchableBig, styleHelper.flexRow, styleHelper.flexCenter,\n product.available_for_order && ThemeStyles.primaryBgColor(),\n !product.available_for_order && styleHelper.bgLightGrey,\n ]}>\n\n \n\n \n {!product.cartID ? 'ADD TO CART' : 'UPDATE ITEM'} - {Services.formatPrice(this.props.productSubtotal * this.state.productQty)}\n \n\n \n \n\n \n \n\n \n )\n }\n}\n\nconst ProductDescription = (props) => {\n return (\n \n {props.description || ''}\n \n )\n}\n","import API from '../Utils/API';\nimport AppDispatcher from '../Dispatcher/AppDispatcher';\nimport Constants from '../Constants/AppConstants';\nimport assign from 'object-assign';\nimport {EventEmitter} from 'events';\n\nimport Services from '../Utils/Services';\nimport Storage from '../Utils/Storage';\nimport Config from '../Utils/Config';\n\n// import PromotionStore from '../Stores/PromotionStore';\n// import CustomerStore from '../Stores/CustomerStore';\nimport OrderStore from '../Stores/OrderStore';\nimport StoreStore from '../Stores/StoreStore';\n\nconst emptyFunc = ()=>{};\n\nlet _data = {\n\tproducts: [], //selected products\n\tdisplayProducts: [], // products are used to submitted to server\n\t/*\n\t\t{\n\t\t\tid: Number,\n\t\t\tname: String\n\t\t\tprice: Number\n\t\t\tvariant: null || {\n\t\t\t\tid: Number,\n\t\t\t\tname: String,\n\t\t\t\tprice: Number,\n\t\t\t}\n\t\t\tmodifiers: [{\n \n }],\n\n\t\t}\n\t*/\n serverProducts: [], //products are used to show on UI, get from server\n /* \n id: 0\n modifiers: [{\n id: 0\n modifierId: 351\n modifierName: \"Ribeye beef partty\"\n modifiers: []\n price: 7.5\n quantity: 1\n }]\n product: 70\n productName: \"Ultimate Chicken\"\n quantity: 1\n specialRequest: null\n total: 27.4\n variant: null\n variantName: null\n variantPrice: null\n */\n\n extraCharges: [],\n /* \n {\n amount: 2.09\n comment: null\n id: 0\n inclusive: true\n name: \"GST\"\n percentage: 7\n string: \"GST\"\n tax: true \n type: \"GST\"\n }\n */\n\n store: {},\n promotions: {\n vouchers: [/*ids*/],\n promoCodes: [/*codes*/],\n },\n discounts: [{\n id: 0,\n amount: 0,\n reason: '',\n discountId: 0\n }],\n}\n\nlet _grandTotal = null;\nlet _subtotal = null;\nlet _discountAmount = null;\nlet _isAvailable = null;\nlet timeoutResetCart;\nlet _payments = null;\nlet _discounts=[]; //Discount from server\nlet _fulfillmentTime = null; // Datetime to collect Order in Takaway, unit is Seconds\n\nlet _discountsDisplay = [];\nlet _discountsDisplayPromoCode = []; //Used in Cart screen, the discount text below Promo Code Input \nlet _discountsDisplayVouchers = []; //Used in Cart screen, the discount text below Vouchers picker \n\nlet _order = {}; // Order object from server\n\n/*\n [{\n type: 'amount', // string: 'percentage' || 'amount'\n value: 0,\n }]\n*/\nlet _orderType;\nlet _orderAttrType; // get from Services.parseOrderType(_orderType);\nlet _rewardPoints = 0; // user's souperholic points\nlet _giftCardRewardPoints = 0; // user's gift card points\n\n\n/*\n all promotions from API /promotions/\n*/\nlet _promotionsAll = []; \n\n\nlet _isAvailableForCreditCardPayment = true; \n\n\nconst CHANGE_PRODUCT_EVENT = 'change_product',\n EXPIRE_CART = 'expire_cart',\n SUCCESSFUL_PAYMENT = 'successful_payment',\n TIME_RESET_CART = 900000;\n\nlet _authToken;\n\n//Update _data.products after editing\nconst _updateProduct = (updatedProduct, qty)=>{\n\tlet {position, result} = Services.findObjectInArray(_data.products, {cartID: updatedProduct.cartID});\n let products = _data.products.filter((product)=>product.cartID !== updatedProduct.cartID);\n updatedProduct.productUniqueId = CartStore.setProductUniqueId(updatedProduct);\n updatedProduct.quantity = qty;\n\n if(position!==null){\n if(products.length > 0){\n products.forEach((product,i)=>{\n if(product.productUniqueId === updatedProduct.productUniqueId){\n // Merge existing products\n product.quantity += updatedProduct.quantity;\n _data.products = products;\n }\n else\n {\n // Replace updated product\n _data.products[position] = updatedProduct;\n }\n });\n } else {\n // Only 1 item in cart, Replace updated product\n _data.products[position] = updatedProduct;\n }\n\t}\n}\n\nconst _souperholicPointPayment = () => {\n \n if (!_payments) {\n return null;\n }\n\n const pointPayments = _payments.filter((payment) => {\n return payment.type === 'POINTS';\n });\n\n if (pointPayments.length > 0) {\n var pointPayment = pointPayments[0];\n pointPayment.status = 'PAID';\n pointPayment.paidTime = (new Date).getTime();\n\n return pointPayment;\n }\n return null;\n}\n\nconst _postOrder = (store, promotions, errorCallback, isRedemption = false)=>{\n _data.store=store;\n _clearOrderBeforePost();\n Services.showSpinner();\n\n let order = _getData();\n\n API.postOrder({\n jsonrpc: '2.0',\n params: {\n order\n }\n },\n {\n success: (res)=>{\n order.subtotal = res.result.subtotal;\n order.discount = res.result.discount;\n order.total = res.result.total;\n _order = order;\n CartStore.resetProductServer();\n\n let serverProducts = _assignCartIDToServerProducts(order.items);\n\n _data.extraCharges = [{\n string: 'Service Charge',\n percentage: 10,\n amount: res.result.service_charge\n },\n {\n string: 'GST',\n percentage: Config.gst,\n amount: res.result.gst\n }];\n _data.serverProducts = serverProducts;\n _updateProductFromServer(serverProducts);\n\n _grandTotal = order.total;\n _subtotal = order.subtotal;\n _discountAmount = order.discount;\n _isAvailable = true;\n _setDiscount(order.discounts);\n _setTimeoutClearCart();\n // _fulfillmentTime = order.fulfillmentTime;\n\n CartStore.emitChangeProductCart();\n },\n error: (error)=>{\n if(errorCallback) {\n // if(error.vouchers && error.vouchers.length > 0){\n // Services.showAlertError(error.vouchers.map((voucher)=>`Voucher ${voucher.name}: ${voucher.message}`), ()=>{\n // _removeInvalidPromotions(error.vouchers.map((voucher)=>voucher.id), _data.promotions.vouchers, 'VOUCHERS');\n // });\n\n // } else {\n // if(error.promoCodes && error.promoCodes.length > 0){\n // Services.showAlertError(error.promoCodes.map((code)=>`Promo code ${code.code.toUpperCase()}: ${code.message}`), ()=>{\n // _removeInvalidPromotions(error.promoCodes.map((promoCode)=>promoCode.code.toLowerCase()), _data.promotions.promoCodes, 'PROMO_CODE');\n // });\n // } else {\n Services.showAlertError(error, () => {\n Storage.Navigator.resetTo({\n // name: 'Cart',\n name: 'Menu',\n hasPrevRoute: false\n })\n });\n // }\n // }\n }\n },\n complete: ()=>{\n if(errorCallback) {\n Services.hideSpinner();\n }\n }\n }\n )\n}\n\nconst _clearOrderBeforePost = ()=>{\n _fulfillmentTime = null;\n}\n\nconst _assignCartIDToServerProducts = (serverProducts)=>{\n let id = 1;\n serverProducts.forEach((serverProduct)=>{\n serverProduct.cartID = id;\n // Added by rian: assign plu code to server products\n let product = _data.products.filter((product)=>product.id === serverProduct.product)[0];\n if(product){\n serverProduct.pluCode = product.pluCode;\n }\n id++;\n });\n return serverProducts;\n}\n\n// get variants, modifiers from server product and set to cart products\nconst _setModifiersFromServerProduct = (product, serverProduct)=>{\n let modifierGroups = [];\n\n if(Number.isFinite(serverProduct.variant)){\n product.product_variant_ids.forEach((variant)=>{\n if(variant.id === serverProduct.variant){\n modifierGroups = variant.modifier_group_line_ids;\n variant.isAdded = true;\n } else {\n variant.isAdded = false;\n }\n }) \n } else {\n modifierGroups = product.product_variant_ids[0].modifier_group_line_ids;\n } \n \n _setAddedModifiersFromServerProduct(modifierGroups, serverProduct.modifiers);\n\n return product;\n}\n\nconst _setAddedModifiersFromServerProduct = (modifierGroups, serverModifiers)=>{\n /*\n _ Assign modifier quantity from server\n */\n if(serverModifiers.length > 0){\n let serverModifierIDs = serverModifiers.reduce((arr, modifier)=>{arr.push(modifier.modifierId); return arr;}, []);\n let serverQuantityModifiers = serverModifiers.reduce((obj, modifier)=>{obj[modifier.modifierId] = modifier.quantity; return obj;}, {});\n\n modifierGroups.forEach((modifierGroup)=>{\n modifierGroup.product_modifier_ids.forEach((modifier)=>{\n if(serverModifierIDs.includes(modifier.id)){\n modifier.quantity = serverQuantityModifiers[modifier.id];\n } else {\n modifier.quantity = 0;\n }\n })\n })\n }\n}\n\n//replace _data.products with products from server\nconst _updateProductFromServer = (serverProducts)=>{\n let products = [];\n let uid = '';\n serverProducts.forEach((serverProduct)=>{\n uid = serverProduct.product.toString();\n if(serverProduct.variant){\n uid += serverProduct.variant.toString();\n }\n serverProduct.modifiers.forEach((modifier,i)=>{\n uid += modifier.modifierId.toString();\n uid += modifier.quantity.toString();\n });\n let product = _data.products.filter((product)=>product.productUniqueId === uid)[0];\n if(product){\n product = Services.cloneObject(product);\n product = _setModifiersFromServerProduct(product, serverProduct);\n product.cartID = serverProduct.cartID;\n products.push(product);\n }\n });\n _data.products = products;\n}\n\nconst _resetTotal = ()=>{\n _subtotal = null;\n _discountAmount = null;\n _grandTotal = null;\n _data.extraCharges = [];\n}\n\n// Reset cart after 15 minutes\nconst _setTimeoutClearCart = ()=>{\n clearTimeout(timeoutResetCart);\n timeoutResetCart = setTimeout(()=>{\n CartStore.resetCart();\n CartStore.emitExpireCart();\n }, TIME_RESET_CART);\n}\n\nconst _setDiscount = (discounts)=>{\n \n if(discounts && discounts.length > 0) {\n if(discounts[0].amount > 0) { \n _discounts = discounts;\n _discountsDisplay = Services.getDiscountDisplay(discounts);\n _filterDiscountsDisplay(_discountsDisplay);\n } else {\n _discounts = [];\n _resetDiscountDisplay(); \n }\n } else {\n _discounts = [];\n _resetDiscountDisplay();\n }\n}\n\nconst _getData = () => {\n let store = OrderStore.getData();\n let data = {\n type: 'DINE_IN',\n pricelist_id: StoreStore.getPriceListId(),\n session_id: parseInt(StoreStore.getSessionId()),\n items: [],\n store: store.store.id,\n test: true,\n draft: true,\n origin: 'Web'\n }\n switch(store.type){\n case 'dinein':\n data.type = 'DINE_IN';\n data.table = store.tableId;\n break;\n }\n \n //Add products\n let products = CartStore.getDisplayProducts();\n products.forEach(product => {\n let orderProduct = {\n product: product.id,\n quantity: product.quantity,\n productName: product.name,\n productPrice: product.price,\n categoryId: product.categoryId,\n modifiers: [],\n };\n if (product.variant) {\n orderProduct.variant = product.variant.id;\n orderProduct.variantName = product.variant.name;\n orderProduct.variantPrice = product.variant.price;\n }\n product.modifiers.forEach(modifier => {\n orderProduct.modifiers.push({\n modifierId: modifier.id,\n quantity: modifier.quantity,\n modifierGroupName: modifier.groupName,\n modifierName: modifier.product_id.name,\n price: modifier.price,\n productId: modifier.product_id.id\n });\n });\n data.items.push(orderProduct);\n });\n\n return data;\n}\n\nconst _resetPromotions = ()=>{\n _data.promotions = {\n vouchers: [],\n promoCodes: [],\n }\n\n _data.discounts = [{\n id: 0,\n amount: 0,\n reason: '',\n voucherCode: '',\n discountId: 0\n }];\n}\n\nconst _removeUnavailableProductsWithStore = (store, callback)=>{\n Services.showSpinner();\n\n API.getMenu(store.store.id, {\n success: (res)=>{\n let newProducts = res.products.filter((product)=>product[_orderAttrType] === true);\n let newProductIds = newProducts.map((product)=>product.id);\n\n _data.products = _data.products.filter((product)=>newProductIds.includes(product.id));\n\n CartStore.updateDisplayProducts();\n \n (callback.success || emptyFunc)();\n },\n error: (error)=>{\n Services.showAlertError(error);\n (callback.error || emptyFunc)();\n },\n complete: ()=>{\n Services.hideSpinner();\n (callback.complete || emptyFunc)();\n }\n })\n}\n\nconst _setOrderType = (type)=>{\n _orderType = type;\n _orderAttrType = Services.parseOrderType(type);\n}\n\nconst _addCartMarkToModifiers = (variant)=>{\n variant.modifier_group_line_ids.forEach((modifierGroup)=>{\n modifierGroup.product_modifier_ids.forEach((modifier)=>{\n modifier.isAddedToCart = true;\n })\n })\n}\n\nconst _setVariantAddedToCart = (product)=>{\n if(product.product_variant_ids && product.product_variant_ids.length > 0){\n product.product_variant_ids.forEach((variant)=>{\n if(variant.isAdded === true){\n _addCartMarkToModifiers(variant);\n }\n })\n } else {\n _addCartMarkToModifiers(product);\n }\n}\n\nconst _filterDiscountsDisplay = (discountsDisplay)=>{\n /*\n _ Extract Vouchers & Promo Code discounts\n */\n _discountsDisplayPromoCode = [];\n _discountsDisplayVouchers = [];\n\n discountsDisplay.forEach((discount)=>{\n if(discount.voucher){\n _discountsDisplayVouchers.push(discount);\n } else {\n if(discount.promotion){\n _discountsDisplayPromoCode.push(discount);\n }\n }\n })\n}\n\nconst _resetDiscountDisplay = ()=>{\n _discountsDisplay = [];\n _discountsDisplayPromoCode = [];\n _discountsDisplayVouchers = [];\n}\n\nlet CartStore = assign({}, EventEmitter.prototype, {\n addProductToCart(product, qty){\n if(product) {\n \tif(product.cartID) {\n _updateProduct(product, qty);\n \t}else{\n let addProduct = Services.cloneObject(product);\n\n _setVariantAddedToCart(addProduct);\n\n addProduct.productUniqueId = this.setProductUniqueId(addProduct); // addProduct.id.toString();\n \n // //Check if product has variant\n // if(addProduct.variants){\n // addProduct.variants.some((variant)=>{\n // if(variant.isAdded === true){\n // modifierGroups = variant.modifierGroups;\n // addProduct.productUniqueId += variant.id.toString();\n // }\n // return variant.isAdded;\n // })\n // }\n \n // // Choose modifierGroups of product if there is no variant\n // let modifierGroups = [];\n // if(modifierGroups.length === 0){\n // modifierGroups = addProduct.modifierGroups;\n // }\n\n // modifierGroups.forEach((modifierGroup, i)=>{\n // modifierGroup.modifiers.forEach((modifier)=>{\n // if(modifier.quantity > 0){\n // addProduct.productUniqueId += modifier.id.toString();\n // addProduct.productUniqueId += modifier.quantity.toString();\n // }\n // });\n // });\n\n if(this.isNewProduct(_data.products, addProduct)) {\n // addProduct.quantity = 1;\n addProduct.quantity = qty;\n _data.products.push(addProduct);\n } else {\n _data.products.forEach((product, i)=>{\n if(product.productUniqueId === addProduct.productUniqueId){\n // product.quantity += 1;\n product.quantity += qty;\n }\n });\n }\n\t }\n }\n this.updateDisplayProducts();\n },\n\n updateDisplayProducts(){\n _data.displayProducts = [];\n let displayProducts = [];\n\n \t_data.products.forEach((product)=>{\n \t\tlet displayProduct = {};\n let modifierGroups = [];\n \n \t\tdisplayProduct = {\n \t\t\tmodifiers: [],\n id: product.id,\n categoryId: product.category_ids[0].id,\n quantity: product.quantity,\n pluCode: product.default_code,\n productUniqueId: product.id.toString(),\n name: product.name,\n price: product.list_price\n \t\t};\n \n //Check if product has variant\n if(product.product_variant_ids){\n \t\t\tproduct.product_variant_ids.some((variant)=>{\n if(variant.isAdded === true){\n modifierGroups = variant.modifier_group_line_ids;\n let variantName = variant.attribute_value_ids.length > 0 ? variant.attribute_value_ids[0].name : '';\n displayProduct.variant = {\n id: variant.id,\n name: variantName,\n pluCode: variant.default_code,\n price: variant.lst_price\n // pluCode: variant.pluCode\n };\n // 1 product only can choose 1 variant, replace the null plucode instead\n displayProduct.pluCode = variant.default_code;\n displayProduct.productUniqueId += variant.id.toString();\n }\n \t\t\t\treturn variant.isAdded;\n \t\t\t})\n }\n\n // Choose modifierGroups of product if there is no variant\n // if(modifierGroups.length === 0){\n // modifierGroups = product.modifierGroups;\n // }\n\n modifierGroups.forEach((modifierGroup, i)=>{\n modifierGroup.product_modifier_ids.forEach((modifier)=>{\n if(modifier.quantity > 0){\n modifier.groupName = modifierGroup.name;\n displayProduct.modifiers.push(modifier);\n displayProduct.productUniqueId += modifier.id.toString();\n displayProduct.productUniqueId += modifier.quantity.toString();\n }\n });\n });\n\n if(this.isNewProduct(displayProducts, displayProduct)){\n displayProducts.push(displayProduct);\n }\n });\n _data.displayProducts = displayProducts;\n },\n\n isNewProduct(currentProduct, newProduct){\n let product = currentProduct.filter((product)=>product.productUniqueId === newProduct.productUniqueId)[0];\n if(product){\n return false;\n } else {\n return true;\n }\n },\n\n setProductUniqueId(product){\n let modifierGroups = [];\n let productUniqueId = product.id.toString();\n\n //Check if product has variant\n if(product.product_variant_ids){\n product.product_variant_ids.some((variant)=>{\n if(variant.isAdded === true){\n modifierGroups = variant.modifier_group_line_ids;\n productUniqueId += variant.id.toString();\n }\n return variant.isAdded;\n })\n }\n\n // Choose modifierGroups of product if there is no variant\n // if(modifierGroups.length === 0){\n // modifierGroups = product.modifierGroups;\n // }\n\n modifierGroups.forEach((modifierGroup, i)=>{\n modifierGroup.product_modifier_ids.forEach((modifier)=>{\n if(modifier.quantity > 0){\n productUniqueId += modifier.id.toString();\n productUniqueId += modifier.quantity.toString();\n }\n });\n });\n return productUniqueId;\n },\n\n removeProduct(cartID){\n \t_data.products = _data.products.filter((product)=>product.cartID !== cartID);\n this.updateDisplayProducts();\n \t_data.serverProducts = _data.serverProducts.filter((product)=>product.cartID !== cartID);\n _resetTotal();\n\n if(_data.products.length === 0){\n _resetPromotions();\n }\n\n _postOrder(_data.store, _data.promotions, true);\n \tthis.emitChangeProductCart();\n },\n\n getDisplayProducts(){\n \treturn _data.displayProducts;\n },\n getSubtotal(){\n return _subtotal;\n },\n getDiscountAmount(){\n return _discountAmount;\n },\n getSubtotalAfterDiscount() {\n let subtotalAfterDiscount = _subtotal;\n\n _discounts.forEach(discount => {\n //Only excludes discount that is promotion or voucher\n if (discount.promotion || discount.voucher) {\n subtotalAfterDiscount -= discount.amount;\n }\n });\n\n // Tss Voucher\n _data.discounts.forEach(discount => {\n //Only excludes discount that is promotion or voucher\n subtotalAfterDiscount -= discount.amount;\n });\n \n _data.extraCharges.forEach(extraCharge => {\n if(extraCharge.amount) {\n subtotalAfterDiscount += extraCharge.amount;\n }\n });\n\n if(_giftCardRewardPoints){\n subtotalAfterDiscount -= (_giftCardRewardPoints/100);\n }\n\n return Math.max(subtotalAfterDiscount, 0);\n },\n getSubtotalAfterDiscount_wo_giftcard() {\n let subtotalAfterDiscount = _subtotal;\n\n _discounts.forEach(discount => {\n //Only excludes discount that is promotion or voucher\n if (discount.promotion || discount.voucher) {\n subtotalAfterDiscount -= discount.amount;\n }\n });\n\n // Tss Voucher\n _data.discounts.forEach(discount => {\n //Only excludes discount that is promotion or voucher\n subtotalAfterDiscount -= discount.amount;\n });\n \n _data.extraCharges.forEach(extraCharge => {\n subtotalAfterDiscount += extraCharge.amount;\n });\n\n return Math.max(subtotalAfterDiscount, 0);\n },\n getGrandTotal(){\n \treturn _grandTotal < 0 ? 0:_grandTotal;\n },\n getPaymentsTotal(){\n var paymentTotal = 0;\n _payments.forEach(payment => {\n paymentTotal += payment.amount;\n })\n return paymentTotal;\n },\n getPayments() {\n return _payments;\n },\n getExtraCharge(){\n return _data.extraCharges;\n },\n getServerProducts(){\n return _data.serverProducts;\n },\n getQuantity(){\n if(_data.serverProducts) {\n let qty = 0;\n _data.serverProducts.forEach(product => {\n qty += product.quantity;\n });\n return qty;\n }\n return 0;\n },\n getProductQuantity(productID){\n let foundProducts = _data.serverProducts.filter((product)=>product.product === productID);\n return foundProducts.length;\n },\n getDiscountsDisplay(){\n return _discountsDisplay;\n },\n getDiscountsDisplayPromoCodes(){\n // let promo = null;\n // let promotions = PromotionStore.getPromotions();\n // _discountsDisplayPromoCode.forEach((promocode)=>{\n // if(promocode.value > 0) {\n // promo = promotions.find((promo) => promo.id === promocode.promotion);\n // promocode.description = promo.name; // promo.description\n // promocode.discountId = promo.discountId; // Maitred Discount Id\n // }\n // });\n\n // /*\n // used for Promocode discount text in Cart screen, Components/PromoCode.js\n // [{\n // type: 'amount', // string: 'percentage' || 'amount'\n // value: 0,\n // reason: String\n // }]\n // */\n // return _discountsDisplayPromoCode;\n },\n getTssDiscounts(){\n /*\n [{\n type: 'amount', // string: 'percentage' || 'amount'\n value: 0,\n reason: String\n }]\n */\n let discounts = [];\n _data.discounts.forEach((discount) => {\n if(discount.amount > 0) {\n discounts.push({\n id: _data.discounts[0].id,\n type: 'amount',\n value: _data.discounts[0].amount,\n description: _data.discounts[0].reason,\n voucherCode: _data.discounts[0].voucherCode,\n discountId: _data.discounts[0].discountId\n });\n }\n });\n\n return discounts;\n },\n getDiscountsDisplayVouchers(){\n /*\n used for Vouchers discount text in Cart screen, Components/PromoCode.js\n [{\n type: 'amount', // string: 'percentage' || 'amount'\n value: 0,\n reason: String\n }]\n */\n return _discountsDisplayVouchers;\n },\n getSelectedVouchers(){\n return _data.promotions.vouchers;\n },\n getFulfillmentTime(){\n return _fulfillmentTime;\n },\n getRewardPoints(){\n return _rewardPoints;\n },\n getGiftCardRewardPoints(){\n return _giftCardRewardPoints;\n },\n // getOrderNumber(){\n // return _orderNumber;\n // },\n getOrder(){\n return _order;\n },\n hasProducts(){\n //Cart can be empty, but still valid because it hasn't expired yet\n return _isAvailable;\n },\n isEmpty(){\n // Cart has no products\n return _data.serverProducts.length === 0;\n },\n\n emitChangeProductCart(){\n this.emit(CHANGE_PRODUCT_EVENT);\n },\n addChangeProductCart(callback){\n this.on(CHANGE_PRODUCT_EVENT, callback);\n },\n removeChangeProductCart(callback) {\n this.removeListener(CHANGE_PRODUCT_EVENT, callback);\n },\n\n emitExpireCart(){\n this.emit(EXPIRE_CART);\n },\n addExpireCartListener(callback){\n this.on(EXPIRE_CART, callback);\n },\n removeExpireCartListener(callback) {\n this.removeListener(EXPIRE_CART, callback);\n },\n\n\n emitSuccessfulPayment(){\n this.emit(SUCCESSFUL_PAYMENT);\n },\n addSuccessfulPaymentListener(callback){\n this.on(SUCCESSFUL_PAYMENT, callback);\n },\n removeSuccessfulPaymentListener(callback) {\n this.removeListener(SUCCESSFUL_PAYMENT, callback);\n },\n\n\n filterProductsAfterChangeType(type){\n type = Services.parseOrderType(type);\n _data.products = _data.products.filter((product)=>product[type] === true);\n this.updateDisplayProducts();\n },\n\n resetProductServer(){\n _data.serverProducts = [];\n _data.extraCharges = [];\n _resetTotal();\n },\n\n findProduct(cartID){\n let product = _data.products.filter((product)=>product.cartID === cartID)[0];\n if(product){\n return Services.cloneObject(product);\n }\n return null;\n },\n\n resetCart(){\n _data.displayProducts = [];\n _data.products = [];\n _data.serverProducts = [];\n _data.promotions = {\n vouchers: [],\n promoCodes: [],\n };\n _data.discounts = [{\n amount: 0,\n reason: '',\n voucherCode: '',\n discountId: 0\n }];\n _resetTotal();\n _isAvailable = false;\n _discounts = [];\n _resetDiscountDisplay();\n _rewardPoints = 0;\n _order = {};\n\n \tthis.emitChangeProductCart();\n },\n getPromotionNotIncludesType(type){\n /*\n _ Check paymentTypes of all promotions \n */\n let selectedPromotions = _discountsDisplayPromoCode.concat(_discountsDisplayVouchers);\n let promotionNotApplicable; //the promotion that does not allow to pay by card type\n if(selectedPromotions.length > 0){\n selectedPromotions.some((selectedPromotion)=>{\n let {position, result} = Services.findObjectInArray(_promotionsAll, {id: selectedPromotion.promotion});\n\n let isUnavailable = false;\n if(result.paymentTypes){\n isUnavailable = (result.paymentTypes.length > 0 && !result.paymentTypes.includes(type));\n }\n\n if(isUnavailable === true){\n promotionNotApplicable = result;\n }\n return isUnavailable;\n })\n }\n return promotionNotApplicable;\n },\n getPromotionHasNoCreditCard(){\n return this.getPromotionNotIncludesType('CREDIT_CARD');\n },\n getPromotionIncludesType(type){\n /*\n _ Check paymentTypes of all promotions \n */\n let selectedPromotions = _discountsDisplayPromoCode.concat(_discountsDisplayVouchers);\n let promotionForPaymentType = []; //the promotion that does not allow to pay by card type\n if(selectedPromotions.length > 0){\n selectedPromotions.some((selectedPromotion)=>{\n let {position, result} = Services.findObjectInArray(_promotionsAll, {id: selectedPromotion.promotion});\n if(result.paymentTypes && result.paymentTypes.includes(type)){\n promotionForPaymentType.push(result);\n }\n })\n }\n return promotionForPaymentType;\n },\n setCartExpired(){\n this.resetCart();\n this.emitExpireCart();\n },\n isPromoOrVoucherApplied(){\n return (_data.promotions.promoCodes.length == 0) && (_data.promotions.vouchers.length == 0) && (_data.discounts[0].amount == 0);\n },\n getPromotions(){\n // _discountsDisplayPromoCode.forEach((promocode)=>{\n // promo = promotions.find((promo) => promo.id === promocode.promotion);\n // promocode.description = promo.name; // promo.description\n // });\n\n return _data.promotions;\n },\n getPointPayment(){\n return _souperholicPointPayment();\n },\n setAuthToken(token){\n _authToken = token;\n },\n getAuthToken(){\n return _authToken;\n },\n\n resetTssDiscount(){\n _data.discounts = [{\n id: 0,\n amount: 0,\n reason: '',\n voucherCode: '',\n discountId: 0\n }];\n },\n})\t\n\nCartStore.setMaxListeners(0)\n\nCartStore.dispatchData = AppDispatcher.register((action)=>{\n\tswitch(action.type) {\n case Constants.ActionTypes.ADD_PRODUCT_TO_CART:\n CartStore.resetProductServer();\n CartStore.addProductToCart(action.product, action.qty);\n break;\n case Constants.ActionTypes.REMOVE_PRODUCT_FROM_CART:\n CartStore.removeProduct(action.cartID);\n break;\n case Constants.ActionTypes.AJAX_POST_ORDER:\n _postOrder(action.store, _data.promotions, action.errorCallback, action.isRedemption);\n break;\n case Constants.ActionTypes.UPDATE_CART_AFTER_CHANGE_STORE:\n _removeUnavailableProductsWithStore(action.store, action.callback);\n break; \n case Constants.ActionTypes.SET_ORDER_TYPE:\n _setOrderType(action.orderType);\n break;\n case Constants.ActionTypes.RESET_CART:\n CartStore.resetCart();\n break;\n case Constants.ActionTypes.SET_PAYMENT_AMOUNT:\n _paymentAmount = action.amount;\n break;\n case Constants.ActionTypes.SET_PAYMENT_TRANSID:\n _paymentTransId = action.transId;\n break;\n }\t\n})\n\nexport default CartStore;\n","import assign from 'object-assign';\nimport {EventEmitter} from 'events';\n\nimport Constants from '../Constants/AppConstants';\nimport AppDispatcher from '../Dispatcher/AppDispatcher';\n\nimport API from '../Utils/API';\nimport Services from '../Utils/Services';\nimport Config from '../Utils/Config';\n\nimport CartStore from './CartStore';\nimport StoreStore from './StoreStore';\n\nlet _data = {};\nlet _productTypeAttr = null; // takeAway||dineIn\nlet _type = null; // takeaway||dinein\n\nlet _sections = {}; //used to display products in MenuDetails.js, data is grouped into Accordion\nlet _categories = [];\nlet _modifierMap = [];\nlet _brand = {};\n\n// const emptyFunc = ()=>{};\nconst CHANGE_EVENT = 'change';\n\nlet _getData = (storeID, callback)=>{\n API.getCategory({\n success: (result)=>{\n _data.categories = result;\n _sortCategories();\n _sortSubCategories();\n\n API.getMenu(storeID, {\n success: (res)=>{\n _data.products = res.product_template_ids;\n _sortProducts();\n _sortProductsModifiers();\n\n // assign products into categories\n _initMenuSections(result);\n\n if (typeof callback === 'function') {\n callback();\n }\n MenuStore.emitChange();\n },\n error: (error)=>{\n Services.showAlertError(error);\n }\n });\n },\n error: (error)=>{\n \tServices.showAlertError(error);\n }\n });\n};\n\nconst _initMenuSections = (categories)=>{\n _sections = {};\n _categories = [];\n categories.forEach((category)=>{\n let section = _getMenuSections(category, categories);\n if(section.productNoSubCategory.length > 0 || section.subcategories.length > 0) {\n _sections[category.id] = section;\n // Only take categories which have products\n _categories.push(category);\n }\n });\n}\n\nconst _setModifierMapping = (modifierMap, callback)=>{\n _modifierMap = modifierMap;\n}\n\nconst _updateMenuSections = (callback) => {\n for (var key in _sections) {\n if (_sections.hasOwnProperty(key)) {\n _updateQuantityForProductInArray(_sections[key].productNoSubCategory);\n _sections[key].subcategories.forEach((category) => {\n _updateQuantityForProductInArray(category.products);\n })\n }\n }\n if (callback) {\n callback()\n }\n}\n\nconst _updateQuantityForProductInArray = (productArray) => {\n let serversProducts = CartStore.getServerProducts();\n if (productArray) {\n productArray.forEach(product => {\n //Reset quantity\n product.quantity = 0;\n serversProducts.forEach(serverProduct => {\n if (product.id === serverProduct.product) {\n product.quantity = CartStore.getProductQuantity(product.id);\n }\n })\n })\n }\n}\n// Put products into a collapsable section based on categoryID\n/*\n {\n productNoSubCategory: [{product}]\n subcategories: [{\n id: 40,\n imageID:\n name:\n products: [{product}]\n }]\n }\n*/\nconst _getMenuSections=(category, categories)=>{\n let subcategoryIDs = [];\n \n if(category.child_id && category.child_id.length > 0){\n subcategoryIDs=category.child_id.map((subcategory)=>subcategory.id);\n\n // 3rd level category - currently not using\n // category.children.forEach((subcategory) => {\n // if(subcategory.children && subcategory.children.length > 0) {\n // _getMenuSections(subcategory);\n // }\n // });\n }\n\n let {productNoSubCategory, subcategories} = _addProductsToCategories(category, subcategoryIDs);\n\n subcategories = Services.convertObjectToArray(subcategories);\n subcategories = _removeEmptySubcategories(subcategories);\n /** Custom By Rian\n * category available time\n * product OOS\n * modifier OOS\n */\n if(Config.isProductionEnv) {\n subcategories = _disableUnavailableSubcategories(subcategories, categories);\n subcategories = _hideUnavailableSubcategories(subcategories, categories);\n }\n // subcategories = _disableUnavailableModifiers(subcategories, categories);\n\n\treturn{\n productNoSubCategory,\n subcategories: subcategories.sort((a, b) => a.sequence - b.sequence)\n }\n}\n\nconst _addProductsToCategories = (selectedCategory, subcategoryIDs)=>{\n let categoryID;\n let category;\n let productNoSubCategory = [];\n let subcategories = Services.convertArrayToObject(selectedCategory.child_id, 'id');\n let storeId = StoreStore.getSelectedStore().id;\n let available = false;\n let oos = false;\n let isAvail = false;\n let startTime = 0;\n let endTime = 0;\n\n _data.products.forEach((product, i)=>{\n categoryID = null;\n category = null;\n\n if(product['dine_in'] == true || product['take_away'] == true) { // here filter order type\n // check if available\n available = false;\n product.oos_shop_ids.forEach(shop_id => {\n if(shop_id.id == storeId) {\n available = true;\n }\n });\n\n oos = false;\n isAvail = false;\n startTime = 0;\n endTime = 0;\n product.product_variant_ids.forEach((variant)=>{\n // check if oos\n variant.oos_store.forEach(store => {\n if(store.id == storeId) {\n oos = true;\n }\n });\n\n // product available time\n if(variant.pos_available_time_ids.length > 0) {\n let today = new Date();\n let dayname = today.toLocaleDateString('en-us', { weekday: 'long' });\n let hour = today.getHours();\n let min = today.getMinutes();\n let time = hour + (min / 60);\n variant.pos_available_time_ids.forEach(activeTime => {\n if(activeTime.name == dayname.toLowerCase()) {\n startTime = activeTime.start_time;\n endTime = activeTime.end_time;\n if(activeTime.start_time <= time && activeTime.end_time > time) {\n isAvail = true;\n }\n return;\n }\n });\n } else {\n isAvail = true;\n }\n });\n\n // disable product order when not in available time\n if(isAvail) {\n product.available_for_order = true;\n } else {\n let start_hour = Math.floor(startTime);\n let start_mins = (startTime % 1) * 60;\n let end_hour = Math.floor(endTime);\n let end_mins = (endTime % 1) * 60;\n\n product.available_for_order = false;\n product.err_msg = 'Item is only available from ' + ('0' + start_hour).slice(-2) + '.' + ('0' + start_mins).slice(-2) + ' - ' + ('0' + end_hour).slice(-2) + '.' + ('0' + end_mins).slice(-2);\n }\n\n if(available && !oos && isAvail) {\n // sort variant (currently obbar dont have)\n // product.product_variant_ids.sort((a,b)=>a.variant_sequence - b.variant.variant_sequence)\n\n _addCartQuantityToProduct(product);\n \n product.category_ids.map((c)=>{\n if(c.id == selectedCategory.id) {\n productNoSubCategory.push(product);\n }\n });\n \n product.category_ids.map((c)=>{\n if(subcategoryIDs.includes(c.id)) {\n categoryID = c.id;\n\n if(categoryID){\n category = subcategories[categoryID];\n if(category.products){\n category.products.push(product);\n } else {\n category.products = [product];\n }\n }\n }\n });\n }\n }\n })\n\n return{\n productNoSubCategory,\n subcategories\n }\n}\n\n// add product.quantity in regard of cart\nconst _addCartQuantityToProduct = (product)=>{\n product.quantity = CartStore.getProductQuantity(product.id);\n}\n\nconst _removeEmptySubcategories = (subcategories)=>{\n let _subcategories = [];\n let _children = [];\n if(subcategories.length > 0) {\n subcategories.forEach((subcategory) => {\n if(subcategory.child_id && subcategory.child_id.length > 0) {\n // remove children\n _children = [];\n subcategory.child_id.forEach((child)=>{\n if((child.child_id && child.child_id.length > 0)\n || (child.products && child.products.length > 0) ){\n _children.push(child);\n }\n subcategory.child_id = _children;\n })\n _subcategories.push(subcategory);\n } else if(subcategory.products && subcategory.products.length > 0) {\n _subcategories.push(subcategory);\n }\n }); \n }\n return _subcategories;\n // return subcategories.filter((subcategory)=>subcategory.products);\n}\n\n// TO BE CHANGED\nconst _disableUnavailableSubcategories = (subcategories, categories)=>{\n let _subcategories = [];\n let category = [];\n if(subcategories.length > 0) {\n subcategories.forEach((subcategory) => {\n category = categories.filter((category) => category.id == subcategory.id)[0];\n\n // category available time\n let isAvail = false;\n let startTime = 0;\n let endTime = 0;\n if(category.pos_category_day_ids.length > 0) {\n let today = new Date();\n let dayname = today.toLocaleDateString('en-us', { weekday: 'long' });\n let hour = today.getHours();\n let min = today.getMinutes();\n let time = hour + (min / 60);\n category.pos_category_day_ids.forEach(activeTime => {\n if(activeTime.name == dayname.toLowerCase()) {\n startTime = activeTime.start_time;\n endTime = activeTime.end_time;\n if(activeTime.start_time <= time && activeTime.end_time > time) {\n isAvail = true;\n }\n return;\n }\n });\n } else {\n isAvail = true;\n }\n\n // disable product order when not in available time\n if(subcategory.products) {\n if(isAvail) {\n subcategory.products.forEach((product)=>{\n product.available_for_order = true;\n });\n } else {\n let start_hour = Math.floor(startTime);\n let start_mins = (startTime % 1) * 60;\n let end_hour = Math.floor(endTime);\n let end_mins = (endTime % 1) * 60;\n\n subcategory.products.forEach((product)=>{\n product.available_for_order = false;\n product.err_msg = 'Item is only available from ' + ('0' + start_hour).slice(-2) + '.' + ('0' + start_mins).slice(-2) + ' - ' + ('0' + end_hour).slice(-2) + '.' + ('0' + end_mins).slice(-2);\n });\n }\n }\n\n _subcategories.push(subcategory)\n });\n }\n return _subcategories;\n}\n\n// TO BE CHANGED\nconst _hideUnavailableSubcategories = (subcategories, categories)=>{\n let storeId = StoreStore.getSelectedStore().id;\n let _subcategories = [];\n let category = [];\n let _products = [];\n if(subcategories.length > 0) {\n subcategories.forEach((subcategory) => {\n category = categories.filter((category) => category.id == subcategory.id)[0];\n\n // category available time\n let isAvail = false;\n if(category.pos_category_day_ids.length > 0) {\n let today = new Date();\n let dayname = today.toLocaleDateString('en-us', { weekday: 'long' });\n let hour = today.getHours();\n let min = today.getMinutes();\n let time = hour + (min / 60);\n category.pos_category_day_ids.forEach(activeTime => {\n if(activeTime.name == dayname.toLowerCase()) {\n if(activeTime.start_time <= time && activeTime.end_time > time) {\n isAvail = true;\n }\n return;\n }\n });\n } else {\n isAvail = true;\n }\n\n // disable product order when not in available time\n if(subcategory.products) {\n // hide oos product\n _products = [];\n subcategory.products.forEach(product => {\n product.oos_shop_ids.forEach(shop_id => {\n if(shop_id.id == storeId) {\n _products.push(product);\n }\n });\n });\n subcategory.products = _products;\n\n if(isAvail) {\n _subcategories.push(subcategory)\n }\n }\n });\n }\n return _subcategories;\n}\n\n// const _disableUnavailableModifiers = (subcategories, categories)=>{\n// let storeId = StoreStore.getSelectedStore().id;\n// let _subcategories = [];\n// if(subcategories.length > 0) {\n// subcategories.forEach((subcategory) => {\n// if(subcategory.products) {\n// subcategory.products.forEach(product => {\n// product.product_variant_ids.forEach(variant => {\n// variant.modifier_group_line_ids.forEach(modifier_group => {\n// modifier_group.product_modifier_ids.forEach(product_modifier => {\n// product_modifier.is_available = false;\n// product_modifier.product_id.oos_shop_ids.forEach(oos_shop => {\n// // TO BE CHANGED\n// if(oos_shop == storeId) {\n// product_modifier.is_available = true;\n// }\n// })\n// })\n// })\n// })\n// });\n// }\n\n// _subcategories.push(subcategory)\n// });\n// }\n// return _subcategories;\n// }\n\nconst _sortCategories = ()=>{\n _data.categories.sort((a, b)=>a.sequence - b.sequence);\n}\n\nconst _sortSubCategories = ()=>{\n _data.categories.forEach((category)=>{\n category.child_id.sort((a, b)=>a.sequence - b.sequence);\n })\n}\n\nconst _sortProducts = ()=>{\n // _data.products.sort((a, b)=>a.product_sequence - b.product_sequence);\n _data.products.sort((a, b)=>a.product_variant_ids[0].product_sequence - b.product_variant_ids[0].product_sequence);\n}\n\nconst _sortProductsModifiers = ()=>{\n _data.products.forEach((product)=>{\n // product.modifierGroups.forEach((modifierGroup)=>{\n // modifierGroup.modifiers.sort((a,b)=>a.sortIndex - b.sortIndex);\n // });\n\n product.product_variant_ids.forEach((variant)=>{\n variant.modifier_group_line_ids.sort((a,b)=>a.sequence - b.sequence);\n })\n\n product.product_variant_ids.forEach((variant)=>{\n variant.modifier_group_line_ids.forEach((modifierGroup)=>{\n modifierGroup.product_modifier_ids.sort((a,b)=>a.sequence - b.sequence);\n })\n })\n })\n}\n\nlet MenuStore = assign({}, EventEmitter.prototype, {\n getCategory(categoryID){\n return _categories.filter((category)=>category.id===parseInt(categoryID))[0];\n },\n getMultipleCategories(categoryIDs){\n let categories = [];\n let category;\n let catIDs;\n if(Number.isInteger(categoryIDs)){\n category = _categories.filter((category)=>category.id===parseInt(categoryIDs))[0];\n if(category !== undefined) {\n categories.push(category);\n }\n }\n else\n {\n catIDs = categoryIDs.split(',');\n catIDs.forEach((categoryID, index)=>{\n category = _categories.filter((category)=>category.id===parseInt(categoryID))[0];\n if(category !== undefined) {\n categories.push(category);\n }\n });\n }\n categories.sort((a, b)=>a.sequence - b.sequence);\n return categories;\n },\n getMenuDetailsSections() {\n return _sections;\n },\n getCategories(){\n return _categories;\n },\n getCategoriesV2(){\n return _data.categories;\n },\n getBrand(){\n return _brand;\n },\n checkProductAvailability(productId, type){\n const filteredProducts = _data.products.filter(product => {\n if (product.id === productId) {\n switch(type) {\n case 'takeaway':\n return product.take_away;\n case 'dinein':\n return product.dine_in;\n }\n }\n return false;\n })\n\n return filteredProducts.length > 0;\n },\n checkCartProductsAvailability(){\n var productsNotAvailable = [];\n const cartProducts = CartStore.getServerProducts();\n const storeType = StoreStore.getType();\n cartProducts.forEach(product => {\n if (this.checkProductAvailability(product.product, storeType) === false) {\n productsNotAvailable.push(product.name);\n }\n })\n if (productsNotAvailable.length > 0) {\n Services.showAlertError(`item ${productsNotAvailable.join(', ')} is no longer available`);\n return false\n }\n\n return true\n },\n setType(type){\n _type = type.toLowerCase();\n _productTypeAttr = Services.parseOrderType(_type);\n },\n emitChange(){\n this.emit(CHANGE_EVENT);\n },\n addChangeListener(callback){\n this.on(CHANGE_EVENT, callback);\n },\n removeChangeListener(callback) {\n this.removeListener(CHANGE_EVENT, callback);\n },\n getAllProducts() {\n return _data.products;\n },\n getModifierMap() {\n return _modifierMap;\n },\n})\n\nMenuStore.dispatchData = AppDispatcher.register((action)=>{\n\tswitch(action.type) {\n case Constants.ActionTypes.AJAX_GET_MENU:\n _getData(action.storeID, action.callback);\n break;\n case Constants.ActionTypes.UPDATE_MENU_SECTIONS:\n _updateMenuSections(action.callback);\n break;\n case Constants.ActionTypes.SET_ORDER_TYPE:\n MenuStore.setType(action.orderType);\n break;\n case Constants.ActionTypes.INIT_MENU:\n _initMenuSections(action.categories);\n break;\n case Constants.ActionTypes.SET_MODIFIER_MAP:\n _setModifierMapping(action.modifierMap, action.callback);\n break;\n }\n})\n\nexport default MenuStore;\n","import React from 'react';\nimport { Text, View, Image, TouchableOpacity, StyleSheet, ScrollView, Modal, findNodeHandle, UIManager } from 'react-native';\n\nimport styleHelper from '../Styles/StyleHelper';\nimport ThemeStyles from '../Styles/ThemeStyles';\n\nimport * as Navigation from '../Routes/Routing';\n\nimport ImageBackground from '../Components/ImageBackground';\nimport ImageProduct from '../Components/ImageProduct';\nimport ProductModal from '../Components/ProductModal';\n\nimport Device from '../Utils/Device';\nimport Config from '../Utils/Config';\nimport Services from '../Utils/Services';\n\nimport MenuStore from '../Stores/MenuStore';\nimport CartStore from '../Stores/CartStore';\nimport StoreStore from '../Stores/StoreStore';\nimport OrderStore from '../Stores/OrderStore';\n\nimport MenuActions from '../Actions/MenuActions';\nimport OrderActions from '../Actions/OrderActions';\n\nvar RCTUIManager = UIManager;\n\nconst styles = StyleSheet.create({\n contentBox: {\n // marginTop: Config.isJjk ? Device.getSize(40) : Device.getSize(5),\n // paddingHorizontal: Config.isJjk ? Device.getSize(20) : 0,\n marginTop: Device.getSize(10),\n flex: 2,\n },\n categoryContainer: {\n maxHeight: Device.getSize(125),\n flexDirection: 'column',\n flex: 1,\n },\n container: {\n marginLeft: Device.getSize(15),\n marginRight: Device.getSize(0),\n marginBottom: Device.getSize(13),\n marginTop: Device.getSize(3),\n },\n subcategoryContainer: {\n maxHeight: Device.getSize(25),\n },\n categoryName: {\n fontSize: Device.getSize(15),\n textAlign: 'center',\n marginTop: Device.getSize(2),\n },\n blurBg: {\n width: Device.width,\n height: Device.height,\n backgroundColor: 'rgba(0,0,0,0.8)',\n },\n cartSection: {\n position: 'absolute',\n // top: Device.height * Device.getRatio(0.45),\n top: Device.height * Device.getRatio(0.55),\n backgroundColor: '#FFF',\n height: Device.getSize(150),\n width: Device.width,\n paddingTop: Device.getSize(10),\n paddingHorizontal: Device.getSize(10),\n },\n cartButton: {\n paddingVertical: Device.getSize(8),\n paddingHorizontal: Device.getSize(5),\n borderRadius: Device.getSize(5),\n },\n cartQtyBox: {\n paddingVertical: Device.getSize(5),\n paddingHorizontal: Device.getSize(5),\n width: Device.getSize(30),\n textAlign: 'center',\n },\n});\n\nconst productStyles = StyleSheet.create({\n menuContainer: {\n minHeight: Device.getSize(120),\n },\n container: {\n borderRadius: Device.getSize(5),\n backgroundColor: '#FFF',\n marginHorizontal: Device.getSize(20),\n paddingHorizontal: Device.getSize(5),\n paddingTop: Device.getSize(10),\n paddingBottom: Device.getSize(10),\n marginBottom: Device.getSize(2),\n },\n popupContainer: {\n width: Device.width * 0.7,\n height: Device.getSize(150),\n backgroundColor: '#FFF',\n paddingVertical: Device.getSize(10),\n marginTop: Device.height * 0.4,\n marginBottom: Device.getSize(20),\n borderColor: '#000',\n borderWidth: 1,\n borderRadius: Device.getSize(10)\n },\n});\n\nexport default class Home extends React.Component {\n constructor(props) {\n super(props);\n this.onCartChange = this.onCartChange.bind(this);\n this.state = {\n };\n }\n\n componentDidMount() {\n CartStore.addChangeProductCart(this.onCartChange);\n }\n\n componentWillUnmount() {\n CartStore.removeChangeProductCart(this.onCartChange);\n }\n\n onCartChange() {\n setTimeout(() => {\n MenuActions.updateMenuSection();\n }, 500);\n }\n\n render() {\n return (\n \n \n \n \n \n )\n }\n}\n\nclass MenuDetails extends React.Component {\n constructor(props) {\n super(props);\n\n this.onCartChange = this.onCartChange.bind(this);\n this.onVariantChange = this.onVariantChange.bind(this);\n this.handleScroll = this.handleScroll.bind(this);\n this.sortProducts = this.sortProducts.bind(this);\n this.navigateWelcome = this.navigateWelcome.bind(this);\n this.navigateToProduct = this.navigateToProduct.bind(this);\n this.refreshView = this.refreshView.bind(this);\n this.applyTssCustomModifier = this.applyTssCustomModifier.bind(this);\n this.renderTopNav = this.renderTopNav.bind(this);\n this.renderSubCategory = this.renderSubCategory.bind(this);\n this.renderPopupMsg = this.renderPopupMsg.bind(this);\n this.renderProducts = this.renderProducts.bind(this);\n this.renderContent = this.renderContent.bind(this);\n this.onProductClose = this.onProductClose.bind(this);\n this.checkModifierValid = this.checkModifierValid.bind(this);\n this.onModifierChange = this.onModifierChange.bind(this);\n this.toggleCustomModifiers = this.toggleCustomModifiers.bind(this);\n this.hidePopupMsg = this.hidePopupMsg.bind(this);\n\n this.state = {\n categories: MenuStore.getMultipleCategories(StoreStore.getCategoryId()),\n sections: MenuStore.getMenuDetailsSections(),\n activeIndex: 0,\n nodes: new Map(),\n x: 0,\n y: 0,\n positions: [],\n subPositions: [],\n grandTotal: CartStore.getGrandTotal(),\n showProduct: false,\n productSubtotal: OrderStore.getCurrentSubtotal(),\n modifierGroups: [],\n modifierGroupsValid: [],\n imgWidth: 0,\n imgHeight: 0,\n products: CartStore.getServerProducts(),\n cartQuantity: CartStore.getQuantity(),\n showPopupMsg: false,\n msg: '',\n };\n }\n\n componentDidMount() {\n CartStore.addChangeProductCart(this.onCartChange);\n OrderStore.addChangeVariantListener(this.onVariantChange);\n\n let pos, pos2;\n let categories = this.state.categories;\n Services.onFocusCallback(() => {\n pos = this.state.positions;\n pos2 = this.state.subPositions;\n\n try {\n categories.forEach((category, i) => {\n this.state.sections[category.id].subcategories.forEach((subcategory, j) => {\n if (subcategory.products) {\n // menu scrollbar\n const node = this.state.nodes.get(subcategory.id);\n const position = findNodeHandle(node);\n RCTUIManager.measure(position, (fx, fy, w, h, px, py) => {\n pos.push({\n id: subcategory.id,\n y: py\n });\n });\n\n // sub category slider\n const node2 = this.state.nodes.get('00' + subcategory.id);\n const position2 = findNodeHandle(node2);\n RCTUIManager.measure(position2, (fx, fy, w, h, px, py) => {\n pos2.push({\n id: '00' + subcategory.id,\n x: px\n });\n });\n }\n });\n });\n } catch (BreakException) {\n }\n\n this.setState({\n positions: pos,\n subPositions: pos2,\n });\n\n });\n }\n\n componentWillUnmount() {\n CartStore.removeChangeProductCart(this.onCartChange);\n OrderStore.removeChangeVariantListener(this.onVariantChange);\n }\n\n onVariantChange() {\n let modifierGroups = this.applyTssCustomModifier();\n this.setState({\n productSubtotal: OrderStore.getCurrentSubtotal(),\n modifierGroups: modifierGroups\n });\n }\n\n onCartChange() {\n setTimeout(() => { // make warning\n this.setState({\n sections: MenuStore.getMenuDetailsSections(),\n grandTotal: CartStore.getGrandTotal(),\n products: CartStore.getServerProducts(),\n cartQuantity: CartStore.getQuantity(),\n })\n }, 700);\n }\n\n handleScroll(event) {\n this.setState({\n y: event.nativeEvent.contentOffset.y\n });\n\n // sort from highest y\n this.state.positions.sort(function (a, b) {\n return b.y - a.y;\n });\n\n try {\n this.state.positions.forEach((position, i) => {\n if (event.nativeEvent.contentOffset.y + 360 >= position.y) {\n let index = this.state.positions.length - (i + 1);\n // change active subcategory\n this.setState({\n activeIndex: index\n });\n this.subScroll.scrollTo({ x: this.state.subPositions[index].x - 10, y: 0, animated: true });\n\n // break iteration\n throw BreakException;\n }\n });\n } catch (e) {\n\n }\n }\n\n sortProducts(products) {\n let sortedProducts = [];\n let productChunk = [];\n let orderType = Services.parseOrderType(OrderStore.getType());\n\n products.map((product, i) => {\n if (product[orderType] == true) {\n if (i % 1 === 0) {\n sortedProducts.push(productChunk);\n productChunk = [];\n productChunk.push(product);\n } else {\n productChunk.push(product);\n }\n }\n });\n sortedProducts.push(productChunk);\n return sortedProducts;\n }\n\n // apply TSS custom modifier logic\n applyTssCustomModifier() {\n let modifierMaps = MenuStore.getModifierMap();\n let modifierGroups = OrderStore.getModifierGroups();\n let newModifierGroups = [];\n modifierGroups.forEach((modifierGroup) => {\n modifierGroup.hide = false;\n modifierGroup.modifier1 = 0;\n\n // DB was designed for multi modifiers, but temporarily treat as single modifier\n // apply_to_show was currently unused bcos leak of time to do (urgently needed)\n let qty = 0;\n modifierMaps.forEach(modifierMap => {\n if (modifierGroup.id == modifierMap.modifier2 && modifierMap.apply_to_show) {\n qty = 0;\n // check if parent selected\n modifierGroups.forEach((mg) => {\n if (mg.id == modifierMap.modifier1) {\n mg.product_modifier_ids.forEach(m => {\n qty += m.quantity;\n });\n }\n });\n\n if (qty < 1) {\n modifierGroup.hide = true; // hide if parent not selected\n } else {\n modifierGroup.hide = false; // show if parent selected\n }\n modifierGroup.modifier1 = modifierMap.modifier1;\n }\n });\n newModifierGroups.push(modifierGroup);\n });\n\n return newModifierGroups;\n }\n\n onProductClose(msg) {\n this.setState({\n showProduct: false,\n modifierGroupsValid: [true, true, true, true, true, true],\n });\n\n if (msg) {\n this.setState({\n showPopupMsg: true,\n msg: msg\n });\n }\n }\n\n checkModifierValid() {\n this.setState({\n modifierGroupsValid: OrderStore.checkModifierGroupsValid(),\n });\n }\n\n onModifierChange(modifierGroupsValid) {\n this.setState({\n modifierGroupsValid: modifierGroupsValid,\n });\n }\n\n toggleCustomModifiers(modifierGroup, hide) {\n let newMG = [];\n let parentModifier = 0;\n this.state.modifierGroups.forEach((mg) => {\n // recursive call for children\n if (parentModifier != 0) {\n this.state.modifierGroups.forEach((mg2) => {\n if (parentModifier == mg2.modifier1) {\n parentModifier = 0;\n this.toggleCustomModifiers({ id: mg2.id }, hide);\n }\n });\n }\n\n if (mg.id == modifierGroup.id) {\n if (hide) {\n parentModifier = mg.id;\n\n OrderActions.resetModifierGroup(mg);\n } else {\n mg.hide = hide;\n }\n }\n\n newMG.push(mg);\n });\n\n this.setState({\n modifierGroups: newMG\n });\n }\n\n hidePopupMsg() {\n this.setState({\n showPopupMsg: false,\n });\n }\n\n navigateWelcome() {\n Navigation.navigate('Welcome');\n }\n\n navigateToProduct(product) {\n OrderStore.setSelectedProduct(product);\n\n let modifierValids = [];\n OrderStore.getModifierGroups().forEach((modifier, i) => {\n modifierValids.push(true);\n });\n\n let modifierGroups = this.applyTssCustomModifier();\n\n Image.getSize(Services.getImageURL(product.id, 'product'), (imageWidth, imageHeight) => {\n let scaledImage = Services.getImageScaledSize(imageWidth, imageHeight, Device.width * 0.9);\n this.setState({\n showProduct: true,\n productSubtotal: OrderStore.getCurrentSubtotal(),\n modifierGroups: modifierGroups,\n modifierGroupsValid: modifierValids,\n imgWidth: scaledImage.width,\n imgHeight: scaledImage.height\n })\n }, () => {\n this.setState({\n showProduct: true,\n productSubtotal: OrderStore.getCurrentSubtotal(),\n modifierGroups: modifierGroups,\n modifierGroupsValid: modifierValids,\n });\n });\n }\n\n refreshView(index, id) {\n // Scroll to subcategory\n let offset = Device.getSize(-200);\n try {\n const node = this.state.nodes.get(id);\n const position = findNodeHandle(node);\n RCTUIManager.measure(position, (fx, fy, w, h, px, py) => {\n this.setState({\n y: this.state.y + py + offset\n });\n this.myScroll.scrollTo({ x: 0, y: this.state.y + py + offset, animated: true });\n });\n } catch (BreakException) {\n\n }\n }\n\n renderSubCategory(sections) {\n let len = 0;\n let index = 0;\n let categoryId;\n let categories = this.state.categories;\n return (\n {\n this.subScroll = ref\n }}>\n \n {\n categories.map((category, j) => {\n if (j > 0) {\n len += sections[categoryId].subcategories.length;\n }\n categoryId = category.id;\n return (\n \n {\n sections[category.id].subcategories.map((section, i) => {\n if (section.products) {\n let sortedProducts = this.sortProducts(section.products);\n if (sortedProducts.length > 1) {\n index = i;\n if (j > 0) {\n index = len + i;\n }\n\n return (\n { this.refreshView(i, section.id) }}\n key={i}\n style={[styles.subcategoryContainer, styles.container]}\n ref={(ref) => {\n this.state.nodes.set('00' + section.id, ref);\n }}>\n \n {section.name}\n \n\n \n \n )\n } else {\n return (\n {\n this.state.nodes.set('00' + section.id, ref);\n }} />\n )\n }\n }\n })\n }\n \n )\n })\n }\n \n \n )\n }\n\n renderPopupMsg() {\n return (\n \n\n \n \n \n \n {this.state.msg}\n \n \n\n this.hidePopupMsg()}\n style={[styleHelper.flexCenter]}>\n \n Ok\n \n \n \n \n \n )\n }\n\n // Menu Products List\n renderProducts(products) {\n return (\n \n {\n products.map((sortedProduct, j) => (\n sortedProduct.length > 0 &&\n \n {\n sortedProduct.map((product, i) => (\n \n this.navigateToProduct(product)}\n style={[productStyles.menuContainer]}>\n\n \n \n \n \n {product.name}\n \n \n\n \n \n {product.description_sale != null ? product.description_sale.substring(0, 80) + '...' : null}\n \n \n\n \n {\n product.list_price === 0 &&\n \n {\n product.product_variant_ids.length == 0 &&\n \n ${Math.round(product.list_price * 100) / 100}\n \n }\n\n {\n product.product_variant_ids.length > 1 &&\n \n Start From ${Math.round(product.product_variant_ids[0].lst_price * 100) / 100}\n \n }\n \n }\n {\n product.list_price > 0 &&\n \n ${Math.round(product.list_price * 100) / 100}\n \n }\n \n \n\n {/* */}\n \n {/* */}\n \n\n \n \n ))\n }\n \n ))\n }\n \n )\n }\n\n renderContent(sections) {\n let categories = this.state.categories;\n let sortedProducts;\n\n return (\n \n {\n this.myScroll = ref\n }}\n scrollEventThrottle={0}\n style={[{ width: Device.width, height: Device.height * 0.83 }]}\n onScroll={this.handleScroll}>\n {\n categories.map((category, i) => {\n return (\n \n {\n sections[category.id].subcategories.map((subcategory, j) => {\n if (subcategory.products) {\n sortedProducts = this.sortProducts(subcategory.products);\n\n if (sortedProducts.length > 1) {\n return (\n \n \n \n {\n this.state.nodes.set(subcategory.id, ref);\n }}\n >\n {subcategory.name}\n \n \n {this.renderProducts(sortedProducts)}\n \n \n )\n } else {\n return (\n \n )\n }\n }\n })\n }\n \n )\n })\n }\n \n \n )\n }\n\n renderTopNav() {\n return (\n \n \n { this.navigateWelcome(); }}>\n \n <\n \n \n \n\n \n \n MENU\n \n \n\n \n \n )\n }\n\n render() {\n return (\n \n \n\n {this.renderPopupMsg()}\n\n \n {this.renderTopNav()}\n {this.renderSubCategory(this.state.sections)}\n \n\n \n {\n this.renderContent(this.state.sections)\n }\n {\n \n }\n \n \n )\n }\n}\n\nclass Cart extends React.Component {\n constructor(props) {\n super(props);\n this.onCartChange = this.onCartChange.bind(this);\n this.state = {\n grandTotal: CartStore.getGrandTotal(),\n };\n }\n\n componentDidMount() {\n CartStore.addChangeProductCart(this.onCartChange);\n }\n\n componentWillUnmount() {\n CartStore.removeChangeProductCart(this.onCartChange);\n }\n\n onCartChange() {\n setTimeout(() => {\n this.setState({\n grandTotal: CartStore.getGrandTotal(),\n });\n }, 500);\n }\n\n navigateToCart() {\n if (CartStore.hasProducts() === true) {\n Navigation.navigate('Cart');\n } else {\n Services.showAlertError('There are currently no items in your cart.');\n }\n }\n\n render() {\n let itemCount = CartStore.getQuantity();\n if (this.state.grandTotal <= 0 && itemCount <= 0) {\n return \n }\n\n return (\n \n this.navigateToCart()}\n activeOpacity={Config.activeOpacity}\n style={[styleHelper.flexRow, ThemeStyles.primaryBgColor(), styles.cartButton]}>\n \n \n {itemCount}\n \n \n\n \n \n View Basket\n \n \n\n \n \n {Services.formatPrice(this.state.grandTotal)}\n \n \n \n \n )\n }\n}\n\nconst ProductBox = (props) => {\n if (!props.show) {\n return \n }\n\n return (\n \n )\n}\n","import React from 'react';\nimport { Text, View, Image, TouchableOpacity } from 'react-native';\n\n// import * as Navigation from '../Routes/Routing';\n\nimport styleHelper from '../Styles/StyleHelper';\n\nimport Config from '../Utils/Config';\nimport Device from '../Utils/Device';\n\nimport OrderStore from '../Stores/OrderStore';\nimport StoreStore from '../Stores/StoreStore';\n// import CartStore from '../Stores/CartStore';\n\nclass OrderInfo extends React.Component {\n render() {\n return (\n \n \n\n \n {StoreStore.getTableNo()}\n \n \n \n );\n }\n}\n\nexport default OrderInfo;\n","import React from 'react';\nimport {\n Text,\n View,\n Image,\n TextInput,\n TouchableOpacity,\n TouchableHighlight,\n ScrollView,\n KeyboardAvoidingView,\n StyleSheet,\n Modal,\n} from 'react-native';\n\nimport * as Navigation from '../Routes/Routing';\n\nimport styleHelper from '../Styles/StyleHelper';\nimport ThemeStyles from '../Styles/ThemeStyles';\nimport Colors from '../Styles/Colors';\n\nimport OrderInfo from '../Components/OrderInfo';\nimport ImageBackground from '../Components/ImageBackground';\nimport ProductModal from '../Components/ProductModal';\n\nimport Services from '../Utils/Services';\nimport Device from '../Utils/Device';\nimport Config from '../Utils/Config';\nimport API from '../Utils/API';\n\nimport CartStore from '../Stores/CartStore';\nimport OrderStore from '../Stores/OrderStore';\nimport StoreStore from '../Stores/StoreStore';\nimport MenuStore from '../Stores/MenuStore';\n\nimport CartActions from '../Actions/CartActions';\nimport OrderActions from '../Actions/OrderActions';\n\nconst styles = StyleSheet.create({\n bottomSeparator: {\n marginBottom: Device.getSize(50),\n },\n suggestionItem: {\n borderColor: '#CCC',\n borderWidth: Device.getSize(1),\n borderStyle: 'solid',\n width: Device.getSize(200),\n height: Device.getSize(160),\n marginRight: Device.getSize(8),\n padding: Device.getSize(7),\n },\n spaceTop: {\n marginTop: Device.getSize(5)\n },\n\tmenuContainer: {\n\t\tminWidth: Device.getSize(160),\n\t\tmaxWidth: Device.getSize(160),\n\t\tminHeight: Device.getSize(225),\n\t\tflex: 1,\n\t\tmarginLeft: Device.getSize(20),\n\t\tmarginRight: Device.getSize(-20)\n\t},\n\tbreadcum: {\n\t\tmarginBottom: Device.getSize(5),\n\t\tmarginTop: Device.getSize(5),\n\t\tmarginLeft: Device.getSize(25),\n\t\tmarginRight: Device.getSize(20),\n\t\tflex: 1,\n\t\tflexDirection: 'row',\n\t\theight: Device.getSize(40),\n\t},\n productImg: {\n width: Device.getSize(140),\n height: Device.getSize(120)\n },\n cartQtyBox: {\n paddingVertical: Device.getSize(5),\n paddingHorizontal: Device.getSize(5),\n width: Device.getSize(30),\n textAlign: 'center',\n backgroundColor: Colors.DarkOrange,\n },\n blurBg: {\n width: Device.width,\n height: Device.height,\n backgroundColor: 'rgba(0,0,0,0.8)',\n },\n});\n\nexport default class Cart extends React.Component {\n constructor(props) {\n super(props);\n this.onCartChange = this.onCartChange.bind(this);\n this.navigateMenu = this.navigateMenu.bind(this);\n this.renderTopNav = this.renderTopNav.bind(this);\n this.renderConfirmOrder = this.renderConfirmOrder.bind(this);\n this.onConfirmOrder = this.onConfirmOrder.bind(this);\n\n this.state = {\n refreshingData: false,\n products: CartStore.getServerProducts(),\n grandTotal: CartStore.getGrandTotal(),\n subtotal: CartStore.getSubtotal(),\n discount: CartStore.getDiscountAmount(),\n extraCharges: CartStore.getExtraCharge(),\n // hasCard: PaymentStore.hasCard(),\n hasCard: false,\n numberValid: false,\n expiryValid: false,\n cvcValid: false,\n cardNumber: null,\n expiryMonth: null,\n expiryYear: null,\n cvc: null,\n spawnSlash: true,\n spawnDash1: true,\n spawnDash2: true,\n spawnDash3: true,\n spawnDash4: true,\n showPaymentCard: false,\n };\n }\n\n componentDidMount() {\n CartActions.postOrder(OrderStore.getData());\n CartStore.addChangeProductCart(this.onCartChange);\n }\n\n componentWillUnmount() {\n // CartStore.removeExpireCartListener(this.onCartExpire);\n // CartStore.removeSuccessfulPaymentListener(this.onSuccessfullyPay);\n CartStore.removeChangeProductCart(this.onCartChange);\n }\n\n onCartChange() {\n this.setState({\n grandTotal: CartStore.getGrandTotal(),\n subtotal: CartStore.getSubtotal(),\n discount: CartStore.getDiscountAmount(),\n extraCharges: CartStore.getExtraCharge(),\n products: CartStore.getServerProducts(),\n });\n\n // redirect to menu if empty cart\n if (this.state.products.length < 1) {\n this.props.navigation.navigate('Home');\n }\n }\n\n navigateMenu() {\n Navigation.navigate('Home')\n }\n\n getData(){\n let data = [];\n\n //Add products\n let products = CartStore.getDisplayProducts();\n products.forEach((product)=>{\n let orderProduct = [0, 0, { // 0,0 => create new record in odoo\n name: product.name,\n qty: product.quantity,\n price_unit: product.price,\n price_subtotal: 0,\n subtotal: 0,\n price_subtotal_incl: 0,\n modifier_line: []\n }];\n if(product.variant){\n orderProduct[2].product_id = product.variant.id;\n }\n product.modifiers.forEach((modifier)=>{\n orderProduct[2].modifier_line.push({\n id: modifier.id,\n qty: modifier.quantity,\n product_id: modifier.product_id.id,\n name: modifier.product_id.name,\n price: modifier.price,\n price_subtotal: 0,\n subtotal: 0,\n price_subtotal_incl: 0\n });\n })\n data.push(orderProduct);\n });\n\n return data;\n }\n\n onConfirmOrder() {\n Services.showSpinner();\n\n let store = OrderStore.getData();\n let cartId = new Date().getTime();\n this.amount = CartStore.getGrandTotal();\n this.amount = parseFloat(this.amount.toFixed(2));\n\n let param = {\n jsonrpc: '2.0',\n params: {\n token: StoreStore.getQRToken(),\n summary_printer_ip: StoreStore.getSummaryIp(),\n order: {\n state: 'draft',\n pricelist_id: parseInt(StoreStore.getPriceListId()),\n session_id: parseInt(StoreStore.getSessionId()),\n user_id: parseInt(StoreStore.getUserId()),\n pos_reference: 'Order ' + cartId,\n amount_tax: 0,\n amount_total: this.amount,\n amount_paid: 0,\n amount_return: 0,\n table_id: parseInt(store.tableId),\n table_ids: [[6, 0, [parseInt(store.tableId)]]], // 6,0 => replace all records in list\n lines: this.getData()\n }\n }\n };\n\n if(OrderStore.getType2() == \"takeaway\") {\n param.params.order.order_mode = \"take_away\";\n }\n\n API.createOrder(param, {\n success: (res)=>{\n console.log(res)\n if(res.result.id) {\n Navigation.navigate('Confirmation')\n }\n },\n error: (err)=>{\n console.log(err)\n Services.showAlertError(err.error_descrip);\n },\n complete: ()=>{\n Services.hideSpinner();\n }\n });\n }\n\n renderConfirmOrder() {\n return (\n \n\n { this.onConfirmOrder() }}>\n \n Confirm Order\n \n \n\n \n )\n }\n\n renderTopNav() {\n return(\n \n \n { this.navigateMenu(); }}>\n \n <\n \n \n \n \n \n \n CART\n \n \n \n \n \n )\n }\n \n render() {\n return (\n \n {this.renderTopNav()}\n\n \n \n\n \n \n \n \n \n\n \n \n\n \n\n \n\n \n \n\n {this.renderConfirmOrder()}\n \n \n );\n }\n}\n\nconst CartDetails = (props) => {\n return (\n \n \n \n \n \n );\n}\n\nclass Products extends React.Component {\n constructor(props) {\n super(props);\n\n this.onVariantChange = this.onVariantChange.bind(this);\n this.removeProduct = this.removeProduct.bind(this);\n this.editProduct = this.editProduct.bind(this);\n this.applyTssCustomModifier = this.applyTssCustomModifier.bind(this);\n this.onProductClose = this.onProductClose.bind(this);\n this.checkModifierValid = this.checkModifierValid.bind(this);\n this.onModifierChange = this.onModifierChange.bind(this);\n this.toggleCustomModifiers = this.toggleCustomModifiers.bind(this);\n\n this.state = {\n showProduct: false,\n productSubtotal: OrderStore.getCurrentSubtotal(),\n modifierGroups: [],\n modifierGroupsValid: [],\n imgWidth: 0,\n imgHeight: 0,\n };\n }\n\n componentDidMount() {\n OrderStore.addChangeVariantListener(this.onVariantChange);\n }\n\n componentWillUnmount() {\n OrderStore.removeChangeVariantListener(this.onVariantChange);\n }\n\n onVariantChange() {\n let modifierGroups = this.applyTssCustomModifier();\n this.setState({\n productSubtotal: OrderStore.getCurrentSubtotal(),\n modifierGroups: modifierGroups\n });\n }\n\n // apply TSS custom modifier logic\n applyTssCustomModifier() {\n let modifierMaps = MenuStore.getModifierMap();\n let modifierGroups = OrderStore.getModifierGroups();\n let newModifierGroups = [];\n modifierGroups.forEach((modifierGroup)=>{\n modifierGroup.hide = false;\n modifierGroup.modifier1 = 0;\n\n // DB was designed for multi modifiers, but temporarily treat as single modifier\n // apply_to_show was currently unused bcos leak of time to do (urgently needed)\n let qty = 0;\n modifierMaps.forEach(modifierMap => {\n if(modifierGroup.id == modifierMap.modifier2 && modifierMap.apply_to_show) {\n qty = 0;\n // check if parent selected\n modifierGroups.forEach((mg)=>{\n if(mg.id == modifierMap.modifier1) {\n mg.product_modifier_ids.forEach(m => {\n qty += m.quantity;\n });\n }\n });\n\n if(qty < 1) {\n modifierGroup.hide = true; // hide if parent not selected\n } else {\n modifierGroup.hide = false; // show if parent selected\n }\n modifierGroup.modifier1 = modifierMap.modifier1;\n }\n });\n newModifierGroups.push(modifierGroup);\n });\n\n return newModifierGroups;\n }\n \n onProductClose(msg) {\n this.setState({\n showProduct: false,\n modifierGroupsValid: [true, true, true, true, true, true],\n });\n\n if (msg) {\n this.setState({\n showPopupMsg: true,\n msg: msg\n });\n }\n }\n\n checkModifierValid() {\n this.setState({\n modifierGroupsValid: OrderStore.checkModifierGroupsValid(),\n });\n }\n\n onModifierChange(modifierGroupsValid) {\n this.setState({\n modifierGroupsValid: modifierGroupsValid,\n });\n }\n\n toggleCustomModifiers(modifierGroup, hide) {\n let newMG = [];\n let parentModifier = 0;\n this.state.modifierGroups.forEach((mg) => {\n // recursive call for children\n if (parentModifier != 0) {\n this.state.modifierGroups.forEach((mg2) => {\n if (parentModifier == mg2.modifier1) {\n parentModifier = 0;\n this.toggleCustomModifiers({ id: mg2.id }, hide);\n }\n });\n }\n\n if (mg.id == modifierGroup.id) {\n if (hide) {\n parentModifier = mg.id;\n\n OrderActions.resetModifierGroup(mg);\n } else {\n mg.hide = hide;\n }\n }\n\n newMG.push(mg);\n });\n\n this.setState({\n modifierGroups: newMG\n });\n }\n\n removeProduct(cartID) {\n CartActions.removeProduct(cartID);\n }\n\n editProduct(cartID) {\n let product = CartStore.findProduct(cartID);\n OrderActions.selectProduct(product);\n\n let modifierValids = [];\n OrderStore.getModifierGroups().forEach((modifier, i)=>{\n modifierValids.push(true);\n });\n\n let modifierGroups = this.applyTssCustomModifier();\n \n Image.getSize(Services.getImageURL(product.id, 'product'), (imageWidth, imageHeight) => {\n let scaledImage = Services.getImageScaledSize(imageWidth, imageHeight, Device.width * 0.9);\n this.setState({\n showProduct: true,\n productSubtotal: OrderStore.getCurrentSubtotal(),\n modifierGroups: modifierGroups,\n modifierGroupsValid: modifierValids,\n imgWidth: scaledImage.width,\n imgHeight: scaledImage.height\n })\n }, () => {\n this.setState({\n showProduct: true,\n productSubtotal: OrderStore.getCurrentSubtotal(),\n modifierGroups: modifierGroups,\n modifierGroupsValid: modifierValids,\n });\n });\n }\n\n render() {\n return (\n \n \n\n {/* nestedScrollEnabled={true} */}\n \n {this.props.products.map((product, key) => (\n \n \n \n {product.quantity}x {product.productName}\n \n\n \n {Services.formatPrice(product.productPrice * product.quantity)}\n \n \n\n \n\n {product.modifiers.map((modifier, _key) => (\n \n \n {product.quantity * modifier.quantity}x {modifier.modifierName}\n \n\n \n {Services.formatPrice(modifier.price * modifier.quantity * product.quantity)}\n \n \n ))}\n\n \n\n this.editProduct(product.cartID)}\n style={[ThemeStyles.productBtn()]}>\n \n Edit\n \n \n\n \n\n this.removeProduct(product.cartID)}\n style={[ThemeStyles.productBtn()]}>\n \n Remove\n \n \n\n \n \n ))}\n \n \n );\n }\n}\n\nconst Subtotal = (props) => {\n if (!props.subtotal) {\n return ;\n }\n\n return (\n \n \n Subtotal\n \n\n \n {Services.formatPrice(props.subtotal)}\n \n \n );\n}\n\nconst Discount = (props) => {\n if (!props.discount || props.discount == 0) {\n return ;\n }\n\n return (\n \n \n Discount\n \n\n \n {Services.formatPrice(props.discount)}\n \n \n );\n}\n\nconst ExtraCharges = (props) => {\n if(!props.extraCharges) {\n return \n }\n\n if (props.extraCharges.length === 0) {\n return ;\n }\n\n return (\n \n {props.extraCharges.map((extraCharge, k) => (\n extraCharge.amount > 0 &&\n \n \n {extraCharge.percentage && (\n \n {extraCharge.percentage}%\n \n )}\n \n {extraCharge.string}\n \n \n\n \n {Services.formatPrice(extraCharge.amount)}\n \n \n ))}\n \n )\n}\n\nconst GrandTotal = (props) => {\n if(!props.grandTotal) {\n return \n }\n\n return (\n \n \n Grand Total\n \n\n \n {Services.formatPrice(props.grandTotal)}\n \n \n );\n}\n\nconst ProductVariant = props => {\n if (props.product.product_variant_ids) {\n return (\n \n \n {props.product.attribute_value_ids[0].name}\n \n {/* \n {Services.formatPrice(props.product.variantPrice)}\n */}\n \n );\n }\n return null;\n};\n\nconst ProductBox = (props) => {\n if (!props.show) {\n return \n }\n\n return (\n \n )\n}\n","import React from 'react';\nimport { Text, View, ScrollView, TouchableOpacity } from 'react-native';\n\nimport * as Navigation from '../Routes/Routing';\n\nimport styleHelper from '../Styles/StyleHelper';\nimport ThemeStyles from '../Styles/ThemeStyles';\n\nimport ImageBackground from '../Components/ImageBackground';\nimport OrderInfo from '../Components/OrderInfo';\nimport SmallSpinner from '../Components/SmallSpinner';\n\nimport Config from '../Utils/Config';\nimport Device from '../Utils/Device';\n\nimport CartActions from '../Actions/CartActions';\n\nimport CartStore from '../Stores/CartStore';\n\nexport default class Confirmation extends React.Component {\n constructor(props) {\n super(props);\n\n this.resetCart = this.resetCart.bind(this);\n this.renderDone = this.renderDone.bind(this);\n this.renderTopNav = this.renderTopNav.bind(this);\n\n this.state = {\n grandTotal: CartStore.getGrandTotal(),\n subTotal: CartStore.getSubtotal(),\n order: CartStore.getOrder(),\n showDone: true,\n smallSpinner: false,\n };\n }\n\n resetCart(callback) {\n CartActions.reset();\n callback();\n }\n\n renderTopNav() {\n return (\n \n \n\n \n \n CONFIRMATION\n \n \n\n \n \n )\n }\n\n renderDone() {\n return (\n \n this.resetCart(() => {\n Navigation.navigate('Welcome');\n })}\n activeOpacity={Config.activeOpacity}\n style={[styleHelper.containerNormal, styleHelper.flex1, styleHelper.flexRow, styleHelper.flexCenter]}>\n \n DONE\n \n \n \n )\n }\n\n render() {\n return (\n \n {this.renderTopNav()}\n \n \n \n \n \n \n\n {\n this.state.showDone &&\n this.renderDone()\n }\n \n \n );\n }\n}\n\nconst SectionBlackTop = props => {\n return (\n \n \n\n \n \n We've got your order\n \n\n \n and will be serving you shortly\n \n \n\n \n );\n};\n","import React from 'react';\nimport {\n Text,\n View,\n} from 'react-native';\n\nimport styleHelper from '../Styles/StyleHelper';\nimport ThemeStyles from '../Styles/ThemeStyles';\n\nimport ImageBackground from '../Components/ImageBackground';\n\nexport default class Lost extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n };\n }\n\n componentDidMount() {\n }\n\n render() {\n return(\n \n \n \n Scan QR again to start ordering\n \n \n \n );\n }\n}\n","import React from 'react';\nimport {\n Text,\n View,\n Image,\n CheckBox,\n TouchableOpacity,\n ImageBackground,\n StyleSheet\n} from 'react-native';\n\nimport * as Navigation from '../Routes/Routing';\n\nimport Config from '../Utils/Config';\nimport Device from '../Utils/Device';\nimport API from '../Utils/API';\n\nimport styleHelper from '../Styles/StyleHelper';\nimport ThemeStyles from '../Styles/ThemeStyles';\n\nimport OrderActions from '../Actions/OrderActions';\n\nimport StoreStore from '../Stores/StoreStore';\n\nconst styles = StyleSheet.create({\n customBtnStyle1: {\n maxHeight: Device.getSize(50),\n },\n customBtnStyle2: {\n maxHeight: Device.getSize(30),\n },\n customBtnSpacing: {\n marginTop: Device.getSize(10),\n marginBottom: Device.getSize(20),\n }\n});\n\nexport default class Login extends React.Component {\n constructor(props) {\n super(props);\n this.navigateHome = this.navigateHome.bind(this);\n this.state = {\n orderExist: false,\n isCheck: false\n }\n }\n\n componentDidMount() {\n if (Config.isProductionEnv) {\n API.getOrder(StoreStore.getQRToken(), {\n success: (res) => {\n if (res.lines.length > 0) {\n this.setState({\n orderExist: true\n })\n }\n },\n error: () => {\n\n }\n });\n }\n }\n\n navigateHome(orderType) {\n if (this.state.isCheck || Config.theme == \"JJK\") {\n OrderActions.setOrderType2(orderType);\n\n Navigation.navigate('Home');\n }\n }\n\n navigateMyOrder() {\n Navigation.navigate('MyOrder');\n }\n\n render() {\n let img_url = require('../Img/img_background_obbar.png');\n if (Config.theme == \"JJK\") {\n img_url = require('../Img/img_background_jjk.jpeg');\n }\n\n return (\n \n \n {\n Config.theme != \"JJK\" && (\n \n {StoreStore.getSelectedStore().address.line1}\n \n )\n }\n\n \n {StoreStore.getTableNo()}\n \n \n\n \n \n { this.navigateHome('dinein') }}\n activeOpacity={Config.activeOpacity}\n style={[styles.customBtnStyle1, styleHelper.customBtn, ThemeStyles.primaryBtnColor(), ThemeStyles.customBtnBorder(), styleHelper.containerTouchableBig, styleHelper.flexCenter]}>\n\n \n {this.state.orderExist ? 'ADD ORDER' : 'START ORDER'}\n \n \n \n\n { this.navigateMyOrder() }}\n activeOpacity={Config.activeOpacity}\n style={[styles.customBtnStyle2, styles.customBtnSpacing, styleHelper.customBtn, ThemeStyles.secondaryBtnColor(), ThemeStyles.customBtnBorder(), styleHelper.containerTouchableBig, styleHelper.flexCenter]}>\n\n \n {Config.theme == \"OBBAR\" && 'MY ORDER' }\n {Config.theme == \"JJK\" && 'ORDER SUMMARY' }\n \n\n \n\n {\n Config.theme == \"OBBAR\" &&\n \n this.setState({ isCheck: !this.state.isCheck })}\n style={[{ marginRight: Device.getSize(5) }]}\n />\n \n I confirm I am of legal drinking age, ie aged 18 and above.\n \n \n }\n\n \n \n );\n }\n}\n","import React from 'react';\nimport {Text, View} from 'react-native';\n\nimport styleHelper from '../Styles/StyleHelper';\n\nimport Services from '../Utils/Services';\n\nconst ExtraCharge = props => {\n const renderPrice = money => {\n if (money < 0) {\n money = 0;\n }\n return (\n \n {Services.formatPrice(money)}\n \n );\n };\n\n if(!props.extraCharges){\n return \n }\n\n return (\n \n {props.extraCharges.map((extraCharge, k) => (\n extraCharge.amount > 0 &&\n \n \n {extraCharge.percentage && (\n \n {extraCharge.percentage}%\n \n )}\n \n {extraCharge.string}\n \n \n\n {renderPrice(extraCharge.amount)}\n \n ))}\n \n );\n};\n\nexport default ExtraCharge;\n","import React from 'react';\nimport { Text, View } from 'react-native';\n\nimport styleHelper from '../Styles/StyleHelper';\n\nimport ExtraCharge from './ExtraCharge';\n\nimport Services from '../Utils/Services';\nimport Device from '../Utils/Device';\n\nconst ProductOrder = props => {\n return (\n \n {props.order.items.map((product, key) => (\n \n \n \n {product.quantity}x {product.productName}\n \n \n {Services.formatPrice(product.productPrice)}\n \n \n\n \n \n \n ))}\n\n \n\n \n\n \n\n \n\n \n \n );\n};\n\nconst ProductVariant = props => {\n if (!props.product.variantName) {\n return null;\n }\n\n return (\n \n \n {props.product.variantName}\n \n\n \n {Services.formatPrice(props.product.variantPrice)}\n \n \n );\n};\n\nconst Modifiers = props => {\n if (!props.modifiers || props.modifiers.length === 0) {\n return null;\n }\n\n return (\n \n {props.modifiers.map((modifier, key) => (\n \n \n {modifier.quantity}x {modifier.modifierName}\n \n \n {Services.formatPrice(modifier.price)}\n \n \n ))}\n \n );\n};\n\nconst Subtotal = props => {\n return (\n \n \n Subtotal\n \n\n \n {Services.formatPrice(props.subTotal)}\n \n \n );\n};\n\nconst DiscountProducts = props => {\n return (\n \n {props.discount_products.map((product, key) => (\n \n \n \n {product.quantity}x {product.name}\n \n \n {Services.formatPrice(product.discount)}\n \n \n \n {/* */}\n {/* */}\n \n ))}\n \n )\n}\n\nconst Discount = (props) => {\n if (!props.discount || props.discount == 0) {\n return ;\n }\n\n return (\n \n \n Discount\n \n\n \n {Services.formatPrice(props.discount)}\n \n \n );\n}\n\nconst Total = props => {\n return (\n \n \n Grand Total\n \n \n {Services.formatPrice(props.total)}\n \n \n );\n};\n\nexport default ProductOrder;\n","import React from 'react';\nimport {\n Text,\n View,\n Image,\n TouchableOpacity,\n ScrollView,\n} from 'react-native';\n\nimport * as Navigation from '../Routes/Routing';\n\nimport ProductOrder from '../Components/ProductOrder';\n\nimport Config from '../Utils/Config';\nimport Device from '../Utils/Device';\nimport API from '../Utils/API';\n\nimport styleHelper from '../Styles/StyleHelper';\nimport ThemeStyles from '../Styles/ThemeStyles';\n\nimport StoreStore from '../Stores/StoreStore';\n\nexport default class MyOrder extends React.Component {\n constructor(props) {\n super(props);\n this.navigateHome = this.navigateHome.bind(this);\n this.state = {\n orderExist: false,\n order: null,\n subtotal: 0,\n total: 0,\n discount: null,\n discount_products: []\n }\n }\n\n componentDidMount() {\n API.getOrder(StoreStore.getQRToken(), {\n success: (res) => {\n if (res.error) {\n Navigation.navigate('Expired');\n } else {\n let items = [];\n let modifiers = [];\n res.lines.forEach((line) => {\n modifiers = [];\n line.modifier_lines.forEach((modifier_line) => {\n modifiers.push({\n modifierName: modifier_line.name,\n quantity: modifier_line.qty,\n price: modifier_line.price\n });\n })\n items.push({\n productName: line.name,\n quantity: line.qty,\n productPrice: line.price,\n modifiers: modifiers\n });\n })\n\n if (res.lines.length > 0) {\n this.setState({\n subtotal: res.subtotal,\n total: res.total,\n discount: res.discount,\n order: {\n items: items,\n extraCharges: [{\n string: 'Service Charge',\n percentage: 10,\n amount: res.service_charge\n },\n {\n string: 'GST',\n percentage: Config.gst,\n amount: res.gst\n }]\n },\n discount_products: res.discount_products,\n orderExist: true\n })\n }\n }\n },\n error: (err) => {\n }\n })\n }\n\n navigateHome() {\n Navigation.navigate('Welcome');\n }\n\n renderTopNavBar() {\n return (\n \n \n { this.navigateHome(); }}>\n \n <\n \n \n \n\n \n \n MY ORDER\n \n \n\n \n \n )\n }\n\n render() {\n return (\n \n {this.renderTopNavBar()}\n\n \n {!this.state.orderExist && (\n \n \n\n \n You have not placed any order yet\n \n \n )}\n\n {this.state.orderExist && (\n \n \n \n {StoreStore.getTableNo()}\n \n \n\n \n \n \n \n \n \n\n {/* */}\n \n \n )}\n \n \n );\n }\n}\n","import React from 'react';\nimport {\n Text,\n View,\n Image\n} from 'react-native';\nimport Ionicons from '@expo/vector-icons/Ionicons';\n\nimport styleHelper from '../Styles/StyleHelper';\nimport ThemeStyles from '../Styles/ThemeStyles';\n\nimport ImageBackground from '../Components/ImageBackground';\n\nimport Device from '../Utils/Device';\n\nexport default class Expired extends React.Component {\n render() {\n return(\n \n \n \n \n\n \n \n\n \n TABLE QR EXPIRED.\n \n\n \n Please approach service staff for assistance. Thank you.\n \n \n \n );\n }\n}\n","import React from 'react';\nimport {\n Text,\n View,\n} from 'react-native';\n\nimport styleHelper from '../Styles/StyleHelper';\nimport ThemeStyles from '../Styles/ThemeStyles';\n\nimport ImageBackground from '../Components/ImageBackground';\n\nimport Device from '../Utils/Device';\n\nexport default class Offset extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n };\n }\n\n componentDidMount() {\n }\n\n render() {\n return(\n \n \n \n INCORRECT TIMEZONE.\n \n\n \n Please set your device timezone\n \n\n \n to your local timezone.\n \n \n \n );\n }\n}\n","import * as React from 'react';\nimport {\n createStackNavigator,\n // CardStyleInterpolators,\n} from '@react-navigation/stack';\n\nimport Splash from '../Screens/Splash';\nimport Home from '../Screens/Home';\nimport Cart from '../Screens/Cart';\nimport Confirmation from '../Screens/Confirmation';\nimport Lost from '../Screens/Lost';\nimport Welcome from '../Screens/Welcome';\nimport MyOrder from '../Screens/MyOrder';\nimport Expired from '../Screens/Expired';\nimport Offset from '../Screens/Offset';\n\nconst Stack = createStackNavigator();\n\nconst ParentStack = () => (\n \n ({\n headerShown: false,\n })}\n />\n ({\n headerShown: false,\n })}\n />\n ({\n headerShown: false,\n })}\n />\n ({\n headerShown: false,\n })}\n />\n ({\n headerShown: false,\n })}\n />\n ({\n headerShown: false,\n })}\n />\n ({\n headerShown: false,\n })}\n />\n ({\n headerShown: false,\n })}\n />\n ({\n headerShown: false,\n })}\n />\n \n);\n\nexport default ParentStack;\n","import React from 'react';\nimport {View, Platform, ActivityIndicator} from 'react-native';\n\nimport styleHelper from '../Styles/StyleHelper';\nimport Storage from '../Utils/Storage';\n\nexport default class Spinner extends React.Component {\n state = {\n isShowed: false,\n };\n\n componentDidMount() {\n Storage.Components.Spinner = this;\n }\n\n show() {\n this.setState({\n isShowed: true,\n });\n }\n\n hide() {\n this.setState({\n isShowed: false,\n });\n }\n\n render() {\n if (this.state.isShowed === true) {\n switch (Platform.OS) {\n case 'android':\n return (\n \n \n \n );\n case 'ios':\n return (\n \n \n \n );\n case 'web':\n return (\n \n \n \n );\n default:\n return null;\n }\n }\n return null;\n }\n}\n","import { StatusBar } from 'expo-status-bar';\nimport React from 'react';\nimport { AppRegistry, Text, View } from 'react-native';\nimport {NavigationContainer} from '@react-navigation/native';\n\nimport {expo} from './app.json';\n\nimport useFonts from './UseFonts';\n\nimport {navigationRef} from './App/Routes/Routing';\nimport ParentNavigator from './App/Routes/ParentStack';\n\nimport Spinner from './App/Components/Spinner';\n\nexport default class SoupSpoonWeb extends React.Component {\n async _loadFontsAsync() {\n await useFonts();\n }\n\n componentDidMount() {\n this._loadFontsAsync();\n }\n\n render() {\n try {\n const headTag = document.querySelector(\"head\");\n const icon = document.createElement(\"link\");\n const attributeRel = document.createAttribute(\"rel\");\n attributeRel.value = \"icon\";\n const attributeHref = document.createAttribute(\"href\");\n attributeHref.value =\n \"\";\n icon.setAttributeNode(attributeRel);\n icon.setAttributeNode(attributeHref);\n headTag.appendChild(icon);\n } catch (e) {\n //Browser tabs do not exist on android and iOS, so let's just do nothing here.\n }\n\n return (\n \n \n \n \n \n );\n }\n}\n\nAppRegistry.registerComponent(expo.name, () => SoupSpoonWeb);\n","// import { registerRootComponent } from 'expo';\n\n// import App from './App';\n\n// // registerRootComponent calls AppRegistry.registerComponent('main', () => App);\n// // It also ensures that whether you load the app in Expo Go or in a native build,\n// // the environment is set up appropriately\n// registerRootComponent(App);\n\nimport React from \"react\";\nimport ReactDOM from \"react-dom/client\";\nimport App from \"./App\";\n\nconst root = ReactDOM.createRoot(document.getElementById(\"root\"));\nroot.render(\n // \n \n // \n);","let Storage = {\n Components: {\n Spinner: null,\n StatusBar: null,\n },\n};\n \nmodule.exports = Storage;\n "],"sourceRoot":""}