{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/res/Static.js","webpack:///./src/components/widgets/Logout.js","webpack:///./src/components/widgets/AddToBundleCartBtn.js","webpack:///./src/components/widgets/CheckoutBtn.js","webpack:///./src/components/SetItems.js","webpack:///./src/components/SetList.js","webpack:///./src/api/SetTools.js","webpack:///./src/components/widgets/AddToCartBtn.js","webpack:///./src/res/Config.js","webpack:///./src/res/chConfig.js","webpack:///./src/res/enConfig.js","webpack:///./src/res/Menu.js","webpack:///./src/api/Menu.js","webpack:///./src/api/Permission.js","webpack:///./src/res/WACode.js","webpack:///./src/reducers/loading.js","webpack:///./src/reducers/product.js","webpack:///./src/reducers/shoppingCart.js","webpack:///./src/reducers/checkout.js","webpack:///./src/reducers/category.js","webpack:///./src/reducers/global.js","webpack:///./src/reducers/permission.js","webpack:///./src/reducers/index.js","webpack:///./src/store/index.js","webpack:///./src/components/Set.js","webpack:///./src/components/Simple.js","webpack:///./src/components/SimpleList.js","webpack:///./src/components/Special.js","webpack:///./src/actions/globalAction.js","webpack:///./src/actions/index.js","webpack:///./src/actions/loadingAction.js","webpack:///./src/actions/productAction.js","webpack:///./src/actions/shoppingCartAction.js","webpack:///./src/actions/checkoutAction.js","webpack:///./src/actions/categoryAction.js","webpack:///./src/actions/permissionAction.js","webpack:///./src/res/landing.js","webpack:///./src/components/Landing.js","webpack:///./src/components/CartTable.js","webpack:///./src/components/Checkout.js","webpack:///./src/components/NonSupport.js","webpack:///./src/components/ServerError.js","webpack:///./src/components/Suspension.js","webpack:///./src/routes/index.js","webpack:///./src/history.js","webpack:///./src/App.js","webpack:///./src/index.js","webpack:///./src/api/EnvironmentTools.js","webpack:///./src/components/ShoppingCart.js","webpack:///./src/api/CommonTools.js","webpack:///./src/api/SimpleTools.js","webpack:///./src/components/widgets/Loading.js","webpack:///./src/components/ShoppingStatus.js","webpack:///./src/components/Tab.js","webpack:///./src/components/widgets/Disable.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","parentHotUpdateCallback","window","hotAvailableFilesMap","hotRequestedFilesMap","hotUpdate","hotWaitingFiles","hotChunksLoading","hotUpdateDownloaded","hotAddUpdateChunk","hotCurrentChildModule","hotApplyOnUpdate","hotCurrentHash","hotCurrentModuleData","hotCurrentParents","hotCurrentParentsTemp","hotCreateModule","hot","_acceptedDependencies","_declinedDependencies","_selfAccepted","_selfDeclined","_selfInvalidated","_disposeHandlers","_main","active","accept","dep","callback","undefined","decline","dispose","addDisposeHandler","removeDisposeHandler","idx","indexOf","invalidate","this","hotStatus","hotSetStatus","hotApplyInvalidatedModule","hotQueuedInvalidatedModules","check","hotCheck","hotApply","status","l","hotStatusHandlers","addStatusHandler","removeStatusHandler","newStatus","hotDeferred","hotUpdateNewHash","hotWaitingFilesMap","toModuleId","id","Error","requestTimeout","Promise","resolve","reject","XMLHttpRequest","request","requestPath","p","open","timeout","send","err","onreadystatechange","readyState","update","JSON","parse","responseText","e","then","hotApplyInvalidatedModules","c","h","promise","hotEnsureUpdateChunk","script","document","createElement","charset","src","head","appendChild","deferred","outdatedModules","options","hotApplyInternal","cb","module","getAffectedStuff","updateModuleId","outdatedDependencies","queue","map","chain","queueItem","pop","installedModules","type","parents","parentId","parent","concat","addAllToSet","a","b","item","appliedUpdate","warnUnexpectedRequire","console","warn","abortError","doApply","doDispose","chainInfo","join","onDeclined","ignoreDeclined","onUnaccepted","ignoreUnaccepted","onAccepted","onDisposed","outdatedSelfAcceptedModules","slice","errorHandler","keys","forEach","hotDisposeChunk","dependency","moduleOutdatedDependencies","disposeHandlers","children","child","error","callbacks","onErrored","dependencyId","ignoreErrored","err2","originalError","list","2","exports","me","fn","ObjectFactory","name","configurable","enumerable","get","set","value","defineProperty","finishChunkLoading","t","mode","hotCreateRequire","m","d","getter","o","r","Symbol","toStringTag","__esModule","ns","create","key","bind","n","object","property","jsonpArray","oldJsonpFunction","staticContent","content","loading","React","memo","role","useSelector","state","permission","dispatch","useDispatch","className","onClick","confirm","Static","signoutConfim","Permission","clearPermission","allActions","permissionAction","setRole","detectPermission","aria-hidden","logoutLabel","catId","useParams","cartUpdateCount","shoppingCart","cartId","activeProduct","product","history","useHistory","handleBundleAddToCart","eventPermission","Menu","menuDetect","typeDetect","myPartID","SetTools","addToCartValidate","loadingAction","changeLoading","axios","post","Config","storeLink","generateCartObject","sku","fetchBundleOptions","res","scrollDuration","productAction","setSuccessStatus","setFailStatus","shoppingCartAction","setCartUpdateCount","checkoutAction","pushEnableUpdates","resetSetInputQtyField","CommonTools","waFireClick","WACode","overAddtocart","setTimeout","$","animate","scrollTop","alert","itemAddAlert","addToCartAlert","title","backToHome","addToCart","addPartySetToCartCaption","OTP","startShoppingDetail","maximumError","checkout","soldoutError","location","useLocation","code","pathname","startsWith","btnCheckout","shoppingCheckout","href","checkoutForm","productId","setItems","useEffect","urlParam","generateParam","productDomain","fetchSetItems","fetchProductSku","items","encodeURIComponent","handleClick","currentTarget","getAttribute","classList","contains","text","val","v","data-value","priceFormat","price","dangerouslySetInnerHTML","__html","getCustomAttribute","productSku","detailProduct","consolidateProduct","getData","tempDetailProduct","bundleRelatedSku","all","spread","responses","setActiveProduct","fetchdetailProduct","genConsolidateProduct","bundleOptions","setShoppingCartTop","log","index","data-max","getMax","getTitle","getPartyCatSelectTitle","style","clear","cValue","subValue","subIndex","flag","imageSrc","getMediaAttribute","data-sku","popupBundleProductImg","data-src","data-gallery","data-title","handleAddQty","data-cat","data-id","pattern","data-cattitle","data-optionid","option_id","data-productid","min","max","maxLength","defaultValue","quentityTitle","onInput","handleMaxLengthCheck","handleMinusQty","split","replaceAll","updatePartyFoodIndicator","mycat","querySelector","mCnt","catInputs","querySelectorAll","userItem","parseInt","innerHTML","validatePartyFoodQty","mQty","mReturn","maxQty","extension_attributes","bundle_product_options","sort","position","mCatTitle","catTilePick","lang","partychoose","partytype","inputedVal","datacat","imgSrc","mediaDomain","imgPathDetect","popupIframeImage","mId","mMax","mMin","mVal","find","trigger","bundle_options","cart_item","quote_id","qty","k","option","product_links","subOption","method","url","selectioncat","mItem","requiredQty","fetchCartBundleOptions","original","entire","tempOptionId","tempItem","product_type","originalOptions","product_option","entireOptions","option_selections","subV","optionId","itemId","option_qty","itemRelatedSku","temp","environment","productDomainDV","includes","each","html","attr","generateCheckoutOptions","mText","generateSetObject","item_id","handleMultipleAddtocart","addToCartArray","SimpleTools","validateMinimunOrder","filterProduct","errorCount","resetInputQtyField","itemSku","scrollToTop","storeName","subStoreName","storeId","checkoutCartId","menu","subCat","ids","storeLinkDV","EnvironmentTools","categoryImage","storeHome","language","restuarantHome","waCheckout","pageFireCount","skuSeparator","cartIdName","token","memberId","memberFId","activeMenu","activeType","otpUrl","verifyCatId","extractSubType","categoryStatus","parentMenu","eraseMenu","disable","storePage","categoryAllStatus","cats","categoryObject","getChildren","cat","categoryChildren","children_data","is_active","menuStatus","activeCat","prevMenu","localStorage","getItem","allMenus","allStatus","menuFlag","menuChange","store","globalAction","setMenu","hash","prev","current","setItem","menuAlert","statusRedirect","typeChange","typeAlert","removeItem","fetchCartId","addMenuStatus","process","subP","landTypeDetect","prevType","subIds","Cookies","Date","setMinutes","getMinutes","expires","specialOTP","refer","tempRefer","substring","statusChange","prevRole","currentRole","expiration","landingChange","landingPermission","getState","remove","startShopping","shoppingViewCart","setTab","simpleTab","specialTab","setLand","simpleLand","specialLand","defaultState","loadingStatus","cartloadingStatus","action","successStatus","failStatus","cartDetailStatus","originalCart","hamperCount","hamperAmount","hamperDiscount","hamperPayable","festiveCount","festiveAmount","festiveDiscount","festivePayable","totalCount","totalAmount","shoppingCartLength","catDatas","discountCart","enableUpdates","checkoutStatus","currentCategory","category","activeTab","entireMenuStatus","global","rootReducer","combineReducers","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","createStore","reducer","applyMiddleware","thunk","categoryAction","fetchCategory","setType","extractType","tempProduct","productStatus","waFire","click","restaurantName","class","products","catPromise","catInfo","priceLabel","changeCartLoading","fetchOriginalCart","fetchDiscountCart","setShoppingCart","switchCartDetailStatus","getShoppingCartLength","getCatDatas","pushMaximumError","pushSoldOutError","switchCheckoutStatus","setActiveTab","setEntireMenuStatus","landingContent","landing","handleOnClick","link","Loading","image","subItem","data-type","data-sub-type","data-link","props","productItems","discount","payable","group","catData","updateProduct","tempMaximumError","updatedProduct","hasRemoved","newPromise","reload","maxLengthCheckWithUpdated","tempEnableUpdates","Fragment","rowSpan","checkoutSubTitle","colSpan","count","amount","unit","description","sortData","outOfStock","outOfStockError","generalError","data-rwd-label","tablePrice","data-rwd-tax-label","freeTax","data-itemid","data-group","size","data-minorder-qty","subTotal","updateShoppingCart","alreadySelectCount","alreadySelectAmount","discountAmount","discountedAmount","checkoutInfo","backToShopping","goBack","ShoppingCart","noShow","noItemInCart","yourShoppingCartNoItems","clickLink","to","here","continueShop","checkoutTitle","partialError","miniPartialError","totalDiscount","totalPayable","checkoutSelectLabel","checkoutSelectTip","CheckoutBtn","errorNonSupport","serverErrorHandler","serverSuspendHandler","Routes","checkVersion","path","component","NonSupport","Landing","exact","Set","Simple","Special","Checkout","Suspension","ServerError","createHistory","listen","App","renderRoutes","routes","Es6Promise","polyfill","ReactDOM","render","getElementById","envDetection","env","host","debugMode","cateogryImage","domain","envDomain","campDomain","ev","getCartItem","compareQty","getCartId","tempSoldoutError","tempProductData","tempOriginal","optionDetail","tempOptionDetail","skuFilter","custom_attributes","soldoutCode","tempSortData","addEventListener","removeEventListener","onMouseEnter","isMobile","onMouseLeave","cartNoProduct","width","shoppingLabel","total","display","sumPayable","allTotal","allUnit","cartTips","checkShoppingCart","startShoppingLabel","formatter","Intl","NumberFormat","minimumFractionDigits","format","Number","getMatchItem","str","generateProductParam","WATracker","trackPageView","wa_id","trackClickEvent","waNonStandardFire","discountData","hamperIds","matchItem","discount_amount","insertItem","array","newArray","specificQty","attribute_code","media_gallery_entries","disabled","resetInputValue","getOtherInfoBySKU","othername","requestother","urlBasicParam","myvalue","shortdescription","mkey","customattributes","getProductCustomAttribute","otherdescription","pName","sDescription","sName","getElementsByClassName","shoppingCartEl","windowHeight","innerHeight","detailInfo","getBoundingClientRect","height","top","agent","navigator","userAgent","start","substr","replace","encodeParam","formatPrice","mprice","String","extractSubMenuObject","obj","subMenu","menuId","extractIdsByType","nodes","dataset","generateCheckoutObject","addedSuccess","addedFail","allIds","tempIds","handleSwitchTab"],"mappings":"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","file":"main.bundle.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n \tfunction hotDisposeChunk(chunkId) {\n \t\tdelete installedChunks[chunkId];\n \t}\n \tvar parentHotUpdateCallback = window[\"webpackHotUpdate\"];\n \twindow[\"webpackHotUpdate\"] = // eslint-disable-next-line no-unused-vars\n \tfunction webpackHotUpdateCallback(chunkId, moreModules) {\n \t\thotAddUpdateChunk(chunkId, moreModules);\n \t\tif (parentHotUpdateCallback) parentHotUpdateCallback(chunkId, moreModules);\n \t} ;\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotDownloadUpdateChunk(chunkId) {\n \t\tvar script = document.createElement(\"script\");\n \t\tscript.charset = \"utf-8\";\n \t\tscript.src = __webpack_require__.p + \"hot/hot-update.js\";\n \t\tif (null) script.crossOrigin = null;\n \t\tdocument.head.appendChild(script);\n \t}\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotDownloadManifest(requestTimeout) {\n \t\trequestTimeout = requestTimeout || 10000;\n \t\treturn new Promise(function(resolve, reject) {\n \t\t\tif (typeof XMLHttpRequest === \"undefined\") {\n \t\t\t\treturn reject(new Error(\"No browser support\"));\n \t\t\t}\n \t\t\ttry {\n \t\t\t\tvar request = new XMLHttpRequest();\n \t\t\t\tvar requestPath = __webpack_require__.p + \"hot/hot-update.json\";\n \t\t\t\trequest.open(\"GET\", requestPath, true);\n \t\t\t\trequest.timeout = requestTimeout;\n \t\t\t\trequest.send(null);\n \t\t\t} catch (err) {\n \t\t\t\treturn reject(err);\n \t\t\t}\n \t\t\trequest.onreadystatechange = function() {\n \t\t\t\tif (request.readyState !== 4) return;\n \t\t\t\tif (request.status === 0) {\n \t\t\t\t\t// timeout\n \t\t\t\t\treject(\n \t\t\t\t\t\tnew Error(\"Manifest request to \" + requestPath + \" timed out.\")\n \t\t\t\t\t);\n \t\t\t\t} else if (request.status === 404) {\n \t\t\t\t\t// no update available\n \t\t\t\t\tresolve();\n \t\t\t\t} else if (request.status !== 200 && request.status !== 304) {\n \t\t\t\t\t// other failure\n \t\t\t\t\treject(new Error(\"Manifest request to \" + requestPath + \" failed.\"));\n \t\t\t\t} else {\n \t\t\t\t\t// success\n \t\t\t\t\ttry {\n \t\t\t\t\t\tvar update = JSON.parse(request.responseText);\n \t\t\t\t\t} catch (e) {\n \t\t\t\t\t\treject(e);\n \t\t\t\t\t\treturn;\n \t\t\t\t\t}\n \t\t\t\t\tresolve(update);\n \t\t\t\t}\n \t\t\t};\n \t\t});\n \t}\n\n \tvar hotApplyOnUpdate = true;\n \t// eslint-disable-next-line no-unused-vars\n \tvar hotCurrentHash = \"6a22de83d59992ccd961\";\n \tvar hotRequestTimeout = 10000;\n \tvar hotCurrentModuleData = {};\n \tvar hotCurrentChildModule;\n \t// eslint-disable-next-line no-unused-vars\n \tvar hotCurrentParents = [];\n \t// eslint-disable-next-line no-unused-vars\n \tvar hotCurrentParentsTemp = [];\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotCreateRequire(moduleId) {\n \t\tvar me = installedModules[moduleId];\n \t\tif (!me) return __webpack_require__;\n \t\tvar fn = function(request) {\n \t\t\tif (me.hot.active) {\n \t\t\t\tif (installedModules[request]) {\n \t\t\t\t\tif (installedModules[request].parents.indexOf(moduleId) === -1) {\n \t\t\t\t\t\tinstalledModules[request].parents.push(moduleId);\n \t\t\t\t\t}\n \t\t\t\t} else {\n \t\t\t\t\thotCurrentParents = [moduleId];\n \t\t\t\t\thotCurrentChildModule = request;\n \t\t\t\t}\n \t\t\t\tif (me.children.indexOf(request) === -1) {\n \t\t\t\t\tme.children.push(request);\n \t\t\t\t}\n \t\t\t} else {\n \t\t\t\tconsole.warn(\n \t\t\t\t\t\"[HMR] unexpected require(\" +\n \t\t\t\t\t\trequest +\n \t\t\t\t\t\t\") from disposed module \" +\n \t\t\t\t\t\tmoduleId\n \t\t\t\t);\n \t\t\t\thotCurrentParents = [];\n \t\t\t}\n \t\t\treturn __webpack_require__(request);\n \t\t};\n \t\tvar ObjectFactory = function ObjectFactory(name) {\n \t\t\treturn {\n \t\t\t\tconfigurable: true,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: function() {\n \t\t\t\t\treturn __webpack_require__[name];\n \t\t\t\t},\n \t\t\t\tset: function(value) {\n \t\t\t\t\t__webpack_require__[name] = value;\n \t\t\t\t}\n \t\t\t};\n \t\t};\n \t\tfor (var name in __webpack_require__) {\n \t\t\tif (\n \t\t\t\tObject.prototype.hasOwnProperty.call(__webpack_require__, name) &&\n \t\t\t\tname !== \"e\" &&\n \t\t\t\tname !== \"t\"\n \t\t\t) {\n \t\t\t\tObject.defineProperty(fn, name, ObjectFactory(name));\n \t\t\t}\n \t\t}\n \t\tfn.e = function(chunkId) {\n \t\t\tif (hotStatus === \"ready\") hotSetStatus(\"prepare\");\n \t\t\thotChunksLoading++;\n \t\t\treturn __webpack_require__.e(chunkId).then(finishChunkLoading, function(err) {\n \t\t\t\tfinishChunkLoading();\n \t\t\t\tthrow err;\n \t\t\t});\n\n \t\t\tfunction finishChunkLoading() {\n \t\t\t\thotChunksLoading--;\n \t\t\t\tif (hotStatus === \"prepare\") {\n \t\t\t\t\tif (!hotWaitingFilesMap[chunkId]) {\n \t\t\t\t\t\thotEnsureUpdateChunk(chunkId);\n \t\t\t\t\t}\n \t\t\t\t\tif (hotChunksLoading === 0 && hotWaitingFiles === 0) {\n \t\t\t\t\t\thotUpdateDownloaded();\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t}\n \t\t};\n \t\tfn.t = function(value, mode) {\n \t\t\tif (mode & 1) value = fn(value);\n \t\t\treturn __webpack_require__.t(value, mode & ~1);\n \t\t};\n \t\treturn fn;\n \t}\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotCreateModule(moduleId) {\n \t\tvar hot = {\n \t\t\t// private stuff\n \t\t\t_acceptedDependencies: {},\n \t\t\t_declinedDependencies: {},\n \t\t\t_selfAccepted: false,\n \t\t\t_selfDeclined: false,\n \t\t\t_selfInvalidated: false,\n \t\t\t_disposeHandlers: [],\n \t\t\t_main: hotCurrentChildModule !== moduleId,\n\n \t\t\t// Module API\n \t\t\tactive: true,\n \t\t\taccept: function(dep, callback) {\n \t\t\t\tif (dep === undefined) hot._selfAccepted = true;\n \t\t\t\telse if (typeof dep === \"function\") hot._selfAccepted = dep;\n \t\t\t\telse if (typeof dep === \"object\")\n \t\t\t\t\tfor (var i = 0; i < dep.length; i++)\n \t\t\t\t\t\thot._acceptedDependencies[dep[i]] = callback || function() {};\n \t\t\t\telse hot._acceptedDependencies[dep] = callback || function() {};\n \t\t\t},\n \t\t\tdecline: function(dep) {\n \t\t\t\tif (dep === undefined) hot._selfDeclined = true;\n \t\t\t\telse if (typeof dep === \"object\")\n \t\t\t\t\tfor (var i = 0; i < dep.length; i++)\n \t\t\t\t\t\thot._declinedDependencies[dep[i]] = true;\n \t\t\t\telse hot._declinedDependencies[dep] = true;\n \t\t\t},\n \t\t\tdispose: function(callback) {\n \t\t\t\thot._disposeHandlers.push(callback);\n \t\t\t},\n \t\t\taddDisposeHandler: function(callback) {\n \t\t\t\thot._disposeHandlers.push(callback);\n \t\t\t},\n \t\t\tremoveDisposeHandler: function(callback) {\n \t\t\t\tvar idx = hot._disposeHandlers.indexOf(callback);\n \t\t\t\tif (idx >= 0) hot._disposeHandlers.splice(idx, 1);\n \t\t\t},\n \t\t\tinvalidate: function() {\n \t\t\t\tthis._selfInvalidated = true;\n \t\t\t\tswitch (hotStatus) {\n \t\t\t\t\tcase \"idle\":\n \t\t\t\t\t\thotUpdate = {};\n \t\t\t\t\t\thotUpdate[moduleId] = modules[moduleId];\n \t\t\t\t\t\thotSetStatus(\"ready\");\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"ready\":\n \t\t\t\t\t\thotApplyInvalidatedModule(moduleId);\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"prepare\":\n \t\t\t\t\tcase \"check\":\n \t\t\t\t\tcase \"dispose\":\n \t\t\t\t\tcase \"apply\":\n \t\t\t\t\t\t(hotQueuedInvalidatedModules =\n \t\t\t\t\t\t\thotQueuedInvalidatedModules || []).push(moduleId);\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tdefault:\n \t\t\t\t\t\t// ignore requests in error states\n \t\t\t\t\t\tbreak;\n \t\t\t\t}\n \t\t\t},\n\n \t\t\t// Management API\n \t\t\tcheck: hotCheck,\n \t\t\tapply: hotApply,\n \t\t\tstatus: function(l) {\n \t\t\t\tif (!l) return hotStatus;\n \t\t\t\thotStatusHandlers.push(l);\n \t\t\t},\n \t\t\taddStatusHandler: function(l) {\n \t\t\t\thotStatusHandlers.push(l);\n \t\t\t},\n \t\t\tremoveStatusHandler: function(l) {\n \t\t\t\tvar idx = hotStatusHandlers.indexOf(l);\n \t\t\t\tif (idx >= 0) hotStatusHandlers.splice(idx, 1);\n \t\t\t},\n\n \t\t\t//inherit from previous dispose call\n \t\t\tdata: hotCurrentModuleData[moduleId]\n \t\t};\n \t\thotCurrentChildModule = undefined;\n \t\treturn hot;\n \t}\n\n \tvar hotStatusHandlers = [];\n \tvar hotStatus = \"idle\";\n\n \tfunction hotSetStatus(newStatus) {\n \t\thotStatus = newStatus;\n \t\tfor (var i = 0; i < hotStatusHandlers.length; i++)\n \t\t\thotStatusHandlers[i].call(null, newStatus);\n \t}\n\n \t// while downloading\n \tvar hotWaitingFiles = 0;\n \tvar hotChunksLoading = 0;\n \tvar hotWaitingFilesMap = {};\n \tvar hotRequestedFilesMap = {};\n \tvar hotAvailableFilesMap = {};\n \tvar hotDeferred;\n\n \t// The update info\n \tvar hotUpdate, hotUpdateNewHash, hotQueuedInvalidatedModules;\n\n \tfunction toModuleId(id) {\n \t\tvar isNumber = +id + \"\" === id;\n \t\treturn isNumber ? +id : id;\n \t}\n\n \tfunction hotCheck(apply) {\n \t\tif (hotStatus !== \"idle\") {\n \t\t\tthrow new Error(\"check() is only allowed in idle status\");\n \t\t}\n \t\thotApplyOnUpdate = apply;\n \t\thotSetStatus(\"check\");\n \t\treturn hotDownloadManifest(hotRequestTimeout).then(function(update) {\n \t\t\tif (!update) {\n \t\t\t\thotSetStatus(hotApplyInvalidatedModules() ? \"ready\" : \"idle\");\n \t\t\t\treturn null;\n \t\t\t}\n \t\t\thotRequestedFilesMap = {};\n \t\t\thotWaitingFilesMap = {};\n \t\t\thotAvailableFilesMap = update.c;\n \t\t\thotUpdateNewHash = update.h;\n\n \t\t\thotSetStatus(\"prepare\");\n \t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\thotDeferred = {\n \t\t\t\t\tresolve: resolve,\n \t\t\t\t\treject: reject\n \t\t\t\t};\n \t\t\t});\n \t\t\thotUpdate = {};\n \t\t\tfor(var chunkId in installedChunks)\n \t\t\t// eslint-disable-next-line no-lone-blocks\n \t\t\t{\n \t\t\t\thotEnsureUpdateChunk(chunkId);\n \t\t\t}\n \t\t\tif (\n \t\t\t\thotStatus === \"prepare\" &&\n \t\t\t\thotChunksLoading === 0 &&\n \t\t\t\thotWaitingFiles === 0\n \t\t\t) {\n \t\t\t\thotUpdateDownloaded();\n \t\t\t}\n \t\t\treturn promise;\n \t\t});\n \t}\n\n \t// eslint-disable-next-line no-unused-vars\n \tfunction hotAddUpdateChunk(chunkId, moreModules) {\n \t\tif (!hotAvailableFilesMap[chunkId] || !hotRequestedFilesMap[chunkId])\n \t\t\treturn;\n \t\thotRequestedFilesMap[chunkId] = false;\n \t\tfor (var moduleId in moreModules) {\n \t\t\tif (Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\thotUpdate[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif (--hotWaitingFiles === 0 && hotChunksLoading === 0) {\n \t\t\thotUpdateDownloaded();\n \t\t}\n \t}\n\n \tfunction hotEnsureUpdateChunk(chunkId) {\n \t\tif (!hotAvailableFilesMap[chunkId]) {\n \t\t\thotWaitingFilesMap[chunkId] = true;\n \t\t} else {\n \t\t\thotRequestedFilesMap[chunkId] = true;\n \t\t\thotWaitingFiles++;\n \t\t\thotDownloadUpdateChunk(chunkId);\n \t\t}\n \t}\n\n \tfunction hotUpdateDownloaded() {\n \t\thotSetStatus(\"ready\");\n \t\tvar deferred = hotDeferred;\n \t\thotDeferred = null;\n \t\tif (!deferred) return;\n \t\tif (hotApplyOnUpdate) {\n \t\t\t// Wrap deferred object in Promise to mark it as a well-handled Promise to\n \t\t\t// avoid triggering uncaught exception warning in Chrome.\n \t\t\t// See https://bugs.chromium.org/p/chromium/issues/detail?id=465666\n \t\t\tPromise.resolve()\n \t\t\t\t.then(function() {\n \t\t\t\t\treturn hotApply(hotApplyOnUpdate);\n \t\t\t\t})\n \t\t\t\t.then(\n \t\t\t\t\tfunction(result) {\n \t\t\t\t\t\tdeferred.resolve(result);\n \t\t\t\t\t},\n \t\t\t\t\tfunction(err) {\n \t\t\t\t\t\tdeferred.reject(err);\n \t\t\t\t\t}\n \t\t\t\t);\n \t\t} else {\n \t\t\tvar outdatedModules = [];\n \t\t\tfor (var id in hotUpdate) {\n \t\t\t\tif (Object.prototype.hasOwnProperty.call(hotUpdate, id)) {\n \t\t\t\t\toutdatedModules.push(toModuleId(id));\n \t\t\t\t}\n \t\t\t}\n \t\t\tdeferred.resolve(outdatedModules);\n \t\t}\n \t}\n\n \tfunction hotApply(options) {\n \t\tif (hotStatus !== \"ready\")\n \t\t\tthrow new Error(\"apply() is only allowed in ready status\");\n \t\toptions = options || {};\n \t\treturn hotApplyInternal(options);\n \t}\n\n \tfunction hotApplyInternal(options) {\n \t\thotApplyInvalidatedModules();\n\n \t\tvar cb;\n \t\tvar i;\n \t\tvar j;\n \t\tvar module;\n \t\tvar moduleId;\n\n \t\tfunction getAffectedStuff(updateModuleId) {\n \t\t\tvar outdatedModules = [updateModuleId];\n \t\t\tvar outdatedDependencies = {};\n\n \t\t\tvar queue = outdatedModules.map(function(id) {\n \t\t\t\treturn {\n \t\t\t\t\tchain: [id],\n \t\t\t\t\tid: id\n \t\t\t\t};\n \t\t\t});\n \t\t\twhile (queue.length > 0) {\n \t\t\t\tvar queueItem = queue.pop();\n \t\t\t\tvar moduleId = queueItem.id;\n \t\t\t\tvar chain = queueItem.chain;\n \t\t\t\tmodule = installedModules[moduleId];\n \t\t\t\tif (\n \t\t\t\t\t!module ||\n \t\t\t\t\t(module.hot._selfAccepted && !module.hot._selfInvalidated)\n \t\t\t\t)\n \t\t\t\t\tcontinue;\n \t\t\t\tif (module.hot._selfDeclined) {\n \t\t\t\t\treturn {\n \t\t\t\t\t\ttype: \"self-declined\",\n \t\t\t\t\t\tchain: chain,\n \t\t\t\t\t\tmoduleId: moduleId\n \t\t\t\t\t};\n \t\t\t\t}\n \t\t\t\tif (module.hot._main) {\n \t\t\t\t\treturn {\n \t\t\t\t\t\ttype: \"unaccepted\",\n \t\t\t\t\t\tchain: chain,\n \t\t\t\t\t\tmoduleId: moduleId\n \t\t\t\t\t};\n \t\t\t\t}\n \t\t\t\tfor (var i = 0; i < module.parents.length; i++) {\n \t\t\t\t\tvar parentId = module.parents[i];\n \t\t\t\t\tvar parent = installedModules[parentId];\n \t\t\t\t\tif (!parent) continue;\n \t\t\t\t\tif (parent.hot._declinedDependencies[moduleId]) {\n \t\t\t\t\t\treturn {\n \t\t\t\t\t\t\ttype: \"declined\",\n \t\t\t\t\t\t\tchain: chain.concat([parentId]),\n \t\t\t\t\t\t\tmoduleId: moduleId,\n \t\t\t\t\t\t\tparentId: parentId\n \t\t\t\t\t\t};\n \t\t\t\t\t}\n \t\t\t\t\tif (outdatedModules.indexOf(parentId) !== -1) continue;\n \t\t\t\t\tif (parent.hot._acceptedDependencies[moduleId]) {\n \t\t\t\t\t\tif (!outdatedDependencies[parentId])\n \t\t\t\t\t\t\toutdatedDependencies[parentId] = [];\n \t\t\t\t\t\taddAllToSet(outdatedDependencies[parentId], [moduleId]);\n \t\t\t\t\t\tcontinue;\n \t\t\t\t\t}\n \t\t\t\t\tdelete outdatedDependencies[parentId];\n \t\t\t\t\toutdatedModules.push(parentId);\n \t\t\t\t\tqueue.push({\n \t\t\t\t\t\tchain: chain.concat([parentId]),\n \t\t\t\t\t\tid: parentId\n \t\t\t\t\t});\n \t\t\t\t}\n \t\t\t}\n\n \t\t\treturn {\n \t\t\t\ttype: \"accepted\",\n \t\t\t\tmoduleId: updateModuleId,\n \t\t\t\toutdatedModules: outdatedModules,\n \t\t\t\toutdatedDependencies: outdatedDependencies\n \t\t\t};\n \t\t}\n\n \t\tfunction addAllToSet(a, b) {\n \t\t\tfor (var i = 0; i < b.length; i++) {\n \t\t\t\tvar item = b[i];\n \t\t\t\tif (a.indexOf(item) === -1) a.push(item);\n \t\t\t}\n \t\t}\n\n \t\t// at begin all updates modules are outdated\n \t\t// the \"outdated\" status can propagate to parents if they don't accept the children\n \t\tvar outdatedDependencies = {};\n \t\tvar outdatedModules = [];\n \t\tvar appliedUpdate = {};\n\n \t\tvar warnUnexpectedRequire = function warnUnexpectedRequire() {\n \t\t\tconsole.warn(\n \t\t\t\t\"[HMR] unexpected require(\" + result.moduleId + \") to disposed module\"\n \t\t\t);\n \t\t};\n\n \t\tfor (var id in hotUpdate) {\n \t\t\tif (Object.prototype.hasOwnProperty.call(hotUpdate, id)) {\n \t\t\t\tmoduleId = toModuleId(id);\n \t\t\t\t/** @type {TODO} */\n \t\t\t\tvar result;\n \t\t\t\tif (hotUpdate[id]) {\n \t\t\t\t\tresult = getAffectedStuff(moduleId);\n \t\t\t\t} else {\n \t\t\t\t\tresult = {\n \t\t\t\t\t\ttype: \"disposed\",\n \t\t\t\t\t\tmoduleId: id\n \t\t\t\t\t};\n \t\t\t\t}\n \t\t\t\t/** @type {Error|false} */\n \t\t\t\tvar abortError = false;\n \t\t\t\tvar doApply = false;\n \t\t\t\tvar doDispose = false;\n \t\t\t\tvar chainInfo = \"\";\n \t\t\t\tif (result.chain) {\n \t\t\t\t\tchainInfo = \"\\nUpdate propagation: \" + result.chain.join(\" -> \");\n \t\t\t\t}\n \t\t\t\tswitch (result.type) {\n \t\t\t\t\tcase \"self-declined\":\n \t\t\t\t\t\tif (options.onDeclined) options.onDeclined(result);\n \t\t\t\t\t\tif (!options.ignoreDeclined)\n \t\t\t\t\t\t\tabortError = new Error(\n \t\t\t\t\t\t\t\t\"Aborted because of self decline: \" +\n \t\t\t\t\t\t\t\t\tresult.moduleId +\n \t\t\t\t\t\t\t\t\tchainInfo\n \t\t\t\t\t\t\t);\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"declined\":\n \t\t\t\t\t\tif (options.onDeclined) options.onDeclined(result);\n \t\t\t\t\t\tif (!options.ignoreDeclined)\n \t\t\t\t\t\t\tabortError = new Error(\n \t\t\t\t\t\t\t\t\"Aborted because of declined dependency: \" +\n \t\t\t\t\t\t\t\t\tresult.moduleId +\n \t\t\t\t\t\t\t\t\t\" in \" +\n \t\t\t\t\t\t\t\t\tresult.parentId +\n \t\t\t\t\t\t\t\t\tchainInfo\n \t\t\t\t\t\t\t);\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"unaccepted\":\n \t\t\t\t\t\tif (options.onUnaccepted) options.onUnaccepted(result);\n \t\t\t\t\t\tif (!options.ignoreUnaccepted)\n \t\t\t\t\t\t\tabortError = new Error(\n \t\t\t\t\t\t\t\t\"Aborted because \" + moduleId + \" is not accepted\" + chainInfo\n \t\t\t\t\t\t\t);\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"accepted\":\n \t\t\t\t\t\tif (options.onAccepted) options.onAccepted(result);\n \t\t\t\t\t\tdoApply = true;\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tcase \"disposed\":\n \t\t\t\t\t\tif (options.onDisposed) options.onDisposed(result);\n \t\t\t\t\t\tdoDispose = true;\n \t\t\t\t\t\tbreak;\n \t\t\t\t\tdefault:\n \t\t\t\t\t\tthrow new Error(\"Unexception type \" + result.type);\n \t\t\t\t}\n \t\t\t\tif (abortError) {\n \t\t\t\t\thotSetStatus(\"abort\");\n \t\t\t\t\treturn Promise.reject(abortError);\n \t\t\t\t}\n \t\t\t\tif (doApply) {\n \t\t\t\t\tappliedUpdate[moduleId] = hotUpdate[moduleId];\n \t\t\t\t\taddAllToSet(outdatedModules, result.outdatedModules);\n \t\t\t\t\tfor (moduleId in result.outdatedDependencies) {\n \t\t\t\t\t\tif (\n \t\t\t\t\t\t\tObject.prototype.hasOwnProperty.call(\n \t\t\t\t\t\t\t\tresult.outdatedDependencies,\n \t\t\t\t\t\t\t\tmoduleId\n \t\t\t\t\t\t\t)\n \t\t\t\t\t\t) {\n \t\t\t\t\t\t\tif (!outdatedDependencies[moduleId])\n \t\t\t\t\t\t\t\toutdatedDependencies[moduleId] = [];\n \t\t\t\t\t\t\taddAllToSet(\n \t\t\t\t\t\t\t\toutdatedDependencies[moduleId],\n \t\t\t\t\t\t\t\tresult.outdatedDependencies[moduleId]\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\tif (doDispose) {\n \t\t\t\t\taddAllToSet(outdatedModules, [result.moduleId]);\n \t\t\t\t\tappliedUpdate[moduleId] = warnUnexpectedRequire;\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// Store self accepted outdated modules to require them later by the module system\n \t\tvar outdatedSelfAcceptedModules = [];\n \t\tfor (i = 0; i < outdatedModules.length; i++) {\n \t\t\tmoduleId = outdatedModules[i];\n \t\t\tif (\n \t\t\t\tinstalledModules[moduleId] &&\n \t\t\t\tinstalledModules[moduleId].hot._selfAccepted &&\n \t\t\t\t// removed self-accepted modules should not be required\n \t\t\t\tappliedUpdate[moduleId] !== warnUnexpectedRequire &&\n \t\t\t\t// when called invalidate self-accepting is not possible\n \t\t\t\t!installedModules[moduleId].hot._selfInvalidated\n \t\t\t) {\n \t\t\t\toutdatedSelfAcceptedModules.push({\n \t\t\t\t\tmodule: moduleId,\n \t\t\t\t\tparents: installedModules[moduleId].parents.slice(),\n \t\t\t\t\terrorHandler: installedModules[moduleId].hot._selfAccepted\n \t\t\t\t});\n \t\t\t}\n \t\t}\n\n \t\t// Now in \"dispose\" phase\n \t\thotSetStatus(\"dispose\");\n \t\tObject.keys(hotAvailableFilesMap).forEach(function(chunkId) {\n \t\t\tif (hotAvailableFilesMap[chunkId] === false) {\n \t\t\t\thotDisposeChunk(chunkId);\n \t\t\t}\n \t\t});\n\n \t\tvar idx;\n \t\tvar queue = outdatedModules.slice();\n \t\twhile (queue.length > 0) {\n \t\t\tmoduleId = queue.pop();\n \t\t\tmodule = installedModules[moduleId];\n \t\t\tif (!module) continue;\n\n \t\t\tvar data = {};\n\n \t\t\t// Call dispose handlers\n \t\t\tvar disposeHandlers = module.hot._disposeHandlers;\n \t\t\tfor (j = 0; j < disposeHandlers.length; j++) {\n \t\t\t\tcb = disposeHandlers[j];\n \t\t\t\tcb(data);\n \t\t\t}\n \t\t\thotCurrentModuleData[moduleId] = data;\n\n \t\t\t// disable module (this disables requires from this module)\n \t\t\tmodule.hot.active = false;\n\n \t\t\t// remove module from cache\n \t\t\tdelete installedModules[moduleId];\n\n \t\t\t// when disposing there is no need to call dispose handler\n \t\t\tdelete outdatedDependencies[moduleId];\n\n \t\t\t// remove \"parents\" references from all children\n \t\t\tfor (j = 0; j < module.children.length; j++) {\n \t\t\t\tvar child = installedModules[module.children[j]];\n \t\t\t\tif (!child) continue;\n \t\t\t\tidx = child.parents.indexOf(moduleId);\n \t\t\t\tif (idx >= 0) {\n \t\t\t\t\tchild.parents.splice(idx, 1);\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// remove outdated dependency from module children\n \t\tvar dependency;\n \t\tvar moduleOutdatedDependencies;\n \t\tfor (moduleId in outdatedDependencies) {\n \t\t\tif (\n \t\t\t\tObject.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)\n \t\t\t) {\n \t\t\t\tmodule = installedModules[moduleId];\n \t\t\t\tif (module) {\n \t\t\t\t\tmoduleOutdatedDependencies = outdatedDependencies[moduleId];\n \t\t\t\t\tfor (j = 0; j < moduleOutdatedDependencies.length; j++) {\n \t\t\t\t\t\tdependency = moduleOutdatedDependencies[j];\n \t\t\t\t\t\tidx = module.children.indexOf(dependency);\n \t\t\t\t\t\tif (idx >= 0) module.children.splice(idx, 1);\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// Now in \"apply\" phase\n \t\thotSetStatus(\"apply\");\n\n \t\tif (hotUpdateNewHash !== undefined) {\n \t\t\thotCurrentHash = hotUpdateNewHash;\n \t\t\thotUpdateNewHash = undefined;\n \t\t}\n \t\thotUpdate = undefined;\n\n \t\t// insert new code\n \t\tfor (moduleId in appliedUpdate) {\n \t\t\tif (Object.prototype.hasOwnProperty.call(appliedUpdate, moduleId)) {\n \t\t\t\tmodules[moduleId] = appliedUpdate[moduleId];\n \t\t\t}\n \t\t}\n\n \t\t// call accept handlers\n \t\tvar error = null;\n \t\tfor (moduleId in outdatedDependencies) {\n \t\t\tif (\n \t\t\t\tObject.prototype.hasOwnProperty.call(outdatedDependencies, moduleId)\n \t\t\t) {\n \t\t\t\tmodule = installedModules[moduleId];\n \t\t\t\tif (module) {\n \t\t\t\t\tmoduleOutdatedDependencies = outdatedDependencies[moduleId];\n \t\t\t\t\tvar callbacks = [];\n \t\t\t\t\tfor (i = 0; i < moduleOutdatedDependencies.length; i++) {\n \t\t\t\t\t\tdependency = moduleOutdatedDependencies[i];\n \t\t\t\t\t\tcb = module.hot._acceptedDependencies[dependency];\n \t\t\t\t\t\tif (cb) {\n \t\t\t\t\t\t\tif (callbacks.indexOf(cb) !== -1) continue;\n \t\t\t\t\t\t\tcallbacks.push(cb);\n \t\t\t\t\t\t}\n \t\t\t\t\t}\n \t\t\t\t\tfor (i = 0; i < callbacks.length; i++) {\n \t\t\t\t\t\tcb = callbacks[i];\n \t\t\t\t\t\ttry {\n \t\t\t\t\t\t\tcb(moduleOutdatedDependencies);\n \t\t\t\t\t\t} catch (err) {\n \t\t\t\t\t\t\tif (options.onErrored) {\n \t\t\t\t\t\t\t\toptions.onErrored({\n \t\t\t\t\t\t\t\t\ttype: \"accept-errored\",\n \t\t\t\t\t\t\t\t\tmoduleId: moduleId,\n \t\t\t\t\t\t\t\t\tdependencyId: moduleOutdatedDependencies[i],\n \t\t\t\t\t\t\t\t\terror: err\n \t\t\t\t\t\t\t\t});\n \t\t\t\t\t\t\t}\n \t\t\t\t\t\t\tif (!options.ignoreErrored) {\n \t\t\t\t\t\t\t\tif (!error) error = err;\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\n \t\t// Load self accepted modules\n \t\tfor (i = 0; i < outdatedSelfAcceptedModules.length; i++) {\n \t\t\tvar item = outdatedSelfAcceptedModules[i];\n \t\t\tmoduleId = item.module;\n \t\t\thotCurrentParents = item.parents;\n \t\t\thotCurrentChildModule = moduleId;\n \t\t\ttry {\n \t\t\t\t__webpack_require__(moduleId);\n \t\t\t} catch (err) {\n \t\t\t\tif (typeof item.errorHandler === \"function\") {\n \t\t\t\t\ttry {\n \t\t\t\t\t\titem.errorHandler(err);\n \t\t\t\t\t} catch (err2) {\n \t\t\t\t\t\tif (options.onErrored) {\n \t\t\t\t\t\t\toptions.onErrored({\n \t\t\t\t\t\t\t\ttype: \"self-accept-error-handler-errored\",\n \t\t\t\t\t\t\t\tmoduleId: moduleId,\n \t\t\t\t\t\t\t\terror: err2,\n \t\t\t\t\t\t\t\toriginalError: err\n \t\t\t\t\t\t\t});\n \t\t\t\t\t\t}\n \t\t\t\t\t\tif (!options.ignoreErrored) {\n \t\t\t\t\t\t\tif (!error) error = err2;\n \t\t\t\t\t\t}\n \t\t\t\t\t\tif (!error) error = err;\n \t\t\t\t\t}\n \t\t\t\t} else {\n \t\t\t\t\tif (options.onErrored) {\n \t\t\t\t\t\toptions.onErrored({\n \t\t\t\t\t\t\ttype: \"self-accept-errored\",\n \t\t\t\t\t\t\tmoduleId: moduleId,\n \t\t\t\t\t\t\terror: err\n \t\t\t\t\t\t});\n \t\t\t\t\t}\n \t\t\t\t\tif (!options.ignoreErrored) {\n \t\t\t\t\t\tif (!error) error = err;\n \t\t\t\t\t}\n \t\t\t\t}\n \t\t\t}\n \t\t}\n\n \t\t// handle errors in accept handlers and self accepted module load\n \t\tif (error) {\n \t\t\thotSetStatus(\"fail\");\n \t\t\treturn Promise.reject(error);\n \t\t}\n\n \t\tif (hotQueuedInvalidatedModules) {\n \t\t\treturn hotApplyInternal(options).then(function(list) {\n \t\t\t\toutdatedModules.forEach(function(moduleId) {\n \t\t\t\t\tif (list.indexOf(moduleId) < 0) list.push(moduleId);\n \t\t\t\t});\n \t\t\t\treturn list;\n \t\t\t});\n \t\t}\n\n \t\thotSetStatus(\"idle\");\n \t\treturn new Promise(function(resolve) {\n \t\t\tresolve(outdatedModules);\n \t\t});\n \t}\n\n \tfunction hotApplyInvalidatedModules() {\n \t\tif (hotQueuedInvalidatedModules) {\n \t\t\tif (!hotUpdate) hotUpdate = {};\n \t\t\thotQueuedInvalidatedModules.forEach(hotApplyInvalidatedModule);\n \t\t\thotQueuedInvalidatedModules = undefined;\n \t\t\treturn true;\n \t\t}\n \t}\n\n \tfunction hotApplyInvalidatedModule(moduleId) {\n \t\tif (!Object.prototype.hasOwnProperty.call(hotUpdate, moduleId))\n \t\t\thotUpdate[moduleId] = modules[moduleId];\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t2: 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {},\n \t\t\thot: hotCreateModule(moduleId),\n \t\t\tparents: (hotCurrentParentsTemp = hotCurrentParents, hotCurrentParents = [], hotCurrentParentsTemp),\n \t\t\tchildren: []\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, hotCreateRequire(moduleId));\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// __webpack_hash__\n \t__webpack_require__.h = function() { return hotCurrentHash; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([614,0,4]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","let staticContent = content;\n\nstaticContent.loading = \"https://member.hkjc.com/member/common/images/ms-loading.gif\";\n\nexport default staticContent\n\n","import React from 'react';\nimport { useSelector, useDispatch } from 'react-redux'\nimport allActions from '../../actions'\nimport Permission from '../../api/Permission'\nimport Static from '../../res/Static'\nfunction Logout() {\n    const role = useSelector(state => state.permission.role);\n    const dispatch = useDispatch();\n    const HandleSignOut = (e) => {\n        if (confirm(Static.signoutConfim)) {\n            Permission.clearPermission()\n            dispatch(allActions.permissionAction.setRole(Permission.detectPermission()))\n        }\n    }\n    return (\n        role ? <div className=\"col-lg-2 col-md-2 col-xs-12 header-top-signout\">\n            <a className=\"header-top-signout-link \" onClick={HandleSignOut}><span className=\"\">\n                <i className=\"fa fa-sign-out\" aria-hidden=\"true\"></i>{Static.logoutLabel}</span></a>\n        </div> : <></>\n    )\n}\n\nexport default React.memo(Logout);","import React, { useEffect } from 'react';\nimport { useSelector, useDispatch } from 'react-redux'\nimport { Link, useHistory, useParams } from 'react-router-dom';\nimport allActions from '../../actions'\nimport axios from 'axios'\nimport CommonTools from '../../api/CommonTools'\nimport Config from '../../res/Config'\nimport Static from '../../res/Static'\nimport SetTools from '../../api/SetTools';\nimport Menu from '../../api/Menu';\nimport Permission from '../../api/Permission';\nimport WACode from '../../res/WACode'\n\nfunction AddToBundleCartBtn() {\n    let { catId } = useParams();\n    const cartUpdateCount = useSelector(state => state.shoppingCart.cartUpdateCount);\n    const cartId = useSelector(state => state.shoppingCart.cartId);\n    const activeProduct = useSelector(state => state.product.activeProduct);\n    const role = useSelector(state => state.permission.role);\n    const dispatch = useDispatch();\n    const history = useHistory();\n\n    const handleBundleAddToCart = async (e) => {\n        if (Permission.eventPermission()) {\n            if (await Menu.menuDetect()) {\n                Menu.typeDetect(catId, \"addtocart\")\n                let myPartID = activeProduct.id\n                if (SetTools.addToCartValidate(myPartID) && activeProduct) {\n                    dispatch(allActions.loadingAction.changeLoading(true))\n                    await axios.post(\n                        Config.storeLink + \"V1/guest-carts/\" + cartId + \"/items\",\n                        SetTools.generateCartObject(cartId, activeProduct.sku, SetTools.fetchBundleOptions(myPartID))\n                    ).then(res => {\n                        dispatch(allActions.productAction.setSuccessStatus(true))\n                        dispatch(allActions.productAction.setFailStatus(false))\n                        dispatch(allActions.shoppingCartAction.setCartUpdateCount(cartUpdateCount + 1))\n                        dispatch(allActions.checkoutAction.pushEnableUpdates([]))\n                        SetTools.resetSetInputQtyField()\n                        CommonTools.waFireClick(WACode.overAddtocart)\n                        setTimeout(() => { dispatch(allActions.loadingAction.changeLoading(false)) }, 1000)\n                        scrollToTop(600)\n                    }).catch(error => {\n                        dispatch(allActions.productAction.setSuccessStatus(false))\n                        dispatch(allActions.productAction.setFailStatus(true))\n                        dispatch(allActions.loadingAction.changeLoading(false))\n                        alert(Static.itemAddAlert);\n                    })\n                } else {\n                    alert(Static.addToCartAlert)\n                }\n            }\n        }\n    }\n\n    const handleBackToHome = (e) => {\n        history.push(\"/\")\n    }\n\n    function scrollToTop(scrollDuration) {\n        $(\"html, body\").animate({ scrollTop: 100 }, scrollDuration);\n    }\n\n    return <div className=\"row multipleAddToCartBtn-form\">\n        <div className=\"col-md-6 multipleAddToCartBtn bundleAddToCartBtn left\">\n            <button type=\"button\" title={Static.backToHome}\n                className=\"button btn-back\"\n                onClick={handleBackToHome}></button>\n        </div>\n        {role ? <div className=\"col-md-6 multipleAddToCartBtn bundleAddToCartBtn\">\n            <button type=\"button\" title={Static.addToCart}\n                className=\"button btn-cart\"\n                onClick={handleBundleAddToCart}><span><span>{Static.addToCart}</span></span></button>\n            <p>{Static.addPartySetToCartCaption}</p>\n        </div> : <div className=\"col-md-6 addToCartBtn\">\n                <button className=\"button btn-cart\"\n                    onClick={() => { Permission.OTP(WACode.startShoppingDetail) }}>\n                </button></div>}\n    </div>\n}\n\nexport default React.memo(AddToBundleCartBtn);","import React from 'react';\nimport { useSelector, useDispatch } from 'react-redux'\nimport CommonTools from '../../api/CommonTools'\nimport allActions from '../../actions'\nimport Static from '../../res/Static'\nimport Config from '../../res/Config'\nimport WACode from '../../res/WACode'\nimport { useLocation } from 'react-router-dom';\nimport \"ie-string-startswith-polyfill\";\nimport Permission from '../../api/Permission';\n\nfunction CheckoutBtn() {\n    const cartId = useSelector(state => state.shoppingCart.cartId);\n    const maximumError = useSelector(state => state.checkout.maximumError);\n    const soldoutError = useSelector(state => state.checkout.soldoutError);\n    const dispatch = useDispatch();\n    const location = useLocation();\n    let code = \"\";\n\n    const handleToForm = (e) => {\n        if (maximumError.length < 1 && soldoutError.length < 1) {\n            if (Permission.eventPermission()) {\n                dispatch(allActions.loadingAction.changeLoading(true))\n                code = (location.pathname.startsWith(\"/checkout\") ? WACode.btnCheckout : WACode.shoppingCheckout)\n                CommonTools.waFireClick(code)\n                setTimeout(() => { \n                    dispatch(allActions.loadingAction.changeLoading(false))\n                    window.location.href = Config.checkoutForm + cartId }, 500);\n            }\n        }\n    }\n\n    return (\n        <a title={Static.checkout}\n            //href=\"javascript:;\"\n            onClick={handleToForm}\n            className=\"button checkout-button checkoutFormSubmit\">{Static.checkout}</a>\n    )\n}\n\nexport default React.memo(CheckoutBtn);","import React, { useEffect } from 'react';\nimport { useSelector, useDispatch } from 'react-redux'\nimport { Link, useHistory, useParams } from 'react-router-dom';\nimport \"classlist-polyfill\";\nimport allActions from '../actions'\nimport CommonTools from '../api/CommonTools'\nimport axios from 'axios'\nimport Config from '../res/Config'\nimport Static from '../res/Static'\nfunction SetItems() {\n    let { catId, productId } = useParams();\n    const dispatch = useDispatch();\n    const history = useHistory();\n    const setItems = useSelector(state => state.product.setItems);\n    const activeProduct = useSelector(state => state.product.activeProduct);\n    const role = useSelector(state => state.permission.role);\n\n    function getData() {\n        return dispatch => {\n            let urlParam = CommonTools.generateParam(catId + \"\");\n            axios.get(\n                Config.productDomain + urlParam, { timeout: 15000 })\n                .then(res => {\n                    dispatch(allActions.productAction.fetchSetItems(res.data))\n                    !productId ?\n                        (res.data.items[0] ? dispatch(allActions.productAction.fetchProductSku(encodeURIComponent(res.data.items[0][\"sku\"]))) : \"\") :\n                        dispatch(allActions.productAction.fetchProductSku(productId))\n                })\n                .catch(error => {\n                    history.push(\"/serverError\")\n                })\n        }\n    }\n\n    useEffect(() => {\n        dispatch(getData());\n    }, [catId, productId]);\n\n    const handleClick = (e) => {\n        let sku = e.currentTarget.getAttribute(\"data-value\")\n        if (!e.currentTarget.classList.contains(\"selected\")) {\n            $(\".selectIndicator span.selectedItem\").text(0)\n            $(\".catItemsRow .qty-wrapper input\").val(0)\n            dispatch(allActions.loadingAction.changeLoading(true))\n            dispatch(allActions.productAction.fetchProductSku(sku))\n        }\n    }\n\n    return (\n        <div className=\"col-sm-12\">\n            <div className=\"row setItems\">\n                {setItems.items ? setItems.items.map(v => {\n                    return (\n                        <div className={\"setItem col-md-4 col-sm-12 \" + (v.sku == activeProduct.sku ? \"selected\" : \"\")}\n                            data-value={v.sku} onClick={handleClick}>\n                            <div className=\"item-container-box \">\n                                <div className=\"itemName\">{v.name}</div>\n                                <div className=\"itemPrice\">{\"$\" + CommonTools.priceFormat(v.price)}</div>\n                            </div>\n                        </div>\n                    )\n                }) : \"\"}\n            </div>\n            {/*<div className=\"nav-tabs-mobile visible-xs\">\n                <select onChange={handleChange}>\n                    <option value=\"default\">{Static.pleaseSelect}</option>\n                    {setItems.items ? setItems.items.map(v => {\n                        return <option value={v.sku} data-wa={v.sku}>{v.name}</option>\n                    }) : \"\"\n                    }\n                </select>\n                </div>*/}\n            <div className=\"row productDesc\">\n                <div className=\"col-sm-12\">\n                    <div className=\"productName\">\n                        {activeProduct.name}\n                    </div>\n                    <div className=\"description\">\n                        <span dangerouslySetInnerHTML={{ __html: CommonTools.getCustomAttribute(activeProduct, \"description\") }} />\n                    </div>\n                </div>\n            </div>\n        </div>\n\n    )\n}\n\nexport default React.memo(SetItems);\n","import React, { useEffect } from 'react';\nimport { useSelector, useDispatch } from 'react-redux'\nimport { Link, useHistory, useParams } from 'react-router-dom';\nimport allActions from '../actions'\nimport CommonTools from '../api/CommonTools'\nimport SetTools from '../api/SetTools'\nimport axios from 'axios'\nimport Config from '../res/Config'\nimport Static from '../res/Static'\nfunction SetList() {\n    const dispatch = useDispatch();\n    const history = useHistory();\n    const productSku = useSelector(state => state.product.productSku);\n    const activeProduct = useSelector(state => state.product.activeProduct);\n    const detailProduct = useSelector(state => state.product.detailProduct);\n    const consolidateProduct = useSelector(state => state.product.consolidateProduct);\n    const role = useSelector(state => state.permission.role);\n\n    function getData() {\n        return async dispatch => {\n            let product = {}\n            let tempDetailProduct = {}\n            productSku != \"\" ? await axios.get(\n                Config.productDomain + productSku, { timeout: 15000 })\n                .then(res => {\n                    product = res.data\n                })\n                .catch(error => {\n                    history.push(\"/serverError\")\n                }) : \"\"\n            let sku = SetTools.bundleRelatedSku(product)\n            await axios\n                .all(sku)\n                .then(axios.spread((...responses) => {\n                    responses.forEach(res => {\n                        tempDetailProduct[res.data.sku] = res.data\n                    })\n                    dispatch(allActions.productAction.setActiveProduct(product))\n                    dispatch(allActions.productAction.fetchdetailProduct(tempDetailProduct))\n                    dispatch(allActions.productAction.genConsolidateProduct(SetTools.bundleOptions(product)))\n                    CommonTools.setShoppingCartTop()\n                }))\n                .catch(error => {\n                    console.log(error)\n                    history.push(\"/serverError\")\n                })\n        }\n    }\n\n    useEffect(() => {\n        dispatch(getData());\n        return () => {\n            dispatch(allActions.productAction.genConsolidateProduct({}))\n          }\n    }, [productSku]);\n\n    useEffect(() => {\n        return () => {\n            dispatch(allActions.productAction.genConsolidateProduct({}))\n        }\n      }, [])\n\n    const imageDetect = (product) => {\n        let flag = false;\n        let imageSrc = (product && !CommonTools.getMediaAttribute(product) ? CommonTools.getCustomAttribute(product, \"image\") : \"\")\n        imageSrc && imageSrc != \"\" && imageSrc != \"no_selection\" ? flag = true : \"\"\n        return flag\n    }\n\n    return (\n        <div className=\"selection-set-category\" id={\"myset-\" + activeProduct.id}>\n            {\n                //activeProduct ? SetTools.bundleOptions(activeProduct).map((value, index) => {\n                consolidateProduct ? Object.keys(consolidateProduct).map((value, index) => {\n                    return <div className=\"selection-cat\" key={index} id={\"mycat-\" + activeProduct.id + \"-\" + index} data-max={SetTools.getMax(value)}>\n                        <div className=\"row selection-header\">\n                            <div className=\"col-md-12\">\n                                <div className=\"alignLeft\"><h3>{SetTools.getTitle(value)}</h3></div>\n                                {role ? <div className=\"alignRight\">\n                                    <span className=\"selectDesc\">{SetTools.getPartyCatSelectTitle(value)}</span>\n                                    <span className=\"selectIndicator\" id={\"indx-mycat-\" + activeProduct.id + \"-\" + index}>\n                                        (<span className=\"selectedItem\" data-max={SetTools.getMax(value)}>0</span>/<span>{SetTools.getMax(value)}</span>)\n                                        </span>\n                                </div> : \"\"}\n                            </div>\n                            <div style={{ clear: `both` }}></div>\n                        </div>\n                        {consolidateProduct[value] ? consolidateProduct[value].map(cValue => {\n                            return cValue[\"product_links\"] ? cValue[\"product_links\"].map((subValue, subIndex) => {\n                                return detailProduct[subValue.sku] && subIndex == 0 ? <div className={\"row catItemsRow catItems-\" + subIndex} key={subIndex}>\n                                    <div className=\"col-md-8 set-product-title\">\n                                        <span className=\"imageIcon\">\n                                            {imageDetect(detailProduct[subValue.sku]) ?\n                                                <span className=\"popupImg \"\n                                                    data-sku={subValue.sku}\n                                                    onClick={SetTools.popupBundleProductImg}\n                                                    data-src={CommonTools.getCustomAttribute(detailProduct[subValue.sku], \"image\")}\n                                                    data-gallery={CommonTools.getCustomAttribute(detailProduct[subValue.sku], \"image\")}\n                                                    data-title={detailProduct[subValue.sku][\"name\"]}>\n                                                    <i className=\"fa fa-camera\" aria-hidden=\"true\"></i></span> :\n                                                <span className=\"galleryDimIcon\"><i className=\"fa fa-camera\" aria-hidden=\"true\"></i></span>}\n                                        </span>\n                                        <span className=\"pTitle\">{detailProduct[subValue.sku][\"name\"]}</span>\n                                    </div>\n                                    <div className=\"col-md-4 set-product-qty\">\n                                        {role ? (<><div className=\"product_add_minus\">\n                                            <a className=\"btn_product_add\" onClick={SetTools.handleAddQty} data-cat={subIndex} data-id={\"p-qty\" + subValue.id}></a>\n                                        </div>\n                                            <div className=\"qty-wrapper\">\n                                                <input type=\"tel\" pattern=\"\\d*\"\n                                                    name={\"bundle_option_qty[\" + subValue.id + \"]\"}\n                                                    data-cattitle={value}\n                                                    data-title={detailProduct[subValue.sku][\"name\"]}\n                                                    data-optionid={subValue.option_id}\n                                                    data-productid={subValue.id}\n                                                    data-sku={subValue.sku}\n                                                    id={\"p-qty\" + subValue.id}\n                                                    data-cat={\"mycat-\" + activeProduct.id + \"-\" + index}\n                                                    min=\"0\" max=\"9\" maxLength=\"1\" defaultValue=\"0\" title={Static.quentityTitle}\n                                                    className=\"bundleItemQty input-text qty cart-item-qty\" onInput={SetTools.handleMaxLengthCheck} />\n                                            </div>\n                                            <div className=\"product_add_minus\">\n                                                <a className=\"btn_product_minus\" onClick={SetTools.handleMinusQty} data-cat={subIndex} data-id={\"p-qty\" + subValue.id}></a>\n                                            </div></>) : \"\"}\n                                    </div>\n                                </div> : \"\"\n                            }) : \"\"\n                        }) : \"\"}\n                        <div className=\"row borderBottom\"></div>\n                    </div>\n                }) : \"\"\n            }\n\n        </div>\n    )\n}\n\nexport default React.memo(SetList);","import Static from '../res/Static'\nimport axios from 'axios'\nimport Config from '../res/Config'\nimport CommonTools from './CommonTools';\nimport 'core-js/features/string';\n\nconst getMax = (title) => {\n    let items = title.split(\"_\")\n    return items[items.length - 1]\n}\n\nconst getTitle = (title) => {\n    let temp = \"\"\n    let items = title.split(\"_\")\n    return temp = items[0].replaceAll(\".\", \" \")\n}\n\nfunction getPartyCatSelectTitle(mCatTitle) {\n    let catTilePick\n    let myMapEN = ['0', 'One', 'Two', 'Three', 'Four', 'Five', 'Six', 'Seven', 'Eight', 'Nine', 'Ten'];\n    let myMapCH = ['0', '一', '二', '三', '四', '五', '六', '七', '八', '九', '十'];\n    if (mCatTitle) {\n        catTilePick = parseInt(mCatTitle.split(\"_\")[mCatTitle.split(\"_\").length - 1])\n        if (lang == \"en\") {\n            catTilePick = \" \" + myMapEN[catTilePick]\n        } else {\n            catTilePick = myMapCH[catTilePick]\n        }\n        catTilePick = Static.partychoose + catTilePick + Static.partytype\n    }\n    return catTilePick;\n}\n\nfunction updatePartyFoodIndicator(mycat) {\n    let mycatInxDiv = document.querySelector('#indx-' + mycat)\n    let mCnt = 0\n    let catInputs = document.querySelectorAll('#' + mycat + ' .bundleItemQty')\n    if (catInputs) {\n        catInputs = [].slice.call(catInputs);\n        catInputs.forEach(function (userItem) {\n            mCnt = parseInt(mCnt) + parseInt(userItem.value);\n        });\n    }\n    let mycatInx = document.querySelector('#indx-' + mycat + ' .selectedItem')\n    mycatInx.innerHTML = mCnt\n}\n\nconst handleMaxLengthCheck = (e) => {\n\n    let inputedVal = e.currentTarget.value\n    if (inputedVal && parseInt(inputedVal) > 0) {\n        let datacat = e.currentTarget.getAttribute('data-cat')\n        if (validatePartyFoodQty(datacat, 0)) {\n            updatePartyFoodIndicator(datacat)\n        } else {\n            setTimeout(function () { alert(Static.addToCartAlert) }, 10);\n            e.currentTarget.value = 0\n            updatePartyFoodIndicator(datacat)\n        }\n    }\n\n    if (e.currentTarget.value.length > e.currentTarget.maxLength) {\n        e.currentTarget.value = e.currentTarget.value.slice(0, e.currentTarget.maxLength)\n    }\n}\n\nconst popupBundleProductImg = (e) => {\n    let title = e.currentTarget.getAttribute('data-title');\n    let src = e.currentTarget.getAttribute('data-src');\n    let imgSrc = Config.mediaDomain + \"catalog/product\" + CommonTools.imgPathDetect(src) + src\n    popupIframeImage(imgSrc, title);\n}\n\nconst handleAddQty = (e) => {\n    let mId = e.currentTarget.getAttribute('data-id');\n    let mMax = document.querySelector('#' + mId).getAttribute('max');\n    let mMin = document.querySelector('#' + mId).getAttribute('min');\n    let mVal = parseInt(document.querySelector('#' + mId).value);\n    if (mVal >= 0 && mVal < mMax && mVal >= mMin) {\n        let datacat = document.querySelector('#' + mId).getAttribute('data-cat')\n        if (validatePartyFoodQty(datacat, 1)) {\n            document.querySelector('#' + mId).value = mVal + 1;\n            updatePartyFoodIndicator(datacat)\n        } else {\n            alert(Static.addToCartAlert)\n        }\n    }\n    $('document').find('#' + mId).trigger('change');\n}\n\nconst handleMinusQty = (e) => {\n    let mId = e.currentTarget.getAttribute('data-id');\n    let mMax = document.querySelector('#' + mId).getAttribute('max');\n    let mMin = document.querySelector('#' + mId).getAttribute('min');\n    let mVal = parseInt(document.querySelector('#' + mId).value);\n    if (mVal > 0 && mVal <= mMax && mVal > mMin) {\n        document.querySelector('#' + mId).value = mVal - 1;\n        let datacat = document.querySelector('#' + mId).getAttribute('data-cat')\n        updatePartyFoodIndicator(datacat)\n    }\n    $('document').find('#' + mId).trigger('change');\n}\n\nconst validatePartyFoodQty = (mycat, mQty) => {\n    let mReturn = true\n    let mycatDiv = document.querySelector('#' + mycat)\n    let maxQty = mycatDiv.getAttribute('data-max')\n    let mCnt = mQty\n    if (mQty > maxQty) {\n        mReturn = false\n    } else {\n        let catInputs = document.querySelectorAll('#' + mycat + ' .bundleItemQty')\n        if (catInputs) {\n            catInputs = [].slice.call(catInputs);\n            catInputs.forEach(function (userItem) {\n                if (userItem.value && parseInt(userItem.value) > 0) {\n                    mCnt = parseInt(mCnt) + parseInt(userItem.value);\n                }\n            });\n            if (mCnt > maxQty) {\n                mReturn = false\n            }\n        }\n    }\n    return mReturn\n}\n\nconst addToCartValidate = (myPartID) => {\n    let mReturn = true\n    let selectioncat = document.querySelectorAll('#myset-' + myPartID + ' .selection-cat')\n    selectioncat = [].slice.call(selectioncat);\n    selectioncat.forEach(function (mItem) {\n        if (mReturn) {\n            let mCnt = 0\n            let requiredQty = mItem.getAttribute('data-max')\n            let catInputs = mItem.querySelectorAll('input.bundleItemQty')\n            catInputs = [].slice.call(catInputs);\n            catInputs.forEach(function (userItem) {\n                mCnt += parseInt(userItem.value)\n            })\n            if (mCnt == requiredQty) {\n                mReturn = true\n            } else {\n                mReturn = false\n            }\n        }\n    });\n    return mReturn\n}\n\nconst fetchBundleOptions = (myPartID) => {\n    let options = []\n    let selectioncat = document.querySelectorAll('#myset-' + myPartID + ' .selection-cat')\n    selectioncat = [].slice.call(selectioncat);\n    selectioncat.forEach(function (mItem) {\n        let catInputs = mItem.querySelectorAll('input.bundleItemQty')\n        catInputs.forEach(function (userItem) {\n            if (userItem.value > 0) {\n                options.push({\n                    \"option_id\": userItem.getAttribute(\"data-optionid\"),\n                    \"option_qty\": userItem.value,\n                    \"option_selections\": [userItem.getAttribute(\"data-productid\")]\n                })\n            }\n        })\n    })\n\n    return options;\n}\n\nconst generateCartObject = (cartId, sku, bundle_options) => {\n    return {\n        cart_item: {\n            quote_id: cartId,\n            sku: sku,\n            qty: 1,\n            \"product_option\": {\n                \"extension_attributes\": {\n                    \"bundle_options\": bundle_options\n                }\n            }\n        }\n    }\n}\n\nconst bundleOptions = (value) => {\n    let bundleOptions = []\n    let options = {}\n    value.extension_attributes ? bundleOptions = value.extension_attributes.bundle_product_options : \"\"\n    bundleOptions.sort((a, b) => {\n        return a.position - b.position;\n    });\n    bundleOptions.map(v => {\n        if (options[v.title]) {\n            options[v.title].push(v)\n        } else {\n            options[v.title] = []\n            options[v.title][0] = v\n        }\n    })\n    return options\n}\n\nconst bundleRelatedSku = (value) => {\n    let sku = []\n    let options = bundleOptions(value)\n    Object.keys(options).map((v, k) => {\n        options[v] ? options[v].map(option => {\n            option.product_links ? option.product_links.map((subOption, subIndex) => {\n                if (subIndex == 0) {\n                    subOption.sku ? sku.push(axios({\n                        method: \"get\",\n                        timeout: 15000,\n                        url: Config.productDomain + subOption.sku\n                    })) : \"\"\n                }\n            }) : \"\"\n        }) : \"\"\n    })\n    return sku\n}\n\nconst fetchCartBundleOptions = (original, entire) => {\n    let result = [];\n    let tempOptionId = \"\"\n    let tempItem = \"\"\n    if(original.product_type == \"bundle\"){\n        let originalOptions = original.product_option\n        let entireOptions = entire.extension_attributes.bundle_product_options\n        originalOptions.extension_attributes.bundle_options.map(v => {\n            tempOptionId = v.option_id\n            tempItem = (v.option_selections ? v.option_selections[0] : \"\")\n            entireOptions.map(subV => {\n                if(tempOptionId == subV.option_id){\n                    subV.product_links.map(item => {\n                        item.id == tempItem ? result.push({\n                            optionId: tempOptionId,\n                            itemId: tempItem,\n                            sku: item.sku,\n                            qty: v.option_qty,\n                            title: subV.title\n                        }) : \"\"\n                    })\n                }\n            })\n        })\n    }\n    return result\n}\n\nconst itemRelatedSku = (value) => {\n    let sku = []\n    let temp = []\n    let url = \"\";\n\n    value.map(v => {\n        if(Config.environment == \"dv-member\"){\n            url = Config.productDomainDV + v.sku + \".json\"\n        }else{\n            url = Config.productDomain + v.sku;\n        }\n        if(!temp.includes(v.sku)){\n            sku.push(axios({\n                method: \"get\",\n                timeout: 40000,\n                url: url\n            }))\n            temp.push(v.sku)\n        }\n    })\n    return sku\n}\n\nconst resetSetInputQtyField = () => {\n    $('.bundleItemQty').each(function(){\n        $(this).val(0);\n    });\n    $('.selectedItem').each(function(){\n        $(this).html(0);\n    });\n    $('.confirmPartySet').each(function(){\n        $(this).attr('data-confirm','no');\n    });\n}\n\nconst generateCheckoutOptions = (bundleOptions) => {\n    let mText = \"\"\n    for (let key in bundleOptions) {\n        if (bundleOptions.hasOwnProperty(key)) {\n            let value = bundleOptions[key];\n            mText += '<li><strong>' + getTitle(key) + '</strong></li>'\n            value.map(v => {\n                mText += '<li>' + v.qty + ' x ' + v.data.name + '</li>'\n            })\n        }\n    }\n    return mText;\n}\n\nconst generateSetObject = (cartId, itemId, qty) => {\n    return {\n        cart_item: {\n            quote_id: cartId,\n            item_id: itemId,\n            qty: qty\n        }\n    }\n}\n\nexport default {\n    getMax,\n    getTitle,\n    getPartyCatSelectTitle,\n    updatePartyFoodIndicator,\n    handleMaxLengthCheck,\n    popupBundleProductImg,\n    handleAddQty,\n    handleMinusQty,\n    generateCartObject,\n    bundleOptions,\n    bundleRelatedSku,\n    addToCartValidate,\n    fetchBundleOptions,\n    fetchCartBundleOptions,\n    itemRelatedSku,\n    resetSetInputQtyField,\n    generateCheckoutOptions,\n    generateSetObject\n}","import React, { useEffect } from 'react';\nimport { useSelector, useDispatch } from 'react-redux'\nimport { Link, useHistory, useParams } from 'react-router-dom';\nimport allActions from '../../actions'\nimport axios from 'axios'\nimport CommonTools from '../../api/CommonTools'\nimport Config from '../../res/Config'\nimport Static from '../../res/Static'\nimport Menu from '../../api/Menu';\nimport SimpleTools from '../../api/SimpleTools';\nimport Permission from '../../api/Permission';\nimport WACode from '../../res/WACode'\n\nfunction AddToCartBtn() {\n\tlet { catId } = useParams();\n\tconst cartUpdateCount = useSelector(state => state.shoppingCart.cartUpdateCount);\n\tconst cartId = useSelector(state => state.shoppingCart.cartId);\n\tconst role = useSelector(state => state.permission.role);\n\tconst dispatch = useDispatch();\n\tconst history = useHistory();\n\n\tconst handleMultipleAddtocart = async (e) => {\n\t\tif (Permission.eventPermission()) {\n\t\t\tif (await Menu.menuDetect()) {\n\t\t\t\tMenu.typeDetect(catId, \"addtocart\")\n\t\t\t\tlet addToCartArray = SimpleTools.validateMinimunOrder();\n\t\t\t\tlet filterProduct = [];\n\t\t\t\tlet errorCount = 0;\n\t\t\t\tif (addToCartArray.length > 0) {\n\t\t\t\t\taddToCartArray.map(v => {\n\t\t\t\t\t\tfilterProduct.push(axios({\n\t\t\t\t\t\t\tmethod: \"post\",\n\t\t\t\t\t\t\turl: Config.storeLink + \"V1/guest-carts/\" + cartId + \"/items\",\n\t\t\t\t\t\t\tdata: SimpleTools.generateCartObject(cartId, v.sku, v.qty)\n\t\t\t\t\t\t}))\n\t\t\t\t\t})\n\t\t\t\t\tdispatch(allActions.loadingAction.changeLoading(true))\n\t\t\t\t\tawait axios\n\t\t\t\t\t\t.all(filterProduct)\n\t\t\t\t\t\t.then(axios.spread((...responses) => {\n\t\t\t\t\t\t\tresponses.forEach((res, index) => {\n\t\t\t\t\t\t\t\tif (!res.data) {\n\t\t\t\t\t\t\t\t\talert(Static.itemSku + \" \" + addToCartArray[index].sku + \" \" + Static.itemAddAlert);\n\t\t\t\t\t\t\t\t\terrorCount++\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tSimpleTools.resetInputQtyField(addToCartArray[index].sku)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t})\n\t\t\t\t\t\t\tif (errorCount > 0) {\n\t\t\t\t\t\t\t\tdispatch(allActions.productAction.setSuccessStatus(false))\n\t\t\t\t\t\t\t\tdispatch(allActions.productAction.setFailStatus(true))\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tdispatch(allActions.productAction.setSuccessStatus(true))\n\t\t\t\t\t\t\t\tdispatch(allActions.productAction.setFailStatus(false))\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tdispatch(allActions.shoppingCartAction.setCartUpdateCount(cartUpdateCount + 1))\n\t\t\t\t\t\t\tdispatch(allActions.checkoutAction.pushEnableUpdates([]))\n\t\t\t\t\t\t\tCommonTools.waFireClick(WACode.overAddtocart)\n\t\t\t\t\t\t\tsetTimeout(() => { dispatch(allActions.loadingAction.changeLoading(false)) }, 1000)\n\t\t\t\t\t\t\tscrollToTop(600)\n\t\t\t\t\t\t}))\n\t\t\t\t\t\t.catch(error => {\n\t\t\t\t\t\t\tconsole.log(error)\n\t\t\t\t\t\t\tdispatch(allActions.productAction.setSuccessStatus(false))\n\t\t\t\t\t\t\tdispatch(allActions.productAction.setFailStatus(true))\n\t\t\t\t\t\t\tdispatch(allActions.loadingAction.changeLoading(false))\n\t\t\t\t\t\t\talert(Static.itemAddAlert);\n\t\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\talert(Static.addToCartAlert);\n\t\t\t\t\treturn false\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tconst handleBackToHome = (e) => {\n\t\thistory.push(\"/\")\n\t}\n\n\tfunction scrollToTop(scrollDuration) {\n\t\t$(\"html, body\").animate({ scrollTop: 100 }, scrollDuration);\n\t}\n\n\treturn <div className=\"row multipleAddToCartBtn-form\">\n\t\t<div className=\"col-md-6 multipleAddToCartBtn bundleAddToCartBtn left\">\n\t\t\t<button type=\"button\" title={Static.backToHome}\n\t\t\t\tclassName=\"button btn-back\"\n\t\t\t\tonClick={handleBackToHome}></button>\n\t\t</div>\n\t\t{role ? <div className=\"col-md-6 multipleAddToCartBtn\">\n\t\t\t<button type=\"button\" title={Static.addToCart}\n\t\t\t\tclassName=\"button btn-cart\"\n\t\t\t\tonClick={handleMultipleAddtocart}><span><span>{Static.addToCart}</span></span></button>\n\t\t</div> : <div className=\"col-md-6 addToCartBtn\">\n\t\t\t\t<button className=\"button btn-cart\"\n\t\t\t\t\tonClick={() => { Permission.OTP(WACode.startShoppingDetail) }}>\n\t\t\t\t</button></div>}\n\t</div>\n}\n\nexport default React.memo(AddToCartBtn);","import EnvironmentTools from \"../api/EnvironmentTools\";\nimport chConfig from \"./chConfig\";\nimport enConfig from \"./enConfig\";\nimport Menu from \"./Menu\";\n\nlet Config = {};\n\nif (lang == 'ch') {\n    Config = chConfig;\n} else {\n    Config = enConfig;\n}\n\nConfig = {\n    ...Config,\n    menu: Menu,\n    environment: \"\",//local, dv-member for testing\n    storeLink: \"https://shop.hkjc.com/\" + Config.storeName + \"/index.php/rest/\" + Config.subStoreName + \"/\",\n    storeLinkDV: \"/member/common/takeaway/jason_testing_data/\",\n    mediaDomain: EnvironmentTools.mediaDomain(),\n    productDomain: \"https://shop.hkjc.com/\" + Config.storeName + \"/index.php/rest/\" + Config.subStoreName + \"/V1/products/\",\n    productDomainDV: \"/member/jason_testing_data/V1/products/\",\n    categoryImage: EnvironmentTools.mediaDomain() + \"catalog/category/\",\n    checkoutForm: \"/member/fs/takeaway/topaz/form.aspx?lang=\" + lang + \"&key=\",\n    storeHome: \"/member/\" + language + \"/exclusive-shopping/takeaway/index.aspx\",\n    restuarantHome: \"/member/\" + language + \"/exclusive-shopping/takeaway/topaz/index.aspx\",\n    waCheckout: \"topaz\",\n    pageFireCount: 0,\n    skuSeparator: \"|||||||||||||||||\",\n    cartIdName: \"topazCartId\",\n    token: \"takeoutRole\",\n    memberId: \"takeoutMemberId\",\n    memberFId: \"takeoutMemberFId\",\n    // token: \"storeRole\",\n    // memberId: \"memberId\",\n    // memberFId: \"memberFId\",\n    activeMenu: \"topazActiveMenu\",\n    activeType: \"topazActiveType\",\n    otpUrl: \"/member/\" + language + \"/exclusive-shopping/takeaway/otp.aspx\"\n}\n\nexport default Config\n","export default {\n    storeName: \"topaz\",\n    subStoreName: \"topaz_chinese\",\n    storeId: 43,\n    checkoutCartId:[43]\n};\n","export default {\n    storeName: \"topaz\",\n    subStoreName: \"topaz_english\",\n    storeId: 44,\n    checkoutCartId:[43]\n};\n","let Menu = [\n    {\n        id: 720,\n        subCat: [{\n            type: \"lunch\",\n            ids: [\n\n                {\n                    type: \"simple\",\n                    id: 722\n                },\n                {\n                    type: \"simple\",\n                    id: 723\n                },\n                {\n                    type: \"simple\",\n                    id: 724\n                }\n\n\n            ]\n        },\n        {\n            type: \"dinner\",\n            ids: [\n                {\n                    type: \"simple\",\n                    id: 725\n                },\n                {\n                    type: \"simple\",\n                    id: 726\n                },\n                {\n                    type: \"simple\",\n                    id: 727\n                }\n\n            ]\n        }]\n    },\n    {\n        id: 721,\n        subCat: [{\n            type: \"lunch\",\n            ids: [\n\n                {\n                    type: \"simple\",\n                    id: 728\n                },\n                {\n                    type: \"simple\",\n                    id: 729\n                },\n                {\n                    type: \"simple\",\n                    id: 730\n                }\n\n\n            ]\n        },\n        {\n            type: \"dinner\",\n            ids: [\n                {\n                    type: \"simple\",\n                    id: 731\n                },\n                {\n                    type: \"simple\",\n                    id: 732\n                },\n                {\n                    type: \"simple\",\n                    id: 733\n                }\n\n            ]\n        }]\n    }\n];\n\nexport default Menu","import axios from 'axios'\nimport store from '../store/index'\nimport Static from '../res/Static'\nimport allActions from '../actions'\nimport Config from '../res/Config'\nimport \"@babel/polyfill\";\nimport CommonTools from './CommonTools'\n\nconst verifyCatId = async (catId, type, menu) => {\n    let status = false\n    if (catId) {\n        if (type == CommonTools.extractSubType(catId)) {\n            status = await categoryStatus(catId)\n            if (!status || (typeof (menu) == \"number\" && menu != CommonTools.parentMenu(catId))) {\n                eraseMenu()\n                alert(Static.disable)\n                window.location.href = Static.storePage\n            }\n        } else {\n            eraseMenu()\n            alert(Static.disable)\n            window.location.href = Static.storePage\n        }\n    }\n    return status\n}\n\nconst addMenuStatus = (menu, status) => {\n    let process = []\n    let flag = false\n    Config.menu.map(v => {\n        if (v.id == menu) {\n            process = v\n            process.subCat.map(p => {\n                flag = false\n                p.ids.map(subP => {\n                    subP.status = categoryObject(status, subP.id)\n                    subP.status.is_active ? flag = true : \"\"\n                })\n                flag ? p.status = true : p.status = false\n            })\n        }\n    })\n    return process\n}\n\nconst categoryAllStatus = async (cats) => {\n    let status = [];\n    await axios.get(\n        Config.storeLink + 'V1/categories/', { timeout: 15000 })\n        .then(res => {\n            cats.map(v => {\n                status.push(categoryObject(res.data, v))\n            })\n            return status;\n        })\n        .catch(error => {\n            //history.push(\"/serverError\")\n        })\n    return status;\n}\n\nconst getChildren = async (cat) => {\n    let result = [];\n    await axios.get(\n        Config.storeLink + 'V1/categories/', { timeout: 15000 })\n        .then(res => {\n            result = categoryChildren(res.data, cat)\n            return result;\n        })\n        .catch(error => {\n            //history.push(\"/serverError\")\n        })\n    return result;\n}\n\nconst categoryObject = (value, cat) => {\n    if (value.id == cat) {\n        return value\n    } else if (value.children_data) {\n        for (let i in value.children_data) {\n            let result = categoryObject(value.children_data[i], cat)\n            if (result) return result\n        }\n    }\n    return null\n}\n\nconst categoryChildren = (value, cat) => {\n    let data = categoryObject(value, cat)\n    let result = []\n    data.children_data ? result = data.children_data : \"\"\n    return result\n}\n\nconst categoryStatus = async (cat) => {\n    let status = false;\n    await axios.get(\n        Config.storeLink + 'V1/categories/' + cat, { timeout: 15000 })\n        .then(res => {\n            status = res.data.is_active;\n            return status;\n        })\n        .catch(error => {\n            //history.push(\"/serverError\")\n        })\n    return status;\n}\n\nconst menuDetect = async () => {\n    let menuStatus = false;\n    let activeCat = 0;\n    let prevMenu = localStorage.getItem(Config.activeMenu)\n    let allMenus = [];\n    Config.menu.map(v => {\n        allMenus.push(v[\"id\"])\n    })\n    let allStatus = await categoryAllStatus(allMenus);\n\n    allStatus ? allStatus.forEach(v => {\n        if (menuFlag) {\n            activeCat++\n            if ((!v.is_active && !menuStatus) || (activeCat == 2 && !menuStatus)) {\n                menuStatus = menuChange(prevMenu, v[\"id\"])\n                store.dispatch(allActions.globalAction.setMenu(v[\"id\"]))\n                return menuStatus;\n            }\n        } else if (v.is_active && !menuStatus) {\n            activeCat++\n            menuStatus = menuChange(prevMenu, v[\"id\"])\n            store.dispatch(allActions.globalAction.setMenu(v[\"id\"]))\n            return menuStatus;\n        }\n    }) : \"\"\n    activeCat > 0 ? \"\" : window.location.hash = \"#/Suspension\"\n    return menuStatus\n}\n\nconst menuChange = (prev, current) => {\n    if (prev == null || prev == \"\") {\n        localStorage.setItem(Config.activeMenu, current)\n        return true\n    } else if (prev != current) {\n        eraseMenu()\n        window.alert(Static.menuAlert);\n        statusRedirect()\n        return false\n    } else {\n        return true\n    }\n}\n\nconst landTypeDetect = (type) => {\n    let status = false;\n    let prev = localStorage.getItem(Config.activeType)\n    if (prev == null || prev == \"\" || prev == type) {\n        status = true\n    } else {\n        status = window.confirm(Static.typeAlert)\n        if (status) {\n            eraseMenu()\n        }\n    }\n    return status\n}\n\nconst typeDetect = (cat, type) => {\n    let prevType = localStorage.getItem(Config.activeType)\n    Config.menu.map(async v => {\n        v.subCat.map(subV => {\n            subV.ids.map(subIds => {\n                subIds.id == cat ? typeChange(prevType, subV.type, type) : \"\"\n            })\n        })\n    })\n}\n\n//would assign product type(breakfast, lunch, dinner) when user click add to cart button at first time\nconst typeChange = (prev, current, type) => {\n    if (prev == null || prev == \"\") {\n        type == \"addtocart\" ? localStorage.setItem(Config.activeType, current) : \"\"\n    } else if (prev != current) {\n        if (window.confirm(Static.typeAlert)) {\n            eraseMenu()\n        }\n        statusRedirect()\n    }\n}\n\nconst statusRedirect = () => {\n    window.location.href = Static.storePage\n    return false;\n}\n\nconst eraseMenu = () => {\n    localStorage.removeItem(Config.activeMenu)\n    localStorage.removeItem(Config.activeType)\n    localStorage.removeItem(Config.cartIdName)\n    store.dispatch(allActions.shoppingCartAction.fetchCartId(localStorage.getItem(Config.cartIdName)))\n}\n\nexport default {\n    verifyCatId,\n    addMenuStatus,\n    categoryStatus,\n    getChildren,\n    categoryAllStatus,\n    menuDetect,\n    landTypeDetect,\n    typeDetect\n}","import store from '../store/index'\nimport allActions from '../actions'\nimport CommonTools from './CommonTools';\nimport Config from '../res/Config'\nimport Static from '../res/Static'\nimport Cookies from 'js-cookie'\n\nconst landingPermission = () => {\n    let prevRole = store.getState().permission.role\n    let currentRole = detectPermission()\n    store.dispatch(allActions.permissionAction.setRole(currentRole))\n    if (landingChange(prevRole, currentRole)) {\n        return true;\n    } else {\n        return false;\n    }\n}\n\nconst eventPermission = (refer) => {\n    let prevRole = store.getState().permission.role\n    let currentRole = detectPermission()\n    store.dispatch(allActions.permissionAction.setRole(currentRole))\n    statusChange(prevRole, currentRole, \"event\", refer)\n    return currentRole\n}\n\nconst detectPermission = () => {\n    if (Cookies.get(Config.token) != null && Cookies.get(Config.token)) {\n        var d = new Date();\n        d.setMinutes(d.getMinutes() + 30);\n        Cookies.set(Config.token, Cookies.get(Config.token), { expires: d });\n        Cookies.set(Config.memberId, Cookies.get(Config.memberId), { expires: d });\n        Cookies.set(Config.memberFId, Cookies.get(Config.memberFId), { expires: d });\n        return true;\n    } else {\n        localStorage.removeItem(Config.activeMenu)\n        localStorage.removeItem(Config.activeType)\n        return false;\n    }\n}\n\nconst clearPermission = () => {\n    Cookies.remove(Config.token)\n    Cookies.remove(Config.memberId)\n    Cookies.remove(Config.memberFId)\n    localStorage.removeItem(Config.activeType)\n}\n\nconst OTP = (code, refer) => {\n    if (code != \"none\") {\n        CommonTools.waFireClick(code)\n    }\n    let tempRefer = refer ? refer : window.location.hash.substring(1);\n    //console.log(tempRefer)\n    setTimeout(() => { window.location.href = Config.otpUrl + \"?ref=\" + tempRefer + \"&store=\" + Config.storeName }, 500);\n\n}\n\nconst specialOTP = (refer) => {\n    let tempRefer = refer ? refer : window.location.hash.substring(1);\n    //console.log(tempRefer)\n    window.location.href = Config.otpUrl + \"?ref=\" + tempRefer + \"&store=\" + Config.storeName\n    return false\n}\n\nconst statusChange = (prevRole, currentRole, type, refer) => {\n    if (prevRole == true && currentRole == false) {\n        window.alert(Static.expiration);\n        specialOTP(refer)\n    } else if (prevRole == false && currentRole == false && type == \"event\") {\n        specialOTP(refer)\n    }\n}\n\nconst landingChange = (prevRole, currentRole) => {\n    if (prevRole == true && currentRole == false) {\n        window.alert(Static.expiration);\n        specialOTP()\n        return false\n    } else {\n        return true\n    }\n}\n\nexport default {\n    landingPermission,\n    eventPermission,\n    detectPermission,\n    clearPermission,\n    OTP,\n    specialOTP,\n    statusChange,\n    landingChange\n}","let WACode = {\n    startShopping: \"btn_takeaway_StartOrder_Float\", //start shopping cart\n    startShoppingDetail: \"btn_takeaway_StartOrder\", //start shopping btn\n    overAddtocart: \"btn_takeaway_AddtoCart\", // add to cart btn\n    shoppingViewCart: \"btn_takeaway_ViewCart_MO\", //view cart btn\n    shoppingCheckout: \"btn_takeaway_Checkout_MO\", //view cart check out\n    btnCheckout: \"btn_takeaway_Checkout\", //check out btn\n    setTab: \"tab_takeaway_Set\",\n    simpleTab: \"tab_takeaway_AlaCarte\",\n    specialTab: \"tab_takeaway_Speciality\",\n    setLand: \"btn_takeaway_Set\",\n    simpleLand: \"btn_takeaway_AlaCarte\",\n    specialLand: \"btn_takeaway_Speciality\"\n};\n\nexport default WACode","const defaultState = {\n    loadingStatus: false,\n    cartloadingStatus: false\n}\n\nconst loading = (state = defaultState, action) => {\n    switch (action.type) {\n        case \"CHANGE_LOADINGSTATUS\":\n            return {\n                ...state,\n                loadingStatus: action.loadingStatus\n            }\n        case \"CHANGE_CARTLOADINGSTATUS\":\n            return {\n                ...state,\n                cartloadingStatus: action.cartloadingStatus\n            }\n        default:\n            return state\n    }\n}\n\nexport default loading","const defaultState = {\n    successStatus: false,\n    failStatus: false,\n    setItems: [],\n    productSku: \"\",\n    activeProduct: {},\n    detailProduct:{},\n    consolidateProduct:{}\n}\n\nconst product = (state = defaultState, action) => {\n    switch (action.type) {\n        case \"SET_SUCCESSSTATUS\":\n            return {\n                ...state,\n                successStatus: action.successStatus\n            }\n        case \"SET_FAILSTATUS\":\n            return {\n                ...state,\n                failStatus: action.failStatus\n            }\n        case \"FETCH_SETITEMS\":\n            return {\n                ...state,\n                setItems: action.setItems\n            }\n        case \"FETCH_PRODUCTSKU\":\n            return {\n                ...state,\n                productSku: action.productSku\n            }\n        case \"SET_ACTIVEPRODUCT\":\n            return {\n                ...state,\n                activeProduct: action.activeProduct\n            }\n        case \"FETCH_DETAILPRODUCT\":\n            return {\n                ...state,\n                detailProduct: action.detailProduct\n            }\n            case \"GEN_CONSOLIDATEPRODUCT\":\n                return {\n                    ...state,\n                    consolidateProduct: action.consolidateProduct\n                }\n        default:\n            return state\n    }\n}\nexport default product","import Config from '../res/Config'\nconst defaultState = {\n    cartId: localStorage.getItem(Config.cartIdName) == null ? \"\" : localStorage.getItem(Config.cartIdName),\n    cartUpdateCount: 0,\n    cartDetailStatus: false,\n    originalCart: [],\n    shoppingCart: {\n        hamperCount: 0,\n        hamperAmount: 0,\n        hamperDiscount: \"\",\n        hamperPayable: 0,\n        festiveCount: 0,\n        festiveAmount: 0,\n        festiveDiscount: \"\",\n        festivePayable: 0,\n        totalCount: 0,\n        totalAmount: 0\n    },\n    shoppingCartLength: 0,\n    catDatas: []\n}\n\nconst shoppingCart = (state = defaultState, action) => {\n    switch (action.type) {\n        case \"FETCH_CARTID\":\n            return {\n                ...state,\n                cartId: action.cartId\n            }\n        case \"SET_CARTUPDATECOUNT\":\n            return {\n                ...state,\n                cartUpdateCount: action.cartUpdateCount\n            }\n        case \"SET_SHOPPINGCART\":\n            return {\n                ...state,\n                shoppingCart: action.shoppingCart\n            }\n        case \"FETCH_ORIGINALCART\":\n            return {\n                ...state,\n                originalCart: action.originalCart\n            }\n        case \"FETCH_DISCOUNTCART\":\n            return {\n                ...state,\n                discountCart: action.discountCart\n            }\n        case \"SWITCH_CARTDETAILSTATUS\":\n            return {\n                ...state,\n                cartDetailStatus: action.cartDetailStatus\n            }\n        case \"GET_SHOPPINGCARTLENGTH\":\n            return {\n                ...state,\n                shoppingCartLength: action.shoppingCartLength\n            }\n        case \"GET_CATDATAS\":\n            return {\n                ...state,\n                catDatas: action.catDatas\n            }\n        default:\n            return state\n    }\n}\nexport default shoppingCart","const defaultState = {\n    enableUpdates: [],\n    maximumError: [],\n    soldoutError: [],\n    checkoutStatus: 0\n}\n\nconst checkoutAction = (state = defaultState, action) => {\n    switch (action.type) {\n        case \"PUSH_ENABLEUPDATES\":\n            return {\n                ...state,\n                enableUpdates: action.enableUpdates\n            }\n        case \"PUSH_MAXIMUMERROR\":\n            return {\n                ...state,\n                maximumError: action.maximumError\n            }\n        case \"PUSH_SOLDOUTERROR\":\n            return {\n                ...state,\n                soldoutError: action.soldoutError\n            }\n        case \"SWITCH_CHECKOUTSTATUS\":\n            return {\n                ...state,\n                checkoutStatus: action.checkoutStatus\n            }\n        default:\n            return state\n    }\n}\n\nexport default checkoutAction","const defaultState = {\n    currentCategory: {}\n}\n\nconst category = (state = defaultState, action) => {\n    switch (action.type) {\n        case \"FETCH_CURRENTCATEGORY\":\n            return {\n                ...state,\n                currentCategory: action.currentCategory\n            }\n        default:\n            return state\n    }\n}\nexport default category","const defaultState = {\n    menu: {},\n    type: \"\",\n    activeTab: [],\n    entireMenuStatus: {}\n}\n\nconst global = (state = defaultState, action) => {\n    switch (action.type) {\n        case \"SET_MENU\":\n            return {\n                ...state,\n                menu: action.menu\n            }\n        case \"SET_TYPE\":\n            return {\n                ...state,\n                type: action.type\n            }\n        case \"SET_ACTIVETAB\":\n            return {\n                ...state,\n                activeTab: action.activeTab\n            }\n        case \"SET_ENTIREMENUSTATUS\":\n            return {\n                ...state,\n                entireMenuStatus: action.entireMenuStatus\n            }\n        default:\n            return state\n    }\n}\nexport default global","const defaultState = {\n    role: false,\n}\n\nconst permission = (state = defaultState, action) => {\n    switch (action.type) {\n        case \"SET_ROLE\":\n            return {\n                ...state,\n                role: action.role\n            }\n        default:\n            return state\n    }\n}\n\nexport default permission","\nimport {combineReducers} from 'redux'\nimport loading from './loading'\nimport product from './product'\nimport shoppingCart from './shoppingCart'\nimport checkout from './checkout'\nimport category from './category'\nimport global from './global'\nimport permission from './permission'\n\nconst rootReducer = combineReducers({\n    loading,\n    product,\n    shoppingCart,\n    checkout,\n    category,\n    global,\n    permission\n})\n\nexport default rootReducer","import { createStore, compose, applyMiddleware } from 'redux'\nimport thunk from 'redux-thunk'\nimport promise from 'redux-promise'\nimport reducer from '../reducers'\nconst composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose;\n\nconst store = createStore (reducer, composeEnhancers (\n  applyMiddleware (thunk, promise)\n));\n\nexport default store;","import React, { useEffect } from 'react';\nimport { useSelector, useDispatch } from 'react-redux'\nimport allActions from '../actions'\nimport axios from 'axios'\nimport ShoppingCart from './ShoppingCart'\nimport CommonTools from '../api/CommonTools'\nimport Config from '../res/Config'\nimport Static from '../res/Static'\nimport { Link, useHistory } from 'react-router-dom';\nimport {\n    useParams\n} from \"react-router-dom\"\nimport ShoppingStatus from './ShoppingStatus';\nimport Tab from './Tab';\nimport SetItems from './SetItems'\nimport SetList from './SetList'\nimport Menu from '../api/Menu';\nimport Disable from './widgets/Disable';\nimport AddToBundleCartBtn from './widgets/AddToBundleCartBtn';\nimport Logout from './widgets/Logout';\nimport store from '../store/index'\n\nfunction Set() {\n    let { catId } = useParams();\n    const dispatch = useDispatch();\n    const history = useHistory();\n    const menu = useSelector(state => state.global.menu);\n    const consolidateProduct = useSelector(state => state.product.consolidateProduct);\n    const currentCategory = useSelector(state => state.category.currentCategory);\n\n    function getData() {\n        return async dispatch => {\n            if (menu && menu != \"\") {\n                await Menu.verifyCatId(catId, \"set\", menu)\n                Menu.typeDetect(catId)\n                await axios.get(\n                    Config.storeLink + 'V1/categories/' + catId, { timeout: 15000 }).then(res => {\n                        res.data ? dispatch(allActions.categoryAction.fetchCategory(res.data)) : \"\"\n                        dispatch(allActions.globalAction.setType(CommonTools.extractType(catId)))\n                        let tempProduct = store.getState().product.consolidateProduct;\n                        let productStatus = Object.keys(tempProduct).length === 0 && typeof(tempProduct) === \"object\";\n                        typeof(menu) == \"number\" && !productStatus ? dispatch(allActions.loadingAction.changeLoading(false)) : \"\"\n                    })\n                    .catch(error => {\n                        history.push(\"/serverError\")\n                    })\n            }\n        }\n    }\n\n    useEffect(() => {\n        CommonTools.waFire()\n    }, [])\n\n    useEffect(() => {\n        dispatch(allActions.loadingAction.changeLoading(true))\n        CommonTools.resetInputQtyField()\n        dispatch(getData());\n    }, [catId, menu, consolidateProduct]);\n\n    useEffect(() => {\n        dispatch(allActions.productAction.setSuccessStatus(false))\n        dispatch(allActions.productAction.setFailStatus(false))\n        $(\".eventContainer a\").click(function () {\n            if ($(this).attr(\"href\")) {\n                $(\"html, body\").animate({ scrollTop: 100 }, 600);\n            }\n        })\n    }, [])\n\n    return (\n        <div className=\"col-sm-12 col-md-12 take-away set shoppingCartWrap\">\n            <ShoppingCart></ShoppingCart>\n            <ShoppingStatus></ShoppingStatus>\n            <div className=\"row setHeader\">\n                <div className=\"col-lg-10 col-md-10 col-xs-12\"><h3>{Static.restaurantName}</h3></div>\n                <Logout></Logout>\n                <div className=\"description col-lg-12 col-xs-12\">\n                    <div dangerouslySetInnerHTML={{ __html: CommonTools.getCustomAttribute(currentCategory, \"description\") }} />\n                </div>\n            </div>\n            <Tab catId={catId}></Tab>\n            {currentCategory.is_active ? <div className={\"row category-products takeawaycat\" + catId}>\n                <div className=\"category-products catTabs\">\n                    <div className=\"tab-content\">\n                        <div className=\"products-list\" id=\"products-list\">\n                            <div className=\"tab-pane\">\n                                <div className=\"category-products\">\n                                    <div class=\"takeaway-category-products category-products-table row original\">\n                                        <SetItems></SetItems>\n                                    </div>\n                                </div>\n                            </div>\n                            <div className=\"party-set-items-selection\">\n                                <SetList></SetList>\n                                <AddToBundleCartBtn></AddToBundleCartBtn>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div> : <Disable></Disable>}\n        </div>\n    )\n}\n\nexport default React.memo(Set);","import React, { useEffect } from 'react';\nimport { useSelector, useDispatch } from 'react-redux'\nimport allActions from '../actions'\nimport axios from 'axios'\nimport ShoppingCart from './ShoppingCart'\nimport CommonTools from '../api/CommonTools'\nimport Config from '../res/Config'\nimport Static from '../res/Static'\nimport { Link, useHistory } from 'react-router-dom';\nimport {\n    useParams\n} from \"react-router-dom\"\nimport ShoppingStatus from './ShoppingStatus';\nimport Tab from './Tab';\nimport SimpleList from './SimpleList'\nimport Menu from '../api/Menu';\nimport Disable from './widgets/Disable';\nimport AddToCartBtn from './widgets/AddToCartBtn';\nimport Logout from './widgets/Logout';\nimport store from '../store/index'\n\nfunction Simple() {\n    let { catId } = useParams();\n    const dispatch = useDispatch();\n    const history = useHistory();\n    const menu = useSelector(state => state.global.menu);\n    const detailProduct = useSelector(state => state.product.detailProduct);\n    const currentCategory = useSelector(state => state.category.currentCategory);\n\n    function getData() {\n        return async dispatch => {\n            if (menu && menu != \"\") {\n                await Menu.verifyCatId(catId, \"simple\", menu)\n                Menu.typeDetect(catId)\n                await axios.get(\n                    Config.storeLink + 'V1/categories/' + catId, { timeout: 15000 }).then(res => {\n                        res.data ? dispatch(allActions.categoryAction.fetchCategory(res.data)) : \"\"\n                        dispatch(allActions.globalAction.setType(CommonTools.extractType(catId)))\n                        let tempProduct = store.getState().product.detailProduct.data;\n                        typeof(menu) == \"number\" && tempProduct != undefined ? dispatch(allActions.loadingAction.changeLoading(false)) : \"\"\n                    })\n                    .catch(error => {\n                        history.push(\"/serverError\")\n                    })\n            }\n        }\n    }\n\n    useEffect(() => {\n        CommonTools.waFire()\n    }, [])\n\n    useEffect(() => {\n        dispatch(allActions.loadingAction.changeLoading(true))\n        CommonTools.resetInputQtyField()\n        dispatch(getData());\n    }, [catId, menu, detailProduct]);\n\n    useEffect(() => {\n        dispatch(allActions.productAction.setSuccessStatus(false))\n        dispatch(allActions.productAction.setFailStatus(false))\n        $(\".eventContainer a\").click(function () {\n            if ($(this).attr(\"href\")) {\n                $(\"html, body\").animate({ scrollTop: 100 }, 600);\n            }\n        })\n    }, [])\n\n    return (\n        <div className=\"col-sm-12 col-md-12 take-away set shoppingCartWrap\">\n            <ShoppingCart></ShoppingCart>\n            <ShoppingStatus></ShoppingStatus>\n            <div className=\"row setHeader\">\n                <div className=\"col-lg-10 col-md-10 col-xs-12\"><h3>{Static.restaurantName}</h3></div>\n                <Logout></Logout>\n                <div className=\"description col-lg-12 col-xs-12\">\n                    <div dangerouslySetInnerHTML={{ __html: CommonTools.getCustomAttribute(currentCategory, \"description\") }} />\n                </div>\n            </div>\n            <Tab catId={catId}></Tab>\n            {currentCategory.is_active ? <div className={\"row category-products takeawaycat\" + catId}>\n                <div className=\"category-products catTabs\">\n                    <div className=\"tab-content\">\n                        <div className=\"products-list\" id=\"products-list\">\n                            <div className=\"party-set-items-selection\">\n                                <SimpleList></SimpleList>\n                                <AddToCartBtn></AddToCartBtn>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div> : <Disable></Disable>}\n        </div>\n    )\n}\n\nexport default React.memo(Simple);","import React, { useEffect } from 'react';\nimport { useSelector, useDispatch } from 'react-redux'\nimport { Link, useHistory, useParams } from 'react-router-dom';\nimport allActions from '../actions'\nimport CommonTools from '../api/CommonTools'\nimport SetTools from '../api/SetTools'\nimport axios from 'axios'\nimport Config from '../res/Config'\nimport Static from '../res/Static'\nimport AddToBundleCartBtn from './widgets/AddToBundleCartBtn';\nimport Menu from '../api/Menu';\nimport SimpleTools from '../api/SimpleTools';\nimport AddToCartBtn from './widgets/AddToCartBtn';\nfunction SimpleList() {\n    let { catId } = useParams();\n    const dispatch = useDispatch();\n    const history = useHistory();\n    const menu = useSelector(state => state.global.menu);\n    const detailProduct = useSelector(state => state.product.detailProduct);\n    const role = useSelector(state => state.permission.role);\n\n    function getData() {\n        return async dispatch => {\n            let products = []\n            let catPromise = []\n            let subIds = await Menu.getChildren(catId)\n            subIds = CommonTools.activeCat(subIds)\n            if (subIds.length > 0) {\n                subIds.map(v => {\n                    catPromise.push(\n                        axios({\n                            method: \"get\",\n                            timeout: 15000,\n                            url: Config.productDomain + CommonTools.generateParam(v.id + \"\")\n                        }))\n                })\n                await axios\n                    .all(catPromise)\n                    .then(axios.spread((...responses) => {\n                        responses.forEach((res, index) => {\n                            res.data.catInfo = subIds[index]\n                            products.push(res.data)\n                        })\n                    }))\n                    .catch(error => {\n                        history.push(\"/serverError\")\n                    })\n                dispatch(allActions.productAction.fetchdetailProduct({ data: products }))\n                CommonTools.setShoppingCartTop()\n            } else {\n                dispatch(allActions.productAction.fetchdetailProduct({}))\n            }\n        }\n    }\n\n    useEffect(() => {\n        dispatch(getData());\n        return () => {\n            dispatch(allActions.productAction.fetchdetailProduct({data: undefined}))\n          }\n    }, [catId]);\n\n    const imageDetect = (product) => {\n        let flag = false;\n        let imageSrc = product  && !CommonTools.getMediaAttribute(product) ? CommonTools.getCustomAttribute(product, \"image\") : \"\"\n        imageSrc && imageSrc != \"\" && imageSrc != \"no_selection\" ? flag = true : \"\"\n        return flag\n    }\n\n    return (\n        <div className=\"selection-set-category\" id={\"simple-\" + catId}>\n            {\n                detailProduct.data ? detailProduct.data.map((value, index) => {\n                    return <div className=\"selection-cat\" key={index} id={\"mycat-\" + catId + \"-\" + index}>\n                        <div className=\"row selection-header\">\n                            <div className=\"col-md-7\">\n                                <div className=\"alignLeft\"><h3>{value.catInfo.name}</h3></div>\n                            </div>\n                            <div className=\"col-md-5 visible-md visible-lg\">\n                                <h3>{Static.priceLabel}</h3>\n                            </div>\n                            <div style={{ clear: `both` }}></div>\n                        </div>\n                        {value.items ? value.items.map((item, subIndex) => {\n                            return <div className={\"row catItemsRow catItems-\" + subIndex} key={subIndex}>\n                                <div className=\"col-md-7 set-product-title\">\n                                    <span className=\"imageIcon\">\n                                        {imageDetect(item) ?\n                                            <span className=\"popupImg \"\n                                                data-sku={item.sku}\n                                                onClick={SetTools.popupBundleProductImg}\n                                                data-src={CommonTools.getCustomAttribute(item, \"image\")}\n                                                data-gallery={CommonTools.getCustomAttribute(item, \"image\")}\n                                                data-title={item[\"name\"]}>\n                                                <i className=\"fa fa-camera\" aria-hidden=\"true\"></i></span> :\n                                            <span className=\"galleryDimIcon\"><i className=\"fa fa-camera\" aria-hidden=\"true\"></i></span>}\n                                    </span>\n                                    <span className=\"pTitle\">{item[\"name\"]}</span>\n                                </div>\n                                <div class=\"col-md-2 set-product-unit-price\"><span class=\"unit-price\">{Static.priceLabel}</span></div>\n                                <div className=\"col-md-2 set-product-price\">\n                                    <span className=\"price\">{\"$\" + CommonTools.priceFormat(item[\"price\"])}</span>\n                                </div>\n                                <div className=\"col-md-3 set-product-qty\">\n                                    {role ? (<><div className=\"product_add_minus\">\n                                        <a className=\"btn_product_add\" onClick={SimpleTools.handleAddQty} data-cat={subIndex} data-id={\"p-qty\" + item.id}></a>\n                                    </div>\n                                        <div className=\"qty-wrapper\">\n                                            <input type=\"tel\" pattern=\"\\d*\"\n                                                name={\"bundle_option_qty[\" + item.id + \"]\"}\n                                                data-cattitle={value}\n                                                data-title={item[\"name\"]}\n                                                data-sku={item.sku}\n                                                id={\"p-qty\" + item.id}\n                                                min=\"0\" max=\"99\" maxLength=\"2\" defaultValue=\"0\" title={Static.quentityTitle}\n                                                className=\"bundleItemQty input-text qty cart-item-qty\" onInput={SimpleTools.handleMaxLengthCheck} />\n                                        </div>\n                                        <div className=\"product_add_minus\">\n                                            <a className=\"btn_product_minus\" onClick={SimpleTools.handleMinusQty} data-cat={subIndex} data-id={\"p-qty\" + item.id}></a>\n                                        </div></>) : \"\"}\n                                </div>\n                            </div>\n                        }) : \"\"}\n                        <div className=\"row borderBottom\"></div>\n                    </div>\n                }) : \"\"\n            }\n        </div>\n    )\n}\n\nexport default React.memo(SimpleList);","import React, { useEffect } from 'react';\nimport { useSelector, useDispatch } from 'react-redux'\nimport allActions from '../actions'\nimport axios from 'axios'\nimport ShoppingCart from './ShoppingCart'\nimport CommonTools from '../api/CommonTools'\nimport Config from '../res/Config'\nimport Static from '../res/Static'\nimport { Link, useHistory } from 'react-router-dom';\nimport {\n    useParams\n} from \"react-router-dom\"\nimport ShoppingStatus from './ShoppingStatus';\nimport Tab from './Tab';\nimport SetItems from './SetItems'\nimport SetList from './SetList'\nimport Menu from '../api/Menu';\nimport Disable from './widgets/Disable';\nimport AddToBundleCartBtn from './widgets/AddToBundleCartBtn';\nimport Logout from './widgets/Logout';\nimport store from '../store/index'\n\nfunction Special() {\n    let { catId } = useParams();\n    const dispatch = useDispatch();\n    const history = useHistory();\n    const menu = useSelector(state => state.global.menu);\n    const consolidateProduct = useSelector(state => state.product.consolidateProduct);\n    const currentCategory = useSelector(state => state.category.currentCategory);\n\n    function getData() {\n        return async dispatch => {\n            await Menu.verifyCatId(catId, \"special\", menu)\n            Menu.typeDetect(catId)\n            await axios.get(\n                Config.storeLink + 'V1/categories/' + catId, { timeout: 15000 }).then(res => {\n                    res.data ? dispatch(allActions.categoryAction.fetchCategory(res.data)) : \"\"\n                    dispatch(allActions.globalAction.setType(CommonTools.extractType(catId)))\n                    let tempProduct = store.getState().product.consolidateProduct;\n                    let productStatus = Object.keys(tempProduct).length === 0 && typeof(tempProduct) === \"object\";\n                    typeof(menu) == \"number\" && !productStatus ? dispatch(allActions.loadingAction.changeLoading(false)) : \"\"\n                })\n                .catch(error => {\n                    history.push(\"/serverError\")\n                })\n        }\n    }\n\n    useEffect(() => {\n        CommonTools.waFire()\n    }, [])\n\n    useEffect(() => {\n        dispatch(allActions.loadingAction.changeLoading(true))\n        dispatch(getData());\n    }, [catId, menu, consolidateProduct]);\n\n    useEffect(() => {\n        dispatch(allActions.productAction.setSuccessStatus(false))\n        dispatch(allActions.productAction.setFailStatus(false))\n        $(\".eventContainer a\").click(function () {\n            if ($(this).attr(\"href\")) {\n                $(\"html, body\").animate({ scrollTop: 100 }, 600);\n            }\n        })\n    }, [])\n\n    return (\n        <div className=\"col-sm-12 col-md-12 take-away set shoppingCartWrap\">\n            <ShoppingCart></ShoppingCart>\n            <ShoppingStatus></ShoppingStatus>\n            <div className=\"row setHeader\">\n                <div className=\"col-lg-10 col-md-10 col-xs-12\"><h3>{Static.restaurantName}</h3></div>\n                <Logout></Logout>\n                <div className=\"description col-lg-12 col-xs-12\">\n                    <div dangerouslySetInnerHTML={{ __html: CommonTools.getCustomAttribute(currentCategory, \"description\") }} />\n                </div>\n            </div>\n            <Tab catId={catId}></Tab>\n            {currentCategory.is_active ? <div className={\"row category-products takeawaycat\" + catId}>\n                <div className=\"category-products catTabs\">\n                    <div className=\"tab-content\">\n                        <div className=\"products-list\" id=\"products-list\">\n                            <div className=\"tab-pane\">\n                                <div className=\"category-products\">\n                                    <div class=\"takeaway-category-products category-products-table row original\">\n                                        <SetItems></SetItems>\n                                    </div>\n                                </div>\n                            </div>\n                            <div className=\"party-set-items-selection\">\n                                <SetList></SetList>\n                                <AddToBundleCartBtn></AddToBundleCartBtn>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div> : <Disable></Disable>}\n        </div>\n    )\n}\n\nexport default React.memo(Special);","const setMenu = (data) => {\n    return {\n        type: \"SET_MENU\",\n        menu: data\n    }\n}\n\nconst setType = (data) => {\n    return {\n        type: \"SET_TYPE\",\n        type: data\n    }\n}\n\nconst setActiveTab = (data) => {\n    return {\n        type: \"SET_ACTIVETAB\",\n        activeTab: data\n    }\n}\n\nconst setEntireMenuStatus = (data) => {\n    return {\n        type: \"SET_ENTIREMENUSTATUS\",\n        entireMenuStatus: data\n    }\n}\n\nexport default {\n    setMenu,\n    setType,\n    setActiveTab,\n    setEntireMenuStatus\n}","import loadingAction from './loadingAction'\nimport productAction from './productAction'\nimport shoppingCartAction from './shoppingCartAction'\nimport checkoutAction from './checkoutAction'\nimport categoryAction from './categoryAction'\nimport globalAction from './globalAction'\nimport permissionAction from './permissionAction'\n\nconst allActions = {\n    loadingAction,\n    productAction,\n    shoppingCartAction,\n    checkoutAction,\n    categoryAction,\n    globalAction,\n    permissionAction\n}\n\nexport default allActions","const changeLoading = (data) => {\n    return {\n        type: \"CHANGE_LOADINGSTATUS\",\n        loadingStatus: data\n    }\n}\n\nconst changeCartLoading = (data) => {\n    return {\n        type: \"CHANGE_CARTLOADINGSTATUS\",\n        cartloadingStatus: data\n    }\n}\n\nexport default {\n    changeLoading,\n    changeCartLoading\n}","const setSuccessStatus = (data) => {\n    return {\n        type: \"SET_SUCCESSSTATUS\",\n        successStatus: data\n    }\n}\n\nconst setFailStatus = (data) => {\n    return {\n        type: \"SET_FAILSTATUS\",\n        failStatus: data\n    }\n}\n\nconst fetchSetItems = (data) => {\n    return {\n        type: \"FETCH_SETITEMS\",\n        setItems: data\n    }\n}\n\nconst fetchProductSku = (data) => {\n    return {\n        type: \"FETCH_PRODUCTSKU\",\n        productSku: data\n    }\n}\n\nconst setActiveProduct = (data) => {\n    return {\n        type: \"SET_ACTIVEPRODUCT\",\n        activeProduct: data\n    }\n}\n\nconst fetchdetailProduct = (data) => {\n    return {\n        type: \"FETCH_DETAILPRODUCT\",\n        detailProduct: data\n    }\n}\n\nconst genConsolidateProduct = (data) => {\n    return {\n        type: \"GEN_CONSOLIDATEPRODUCT\",\n        consolidateProduct: data\n    }\n}\n\nexport default {\n    setSuccessStatus,\n    setFailStatus,\n    fetchSetItems,\n    fetchProductSku,\n    setActiveProduct,\n    fetchdetailProduct,\n    genConsolidateProduct\n}","\nconst fetchCartId = (data) => {\n    return {\n        type: \"FETCH_CARTID\",\n        cartId: data\n    }\n}\nconst setCartUpdateCount = (data) => {\n    return {\n        type: \"SET_CARTUPDATECOUNT\",\n        cartUpdateCount: data\n    }\n}\nconst fetchOriginalCart = (data) => {\n    return {\n        type: \"FETCH_ORIGINALCART\",\n        originalCart: data\n    }\n}\nconst fetchDiscountCart = (data) => {\n    return {\n        type: \"FETCH_DISCOUNTCART\",\n        discountCart: data\n    }\n}\nconst setShoppingCart = (data) => {\n    return {\n        type: \"SET_SHOPPINGCART\",\n        shoppingCart: data\n    }\n}\nconst switchCartDetailStatus = (data) => {\n    return {\n        type: \"SWITCH_CARTDETAILSTATUS\",\n        cartDetailStatus: data\n    }\n}\nconst getShoppingCartLength = (data) => {\n    return {\n        type: \"GET_SHOPPINGCARTLENGTH\",\n        shoppingCartLength: data\n    }\n}\nconst getCatDatas = (data) => {\n    return {\n        type: \"GET_CATDATAS\",\n        catDatas: data\n    }\n}\nexport default {\n    fetchCartId,\n    setCartUpdateCount,\n    fetchOriginalCart,\n    fetchDiscountCart,\n    setShoppingCart,\n    switchCartDetailStatus,\n    getShoppingCartLength,\n    getCatDatas\n}","const pushEnableUpdates = (data) => {\n    return {\n        type: \"PUSH_ENABLEUPDATES\",\n        enableUpdates: data\n    }\n}\n\nconst pushMaximumError = (data) => {\n    return {\n        type: \"PUSH_MAXIMUMERROR\",\n        maximumError: data\n    }\n}\n\nconst pushSoldOutError = (data) => {\n    return {\n        type: \"PUSH_SOLDOUTERROR\",\n        soldoutError: data\n    }\n}\n\nconst switchCheckoutStatus = (data) => {\n    return {\n        type: \"SWITCH_CHECKOUTSTATUS\",\n        checkoutStatus: data\n    }\n}\n\n\nexport default {\n    pushEnableUpdates,\n    pushMaximumError,\n    pushSoldOutError,\n    switchCheckoutStatus\n}","const fetchCategory = (data) => {\n    return {\n        type: \"FETCH_CURRENTCATEGORY\",\n        currentCategory: data\n    }\n}\n\nexport default {\n    fetchCategory\n}","const setRole = (data) => {\n    return {\n        type: \"SET_ROLE\",\n        role: data\n    }\n}\n\nexport default {\n    setRole\n}","let landingContent = landing;\n\nexport default landingContent","import React, { useEffect } from 'react';\nimport { useSelector, useDispatch } from 'react-redux'\nimport { Link, useHistory, useParams } from 'react-router-dom';\nimport allActions from '../actions'\nimport axios from 'axios'\nimport Static from '../res/Static'\nimport Config from '../res/Config'\nimport landingContent from '../res/landing'\nimport Menu from '../api/Menu';\nimport CommonTools from '../api/CommonTools';\nimport Permission from '../api/Permission';\nimport WACode from '../res/WACode';\nimport Loading from './widgets/Loading';\nfunction Landing() {\n    const menu = useSelector(state => state.global.menu);\n    const entireMenuStatus = useSelector(state => state.global.entireMenuStatus);\n    const dispatch = useDispatch();\n    const history = useHistory();\n\n    function getData() {\n        return async dispatch => {\n            await axios.get(\n                Config.storeLink + 'V1/categories/', { timeout: 15000 })\n                .then(res => {\n                    dispatch(allActions.globalAction.setEntireMenuStatus(Menu.addMenuStatus(menu, res.data)))\n                    typeof(menu) == \"number\" ? dispatch(allActions.loadingAction.changeLoading(false)) : \"\"\n                })\n                .catch(error => {\n                    history.push(\"/serverError\")\n                })\n        }\n    }\n\n    useEffect(() => {\n        dispatch(allActions.loadingAction.changeLoading(true))\n        dispatch(getData());\n    }, [menu]);\n    useEffect(() => {\n        CommonTools.waFire()\n    }, [])\n\n    const handleOnClick = (e) => {\n        let type = e.currentTarget.getAttribute(\"data-type\")\n        let link = e.currentTarget.getAttribute(\"data-link\")\n        let subType = e.currentTarget.getAttribute(\"data-sub-type\")\n        let code = \"\"\n        switch (subType) {\n            case 'set':\n                code = WACode.setLand\n                break;\n            case 'simple':\n                code = WACode.simpleLand\n                break;\n            case 'special':\n                code = WACode.specialLand\n                break;\n            default:\n                code = WACode.setLand\n        }\n        if (Menu.landTypeDetect(type) && Permission.landingPermission()) {\n            CommonTools.waFireClick(code)\n            history.push(link)\n        }\n    }\n\n    return (\n        <div className=\"col-md-12\">\n            <Loading />\n            <div className=\"row global-index takeaway-meals-index\">\n                <div className=\"col-md-12 setHeader\">\n                    <h3>{Static.restaurantName}</h3>\n                </div>\n                <div className=\"col-md-12 normalPadding\">\n                    {entireMenuStatus.subCat ?\n                        entireMenuStatus.subCat.map(item => {\n                            return (item.status ?\n                                <div className=\"col-md-4\">\n                                    <img src={landingContent[item.type].image} />\n                                    <div className=\"title row\">\n                                        <div className=\"col-md-12 marginBottom-5px\"><h3>{landingContent[item.type].title}</h3></div>\n                                        {item.ids ? item.ids.map(subItem => {\n                                            return subItem.status.is_active ? <div className=\"col-md-12 link-col\">\n                                                <div className=\"link-button\"\n                                                    onClick={handleOnClick}\n                                                    data-id={subItem.id}\n                                                    data-type={item.type}\n                                                    data-sub-type={subItem.type}\n                                                    data-link={\"/\" + subItem.type + \"/\" + subItem.id}>\n                                                    {landingContent[item.type][subItem.id]}</div>\n                                            </div> : \"\"\n                                        }) : \"\"}\n                                        <div className=\"col-md-12 period-info\">\n                                            <div dangerouslySetInnerHTML={{ __html: landingContent[item.type][\"desc\"] }} />\n                                        </div>\n                                    </div>\n                                </div> : \"\")\n                        }) : \"\"}\n\n                </div>\n            </div>\n        </div>\n    )\n}\n\nexport default React.memo(Landing);","import React, { useEffect } from 'react';\nimport { useSelector, useDispatch } from 'react-redux'\nimport allActions from '../actions'\nimport axios from 'axios'\nimport CommonTools from '../api/CommonTools'\nimport Static from '../res/Static'\nimport Config from '../res/Config'\nimport { Link, useHistory } from 'react-router-dom';\nimport Permission from '../api/Permission';\nimport SetTools from '../api/SetTools';\nfunction CartTable(props) {\n    const { productItems, totalCount, totalAmount, discount, payable, group, catData, type } = props;\n    const cartUpdateCount = useSelector(state => state.shoppingCart.cartUpdateCount);\n    const originalCart = useSelector(state => state.shoppingCart.originalCart);\n    const cartId = useSelector(state => state.shoppingCart.cartId);\n    const enableUpdates = useSelector(state => state.checkout.enableUpdates);\n    const maximumError = useSelector(state => state.checkout.maximumError);\n    const dispatch = useDispatch();\n    const history = useHistory();\n\n    const updateProduct = async (e) => {\n        if (e.currentTarget.className.indexOf(\"updated\") != -1) {\n            //if (Permission.eventPermission()) {\n            let tempMaximumError = [];\n            CommonTools.waFire()\n            dispatch(allActions.loadingAction.changeLoading(true))\n            let group = e.currentTarget.getAttribute(\"data-group\");\n            let updatedProduct = document.querySelectorAll('input[data-group=\"' + group + '\"]');\n            let filterProduct = [];\n            let hasRemoved = false;\n            updatedProduct.forEach(value => {\n                //if (value.value != CommonTools.getMatchItem(originalCart, value.getAttribute(\"data-itemId\")).qty) {\n                let newPromise = {}\n                if (value.value == 0) {\n                    hasRemoved = true;\n                    newPromise = axios({\n                        method: \"delete\",\n                        timeout: 40000,\n                        url: Config.storeLink + \"V1/guest-carts/\" + cartId + \"/items/\" + value.getAttribute(\"data-itemid\")\n                    })\n                } else {\n                    newPromise = axios({\n                        method: \"post\",\n                        timeout: 40000,\n                        url: Config.storeLink + \"V1/guest-carts/\" + cartId + \"/items\",\n                        data: SetTools.generateSetObject(cartId, value.getAttribute(\"data-itemid\"), value.value)\n\n                    })\n                }\n\n                filterProduct.push(newPromise)\n                value.value <= 99 ? \"\" : tempMaximumError.push(value.getAttribute(\"data-sku\"))\n                //CommonTools.insertItem(tempMaximumError, { index: tempMaximumError.length, item: value.getAttribute(\"data-itemid\")})\n                //}\n            })\n\n            await axios\n                .all(filterProduct)\n                .then(axios.spread((...responses) => {\n                    responses.forEach(res => console.log(res.data))\n                    if (hasRemoved) {\n                        location.reload();\n                    }\n                    dispatch(allActions.shoppingCartAction.setCartUpdateCount(cartUpdateCount + 1))\n                    dispatch(allActions.checkoutAction.pushEnableUpdates([]))\n                    setTimeout(() => { dispatch(allActions.loadingAction.changeLoading(false)) }, 1000);\n                }))\n                .catch(error => {\n                    console.log(error)\n                    history.push(\"/serverError\")\n                })\n\n            //dispatch(allActions.checkoutAction.pushMaximumError([]))\n            dispatch(allActions.checkoutAction.pushMaximumError(tempMaximumError))\n            //}\n        }\n\n    }\n\n    const maxLengthCheckWithUpdated = (e) => {\n        let tempEnableUpdates = enableUpdates;\n        if (!enableUpdates.includes(e.currentTarget.getAttribute(\"data-group\"))) {\n            tempEnableUpdates.push(e.currentTarget.getAttribute(\"data-group\"))\n            dispatch(allActions.checkoutAction.pushEnableUpdates([]))\n            dispatch(allActions.checkoutAction.pushEnableUpdates(tempEnableUpdates))\n        }\n    }\n\n    const handleBulkTips = (e) => {\n        let tipsId = e.currentTarget.getAttribute(\"data-toggle\")\n        let content = document.getElementById(tipsId);\n        let toggle = document.getElementById(tipsId + \"Toggle\")\n        content.classList.toggle(\"hidden\");\n        toggle.classList.toggle(\"opened\");\n    }\n\n    const handleBackToShopping = (e) => {\n        history.goBack()\n    }\n\n    return (\n        <React.Fragment>\n            {productItems && productItems.length > 0 ?\n                <div className=\"cart-products-table\">\n                    <div className=\"updateCart\">\n                        <div className=\"cartTableWrap\">\n                            <table id=\"shopping-cart-table\" className=\"cart-table data-table category-products-table\">\n                                <thead className=\"ptableHeader\">\n                                    <tr className=\"first last\">\n                                        <th className=\"col-md-6 col-sm-6 col-xs-12 ptable-item\" rowSpan=\"1\">\n                                            <span className=\"nobr\">{Static.checkoutSubTitle}</span></th>\n                                        <th className=\"col-md-2 col-sm-2 col-xs-4 ptable-price a-center cart-price-head\" colSpan=\"1\">\n                                            <span className=\"nobr\">{Static.price}<br className=\"visible-sm hidden-md\" /></span>\n                                        </th>\n                                        <th rowSpan=\"1\" className=\"a-center col-md-2 col-sm-2 col-xs-4 ptable-qty\">\n                                            {Static.count} </th>\n                                        <th className=\"col-md-2 col-sm-2 col-xs-4 ptable-price a-center cart-total-head\" colSpan=\"1\">\n                                            {Static.amount}<br className=\"visible-sm hidden-md\" />{Static.unit}</th>\n                                    </tr>\n                                </thead>\n                                <tbody>\n                                    {productItems.map((value, index) => {\n                                        return <tr className={\"ptableRow first \" + (index % 2 == 0 ? \"odd\" : \"even\")} key={index}>\n                                            <td className=\"product-cart-info\">\n                                                <span className=\"product-name\">\n                                                    <span id={\"product-title-\" + value.item_id}>{value.name} </span>\n                                                    {value.description &&\n                                                        <span className=\"pDescr\"><span dangerouslySetInnerHTML={{ __html: value.description }} /></span>\n                                                    }\n                                                    {value.product_type == \"bundle\" &&\n                                                        <span dangerouslySetInnerHTML={{ __html: SetTools.generateCheckoutOptions(value.sortData) }} />\n                                                    }\n                                                    <p className={\"item-msg-error \" + ((maximumError).includes(value.sku) ? \"show\" : \"hidden\")}>\n                                                        {(value.outOfStock == 1) ? Static.outOfStockError : Static.generalError}</p>\n                                                </span>\n                                            </td>\n                                            <td className=\"product-cart-price\" data-rwd-label={Static.tablePrice} data-rwd-tax-label={Static.freeTax}>\n                                                <span className=\"cart-price\">\n                                                    <span className=\"formatPrice\"><span className=\"price\">{\"$\" + CommonTools.priceFormat(value.price)}</span></span>\n                                                </span>\n                                            </td>\n                                            <td className=\"product-cart-actions\" data-rwd-label={Static.count}>\n                                                <input type=\"number\" pattern=\"\\d*\" data-sku={value.sku}\n                                                    data-itemid={value.item_id}\n                                                    key={\"qty\"}\n                                                    id={\"qty-\" + group + \"-\" + index}\n                                                    data-group={group} defaultValue={value.qty} size=\"4\"\n                                                    title={Static.count} className=\"input-text qty checkout-qty-text\" min=\"0\"\n                                                    max=\"99\" maxLength=\"2\" data-minorder-qty=\"\" onInput={maxLengthCheckWithUpdated} />\n                                            </td>\n                                            <td className=\"product-cart-total last\" data-rwd-label={Static.subTotal}>\n                                                <span className=\"cart-price\">\n                                                    <span className=\"formatPrice\"><span className=\"price\">{\"$\" + CommonTools.priceFormat(value.price * value.qty)}</span></span>\n                                                </span>\n                                            </td>\n                                        </tr>\n                                    })\n                                    }\n                                </tbody>\n                            </table>\n                        </div>\n                        <div className=\"updateCartContainer\">\n                            <button type=\"submit\"\n                                name=\"update_cart_action\"\n                                onClick={updateProduct}\n                                data-group={group}\n                                value=\"update_qty\" title={Static.updateShoppingCart}\n                                className={\"button btn-update \" + (enableUpdates.includes(group) ? \"updated\" : \"\")}>\n                                <span><span>{Static.updateShoppingCart} </span></span></button>\n                        </div>\n                        <div className=\"sub-summary-detail\">\n                            <div className=\"row\">\n                                <div className=\"col-md-6 col-sm-12 col-xs-12\">\n                                    <span className=\"sub-summary-title\">{Static.alreadySelectCount}</span>\n                                    <span className=\"sub-summary-value\">{totalCount}</span></div>\n                                <div className=\"col-md-6 col-sm-12 col-xs-12\">\n                                    <span className=\"sub-summary-title\">{Static.alreadySelectAmount}</span>\n                                    <span className=\"sub-summary-value\">{\"$\" + totalAmount}</span></div>\n                            </div>\n                            {discount != 0 ?\n                                <div className=\"row\">\n                                    <div className=\"col-md-6 col-sm-12 col-xs-12 red\">\n                                        <span className=\"sub-summary-title\">{Static.discountAmount}</span>\n                                        <span className=\"sub-summary-value\">{\"$\" + discount}</span></div>\n                                    <div className=\"col-md-6 col-sm-12 col-xs-12\">\n                                        <span className=\"sub-summary-title\">{Static.discountedAmount}</span>\n                                        <span className=\"sub-summary-value\">{\"$\" + payable}</span></div>\n                                </div> : \"\"}\n                        </div>\n                        <div className=\"deliveryRemark\" dangerouslySetInnerHTML={{ __html: Static.checkoutInfo[type][\"freeDelivery\"] }} />\n                        <div className=\"row backtoshop\"><div className=\"col-md-12\">\n                            <a title={Static.backToShopping} className=\"button2 btn-continue\" onClick={handleBackToShopping}>\n                                <span>{Static.backToShopping}</span>\n                            </a></div></div>\n                    </div>\n                </div> : <div></div>}\n        </React.Fragment>\n    )\n}\n\nexport default React.memo(CartTable);\n","import React, { useEffect, useLayoutEffect } from 'react';\nimport { useSelector, useDispatch } from 'react-redux'\nimport allActions from '../actions'\nimport Loading from './widgets/Loading'\nimport ShoppingCart from './ShoppingCart'\nimport CartTable from './CartTable'\nimport CheckoutBtn from './widgets/CheckoutBtn'\nimport CommonTools from '../api/CommonTools'\nimport Static from '../res/Static'\nimport { Link } from 'react-router-dom';\n\nfunction Checkout() {\n    const shoppingCart = useSelector(state => state.shoppingCart.shoppingCart);\n    const originalCart = useSelector(state => state.shoppingCart.originalCart);\n    const catDatas = useSelector(state => state.shoppingCart.catDatas);\n    const maximumError = useSelector(state => state.checkout.maximumError);\n    const soldoutError = useSelector(state => state.checkout.soldoutError);\n\n    const checkoutStatus = useSelector(state => state.checkout.checkoutStatus);\n\n    useEffect(() => {\n        CommonTools.waFire()\n    }, [])\n\n    return (\n        <div className=\"col-sm-12 col-md-12 checkout shoppingCartWrap\">\n            <Loading />\n            <ShoppingCart noShow={true}></ShoppingCart>\n            <div className=\"main\">\n                <div className={\"col-main \" + ((originalCart.length == 0 && checkoutStatus != 0) ? \"show\" : \"hidden\")}>\n                    <div className=\"page-title\">\n                        <h1>{Static.noItemInCart}</h1>\n                    </div>\n                    <div className=\"cart-empty\">\n                        <p>{Static.yourShoppingCartNoItems}</p>\n                        <p>{Static.clickLink} <Link to=\"/\">{Static.here}</Link> {Static.continueShop}</p>\n                    </div>\n                </div>\n                <div className={\"col-main \" + ((originalCart.length > 0 && checkoutStatus != 0) ? \"show\" : \"hidden\")}>\n                    <div className=\"cart display-single-price\">\n                        <div className=\"page-title title-buttons\">\n                            <h3>{Static.checkoutTitle}</h3>\n                        </div>\n                        <ul className={\"messages \" + ((maximumError.length > 0 && soldoutError.length < 1) ? \"show\" : \"hidden\")}>\n                            <li className=\"error-msg\"><ul><li><span>{Static.partialError}</span>\n                            </li></ul></li></ul>\n                        <ul className={\"messages \" + (soldoutError.length > 0 ? \"show\" : \"hidden\")}>\n                            <li className=\"error-msg\"><ul><li><span>{Static.miniPartialError}</span>\n                            </li></ul></li></ul>\n                        <CartTable productItems={originalCart}\n                            totalCount={shoppingCart.totalCount}\n                            totalAmount={shoppingCart.totalAmount}\n                            discount={shoppingCart.totalDiscount}\n                            payable={shoppingCart.totalPayable}\n                            group=\"1\"\n                            catData={[]}\n                            type=\"general\"\n                        />\n                        <div className=\"cart-forms\">\n                        </div>\n                        <div className=\"cart-totals-wrapper\">\n                            <div className=\"row cart-totals\">\n                                <div className=\"col-md-8 col-sm-8 col-xs-8\">\n                                    {Static.checkoutSelectLabel}<div className=\"cart-totals-caption\">{Static.checkoutSelectTip}</div>\n                                </div>\n                                <div className=\"col-md-4 col-sm-4 col-xs-4 span\">{\"$\" + shoppingCart.totalAmount}</div>\n                            </div>\n                            <div className=\"row cart-terms-wrapper\">\n                            </div>\n                            <div className=\"row cart-checkout\">\n                                <CheckoutBtn></CheckoutBtn>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>\n        </div>\n\n    )\n}\n\nexport default React.memo(Checkout);","import React from 'react';\nimport Static from '../res/Static'\nfunction NonSupport() {\n    return (\n        <div className=\"row\">\n            <div className=\"col-sm-12 col-md-12 \">\n                <div className=\"nonSupport\">\n                    <div dangerouslySetInnerHTML={{ __html: Static.errorNonSupport }} />\n                </div>\n            </div>\n        </div>\n    )\n}\n\nexport default React.memo(NonSupport);","import React from 'react';\nimport { useSelector } from 'react-redux'\nimport Static from '../res/Static'\nfunction ServerError() {\n    const loadingStatus = useSelector(state => state.loading.loadingStatus);\n    return (\n        <div className=\"serverError\">\n            <div dangerouslySetInnerHTML={{ __html: Static.serverErrorHandler }} />\n        </div>\n    )\n}\n\nexport default React.memo(ServerError);","import React from 'react';\nimport { useSelector } from 'react-redux'\nimport Static from '../res/Static'\nfunction Suspension() {\n    const loadingStatus = useSelector(state => state.loading.loadingStatus);\n    return (\n        <div className=\"serverError\">\n            <div dangerouslySetInnerHTML={{ __html: Static.serverSuspendHandler }} />\n        </div>\n    )\n}\n\nexport default React.memo(Suspension);","import Landing from '../components/Landing';\nimport Set from '../components/Set';\nimport Simple from '../components/Simple';\nimport Special from '../components/Special';\nimport Checkout from '../components/Checkout';\nimport CommonTools from '../api/CommonTools'\nimport NonSupport from '../components/NonSupport';\nimport ServerError from '../components/ServerError';\nimport Suspension from '../components/Suspension';\n\nlet Routes = [];\nif (CommonTools.checkVersion() != 0 && CommonTools.checkVersion() < 10) {\n  Routes = [\n    {\n      path: \"/\",\n      component: NonSupport\n    }\n  ]\n} else {\n  Routes = [\n    {\n      path: \"/\",\n      component: Landing,\n      exact: true,\n    },\n    {\n      path: \"/landing\",\n      component: Landing\n    },\n    {\n      path: \"/set/:catId/:productId?\",\n      component: Set\n    },\n    {\n      path: \"/simple/:catId\",\n      component: Simple\n    },\n    {\n      path: \"/special/:catId\",\n      component: Special\n    },\n    {\n      path: \"/checkout\",\n      component: Checkout\n    },\n    {\n      path: \"/Suspension\",\n      component: Suspension\n    },\n    {\n      path: \"/serverError\",\n      component: ServerError\n    }\n  ]\n}\n\nexport default Routes","import { createBrowserHistory as createHistory } from 'history'\nimport store from './store/index'\nimport allActions from './actions'\nimport Permission from './api/Permission';\nimport Menu from './api/Menu';\n\nconst history = createHistory()\nconst location = history.location\nconst unlisten = history.listen((location, action) => {\n  //console.log(store.getState().permission.role)\n  let prevRole = store.getState().permission.role\n  let currentRole = Permission.detectPermission()\n  store.dispatch(allActions.permissionAction.setRole(currentRole))\n  Permission.statusChange(prevRole, currentRole, \"navigator\")\n  Menu.menuDetect()\n})\n\nexport default history","import React, { useEffect } from 'react';\nimport store from './store/index'\nimport routes from './routes/index.js';\n// import { GlobalStyle } from  './style';\nimport { renderRoutes } from 'react-router-config';\nimport { HashRouter, HashRouter as Router, Link } from 'react-router-dom';\nimport { Provider } from 'react-redux'\nimport allActions from './actions'\nimport history from './history'\nimport Menu from './api/Menu'\nimport Permission from './api/Permission'\nimport Config from './res/Config'\n\nfunction App() {\n  useEffect(() => {\n    store.dispatch(allActions.permissionAction.setRole(Permission.detectPermission()))\n    Menu.menuDetect()\n  }, []);\n  return (\n    <Provider store={store}>\n      <HashRouter history={history}>\n          {renderRoutes(routes)}\n      </HashRouter>\n    </Provider>\n  );\n}\n\nexport default App;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport App from './App';\nimport \"@babel/polyfill\";\nimport \"formdata-polyfill\";\nimport \"isomorphic-fetch\";\nimport Es6Promise from 'es6-promise';\nimport 'nodelist-foreach-polyfill';\n//import 'bootstrap/dist/css/bootstrap.css'\n\nEs6Promise.polyfill();\nReactDOM.render(<App />, document.getElementById('root'));","import \"ie-string-startswith-polyfill\";\nconst envDetection = () => {\n  let env = \"prd\";\n  let host = window.location.host + \"\";\n  if (debugMode) {\n    if (host.startsWith(\"127.0.0.1\") || host.startsWith(\"localhost\")) {\n      env = \"local\"\n    } else if (host.startsWith(\"uv-member.hkjc.com\")) {\n      env = \"uv\"\n    } else if (host.startsWith(\"pv-member.hkjc.com\")) {\n      env = \"pv\"\n    }\n  }\n  return env;\n}\n\nconst cateogryImage = () => {\n  let domain = \"https://res.hkjc.com/media/catalog/category/\";\n  let env = envDetection();\n  if (debugMode) {\n    switch (env) {\n      case \"local\":\n        //domain = \"https://shop.hkjc.com/pub/media/\";\n        domain = \"https://shop.hkjc.com\";\n        break;\n      case \"uv\":\n        // code block\n        domain = \"https://shop.hkjc.com\";\n        break;\n      case \"pv\":\n        // code block\n        break;\n      default:\n      // code block\n    }\n  }\n  return domain;\n}\n\nconst mediaDomain = () => {\n  let domain = \"https://res.hkjc.com/media/\";\n  let env = envDetection();\n  if (debugMode) {\n    switch (env) {\n      case \"local\":\n        //domain = \"https://shop.hkjc.com/pub/media/\";\n        break;\n      case \"uv\":\n        domain = \"https://shop.hkjc.com/pub/media/\"\n        break;\n      case \"pv\":\n        // code block\n        break;\n      default:\n      // code block\n    }\n  }\n  return domain;\n}\n\nconst envDomain = () => {\n  let domain = \"https://member.hkjc.com/\";\n  let env = envDetection();\n  if (debugMode) {\n    switch (env) {\n      case \"local\":\n\n        break;\n      case \"uv\":\n        domain = \"https://uv-member.hkjc.com/\";\n        break;\n      case \"pv\":\n        domain = \"https://pv-member.hkjc.com/\";\n        break;\n      default:\n      // code block\n    }\n  }\n  return domain;\n}\n\nconst campDomain = (ev) => {\n  let domain = \"https://campaign.hkjc.com/\";\n  let env = envDetection();\n  if (debugMode) {\n    switch (env) {\n      case \"local\":\n\n        break;\n      case \"uv\":\n        //domain = \"http://dv-campaign/\";\n        domain = \"https://uv-campaign.hkjc.com/\";\n        break;\n      case \"pv\":\n        domain = \"https://pv-campaign.hkjc.com/\";\n        break;\n      default:\n      // code block\n    }\n  }\n  return domain;\n}\nexport default {\n  envDetection,\n  cateogryImage,\n  mediaDomain,\n  envDomain,\n  campDomain\n}","import React, { useEffect } from 'react';\nimport { useSelector, useDispatch } from 'react-redux'\nimport allActions from '../actions'\nimport axios from 'axios'\nimport CheckoutBtn from './widgets/CheckoutBtn'\nimport Loading from './widgets/Loading'\nimport CommonTools from '../api/CommonTools'\nimport Config from '../res/Config'\nimport Static from '../res/Static'\nimport { Link, useHistory } from 'react-router-dom';\nimport WACode from '../res/WACode';\nimport Permission from '../api/Permission';\nimport { isMobile } from 'react-device-detect';\nimport SetTools from '../api/SetTools';\nfunction ShoppingCart(props) {\n    const { noShow } = props;\n    const maximumError = useSelector(state => state.checkout.maximumError);\n    const soldoutError = useSelector(state => state.checkout.soldoutError);\n    const cartUpdateCount = useSelector(state => state.shoppingCart.cartUpdateCount);\n    const shoppingCartLength = useSelector(state => state.shoppingCart.shoppingCartLength);\n    const shoppingCart = useSelector(state => state.shoppingCart.shoppingCart);\n    const cartId = useSelector(state => state.shoppingCart.cartId);\n    const cartDetailStatus = useSelector(state => state.shoppingCart.cartDetailStatus);\n    const role = useSelector(state => state.permission.role);\n    const dispatch = useDispatch();\n    const history = useHistory();\n\n    function getCartItem(cartId) {\n        return async dispatch => {\n            let discountCart = {};\n            if (cartId && cartId != \"\") {\n                await axios.post(\n                    Config.storeLink + \"V1/guest-carts/\" + cartId + \"/totals-information\",\n                    {\n                        \"addressInformation\": {\n                            \"address\": {\n                            }\n                        }\n                    }).then(res => {\n                        discountCart = res.data;\n                        //handle multiple update issue\n                        if (CommonTools.compareQty(res.data.items)) {\n                            dispatch(allActions.checkoutAction.pushEnableUpdates([]))\n                            dispatch(allActions.checkoutAction.pushEnableUpdates(CommonTools.compareQty(res.data.items)))\n                            $(\"button[data-group='\" + CommonTools.compareQty(res.data.items) + \"']\").click();\n                            return false;\n                        }\n                        dispatch(allActions.shoppingCartAction.fetchDiscountCart(res.data))\n                    }).catch(error => {\n                        console.log(error);\n                        console.log(\"Cart have been destoryed\");\n                        dispatch(getCartId())\n                        //history.push(\"/\")\n                    })\n\n                let tempMaximumError = [];\n                let tempSoldoutError = [];\n                let tempProductData = [];\n                let tempOriginal = [];\n                let optionDetail = [];\n                let tempOptionDetail = [];\n\n                await axios.get(\n                    Config.storeLink + \"V1/guest-carts/\" + cartId + \"/items\", { timeout: 15000 }\n                ).then(res => {\n                    tempOriginal = res.data;\n\n                    res.data.map(value => {\n                        value.qty > 99 ? tempMaximumError.push(value.sku) : \"\"\n                    })\n\n                    dispatch(allActions.checkoutAction.pushMaximumError(tempMaximumError))\n                    //dispatch(allActions.shoppingCartAction.fetchHamperIds(tempHamperIds))\n                    dispatch(allActions.shoppingCartAction.setShoppingCart(CommonTools.updateShoppingCart(res.data, discountCart, [])))\n                    dispatch(allActions.shoppingCartAction.getShoppingCartLength(res.data.length))\n                    if (noShow) {\n                        dispatch(allActions.loadingAction.changeLoading(false))\n                    }\n                }).catch(error => {\n                    console.log(error);\n                    console.log(\"Cart have been destoryed\");\n                    dispatch(getCartId())\n                    //history.push(\"/\")\n                })\n\n                await Promise.all(tempOriginal.map(value => axios.get(Config.productDomain + CommonTools.skuFilter(value.sku)))).then(responses => {\n                    responses.map((res, index) => {\n                        tempProductData.push(res.data)\n                    })\n                    tempOriginal.map((value, index) => {\n                        tempProductData.map(subValue => {\n                            if (CommonTools.skuFilter(value.sku) == CommonTools.skuFilter(subValue.sku)) {\n                                tempOptionDetail = SetTools.fetchCartBundleOptions(value, subValue)\n                                optionDetail = optionDetail.concat(tempOptionDetail)\n                                tempOriginal[index] = {\n                                    ...tempOriginal[index],\n                                    name: subValue.name,\n                                    custom_attributes: subValue.custom_attributes,\n                                    optionDetail: tempOptionDetail\n                                }\n                                //tempOriginal[index].name = subValue.name\n                            }\n                        })\n                    })\n                    tempProductData.map(value => {\n                        CommonTools.getCustomAttribute(value, \"stock_status\") == Config.soldoutCode ? tempSoldoutError.push(value.sku) : \"\"\n                    })\n\n                }).catch(error => {\n                    console.log(error)\n                })\n\n                await Promise.all(SetTools.itemRelatedSku(optionDetail)).then(responses => {\n                    \n                    responses.map(res => {\n                        \n                        tempOriginal.map((v,index) => {\n                            v.optionDetail.map((subV,subIndex) => {\n                                if(subV.sku == res.data.sku){\n                                    tempOriginal[index].optionDetail[subIndex] = {\n                                        ...subV,\n                                        data: res.data\n                                    }\n                                }\n                            })\n                           \n                        })\n                    })\n                    tempOriginal.map((v,index) => {\n                        let tempSortData = {}\n                        v.optionDetail.map((subV,subIndex) => {\n                            tempSortData[subV.title] ?  \"\" : tempSortData[subV.title] = []\n                            tempSortData[subV.title].push({\n                                title: subV.title,\n                                qty: subV.qty,\n                                data: subV.data\n                            })\n                        })\n                        tempOriginal[index][\"sortData\"] = tempSortData\n                    })\n                    dispatch(allActions.checkoutAction.pushSoldOutError(tempSoldoutError))\n                    dispatch(allActions.shoppingCartAction.fetchOriginalCart(tempOriginal))\n                    dispatch(allActions.checkoutAction.switchCheckoutStatus(1))\n                }).catch(error => {\n                    console.log(error)\n                })\n\n            } else {\n                dispatch(getCartId())\n            }\n        }\n    }\n\n    function getCartId() {\n        return dispatch => {\n            axios.post(\n                Config.storeLink + \"V1/guest-carts/\"//need to change to storeLinkDV when in dv\n            ).then(res => {\n                localStorage.setItem(Config.cartIdName, res.data)\n                localStorage.removeItem(Config.activeType)\n                dispatch(allActions.shoppingCartAction.fetchCartId(res.data))\n                dispatch(getCartItem(res.data))\n            }).catch(error => {\n                //history.push(\"/\")\n            })\n        }\n    }\n\n    const handleCartShow = (e) => {\n        !isMobile ?\n            dispatch(allActions.shoppingCartAction.switchCartDetailStatus(true)) : \"\"\n    }\n\n    const handleCartHidden = (e) => {\n        !isMobile ?\n            dispatch(allActions.shoppingCartAction.switchCartDetailStatus(false)) : \"\"\n    }\n\n    const handleClickCart = (e) => {\n        if (isMobile) {\n            if (Permission.eventPermission()) {\n                dispatch(allActions.shoppingCartAction.switchCartDetailStatus(!cartDetailStatus))\n                //CommonTools.waFireClick(WACode.floatCart)\n            }\n        }\n    }\n\n    const handleShoppingCheckout = (e) => {\n        if (Permission.eventPermission()) {\n            history.push(\"/checkout\")\n        }\n        CommonTools.waFireClick(WACode.shoppingViewCart)\n    }\n\n    useEffect(() => {\n        CommonTools.setShoppingCartTop()\n        window.addEventListener('scroll', CommonTools.setShoppingCartTop);\n        return () => {\n            window.removeEventListener('scroll', CommonTools.setShoppingCartTop);\n        }\n    }, [])\n\n    useEffect(() => {\n        if (noShow) {\n            dispatch(allActions.loadingAction.changeLoading(true))\n        }\n        dispatch(getCartItem(cartId))\n        //getData()\n        return () => {\n            dispatch(allActions.shoppingCartAction.switchCartDetailStatus(false))\n        }\n    }, [cartUpdateCount])\n\n    return (\n        <div className={\"col-sm-12 col-md-12 col-xs-12 shoppingCart \" + (noShow ? \"hidden\" + \"\" : \"\")}>\n            <Loading />\n            {role ? (<div className=\"page-header-container\">\n                <div className=\"skip-links\">\n                    <div className=\"account-cart-wrapper\">\n                        <div className=\"header-minicart\"\n                            onMouseEnter={handleCartShow}\n                            onMouseLeave={handleCartHidden}>\n                            <div id=\"header-cart\" className={\"block block-cart skip-content hidden\" + (cartDetailStatus ? \"show\" : \"\")}>\n                                {shoppingCartLength == 0 ?\n                                    <p className=\"empty\">{Static.cartNoProduct}</p>\n                                    :\n                                    <div className=\"floatCartDetail\">\n                                        <div id=\"minicart-error-message\" className=\"minicart-message\"></div>\n                                        <div id=\"minicart-success-message\" className=\"minicart-message\"></div>\n                                        <div className=\"minicart-wrapper\">\n                                            <div className=\"cartAmountDetails hidden-xs\">\n                                                <table>\n                                                    <tbody>\n                                                    </tbody><thead>\n                                                        <tr><th style={{ width: \"58%\" }}>&nbsp;</th>\n                                                            <th style={{ width: \"42%\" }}>{Static.shoppingLabel}</th>\n\n                                                        </tr></thead>\n                                                    <tbody><tr>\n                                                        <td><span className=\"leftAlign\">{Static.total}</span></td>\n                                                        <td style={{ display: \"block\" }}>{shoppingCart.totalCount}</td>\n\n                                                    </tr>\n                                                        <tr>\n                                                            <td><span className=\"leftAlign\">{Static.amount}</span><span className=\"rightAlign\">{Static.unit}</span></td>\n                                                            <td style={{ display: \"block\" }}>{\"$\" + shoppingCart.totalAmount}</td>\n\n                                                        </tr>\n                                                        <tr>\n                                                            <td><span className=\"leftAlign\">{Static.discount}</span><span className=\"rightAlign\">{Static.unit}</span></td>\n                                                            <td style={{ display: \"block\" }}>{shoppingCart.totalDiscount != 0 ? (\"-$\" + shoppingCart.totalDiscount) : \"-\"}</td>\n\n                                                        </tr>\n                                                        <tr>\n                                                            <td><span className=\"leftAlign\">{Static.sumPayable}</span><span className=\"rightAlign\">{Static.unit}</span></td>\n                                                            <td style={{ display: \"block\" }}>{\"$\" + shoppingCart.totalPayable}</td>\n\n                                                        </tr>\n                                                    </tbody>\n                                                </table>\n                                            </div>\n                                            <div className=\"block-content totalAmountBox\">\n                                                <p className=\"totalAmountBox-title\">{Static.allTotal}</p>\n                                                <p className=\"subtotal\"><span className=\"dollarSign\">{Static.allUnit}</span>{shoppingCart.totalAmount}</p>\n                                                <p className=\"totalAmountBox-caption\">{Static.cartTips}</p>\n                                            </div>\n                                            <div className=\"minicart-actions\">\n                                                <ul className=\"checkout-types minicart\">\n                                                    <li>\n                                                        <Link className=\"viewcart-link button checkout-button\" to=\"#\" onClick={handleShoppingCheckout}>{Static.checkShoppingCart}</Link>\n                                                    </li>\n                                                </ul>\n                                                <ul className={\"checkout-types minicart \" + ((maximumError.length > 0 || soldoutError.length > 0) ? \"hidden\" : \"show\")}>\n                                                    <li>\n                                                        <CheckoutBtn></CheckoutBtn>\n                                                    </li>\n                                                </ul>\n                                                <div className={\"soldOutNotify error \" + ((maximumError.length > 0 && soldoutError.length < 1) ? \"show\" : \"hidden\")}>\n                                                    {Static.partialError}</div>\n                                                <div className={\"soldOutNotify error \" + (soldoutError.length > 0 ? \"show\" : \"hidden\")}>\n                                                    {Static.miniPartialError}</div>\n                                            </div>\n\n                                            <div style={{ clear: \"both\" }}></div>\n                                        </div>\n                                    </div>}\n                                <div style={{ clear: \"both\" }}></div>\n                            </div>\n                            <div className={\"floatCartIcon \" + (cartDetailStatus ? \"opened\" : \"\")}\n                                onClick={handleClickCart}\n                            >\n                                <div className=\"floatCartIcon-content\">\n                                    <div className=\"label\">{Static.shoppingCart}</div>\n                                    <div className=\"fa fa-shopping-cart\"></div>\n                                    <div className=\"count\">{shoppingCart.totalCount}</div>\n                                    <div className=\"arrow\"></div>\n                                </div>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </div>) :\n                (<div className=\"page-header-container start-shopping-container\">\n                    <div className=\"skip-links\">\n                        <div className=\"account-cart-wrapper\">\n                            <div className=\"header-minicart\">\n                                <div className={\"floatCartIcon\"}\n                                    onClick={() => { Permission.OTP(WACode.startShopping) }}\n                                >\n                                    <div className=\"floatCartIcon-content\">\n                                        <div className=\"label\">{Static.startShoppingLabel}</div>\n                                        <div className=\"fa fa-shopping-cart\"></div>\n\n                                    </div>\n                                </div>\n                            </div></div></div></div>)}\n        </div>\n    )\n}\n\nexport default React.memo(ShoppingCart);\n","import Config from '../res/Config'\nimport Static from '../res/Static'\nimport axios from 'axios'\nconst imgPathDetect = (str) => {\n    let temp = \"\";\n    !str ? str = \"\" : \"\"\n    str.startsWith(\"/\") ? temp = \"\" : temp = \"/\"\n    return temp;\n}\n\nconst generateParam = (id) => {\n    let urlParam = \"?searchCriteria[filterGroups][0][filters][0][field]=store_id\" +\n        \"&searchCriteria[filterGroups][0][filters][0][value]=\" + Config.storeId +\n        \"&searchCriteria[filterGroups][0][filters][0][condition_type]=in\" +\n        \"&searchCriteria[filterGroups][1][filters][0][field]=category_id\" +\n        \"&searchCriteria[filterGroups][1][filters][0][value]=\" + id +\n        \"&searchCriteria[filterGroups][1][filters][0][conditionType]=eq\" +\n        \"&searchCriteria[filterGroups][2][filters][0][field]=status\" +\n        \"&searchCriteria[filterGroups][2][filters][0][value]=1\" +\n        \"&searchCriteria[filterGroups][2][filters][0][conditionType]=in\";\n\n    return urlParam\n}\n\nconst generateProductParam = () => {\n    let urlParam = \"?searchCriteria[filterGroups][0][filters][0][field]=store_id\" +\n        \"&searchCriteria[filterGroups][0][filters][0][value]=\" + Config.storeId +\n        \"&searchCriteria[filterGroups][0][filters][0][condition_type]=in\" +\n        \"&searchCriteria[filterGroups][1][filters][0][field]=status\" +\n        \"&searchCriteria[filterGroups][1][filters][0][value]=1\" +\n        \"&searchCriteria[filterGroups][1][filters][0][conditionType]=in\";\n\n    return urlParam\n}\n\nconst waFire = () => {\n    try {\n        if (Config.pageFireCount > 0) {\n            WATracker.trackPageView('membership');\n        }\n        Config.pageFireCount++;\n    } catch (e) { }\n}\n\nconst waFireClick = (wa_id) => {\n    try {\n        WATracker.trackClickEvent(wa_id);\n    } catch (e) { }\n}\n\nconst waNonStandardFire = (code) => {\n    try {\n        WATracker.trackClickEvent(code)\n    } catch (e) { }\n}\n\nconst updateShoppingCart = (data, discountData, hamperIds) => {\n    let matchItem = {}\n    let totalDiscount = 0,\n        totalPayable = 0,\n        totalCount = 0,\n        totalAmount = 0;\n    data.map((value) => {\n        matchItem = getMatchItem(discountData.items, value.item_id)\n        totalDiscount += matchItem.discount_amount;\n        totalAmount += value.price * value.qty;\n        totalCount += value.qty;\n    })\n    totalPayable = totalAmount - totalDiscount;\n    return {\n        totalDiscount: priceFormat(totalDiscount),\n        totalPayable: priceFormat(totalPayable),\n        totalCount,\n        totalAmount: priceFormat(totalAmount)\n    }\n}\n\nconst formatter = new Intl.NumberFormat('en-US', {\n    minimumFractionDigits: 2\n})\n\nconst priceFormat = (price) => {\n    return formatter.format(Number(price))\n\n}\n\nconst getMatchItem = (data, item_id) => {\n    let item = {}\n    data.map((value) => {\n        value.item_id == item_id ? item = value : \"\"\n    })\n    return item;\n}\n\nconst addZeroes = (num) => {\n    let value = Number(num);\n    value = value.toFixed(2);\n    return value;\n}\n\nfunction insertItem(array, action) {\n    let newArray = array.slice();\n    newArray.splice(action.index, 0, action.item);\n    return newArray;\n}\n\nfunction removeItem(array, action) {\n    let newArray = array.slice();\n    newArray.splice(action.index, 1);\n    return newArray;\n}\n\nfunction specificQty(data, sku) {\n    let qty = 0;\n    $(data).map(value => {\n        value.sku == sku ? qty = value.qty : \"\"\n    })\n    return qty;\n}\n\n\nfunction getCustomAttribute(value, key) {\n    let data = \"\";\n    value.custom_attributes ? value.custom_attributes.map((value) => {\n        value.attribute_code == key ? data = value.value : \"\"\n    }) : \"\"\n    return data;\n}\n\nfunction getMediaAttribute(value, key) {\n    let data = \"\";\n    value.media_gallery_entries ? value.media_gallery_entries.map((value, index) => {\n        index == 0 ? data = value.disabled : \"\"\n    }) : \"\"\n    return data;\n}\n\nconst resetInputValue = (id, value) => {\n    document.getElementById(id).value = value\n}\n\nconst resetInputQtyField = () => {\n    $(\"#root input\").val(0)\n}\n\nconst generateOtherLangParam = (id) => {\n    let storeId = 8;\n    if (lang == \"en\") {\n        storeId = 9;\n    }\n    let urlParam = \"?searchCriteria[filterGroups][0][filters][0][field]=store_id\" +\n        \"&searchCriteria[filterGroups][0][filters][0][value]=\" + storeId +\n        \"&searchCriteria[filterGroups][0][filters][0][condition_type]=in\" +\n        \"&searchCriteria[filterGroups][1][filters][0][field]=status\" +\n        \"&searchCriteria[filterGroups][1][filters][0][value]=1\" +\n        \"&searchCriteria[filterGroups][1][filters][0][conditionType]=in\";\n\n    return urlParam\n}\n\nfunction getProductCustomAttribute(value, mkey) {\n    let data = \"\";\n    let customattributes = value.custom_attributes\n    if (customattributes) {\n        Object.keys(customattributes).forEach(function (key) {\n            if (customattributes[key].attribute_code == mkey) {\n                data = customattributes[key].value\n            }\n        })\n    }\n    return data;\n}\n\nconst getOtherInfoBySKU = (sku, value) => {\n    if (sku && !value.othername && !value.requestother) {\n        value.requestother = 1;\n        let urlBasicParam = generateOtherLangParam(43) +\n            \"&searchCriteria[filterGroups][2][filters][0][field]=sku\" +\n            \"&searchCriteria[filterGroups][2][filters][0][value]=\" + encodeURIComponent(sku) +\n            \"&searchCriteria[filterGroups][2][filters][0][conditionType]=eq\" +\n            \"&fields=items[id,sku,name,custom_attributes[short_description]]\";\n        axios.get(\n            Config.productDomain + urlBasicParam)\n            .then(res => {\n                value.othername = sku\n                if (res.data.items) {\n                    let mCnt = 0;\n                    res.data.items.map((myvalue) => {\n                        if (mCnt == 0) {\n                            let shortdescription = getProductCustomAttribute(myvalue, \"short_description\")\n                            if (shortdescription) {\n                                value.otherdescription = shortdescription\n                            }\n                            let pName = myvalue.name\n                            if (pName) {\n                                value.othername = pName\n                            }\n                        }\n                        mCnt++\n                    })\n                }\n            })\n            .catch(error => {\n                value.requestother = 0\n                let sDescription = \"\"\n                if (value.description) {\n                    sDescription = value.description\n                }\n                let sName = sku\n                if (value.name) {\n                    sName = value.name\n                }\n                value.otherdescription = sDescription\n                value.othername = sName\n                console.log(error);\n            })\n    }\n}\n\nconst setShoppingCartTop = (e) => {\n    if (document.getElementsByClassName(\"shoppingCartWrap\").length > 0) {\n        let shoppingCartEl = document.getElementsByClassName(\"shoppingCart\")[0]\n        let windowHeight = window.innerHeight\n        let detailInfo = document.getElementsByClassName(\"shoppingCartWrap\")[0].getBoundingClientRect()\n        if (detailInfo.height + detailInfo.top > windowHeight) {\n            shoppingCartEl.style.top = (windowHeight - detailInfo.top - 180) + \"px\"\n        } else {\n            shoppingCartEl.style.top = (detailInfo.height - 180) + \"px\"\n        }\n    }\n}\n\nconst compareQty = (items) => {\n    let flag = false;\n    items ? items.map((value) => {\n        $(\".input-text[data-itemid='\" + value.item_id + \"']\").val() != value.qty ? flag = $(\".input-text[data-itemid='\" + value.item_id + \"']\").attr(\"data-group\") : \"\"\n\n    }) : \"\"\n    return flag\n}\n\nconst skuFilter = (sku) => {\n    return sku.split(Config.skuSeparator)[0]\n}\n\nconst checkVersion = () => {\n    var agent = window.navigator.userAgent,\n        start = agent.indexOf('OS ');\n    if ((agent.indexOf('iPhone') > -1 || agent.indexOf('iPad') > -1) && start > -1) {\n        return window.Number(agent.substr(start + 3, 3).replace('_', '.'));\n    }\n    return 0;\n}\n\nconst encodeParam = (value) => {\n    let tempValue = (value && value != \"\" ? encodeURIComponent(value) : value)\n    return tempValue\n}\n\nconst formatPrice = (mprice) => {\n    let price = mprice;\n    if (mprice) {\n        try {\n            let n = String(mprice),\n                p = n.indexOf('.')\n            price = n.replace(\n                /\\d(?=(?:\\d{3})+(?:\\.|$))/g,\n                (m, i) => p < 0 || i < p ? `${m},` : m\n            )\n        } catch (err) {\n            price = mprice\n        }\n    }\n    return price;\n}\n\nconst extractSubMenuObject = (id) => {\n    let obj = {}\n    Config.menu.map(subMenu => {\n        subMenu.subCat.map(v => {\n            v.ids.map(subIds => {\n                subIds.id == id ? obj = v : \"\"\n            })\n        })\n    })\n\n    return obj\n}\n\nconst extractType = (id) => {\n    let type = \"\"\n    Config.menu.map(subMenu => {\n        subMenu.subCat.map(v => {\n            v.ids.map(subIds => {\n                subIds.id == id ? type = v.type : \"\"\n            })\n        })\n    })\n    return type\n}\n\nconst extractSubType = (id) => {\n    let type = \"\"\n    Config.menu.map(subMenu => {\n        subMenu.subCat.map(v => {\n            v.ids.map(subIds => {\n                subIds.id == id ? type = subIds.type : \"\"\n            })\n        })\n    })\n    return type\n}\n\nconst parentMenu = (id) => {\n    let menuId = 156\n    Config.menu.map(subMenu => {\n        subMenu.subCat.map(v => {\n            v.ids.map(subIds => {\n                subIds.id == id ? menuId = subMenu.id : \"\"\n            })\n        })\n    })\n    return menuId\n}\n\nconst activeCat = (cats) => {\n    let result = []\n    cats.map(c => {\n        c.is_active ? result.push(c) : \"\"\n    })\n    return result\n}\n\nconst extractIdsByType = (menu, type) => {\n    let ids = []\n    Config.menu.map(subMenu => {\n        if (subMenu.id == menu) {\n            subMenu.subCat.map(v => {\n                v.ids.map(subIds => {\n                    subIds.type == type ? ids.push(subIds.id) : \"\"\n                })\n            })\n        }\n    })\n    return ids\n}\n\nexport default {\n    imgPathDetect,\n    generateParam,\n    generateProductParam,\n    waFire,\n    waFireClick,\n    waNonStandardFire,\n    priceFormat,\n    getMatchItem,\n    updateShoppingCart,\n    insertItem,\n    removeItem,\n    specificQty,\n    getCustomAttribute,\n    getMediaAttribute,\n    resetInputValue,\n    resetInputQtyField,\n    getOtherInfoBySKU,\n    setShoppingCartTop,\n    compareQty,\n    skuFilter,\n    checkVersion,\n    encodeParam,\n    formatPrice,\n    extractSubMenuObject,\n    extractType,\n    extractSubType,\n    parentMenu,\n    activeCat,\n    extractIdsByType\n}","\nconst handleAddQty = (e) => {\n    let mId = e.currentTarget.getAttribute('data-id');\n    let mVal = parseInt(document.querySelector('#' + mId).value);\n    if (mVal >= 0 && mVal < 99) {\n        document.querySelector('#' + mId).value = mVal + 1;\n    }\n    $('document').find('#' + mId).trigger('change');\n}\n\nconst handleMinusQty = (e) => {\n    let mId = e.currentTarget.getAttribute('data-id');\n    let mVal = parseInt(document.querySelector('#' + mId).value);\n    if (mVal > 0) {\n        document.querySelector('#' + mId).value = mVal - 1;\n    }\n    $('document').find('#' + mId).trigger('change');\n}\n\nconst handleMaxLengthCheck = (e) => {\n    if (e.currentTarget.value.length > e.currentTarget.maxLength) {\n        e.currentTarget.value = e.currentTarget.value.slice(0, e.currentTarget.maxLength)\n    }\n}\n\nconst validateMinimunOrder = () => {\n    let result = []\n    var nodes = document.querySelectorAll('.catItemsRow .qty-wrapper input');\n    for (var i = 0; i < nodes.length; i++) {\n        nodes[i].value > 0 ? result.push({\n            sku: nodes[i].dataset.sku,\n            qty: nodes[i].value\n        }) : \"\"\n    }\n    return result\n}\n\nconst resetInputQtyField = (sku) => {\n    $(\"input[data-sku='\" + sku + \"']\").val(0)\n}\n\n\nconst generateCartObject = (cartId, sku, qty) => {\n    return {\n        cart_item: {\n            quote_id: cartId,\n            sku: sku,\n            qty: qty\n        }\n    }\n}\n\nconst generateCheckoutObject = (cartId, itemId, qty) => {\n    return {\n        cart_item: {\n            quote_id: cartId,\n            item_id: itemId,\n            qty: qty\n        }\n    }\n}\n\nexport default {\n    handleAddQty,\n    handleMinusQty,\n    handleMaxLengthCheck,\n    validateMinimunOrder,\n    resetInputQtyField,\n    generateCartObject,\n    generateCheckoutObject\n}","import React from 'react';\nimport { useSelector } from 'react-redux'\nimport Static from '../../res/Static'\nfunction Loading() {\n    const loadingStatus = useSelector(state => state.loading.loadingStatus);\n    return (\n        <div className={\"loading \" + (loadingStatus ? \"show\" : \"\")}>\n            <img src={Static.loading} />\n        </div>\n    )\n}\n\nexport default React.memo(Loading);","import React from 'react';\nimport { useSelector, useDispatch } from 'react-redux'\nimport Static from '../res/Static'\n\nfunction ShoppingStatus() {\n    const successStatus = useSelector(state => state.product.successStatus);\n    const failStatus = useSelector(state => state.product.failStatus);\n    //const outofStockStatus = useSelector(state => state.product.outofStockStatus);\n\n    return (\n        <>\n            <div id=\"messages_product_view\"><ul className=\"messages\">\n                <li className={\"success-msg \" + (successStatus ? \"show\" : \"hidden\")}><ul><li><span>{Static.addedSuccess}</span></li></ul></li></ul></div>\n            <div id=\"messages_product_view\"><ul className=\"messages\">\n                <li className={\"error-msg \" + (failStatus ? \"show\" : \"hidden\")}><ul><li><span>{Static.addedFail}</span></li></ul></li></ul></div>\n            {/* <div id=\"messages_product_view\"><ul className=\"messages\">\n                <li className={\"error-msg \" + (outofStockStatus ? \"show\" : \"hidden\")}><ul><li><span>{Static.outofStockFail}</span></li></ul></li></ul></div> */}\n        </>\n    )\n}\n\nexport default React.memo(ShoppingStatus);","import React, { useEffect } from 'react';\nimport { useSelector, useDispatch } from 'react-redux'\nimport allActions from '../actions'\nimport Static from '../res/Static'\nimport { Link, useHistory } from 'react-router-dom';\nimport Config from '../res/Config';\nimport CommonTools from '../api/CommonTools';\nimport Menu from '../api/Menu';\nimport WACode from '../res/WACode';\n\nfunction Tab(props) {\n    const { catId } = props;\n    const dispatch = useDispatch();\n    const history = useHistory();\n\n    const menu = useSelector(state => state.global.menu);\n    const activeTab = useSelector(state => state.global.activeTab);\n\n    function getData() {\n        return async dispatch => {\n            let allIds = [];\n            let tempIds = [];\n            CommonTools.extractSubMenuObject(catId).ids.map(subIds => {\n                allIds.push(subIds.id)\n            })\n            let allStatus = await Menu.categoryAllStatus(allIds);\n            allStatus ? allStatus.forEach(v => {\n                if (v) {\n                    if (v.is_active) {\n                        tempIds.push(v)\n                    }\n                }\n            }) : \"\"\n            dispatch(allActions.globalAction.setActiveTab(tempIds))\n        }\n    }\n\n    useEffect(() => {\n        dispatch(getData());\n    }, [catId, menu]);\n\n    const handleSwitchTab = (e) => {\n        let link = e.currentTarget.getAttribute(\"data-link\")\n        let type = e.currentTarget.getAttribute(\"data-type\")\n        let code = \"\"\n        switch (type) {\n            case 'set':\n                code = WACode.setTab\n                break;\n            case 'simple':\n                code = WACode.simpleTab\n                break;\n            case 'special':\n                code = WACode.specialTab\n                break;\n            default:\n                code = WACode.setTab\n        }\n        CommonTools.waFireClick(code)\n        history.push(link)\n    }\n\n    return (<div className=\"row switchCatTab\">\n        <ul className=\"nav nav-tabs \">\n            {activeTab ? activeTab.map(v => {\n                return (\n                    <li onClick={handleSwitchTab}\n                        data-type={CommonTools.extractSubType(v.id)}\n                        data-link={\"/\" + CommonTools.extractSubType(v.id) + \"/\" + v.id}>\n                        <a className={catId == v.id ? \"active\" : \"\"}>{v.name}</a>\n                    </li>\n                )\n            }) : \"\"}\n        </ul>\n        {/*<div className=\"nav-tabs-mobile visible-xs\">\n            <select onChange={switchTab}>\n                <option value=\"default\">{Static.pleaseSelect}</option>\n                {activeTab ? activeTab.map(v => {\n                    <option value={\"/\" + CommonTools.extractSubType(v.id) + \"/\" + v.id} data-wa={v.id}>{v.name}</option>\n                }) : \"\"\n                }\n            </select>\n            </div>*/}\n    </div>\n    )\n}\n\nexport default React.memo(Tab);","import React, { useEffect } from 'react';\nimport allActions from '../../actions'\nimport { useSelector, useDispatch } from 'react-redux'\nimport Static from '../../res/Static'\nfunction Disable() {\n    const dispatch = useDispatch();\n    useEffect(() => {\n        dispatch(allActions.loadingAction.changeLoading(false))\n    }, []);\n\n    return (\n        <div className=\"row DisableMessage\">\n            <div className=\"col-md-12\">\n                {Static.disable}\n            </div>\n        </div>\n    )\n}\n\nexport default React.memo(Disable);"],"sourceRoot":""}