{"version":3,"sources":["reducers/products.js","reducers/interPrice.js","reducers/solutions.js","reducers/platforms.js","reducers/marketPlace.js","reducers/filter.js","reducers/cartPreview.js","reducers/cart.js","reducers/cartMenu.js","reducers/mobileFilter.js","reducers/hubs.js","reducers/rootReducer.js","store.js","actions/productActions.js","actions/filterActions.js","actions/cartActions.js","data/TestComplete.js","assets/TestComplete-Logo.svg","data/AQTimePro.js","assets/AQTimePro-Logo.svg","data/TestLeft.js","assets/TestLeft-Logo.svg","data/ReadyAPI.js","assets/ReadyAPI-Logo.svg","data/Collaborator.js","assets/Collaborator-Logo.svg","data/TestExecute.js","assets/TestExecute-Logo.svg","data/products.js","utils/priceHelper.js","components/common/InterPrice/InterPrice.jsx","containers/common/InterPrice/InterPrice.js","components/home/Card.jsx","components/home/AddonCard.jsx","components/home/Filter.jsx","containers/home/Filter.js","components/home/MobileFilter.jsx","components/home/LeftMenu.jsx","utils/htmlCleaner.js","components/header/CartIcon/CartIcon.jsx","containers/header/CartIcon.js","assets/SmartBear-Logo.svg","components/header/ContactChat/ContactChat.jsx","components/header/Header/Header.jsx","components/common/Loader/Loader.jsx","components/common/CartCheckout/CartCheckout.jsx","containers/common/CartCheckout.js","components/common/CartCookie/CartCookie.jsx","containers/common/CartCookie.js","components/common/CartPreview/CartPreviewItem.jsx","components/common/CartReview/CartReview.jsx","containers/common/CartReview.js","components/common/CartSubtotal/CartSubtotal.jsx","containers/common/CartSubtotal.js","components/common/CartMenu/CartMenu.jsx","containers/common/CartMenu.js","components/footer/footer.js","config.js","pages/templates/DefaultTemplate.jsx","containers/templates/DefaultTemplate.js","pages/HomePage.jsx","containers/home/HomePage.js","components/common/Breadcrumb/Breadcrumb.jsx","pages/CartReviewPage.jsx","containers/CartReviewPage.js","actions/cartPreviewActions.js","components/common/CartPreview/CartPreview.jsx","containers/common/CartPreview.js","pages/templates/ProductTemplate.jsx","components/common/SaleItem/SaleItem.jsx","components/common/AddonList/AddonList.jsx","pages/products/TestCompletePage.jsx","containers/TestCompletePage.js","pages/products/AQTimePage.jsx","containers/AQTimePage.js","pages/products/TestLeftPage.jsx","containers/TestLeftPage.js","pages/products/CollaboratorPage.jsx","containers/CollaboratorPage.js","pages/products/TestExecutePage.jsx","containers/TestExecutePage.js","components/common/SaleItemRadio/SaleItemRadio.jsx","pages/products/ReadyAPIPage.jsx","containers/ReadyAPIPage.js","assets/sb_404.svg","pages/NotFoundPage.jsx","index.js"],"names":["initialState","isReady","products","addons","activeIndex","interPrice","region","solutions","platforms","marketPlaces","filterBy","selectedItems","cartPreviewProducts","cartProducts","cartProductsAdded","isCheckout","show","hubs","combineReducers","state","action","type","payload","filter","i","length","Object","getOwnPropertyNames","id","splice","cartPreview","cart","forEach","payloadProduct","product","cartProduct","count","push","cartMenu","mobileFilter","middleware","thunk","setProducts","setAddons","setInterPrice","interprice","setRegion","setQueryProducts","setSolutions","setPlatforms","setMarketPlaces","setHubs","setSort","sort","setFilter","area","clearFilters","clearFilter","mobileFilterShow","mobileFilterHide","cartAddProducts","cartUpdateProducts","cartDeleteProductByIDs","productIds","cartDeleteProducts","cartCheckout","cartMenuShow","cartMenuHide","cartResetProductsAdded","TestCompleteConfig","name","url","icoClassName","ico","saleitems","floating","title","licenseType","description","price","nodeLocked","AQTimeConfig","TestLeftConfig","ReadyAPIConfig","performance","test","virtualization","CollaboratorConfig","TestExecuteConfig","this","a","b","localeCompare","interprices","Array","isArray","items","item","assign","productName","productIcon","concat","map","saleitem","indexOf","ids","split","prefixId","slice","platform","si","substring","currency","displayPrice","toString","substr","currentPrice","indexDot","parseInt","replace","value","ProductCode","getCurrency","prettyPrice","cartTotalPrice","ProductStore","isTestComplete","getTestCompleteSaleitems","itemCount","resolvePrice","getItemPrice","InterPrice","props","priceHelper","connect","dispatch","bindActionCreators","productActions","analyticsClick","Card","Content","className","LinkToPricing","href","target","rel","onClick","Name","IconCSSClass","to","Url","Description","Price","LearnMoreLink","addon","DocumentName","Filter","Menu","secondary","position","selectedItem","key","bind","Input","icon","iconPosition","placeholder","onChange","e","filterActions","MobileFilter","overlay","createRef","handleClick","ReactGA","event","category","label","document","body","style","overflow","current","classList","remove","add","ref","onAnalyticsSend","Component","withRouter","LeftMenu","handleChange","data","areaid","handleFilter","el","ProductCount","disabled","HubForm","hub","filtCount","Hubs","includes","isChecked","toLowerCase","filteredHubs","Form","Group","grouped","Checkbox","checked","SolutionForm","solution","Solutions","filteredSolutions","PlatformsForm","Platforms","filteredPlatforms","MarketPlacesForm","marketPlace","MarketPlaces","MarketPlace","filteredMarketPlaces","ProductAddonsForm","productsConfig","ProductsStore","getProducts","prod","ProductAddons","filteredProducts","fluid","vertical","Item","Accordion","active","content","mapDispatchToProps","html","div","createElement","innerHTML","textContent","innerText","CartIcon","showMenu","cnt","cartActions","ContactChat","chatEnabled","openSidebar","driftApi","preventDefault","sidebar","open","fn","self","drift","on","api","selector","elements","querySelectorAll","forEachElement","addEventListener","setState","readyState","attachEvent","Header","src","imgLogo","Loader","Helmet","CartCheckout","isLoading","checkoutUrl","checkoutCount","checkout","updateRemoteCart","resetRemoteCart","prevProps","callback","script","Date","getTime","onreadystatechange","onload","getElementsByTagName","appendChild","query","urlDefaultLanguageCurrentcy","window","location","search","CartCookie","cookieName","updateCookie","updateCart","setCookie","join","sbcart","getCookie","pairs","pair","getSaleItemById","matches","cookie","match","RegExp","decodeURIComponent","date","toUTCString","CartPreviewItem","onChangeCount","onChangeCheckbox","resolveProducts","getSaleItems","countPickerDisabled","priceDisabled","checkboxDisabled","htmlFor","NumberPicker","defaultValue","min","max","CartReview","cartItems","cartItem","j","onChangeItem","CartSubtotal","totalPrice","getTotalPrice","CartMenu","React","sidebarMenu","sidebarContent","sidebarHeader","sidebarFooter","onClickClose","onClickCheckout","onClickViewCart","handleResize","history","height","innerHeight","headerHeight","footerHeight","setTimeout","isCartEmpty","addedItemsCount","footer","fill","viewBox","width","xmlns","d","fillOpacity","clipPath","class","transform","clipRule","fillRule","apis","staging","regionUrl","interpriceUrl","productsUrl","solutionsUrl","platformsUrl","marketPlaceUrl","hubsUrl","production","local","currentEnv","hostname","config","env","DefaultTemplate","fetchData","axios","get","then","response","customtableitem_sb_InternationalPricings","sb_InternationalPricing","zone","children","HomePage","updateDimensions","innerWidth","contextRef","setupFilter","currentProduct","searchObj","queryString","parse","htmlCleaner","productAddons","customtableitem_sb_Products","sb_Products","getAddons","customtableitem_sb_ProductSolutions","sb_ProductSolutions","customtableitem_sb_ProductMarketPlaces","sb_ProductMarketplace","customtableitem_sb_ProductPlatforms","sb_ProductPlatforms","customtableitem_sb_ProductHubs","sb_ProductHubs","updateHistory","queryParams","solutionParams","platformParams","marketPlaceParams","queryProducts","productAddonsParams","hubsParams","QueryProducts","pathname","process","removeEventListener","allProducts","integrations","technologies","Container","Grid","doubling","stackable","columns","Ref","innerRef","Row","stretched","Column","Sticky","context","offset","onAnalyticsEventClick","itemsPerRow","AddonCard","productsChanged","filteringProducts","filterProductsResult","o","trim","filterProducts","orderBy","sortByProducts","filteringAddons","filterAddonsResult","addonsChanged","filterAddons","sortByAddons","Breadcrumb","step","CartReviewPage","removeItemIds","onClickRemove","oldTCBaseId","newTCBaseId","newTCBaseCount","modules","module","cartPreviewAddProducts","cartPreviewDeleteProducts","CartPreview","onChangeItemCount","onClickCartAdd","onClickCartBuy","tmp","subTotalItems","cartPreviewActions","ProductTemplate","place","arrowColor","SaleItem","handleClickCallback","cssChecked","cssClassName","cssDisabled","information","AddonList","isOpen","selectedIds","options","handleAddonChange","option","TestCompletePage","platformType","moduleDesktopChecked","moduleMobileChecked","moduleWebChecked","moduleErrorMessage","addonIds","handleLicenseChange","handlePlatformChange","handleModuleChange","getProductByUrl","updateSelection","isPro","exists","idx","previewSaleItems","s","platformDisabled","moduleDisabled","moduleDesktopPrice","moduleMobilePrice","moduleWebPrice","saletime","addonOptions","AQTimePage","moduleFloatingChecked","moduleNodeLockedChecked","Ids","TestLeftPage","CollaboratorPage","TestExecutePage","SaleItemRadio","selectedId","titleRemove","itemName","itemChecked","ReadyAPIPage","saleitemsIds","testSaleitemId","perfSaleitemId","virtSaleitemId","handleSalesItemsChange","handleClearSelection","saleitemId","selectedAddons","selectedModules","saleItem","selectedLicenceType","NotFoundPage","Fragment","sb_404","alt","store","createStore","rootReducer","applyMiddleware","createBrowserHistory","listen","scrollTo","top","behavior","initialize","trackingId","gaOptions","debug","titleCase","alwaysSendToDefaultTracker","ReactDOM","render","basename","exact","path","component","PageNotFound","getElementById"],"mappings":"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","file":"static/js/main.06ebcabd.chunk.js","sourcesContent":["const initialState = {\n isReady: false,\n products: null,\n addons: null,\n activeIndex: 0\n};\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case \"SET_ADDONS\":\n return {\n ...state,\n addons: action.payload,\n //isReady: true\n };\n case \"SET_PRODUCTS\":\n return {\n ...state,\n products: action.payload,\n isReady: true\n };\n case \"SET_FILT_AREA\":\n return {\n ...state,\n activeIndex: action.payload\n };\n default:\n return state;\n }\n};\n","const initialState = {\n interPrice: null,\n region: null\n };\n \n export default (state = initialState, action) => {\n switch (action.type) {\n case \"SET_INTER_PRICE\":\n return {\n ...state,\n interPrice: action.payload,\n };\n case \"SET_REGION\":\n return {\n ...state,\n region: action.payload,\n }\n default:\n return state;\n }\n };","const initialState = {\n solutions: null,\n };\n \n export default (state = initialState, action) => {\n switch (action.type) {\n case \"SET_SOLUTIONS\":\n return {\n ...state,\n solutions: action.payload,\n };\n default:\n return state;\n }\n };\n ","const initialState = {\n platforms: null,\n };\n \n export default (state = initialState, action) => {\n switch (action.type) {\n case \"SET_PLATFORMS\":\n return {\n ...state,\n platforms: action.payload,\n };\n default:\n return state;\n }\n };\n ","const initialState = {\n marketPlaces: null,\n };\n \n export default (state = initialState, action) => {\n switch (action.type) {\n case \"SET_MARKETPLACES\":\n return {\n ...state,\n marketPlaces: action.payload,\n };\n default:\n return state;\n }\n };\n ","const initialState = {\n filterBy: \"\",\n selectedItems: []\n};\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case \"SET_SORT\":\n return {\n ...state,\n filterBy: action.payload\n };\n\n case \"SET_FILTER\":\n\n // remove filter\n for (let i = 0; i< state.selectedItems.length; i++) {\n // if ((Object.getOwnPropertyNames(state.selectedItems[i])[0] === action.id) && (state.selectedItems[i][action.id].name === action.payload.name)) {\n if ((Object.getOwnPropertyNames(state.selectedItems[i])[0] === action.id) && (state.selectedItems[i][action.id]===(action.payload))) {\n state.selectedItems.splice(i,1);\n return {\n ...state,\n selectedItems: [...state.selectedItems]\n }\n }\n }\n\n // add filter\n return {\n ...state,\n selectedItems: [...state.selectedItems, {[action.id]: action.payload }]\n }\n\n case \"CLEAR_FILTERS\":\n return {\n ...state,\n selectedItems: []\n };\n\n case \"CLEAR_FILTER\":\n state.selectedItems.splice(action.payload,1);\n return {\n ...state,\n selectedItems: [...state.selectedItems]\n }\n\n default:\n return state;\n }\n};\n","const initialState = {\n cartPreviewProducts: []\n};\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case \"CARTPREVIEW_ADD_PRODUCTS\":\n return {\n ...state,\n cartPreviewProducts: action.payload\n };\n case \"CARTPREVIEW_DELETE_PRODUCTS\":\n return {\n ...state,\n cartPreviewProducts: action.payload\n }; \n default:\n return state;\n }\n};\n","const initialState = {\n cartProducts: [],\n cartProductsAdded: [],\n isCheckout: false\n};\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case \"CART_ADD_PRODUCTS\":\n\n let products = [... state.cartProducts];\n\n action.payload.forEach(payloadProduct => {\n\n let product = null;\n products.forEach(cartProduct => {\n if (cartProduct.product.id === payloadProduct.product.id) {\n product = cartProduct;\n }\n });\n\n if (product) {\n product.count = product.count || 1;\n payloadProduct.count = payloadProduct.count || 1;\n\n product.count += payloadProduct.count;\n } else {\n product = payloadProduct;\n\n products.push(product);\n }\n \n });\n\n return {\n ...state,\n cartProducts: products,\n cartProductsAdded: [... action.payload]\n };\n\n case \"CART_UPDATE_PRODUCTS\":\n return {\n ...state,\n cartProducts: action.payload\n }; \n\n case \"CART_DELETE_PRODUCTS\":\n\n let cartProducts = [... state.cartProducts];\n\n action.payload.forEach(id => {\n cartProducts = cartProducts.filter(cartProduct=> cartProduct.product.id !== id);\n });\n\n return {\n ...state,\n cartProducts: cartProducts\n }; \n\n case \"CART_DELETE_ALL_PRODUCTS\":\n return {\n ...state,\n cartProducts: []\n }; \n\n case \"CART_CHECKOUT\":\n return {\n ...state,\n cartProducts: state.cartProducts,\n isCheckout: action.payload\n }; \n\n case \"CART_RESET_ADDED_PRODUCTS\":\n return {\n ...state,\n cartProductsAdded: action.payload\n }; \n\n default:\n return state;\n }\n};\n","const initialState = {\n show: false\n};\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case \"CART_MENU_SHOW\":\n return {\n ...state,\n show: action.payload\n };\n\n case \"CART_MENU_HIDE\":\n return {\n ...state,\n show: action.payload\n };\n\n default:\n return state;\n }\n};\n","const initialState = {\n show: false\n};\n\nexport default (state = initialState, action) => {\n switch (action.type) {\n case \"MOBILE_FILTER_SHOW\":\n return {\n ...state,\n show: action.payload\n };\n\n case \"MOBILE_FILTER_HIDE\":\n return {\n ...state,\n show: action.payload\n };\n\n default:\n return state;\n }\n};","const initialState = {\n hubs: null,\n };\n \n export default (state = initialState, action) => {\n switch (action.type) {\n case \"SET_HUBS\":\n return {\n ...state,\n hubs: action.payload,\n };\n default:\n return state;\n }\n };\n ","import { combineReducers } from 'redux';\n\nimport products from './products';\nimport interPrice from './interPrice';\n//import addons from './addons';\nimport solutions from './solutions';\nimport platforms from './platforms';\nimport marketPlaces from './marketPlace';\nimport filter from './filter';\nimport cartPreview from './cartPreview';\nimport cart from './cart';\nimport cartMenu from './cartMenu';\nimport mobileFilter from './mobileFilter';\nimport hubs from './hubs';\n\nexport default combineReducers({\n interPrice,\n products,\n solutions,\n platforms,\n marketPlaces,\n filter,\n cartPreview,\n cart,\n cartMenu,\n mobileFilter,\n hubs\n});","import { createStore, applyMiddleware } from 'redux';\nimport thunk from 'redux-thunk';\nimport logger from 'redux-logger';\nimport rootReducer from './reducers/rootReducer';\n\nlet middleware = [];\n\nif(process.env.NODE_ENV === 'development'){\n middleware = [...middleware, thunk, logger];\n}else{\n middleware = [...middleware, thunk];\n}\n\nexport default () => {\n return createStore (rootReducer, \n applyMiddleware(...middleware));\n}\n","export const setProducts = products => ({\n type: \"SET_PRODUCTS\",\n payload: products\n});\n\nexport const setAddons = addons => ({\n type: \"SET_ADDONS\",\n payload: addons\n});\n\nexport const setInterPrice = interprice => ({\n type: \"SET_INTER_PRICE\",\n payload: interprice\n});\n\nexport const setRegion = region => ({\n type: \"SET_REGION\",\n payload: region\n});\n\nexport const setQueryProducts = products => ({\n type: \"SET_QUERY_PRODUCTS\",\n payload: products\n});\n\n// export const setFiltArea = area => ({\n// type: \"SET_FILT_AREA\",\n// payload: area\n// });\n\nexport const setSolutions = solutions => ({\n type: \"SET_SOLUTIONS\",\n payload: solutions\n});\n\nexport const setPlatforms = platforms => ({\n type: \"SET_PLATFORMS\",\n payload: platforms\n});\n\nexport const setMarketPlaces = marketPlaces => ({\n type: \"SET_MARKETPLACES\",\n payload: marketPlaces\n});\n\nexport const setHubs = hubs => ({\n type: \"SET_HUBS\",\n payload: hubs\n});\n","export const setSort = sort => ({\n type: 'SET_SORT',\n payload: sort,\n})\n\nexport const setFilter = (filter, area) => ({\n type: 'SET_FILTER',\n id: area,\n payload: filter,\n})\n\nexport const clearFilters = (filter) => ({\n type: 'CLEAR_FILTERS',\n payload: filter, \n})\n\nexport const clearFilter = (filter) => ({\n type: 'CLEAR_FILTER',\n payload: filter, \n})\n\nexport const mobileFilterShow = () => ({\n type: \"MOBILE_FILTER_SHOW\",\n payload: true\n });\n \n export const mobileFilterHide = () => ({\n type: \"MOBILE_FILTER_HIDE\",\n payload: false\n });","export const cartAddProducts = products => ({\n type: \"CART_ADD_PRODUCTS\",\n payload: products\n});\n\nexport const cartUpdateProducts = products => ({\n type: \"CART_UPDATE_PRODUCTS\",\n payload: products\n});\n\nexport const cartDeleteProductByIDs = productIds => ({\n type: \"CART_DELETE_PRODUCTS\",\n payload: productIds\n});\n\nexport const cartDeleteProducts = () => ({\n type: \"CART_DELETE_ALL_PRODUCTS\",\n payload: []\n});\n\nexport const cartCheckout = () => ({\n type: \"CART_CHECKOUT\",\n payload: true\n});\n\nexport const cartMenuShow = () => ({\n type: \"CART_MENU_SHOW\",\n payload: true\n});\n\nexport const cartMenuHide = () => ({\n type: \"CART_MENU_HIDE\",\n payload: false\n});\n\nexport const cartResetProductsAdded = () => ({\n type: \"CART_RESET_ADDED_PRODUCTS\",\n payload: []\n});\n","import icon from '../assets/TestComplete-Logo.svg';\n\nconst TestCompleteConfig = {\n name: \"TestComplete\",\n url: \"testcomplete\",\n icoClassName: \"tc\",\n ico: icon,\n saleitems: {\n floating: [{\n id: \"testcomplete-floating-pro\",\n title: \"TestComplete Pro\",\n licenseType: \"Floating License - Subscription\",\n description: \"Includes all the features of the TestComplete Platform with additional Desktop, Web and Mobilde modules.\",\n price: \"{~interprice|TC-PRO-FLC~}\",\n url: \"purl-tcpbfl\"\n },{\n id: \"testcomplete-floating-platform\",\n title: \"TestComplete Base\",\n licenseType: \"Floating License - Subscription\",\n description: \"TestComplete Platfom provides a test IDE with foudational components for automated testing, recording and integration with third-party tools.\",\n price: \"{~interprice|TCP-VXX-FLC~}\",\n url: \"\"\n },{\n id: \"testcomplete-floating-desktop\",\n title: \"Desktop Module\",\n description: \"Create automated UI tests using script-free record-and-playback, or script in languages (e.g. Python, JavaScript, VB.NET).\",\n price: \"{~interprice|TCD-VXX-FLC~}\",\n url: \"purl-TC10PDFL\"\n },{\n id: \"testcomplete-floating-mobile\",\n title: \"Mobile Module\",\n description: \"Separate the UI object identification from the test logic to build stable, easy-to-maintain automated tests. \",\n price: \"{~interprice|TCM-VXX-FLC~}\",\n url: \"purl-TC10PMFL\"\n },{\n id: \"testcomplete-floating-web\",\n title: \"Web Module\",\n description: \"Build robust and stable tests using intelligent object recognition mechanism for dynamic elements and technologies like flex, flash, AJAX, JavaScript, HTML5, and AngularJS.\",\n price: \"{~interprice|TCW-VXX-FLC~}\",\n url: \"purl-TC10PWFL\"\n },{\n id: \"testcomplete-floating-desktop-web\",\n title: \"Desktop + Web Modules\",\n description: \"Includes functionality of the Desktop and Web modules\",\n price: \"{~interprice|TCDW-VXX-FLC~}\",\n url: \"purl-TC10PDWFL\"\n },{\n id: \"testcomplete-floating-desktop-mobile\",\n title: \"Desktop + Mobile Modules\",\n description: \"Includes functionality of the Desktop and Mobile modules\",\n price: \"{~interprice|TCDM-VXX-FLC~}\",\n url: \"purl-TC10PDMFL\"\n },{\n id: \"testcomplete-floating-mobile-web\",\n title: \"Mobile + Web Modules\",\n description: \"Includes functionality of the Mobile and Web modules\",\n price: \"{~interprice|TCWM-VXX-FLC~}\",\n url: \"purl-TC10PWMFL\"\n },{\n id: \"testcomplete-floating-desktop-mobile-web\",\n title: \"Desktop + Web + Mobile Modules\",\n description: \"Includes functionality of the Desktop, Web and Mobile modules\",\n price: \"{~interprice|TCDWM-VXX-FLC~}\",\n url: \"purl-TC10PDWMFL\"\n },{\n id: \"testcomplete-floating-addon-te\",\n title: \"TestExecute Add-on\",\n description: \"Scale TestComplete or TestLeft Tests\",\n price: \"\",\n url: \"\"\n },\n {\n id: \"testcomplete-floating-addon-device-cloud-iq\",\n title: \"Intelligent Quality Add-on\",\n description: \"For access to AI-powered visual recognition, PDF support, and automatic web audits for performance, accessibility and SEO\",\n price: \"\",\n url: \"\"\n }\n ],\n nodeLocked: [{\n id: \"testcomplete-nodeLocked-pro\",\n title: \"TestComplete Pro\",\n licenseType: \"Fixed License - Subscription\",\n description: \"Includes all the features of the TestComplete Platform with additional Desktop, Web and Mobilde modules.\",\n price: \"{~interprice|TC-PRO-NLC~}\",\n url: \"purl-tcpbnl\"\n },{\n id: \"testcomplete-nodeLocked-platform\",\n title: \"TestComplete Base\",\n licenseType: \"Fixed License - Subscription\",\n description: \"TestComplete Platfom provides a test IDE with foudational components for automated testing, recording and integration with third-party tools.\",\n price: \"{~interprice|TCP-VXX-NLC~}\",\n url: \"\"\n },{\n id: \"testcomplete-nodeLocked-desktop\",\n title: \"Desktop Module\",\n description: \"Create automated UI tests using script-free record-and-playback, or script in languages (e.g. Python, JavaScript, VB.NET).\",\n price: \"{~interprice|TCD-VXX-NLC~}\",\n url: \"purl-TC10PDNL\"\n },{\n id: \"testcomplete-nodeLocked-mobile\",\n title: \"Mobile Module\",\n description: \"Separate the UI object identification from the test logic to build stable, easy-to-maintain automated tests. \",\n price: \"{~interprice|TCM-VXX-NLC~}\",\n url: \"purl-TC10PMNL\"\n },{\n id: \"testcomplete-nodeLocked-web\",\n title: \"Web Module\",\n description: \"Build robust and stable tests using intelligent object recognition mechanism for dynamic elements and technologies like flex, flash, AJAX, JavaScript, HTML5, and AngularJS.\",\n price: \"{~interprice|TCW-VXX-NLC~}\",\n url: \"purl-TC10PWNL\"\n },{\n id: \"testcomplete-nodeLocked-desktop-web\",\n title: \"Desktop + Web Modules\",\n description: \"Includes functionality of the Desktop and Web modules\",\n price: \"{~interprice|TCDW-VXX-NLC~}\",\n url: \"purl-TC10PDWNL\"\n },{\n id: \"testcomplete-nodeLocked-desktop-mobile\",\n title: \"Desktop + Mobile Modules\",\n description: \"Includes functionality of the Desktop and Mobile modules\",\n price: \"{~interprice|TCDM-VXX-NLC~}\",\n url: \"purl-TC10PDMNL\"\n },{\n id: \"testcomplete-nodeLocked-mobile-web\",\n title: \"Mobile + Web Modules\",\n description: \"Includes functionality of the Mobile and Web modules\",\n price: \"{~interprice|TCWM-VXX-NLC~}\",\n url: \"purl-TC10PWMNL\"\n },{\n id: \"testcomplete-nodeLocked-desktop-mobile-web\",\n title: \"Desktop + Web + Mobile Modules\",\n description: \"Includes functionality of the Desktop, Web and Mobile modules\",\n price: \"{~interprice|TCDWM-VXX-NLC~}\",\n url: \"purl-TC10PDWMNL\"\n },{\n id: \"testcomplete-nodeLocked-addon-te\",\n title: \"TestExecute Add-on\",\n description: \"Scale TestComplete or TestLeft Tests\",\n price: \"\",\n url: \"\"\n },{\n id: \"testcomplete-nodeLocked-addon-device-cloud-iq\",\n title: \"Intelligent Quality Add-on\",\n description: \"For access to AI-powered visual recognition, PDF support, and automatic web audits for performance, accessibility and SEO\",\n price: \"\",\n url: \"\"\n }]\n },\n addons: [{\n id: \"testcomplete-addon-device-cloud-iq\",\n title: \"Intelligent Quality Add-on\",\n description: \"For access to AI-powered visual recognition, PDF support, and automatic web audits for performance, accessibility and SEO\",\n price: \"{~interprice|TC-IQ-SBN-1Y~}\",\n url: \"purl-TCIQ1YN\"\n },{\n id: \"testcomplete-addon-te\",\n title: \"TestExecute Add-on\",\n description: \"Scale TestComplete or TestLeft Tests\",\n price: \"{~interprice|TXE-VXX-FLC~}\",\n url: \"purl-TX10FL\"\n }\n ]\n}\n\nexport default TestCompleteConfig;","export default __webpack_public_path__ + \"static/media/TestComplete-Logo.f124b967.svg\";","import icon from '../assets/AQTimePro-Logo.svg';\n\nconst AQTimeConfig = {\n name: \"AQTime Pro\",\n url: \"aqtime-pro\",\n icoClassName: \"aqt\",\n ico: icon,\n saleitems: {\n floating: [{\n id: \"aqtime-pro-floating\",\n title: \"AQtime Pro - Floating License\",\n licenseType: \"Floating License\",\n description: \"Floating (Concurrent) License can be activated for different users and machine combinations, but only one at a time and has a floating license key. The number of running instances of the Software or the number of individuals simultaneously having access to the Software may not exceed at any one time the number of floating seats licensed.\",\n price: \"{~interprice|AQP-VXX-FLC-WE~}\",\n url: \"purl-AQTproF\"\n }],\n nodeLocked: [{\n id: \"aqtime-pro-fixed\",\n title: \"AQtime Pro - Fixed License\",\n licenseType: \"Fixed License\",\n description: \"Fixed License can be activated for use of a single instance of the software on a single specified computer or computing device.\",\n price: \"{~interprice|AQP-VXX-NLC-WE~}\",\n url: \"purl-AQTproN\"\n }]\n }\n}\n\nexport default AQTimeConfig;","export default __webpack_public_path__ + \"static/media/AQTimePro-Logo.9ab37464.svg\";","import icon from '../assets/TestLeft-Logo.svg';\n\nconst TestLeftConfig = {\n name: \"TestLeft\",\n url: \"testleft\",\n icoClassName: \"tl\",\n ico: icon,\n saleitems: {\n floating: [{\n id: \"testleft-floating\",\n title: \"TestLeft - Floating License\",\n licenseType: \"Floating License\",\n description: \"Floating (Concurrent) License can be activated for different users and machine combinations, but only one at a time and has a floating license key. The number of running instances of the Software or the number of individuals simultaneously having access to the Software may not exceed at any one time the number of floating seats licensed. Subscription - you may install and use the Software solely as permitted by the license type purchased on compatible devices during the applicable Subscription Term.\",\n price: \"{~interprice|TL-VXX-FLC-1Y~}\",\n url: \"purl-tlflc1y\"\n }],\n nodeLocked: [{\n id: \"testleft-fixed\",\n title: \"TestLeft - Fixed License\",\n licenseType: \"Fixed License\",\n description: \"Fixed License can be activated for use of a single instance of the software on a single specified computer or computing device. Subscription - you may install and use the Software solely as permitted by the license type purchased on compatible devices during the applicable Subscription Term.\",\n price: \"{~interprice|TL-VXX-NLL~}\",\n url: \"purl-tlnlc1y\"\n }]\n }\n}\n\nexport default TestLeftConfig;","export default __webpack_public_path__ + \"static/media/TestLeft-Logo.aef30e8f.svg\";","import icon from '../assets/ReadyAPI-Logo.svg';\n\nconst ReadyAPIConfig = {\n name: \"ReadyAPI\",\n url: \"readyapi\",\n icoClassName: \"ra\",\n ico: icon,\n\n saleitems: {\n performance: {\n floating: [{\n id: \"readyapi-performance-small-floating\",\n title: \"ReadyAPI Performance - Small - 250 VU/TPS\",\n licenseType: \"Floating User License\",\n description: \"\",\n price: \"{~interprice|RALS-1Y-SBN-FL~}\",\n url: \"purl-RLUI1FL\"\n }, {\n id: \"readyapi-performance-medium-floating\",\n title: \"ReadyAPI Performance - Medium - 1000 VU/TPS\",\n licenseType: \"Floating User License\",\n description: \"\",\n price: \"{~interprice|RALM-1Y-SBN-FL~}\",\n url: \"purl-RLUIM1FL\"\n }, {\n id: \"readyapi-performance-unlimited-floating\",\n title: \"ReadyAPI Performance - Unlimited VU/TPS\",\n licenseType: \"Floating User License\",\n description: \"\",\n price: \"{~interprice|RALU-1Y-SBN-FL~}\",\n url: \"purl-RLUIU1FL\"\n }],\n nodeLocked: [{\n id: \"readyapi-performance-small-fixed\",\n title: \"ReadyAPI Performance - Small - 250 VU/TPS\",\n licenseType: \"Fixed License - 1 Year Subscription\",\n description: \"\",\n price: \"{~interprice|RALS-1Y-SBN-NL~}\",\n url: \"purl-RLUI1NL\"\n }, {\n id: \"readyapi-performance-medium-fixed\",\n title: \"ReadyAPI Performance - Medium - 1000 VU/TPS\",\n licenseType: \"Fixed License - 1 Year Subscription\",\n description: \"\",\n price: \"{~interprice|RALM-1Y-SBN-NL~}\",\n url: \"purl-RLUIM1NL\"\n }, {\n id: \"readyapi-performance-unlimited-fixed\",\n title: \"ReadyAPI Performance - Unlimited VU/TPS\",\n licenseType: \"Fixed License - 1 Year Subscription\",\n description: \"\",\n price: \"{~interprice|RALU-1Y-SBN-NL~}\",\n url: \"purl-RLUIU1NL\"\n }]\n },\n test: {\n floating: [{\n id: \"readyapi-test-1-year-floating\",\n title: \"ReadyAPI Test - 1-Year License\",\n licenseType: \"Floating User License\",\n description: \"\",\n price: \"{~interprice|RAFU-1Y-SBN-FL~}\",\n url: \"purl-RSUI1FL\"\n }],\n nodeLocked:[{\n id: \"readyapi-test-1-year-fixed\",\n title: \"ReadyAPI Test - 1-Year License\",\n licenseType: \"Fixed User License - 1 Year Subscription\",\n description: \"\",\n price: \"{~interprice|RAFU-1Y-SBN-NL~}\",\n url: \"purl-RSUI1NL\"\n }, {\n id: \"readyapi-test-2-year-fixed\",\n title: \"ReadyAPI Test - 2-Year License\",\n licenseType: \"Fixed User License - 2 Year Subscription\",\n description: \"\",\n price: \"{~interprice|RAFU-2Y-SBN-NL~}\",\n url: \"purl-RSUI2NL\"\n }, {\n id: \"readyapi-test-3-year-fixed\",\n title: \"ReadyAPI Test - 3-Year License\",\n licenseType: \"Fixed User License - 3 Year Subscription\",\n description: \"\",\n price: \"{~interprice|RAFU-3Y-SBN-NL~}\",\n url: \"purl-RSUI3NL\"\n }]\n },\n virtualization: {\n floating: [{\n id: \"readyapi-virtualization-1-year-floating\",\n title: \"ReadyAPI Virtualization - 1-Year License\",\n licenseType: \"Floating User License\",\n description: \"\",\n price: \"{~interprice|RAVI-1Y-SBN-FL~}\",\n url: \"purl-RSV1FL\"\n }],\n nodeLocked: [{\n id: \"readyapi-virtualization-1-year-fixed\",\n title: \"ReadyAPI Virtualization - 1-Year License\",\n licenseType: \"Fixed User License - 1 Year Subscription\",\n description: \"\",\n price: \"{~interprice|RAVI-1Y-SBN-NL~}\",\n url: \"purl-RSV1NL\"\n }]\n }\n },\n}\n\nexport default ReadyAPIConfig;","export default __webpack_public_path__ + \"static/media/ReadyAPI-Logo.00c1b0c5.svg\";","import icon from '../assets/Collaborator-Logo.svg';\n\nconst CollaboratorConfig = {\n name: \"Collaborator\",\n url: \"collaborator\",\n icoClassName: \"co\",\n ico: icon,\n saleitems: {\n floating: [{\n id: \"collaborator-one-year-maintenance-floating\",\n title: \"Collaborator Enterprise - 1 Year Maintenance\",\n licenseType: \"Floating License\",\n description: \"Unlimited number of users based on licenses owned. Subscription - you may install and use the Software solely as permitted by the license type purchased on compatible devices during the applicable Subscription Term.\",\n price: \"{~interprice|CS0~}\",\n url: \"\"\n }, {\n id: \"collaborator-subscription-floating\",\n title: \"Collaborator Enterprise - Subscription\",\n licenseType: \"Floating License\",\n description: \"Unlimited number of users based on licenses owned. You may install and use the Software as permitted by the license type purchased on compatible devices without any end date.\",\n price: \"{~interprice|CS0~}\",\n url: \"\"\n }],\n nodeLocked: [{\n id: \"collaborator-five-user-one-year-fixed\",\n title: \"Collaborator Team - 5 Users - 1 Year Subscription\",\n licenseType: \"Fixed License\",\n description: \"Up to 50 Users totally. Purchase up to 10 packs to support 50 users.\",\n price: \"{~interprice|SBT-1Y-FIX-NLC-5~}\",\n url: \"purl-CCTNU\"\n }, {\n id: \"collaborator-one-year-maintenance-fixed\",\n title: \"Collaborator Enterprise - 1 Year Maintenance\",\n licenseType: \"Fixed License\",\n description: \"Unlimited number of users based on licenses owned.\",\n price: \"{~interprice|CS0~}\",\n url: \"\"\n }]\n }\n}\n\nexport default CollaboratorConfig;","export default __webpack_public_path__ + \"static/media/Collaborator-Logo.654b146f.svg\";","import icon from '../assets/TestExecute-Logo.svg';\n\nconst TestExecuteConfig = {\n name: \"TestExecute\",\n url: \"testexecute\",\n icoClassName: \"tex\",\n ico: icon,\n saleitems: {\n floating: [{\n id: \"testexecute-floating\",\n title: \"TestExecute - 1 Year Maintenance\",\n licenseType: \"Floating License - 1 Year Subscription\",\n description: \"TestExecute requires a TestLeft or TestComplete license.\",\n price: \"{~interprice|TXE-VXX-FLC~}\",\n url: \"purl-TX10FL\"\n }],\n }\n}\n\nexport default TestExecuteConfig;","export default __webpack_public_path__ + \"static/media/TestExecute-Logo.bd8f9cee.svg\";","import TestCompleteConfig from \"./TestComplete.js\";\nimport AQTimeConfig from \"./AQTimePro.js\";\nimport TestLeftConfig from './TestLeft';\nimport ReadyAPIConfig from './ReadyAPI.js';\nimport CollaboratorConfig from './Collaborator.js';\nimport TestExecuteConfig from './TestExecute.js';\n\nclass ProductsStore {\n\n constructor() { \n this.products = [TestCompleteConfig, AQTimeConfig, TestLeftConfig, ReadyAPIConfig, CollaboratorConfig, TestExecuteConfig];\n this.products = this.products.sort((a, b) => a.name.localeCompare(b.name));\n\n this.saleitems = [];\n this.interprices = [];\n this.addons = [];\n\n this.products.forEach(product => {\n if (product.saleitems) {\n if (Array.isArray(product.saleitems.floating)) {\n let items = [];\n\n product.saleitems.floating.forEach(item => {\n item = Object.assign(item, {productName: product.name, productIcon: product.icoClassName})\n items.push(item);\n });\n\n\n this.saleitems = this.saleitems.concat(items);\n }\n if (Array.isArray(product.saleitems.nodeLocked)) {\n let items = [];\n\n product.saleitems.nodeLocked.forEach(item => {\n item = Object.assign(item, {productName: product.name, productIcon: product.icoClassName})\n items.push(item);\n });\n\n this.saleitems = this.saleitems.concat(items);\n } \n if (product.saleitems.performance && Array.isArray(product.saleitems.performance.floating)) {\n let items = [];\n\n product.saleitems.performance.floating.forEach(item => {\n item = Object.assign(item, {productName: product.name, productIcon: product.icoClassName})\n items.push(item);\n });\n this.saleitems = this.saleitems.concat(items);\n } \n if (product.saleitems.performance && Array.isArray(product.saleitems.performance.nodeLocked)) {\n let items = [];\n\n product.saleitems.performance.nodeLocked.forEach(item => {\n item = Object.assign(item, {productName: product.name, productIcon: product.icoClassName})\n items.push(item);\n });\n this.saleitems = this.saleitems.concat(items);\n } \n if (product.saleitems.test && Array.isArray(product.saleitems.test.floating)) {\n let items = [];\n\n product.saleitems.test.floating.forEach(item => {\n item = Object.assign(item, {productName: product.name, productIcon: product.icoClassName})\n items.push(item);\n });\n this.saleitems = this.saleitems.concat(items);\n } \n if (product.saleitems.test && Array.isArray(product.saleitems.test.nodeLocked)) {\n let items = [];\n\n product.saleitems.test.nodeLocked.forEach(item => {\n item = Object.assign(item, {productName: product.name, productIcon: product.icoClassName})\n items.push(item);\n });\n this.saleitems = this.saleitems.concat(items);\n }\n if (product.saleitems.virtualization && Array.isArray(product.saleitems.virtualization.floating)) {\n let items = [];\n\n product.saleitems.virtualization.floating.forEach(item => {\n item = Object.assign(item, {productName: product.name, productIcon: product.icoClassName})\n items.push(item);\n });\n this.saleitems = this.saleitems.concat(items);\n } \n if (product.saleitems.virtualization && Array.isArray(product.saleitems.virtualization.nodeLocked)) {\n let items = [];\n\n product.saleitems.virtualization.nodeLocked.forEach(item => {\n item = Object.assign(item, {productName: product.name, productIcon: product.icoClassName})\n items.push(item);\n });\n this.saleitems = this.saleitems.concat(items);\n }\n }\n if (Array.isArray(product.addons)) {\n let items = [];\n\n product.addons.forEach(item => {\n item = Object.assign(item, {productName: product.name, productIcon: product.icoClassName})\n items.push(item);\n });\n\n this.saleitems = this.saleitems.concat(items);\n } \n if (Array.isArray(product.addons)) {\n let items = [];\n\n product.addons.map(item => {\n item = Object.assign(item, {productName: product.name, productIcon: product.icoClassName})\n items.push(item);\n });\n \n this.addons = this.addons.concat(items);\n } \n });\n\n }\n\n getProductByUrl(url) {\n let product = null;\n\n this.products.forEach(item => {\n if (item.url === url) {\n product = item;\n }\n });\n\n return product;\n }\n\n getSaleItemById(id) {\n let saleitem = null;\n\n this.saleitems.forEach(item => {\n if (item.id === id) {\n saleitem = item;\n }\n });\n\n return saleitem;\n } \n\n getProducts() {\n return this.products;\n }\n\n getSaleItems() {\n return this.saleitems;\n } \n \n getInterPrices() {\n return this.interprices;\n }\n\n getAddons() {\n return this.addons;\n }\n\n\n isTestComplete(id) {\n return ((id.indexOf(\"testcomplete-\") === 0) && (id.indexOf(\"testcomplete-addon-\") === -1));\n }\n\n getTestCompleteSaleitems(id) {\n let ids = id.split(\"-\");\n let licenseType = ids.splice(1,1);\n let prefixId = `testcomplete-${licenseType}-`;\n ids = ids.slice(1);\n\n let items = [];\n\n let platform = this.saleitems.filter(si => si.id === prefixId + 'platform'); \n if (platform.length) {\n items.push(platform[0]);\n } \n\n ids.forEach(id => {\n let item = this.saleitems.filter(si => si.id === prefixId + id);\n if (item.length) {\n items.push(item[0]); \n } \n });\n\n return items;\n }\n}\n\nexport default new ProductsStore()","\nimport ProductStore from \"../data/products.js\";\n\nclass priceHelper {\n\n constructor() { \n\n }\n\n getCurrency(price) {\n var strEuro = \"€\",\n index = price.indexOf(strEuro);\n \n if (index !== -1) {\n return \"€\";\n }\n \n return price.substring(0, 1);\n }\n \n prettyPrice(price, currency) {\n \n var displayPrice = price.toString();\n if (displayPrice.length >= 4) {\n displayPrice = displayPrice.substr(0, displayPrice.length - 3) + \",\" + displayPrice.substr(displayPrice.length - 3);\n }\n if(displayPrice == \"NaN\") {\n return \"Contact Us\";\n } else if(displayPrice == \"0\"){\n return \"Free\";\n }else {\n return currency + displayPrice;\n }\n }\n \n getItemPrice(price) { \n //check if price contains a dot\n var currentPrice = price,\n indexDot = price.indexOf(\".\");\n \n if (indexDot !== -1)\n currentPrice = currentPrice.substring(0, indexDot);\n \n price = parseInt(currentPrice.replace(/\\D/g, ''), 10);\n return price;\n }\n \n resolvePrice(value, interPrice, count, region) {\n if (value && region) {\n if (value.indexOf(\"{\") === -1)\n return value;\n \n value = value.replace(\"{\", \"\").replace(\"}\", \"\").replace(\"|\", \"\").replace(\"interprice\", \"\").replace(\"~\", \"\").replace(\"~\", \"\").replace(\" \", \"\");\n }\n\n let price = '';\n let currency = '';\n region = region || \"Price_USD\";\n\n if (interPrice) {\n interPrice.forEach(item => {\n if (item.ProductCode === value) {\n currency = this.getCurrency(item[region]);\n price = item[region].replace(\"€\" , '').replace(currency, '').replace(',', '').replace('.', '') * count;\n }\n });\n }\n return this.prettyPrice(price, currency);\n }\n\n\n\n getTotalPrice(items, interPrice, region) {\n \n let cartTotalPrice = 0;\n let currency = '';\n \n items.forEach(item => {\n if (ProductStore.isTestComplete(item.product.id) && (item.product.id.indexOf(\"-pro\") === -1)) {\n let saleitems = ProductStore.getTestCompleteSaleitems(item.product.id);\n\n saleitems.forEach(saleitem => {\n let price = saleitem.price;\n let itemCount = item.count || 1;\n \n if (price.length) {\n price = this.resolvePrice(price, interPrice, itemCount, region);\n currency = this.getCurrency(price); \n \n cartTotalPrice += this.getItemPrice(price);\n }\n });\n\n } else {\n let price = item.product.price;\n let itemCount = item.count || 1;\n\n if (price.length) {\n price = this.resolvePrice(price, interPrice, itemCount, region);\n currency = this.getCurrency(price); \n \n cartTotalPrice += this.getItemPrice(price);\n }\n }\n });\n \n var displayPrice = cartTotalPrice.toString();\n return this.prettyPrice(displayPrice, currency);\n }\n}\n\nexport default new priceHelper();","import React, { Component } from \"react\";\n\nimport ProductsStore from '../../../data/products.js';\nimport priceHelper from '../../../utils/priceHelper.js';\nimport { withRouter } from 'react-router';\n\nconst InterPrice = (props) => {\n let { value, interPrice, count=1, region } = props;\n return priceHelper.resolvePrice(value, interPrice, count, region)\n}\nexport default InterPrice;\n","import { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport * as productActions from \"../../../actions/productActions\";\nimport InterPrice from '../../../components/common/InterPrice/InterPrice.jsx';\n\nconst mapStateToProps = (state) => ({\n interPrice: state.interPrice.interPrice,\n region: state.interPrice.region\n});\n\nconst mapDispatchToProps = dispatch => ({\n ...bindActionCreators({...productActions}, dispatch)\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(InterPrice);\n","import React from 'react';\nimport { Card } from 'semantic-ui-react';\n\nimport Price from '../../containers/common/InterPrice/InterPrice.js';\n\nimport { Link } from \"react-router-dom\";\n\nimport \"./Card.scss\";\n\nexport default ({product, products, analyticsClick}) => (\n \n \n {!product.LinkToPricing ? \n ( {\n analyticsClick(`Card`, product.Name + '_HeaderClick');\n }}>\n
\n
{product.Name}
\n )\n : \n ( {\n analyticsClick(`Card`, product.Name + '_HeaderClick');\n }}>\n
\n
{product.Name}
\n
\n )\n }\n
\n {product.Description}\n
\n
\n
starting at
\n
\n \n
\n
\n
\n
\n {!product.LinkToPricing ? analyticsClick(`Card`, product.Name + '_Buy')}>\n Buy now \n \n : \n analyticsClick(`Card`, product.Name + '_Buy')}>\n Buy now \n }\n
\n
\n analyticsClick(`Card`, product.Name + '_LearnMore')}>Learn more \n
\n
\n
\n
\n)","import React from 'react';\nimport { Card } from 'semantic-ui-react';\n\nimport Price from '../../containers/common/InterPrice/InterPrice.js';\n\nimport \"./Card.scss\";\n\nexport default ({addon, cartAddProducts, cartMenuShow, analyticsClick}) => (\n \n \n
{;\n analyticsClick(`AddonCard`, addon.title + '_HeaderClick');\n }}>\n
\n
{addon.productName}
\n
\n
{addon.title}
\n {/*
\n {addon.description}\n
*/}\n
\n \n
\n
\n
\n
(analyticsClick(`Card`, addon.DocumentName + '_AddAddonToCart'), cartAddProducts([{ product: addon}]), cartMenuShow())}>{' Add to Cart'}
\n
\n
\n
\n
\n)","import React from \"react\";\nimport { event } from \"react-ga\";\nimport { Menu, Input } from \"semantic-ui-react\";\n\nimport \"./Filter.scss\";\n\nconst Filter = ({ setSort, filterBy, selectedItems, clearFilter, clearFilters, addons, products, analyticsClick }) => {\n\n function clearAll() {\n clearFilters();\n analyticsClick('Filter', 'ClearFilters');\n } \n\n function handleChange(e) {\n let target = e.target;\n let value = target.value;\n\n setSort(filterBy = value)\n // if (value.length > 3) {\n // setTimeout(() => analyticsClick('Search', value), 5000)\n // }\n }\n\n return (\n \n \n
\n
{products.length + addons.length + ' ' + 'results'}
\n {selectedItems.map((selectedItem, key)=>{\n return
{selectedItem[Object.getOwnPropertyNames(selectedItem)[0]]}\n
\n })}\n \n {(selectedItems && selectedItems.length > 1) ?
clearAll()}>Clear All\n
: \"\"}\n
\n
\n \n } iconPosition='left' className='searchbar-input' placeholder='Search...' value={filterBy} onChange={handleChange.bind(this)} />\n \n
\n );\n};\n\nexport default Filter;\n","import { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport * as filterActions from \"../../actions/filterActions\";\nimport Filter from '../../components/home/Filter.jsx'\n\nconst mapStateToProps = ({ filter }) => ({\n filterBy: filter.filterBy,\n selectedItems: filter.selectedItems\n});\n\nconst mapDispatchToProps = dispatch => ({\n ...bindActionCreators(filterActions, dispatch)\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Filter);\n","import React, { Component, createRef } from \"react\";\nimport { event } from \"react-ga\";\nimport { Menu, Input } from \"semantic-ui-react\";\nimport { withRouter } from \"react-router\";\n\nimport ReactGA from 'react-ga';\n\nimport \"./MobileFilter.scss\";\n\nclass MobileFilter extends Component {\n constructor(props) {\n super(props);\n\n this.overlay = createRef();\n this.handleClick = this.handleClick.bind(this);\n }\n\n onAnalyticsSend(value) {\n ReactGA.event({\n category: \"StoreComponent\",\n action: \"MobileFilter\",\n label: value\n }, ['gadev']);\n }\n\n handleClick() {\n if (!this.props.show) {\n this.props.mobileFilterShow();\n document.body.style.overflow = 'hidden';\n this.overlay.current.classList.add(\"show\");\n }\n else {\n this.props.mobileFilterHide();\n document.body.style.overflow = 'auto';\n this.overlay.current.classList.remove(\"show\");\n }\n }\n render() {\n const { products, addons, show } = this.props;\n return (\n \n
{this.handleClick(); this.onAnalyticsSend('Overlay_click')}}>
\n
\n
\n
{this.handleClick(); this.onAnalyticsSend('Button_click')}}> {show === false ? 'Filters' : 'Close'}
\n
\n
\n
\n
{products.length + addons.length + ' ' + 'results'}
\n
\n
\n
\n
\n );}\n}\n\nexport default withRouter(MobileFilter);","import React, { Component } from \"react\";\n\nimport \"./LeftMenu.scss\";\n\nimport ReactGA from 'react-ga';\nimport { connect } from \"react-redux\";\nimport { Accordion, Form, Menu, Checkbox } from \"semantic-ui-react\";\n\nimport { setFilter, clearFilters } from \"../../actions/filterActions\";\n\nimport ProductsStore from '../../data/products';\n\nimport orderBy from \"lodash/orderBy\";\nimport { isArray } from \"lodash\";\n\n\nexport class LeftMenu extends Component {\n constructor(props) {\n super(props);\n this.state = {\n activeIndex: !!this.props.products ? this.props.products.activeIndex : -1,\n };\n this.handleFilter = this.handleFilter.bind(this);\n }\n\n onAnalyticsSend(value) {\n ReactGA.event({\n category: \"StoreComponent\",\n action: \"Filter\",\n label: value\n }, ['gadev']);\n }\n\n handleChange = (e, data) => {\n if (data) {\n\n switch(data.areaid) {\n case 0: \n this.props.setFilter(data.name, \"Hubs\");\n this.onAnalyticsSend('Hubs_' + data.name)\n break;\n case 1: \n this.props.setFilter(data.name, \"Solutions\");\n this.onAnalyticsSend('Solutions_' + data.name);\n break;\n case 2: \n this.props.setFilter(data.name, \"Platforms\");\n this.onAnalyticsSend('Platforms_' + data.name);\n break;\n case 3: \n this.props.setFilter(data.name, \"MarketPlaces\");\n this.onAnalyticsSend('MarketPlaces_' + data.name);\n break;\n case 4: \n this.props.setFilter(data.name, \"ProductAddons\");\n this.onAnalyticsSend('ProductAddons_' + data.name);\n break;\n default:\n break;\n }}\n };\n\n handleFilter = (data) => data.map((el) => {\n if (el.ProductCount && el.ProductCount > 0 ) {\n el.disabled = false;\n return el}\n else {\n el.disabled = true;\n return el}\n });\n\n HubForm = props => {\n let { hubs, selectedItems, activeIndex, products } = this.props;\n\n if (hubs) {\n \n hubs.forEach((hub) => {\n let filtCount = 0;\n\n // add products count for each solution\n products.forEach((product) => {\n if (product.Hubs && product.Hubs.includes(hub.Name)) {\n filtCount++;\n }\n });\n\n // check hubs\n hub.isChecked = false;\n if ( selectedItems.length > 0 ) { \n selectedItems.forEach((selectedItem) => { \n if (!!selectedItem.Hubs && selectedItem.Hubs.toLowerCase() === hub.Name.toLowerCase())\n hub.isChecked = true;\n });\n }\n\n hub.ProductCount = filtCount;\n });\n }\n let filteredHubs = [];\n if ( hubs ){\n filteredHubs = this.handleFilter(hubs)\n }\n\n return (\n
\n
Hubs
\n \n {filteredHubs ? filteredHubs.map((hub, key) => {\n if (hub.Name !== 'Open Source') {\n return (\n
\n \n
({hub.ProductCount})
\n
\n );}\n })\n : \"\"}\n
\n
\n );\n };\n \n SolutionForm = props => {\n let { solutions, selectedItems, activeIndex, products } = this.props;\n\n if (solutions) {\n \n solutions.forEach((solution) => {\n let filtCount = 0;\n\n // add products count for each solution\n products.forEach((product) => {\n if (product.Solutions && product.Solutions.includes(solution.Name)) {\n filtCount++;\n }\n });\n\n // check solution\n solution.isChecked = false;\n if ( selectedItems.length > 0 ) { \n selectedItems.forEach((selectedItem) => { \n if (!!selectedItem.Solutions && selectedItem.Solutions.toLowerCase() === solution.Name.toLowerCase())\n solution.isChecked = true;\n });\n }\n\n solution.ProductCount = filtCount;\n });\n }\n let filteredSolutions = [];\n if ( solutions ){\n filteredSolutions = this.handleFilter(solutions)\n }\n\n return (\n
\n
Solutions
\n \n {filteredSolutions ? filteredSolutions.map((solution, key) => {\n if (solution.Name !== 'Open Source') {\n return (\n
\n \n
({solution.ProductCount})
\n
\n );}\n })\n : \"\"}\n
\n
\n );\n };\n\n PlatformsForm = props => {\n let { platforms, selectedItems, products } = this.props;\n\n if (platforms) {\n \n platforms.forEach((platform) => {\n let filtCount = 0;\n\n // add products count for each platform\n products.forEach((product) => {\n if (product.Platforms && product.Platforms.includes(platform.Name)) {\n filtCount++;\n }\n });\n\n // check platform\n platform.isChecked = false;\n if ( selectedItems.length > 0 ) { \n selectedItems.forEach((selectedItem) => {\n // if (!!selectedItem.Platforms && selectedItem.Platforms.name === platform.Name) \n if (!!selectedItem.Platforms && selectedItem.Platforms.toLowerCase()===platform.Name.toLowerCase())\n platform.isChecked = true;\n });\n }\n\n platform.ProductCount = filtCount;\n });\n }\n let filteredPlatforms = [];\n if (platforms) {\n filteredPlatforms = this.handleFilter(platforms)\n }\n\n return (\n
\n
Platforms
\n \n {filteredPlatforms ? filteredPlatforms.map((platform, key) => {\n return (\n
\n \n
({platform.ProductCount})
\n
\n );\n })\n : \"\"}\n
\n
\n );\n };\n\n MarketPlacesForm = props => {\n let { marketPlaces, selectedItems, products } = this.props;\n\n if (marketPlaces) {\n \n marketPlaces.forEach((marketPlace) => {\n let filtCount = 0;\n\n // add products count for each marketPlaces\n products.forEach((product) => {\n if (product.MarketPlaces && product.MarketPlaces.includes(marketPlace.MarketPlace)) {\n filtCount++;\n }\n });\n\n // check marketPlaces\n marketPlace.isChecked = false;\n if ( selectedItems.length > 0 ) { \n selectedItems.forEach((selectedItem) => { \n if (!!selectedItem.MarketPlaces && selectedItem.MarketPlaces.toLowerCase()===marketPlace.MarketPlace.toLowerCase())\n marketPlace.isChecked = true;\n });\n }\n\n marketPlace.ProductCount = filtCount;\n });\n }\n let filteredMarketPlaces = [];\n if (marketPlaces) {\n filteredMarketPlaces = this.handleFilter(marketPlaces)\n }\n\n return (\n
\n
MarketPlaces
\n \n {filteredMarketPlaces ? filteredMarketPlaces.map((marketPlace, key) => {\n return (\n
\n \n
({marketPlace.ProductCount})
\n
\n );\n })\n : \"\"}\n
\n
\n );\n };\n\n ProductAddonsForm = props => {\n let { products, selectedItems } = this.props;\n let productsConfig = ProductsStore.getProducts(); \n\n if (productsConfig) {\n productsConfig.forEach((product)=>{\n let filtCount = 0; \n products.forEach((prod) => { \n // add products count for each marketPlaces\n if (product.name === prod.Name) {\n filtCount++;\n }\n });\n\n \n product.isChecked = false;\n if ( selectedItems.length > 0 ) { \n selectedItems.forEach((selectedItem) => {\n // if (!!selectedItem.Platforms && selectedItem.Platforms.name === platform.Name) \n if (!!selectedItem.ProductAddons && selectedItem.ProductAddons.toLowerCase() === product.name.toLowerCase())\n product.isChecked = true;\n });\n }\n\n product = product.ProductCount = filtCount;\n })\n let filteredProducts = [];\n if (productsConfig) {\n filteredProducts = this.handleFilter(productsConfig)\n }\n\n return (\n
\n
Product Add-ons
\n \n {filteredProducts ? filteredProducts.map((product, key) => {\n if (isArray(product.addons)) {\n return (\n
\n \n
\n
\n );}\n })\n : \"\"}\n
\n
\n );\n };\n }\n render() {\n const { activeIndex, show } = this.props;\n \n return (\n
\n
Filter by
\n \n \n \n \n\n \n {/* */}\n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n
\n );\n }\n}\n\nconst mapStateToProps = state => {\n const {\n filter: { selectedItems }\n } = state;\n const { \n products: { activeIndex }\n } = state;\n return {\n selectedItems,\n activeIndex \n };\n};\n\nconst mapDispatchToProps = {\n setFilter,\n clearFilters\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(LeftMenu);\n","export default function(html) {\n var div = document.createElement(\"div\");\n div.innerHTML = html;\n var text = div.textContent || div.innerText || \"\";\n\n return text;\n}","import React, { Component } from \"react\";\nimport ReactGA from 'react-ga';\nimport './CartIcon.scss';\n\nclass CartIcon extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n showMenu: false\n }\n\n this.onClick = this.onClick.bind(this);\n }\n\n onAnalyticsSend(value) {\n ReactGA.event({\n category: \"StoreComponent\",\n action: \"Header\",\n label: value\n }, ['gadev']);\n }\n\n onClick() {\n this.props.cartMenuShow();\n }\n\n render() {\n\n const { cartProducts } = this.props;\n\n let cnt = 0;\n if (typeof cartProducts !== \"undefined\") {\n cartProducts.forEach(cartProduct => {\n let count = cartProduct.count ? cartProduct.count : 1\n count = count > 0 ? count : 1; \n\n cnt += count;\n });\n } \n\n return (\n <>\n
{this.onClick(); this.onAnalyticsSend('Cart_icon_click')}}>\n { (cnt > 0) ?
{cnt}
: null }\n
\n \n );\n }\n}\n\nexport default CartIcon;\n","import { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport * as cartActions from \"../../actions/cartActions\";\nimport CartIcon from \"../../components/header/CartIcon/CartIcon.jsx\";\n\nconst mapStateToProps = (state) => ({\n cartProducts: state.cart.cartProducts\n});\n\nconst mapDispatchToProps = dispatch => ({\n ...bindActionCreators(cartActions, dispatch)\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(CartIcon);\n","export default __webpack_public_path__ + \"static/media/SmartBear-Logo.eac19c1f.svg\";","import React, { Component } from \"react\";\nimport ReactGA from 'react-ga';\nimport './ContactChat.scss';\n\nclass ContactChat extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n chatEnabled: false\n }\n }\n\n onAnalyticsSend(value) {\n ReactGA.event({\n category: \"StoreComponent\",\n action: \"Header\",\n label: value\n }, ['gadev']);\n }\n\n componentDidMount() {\n /* Add this class to any elements you want to use to open Drift.\n *\n * Examples:\n * - Questions? We're here to help!\n * - \n *\n * You can have any additional classes on those elements that you\n * would ilke.\n */\n var DRIFT_CHAT_SELECTOR = '.drift-open-chat';\n\n /* http://youmightnotneedjquery.com/#ready */\n function ready(fn) {\n if (document.readyState != 'loading') {\n fn();\n } else if (document.addEventListener) {\n document.addEventListener('DOMContentLoaded', fn);\n } else {\n document.attachEvent('onreadystatechange', function() {\n if (document.readyState != 'loading')\n fn();\n });\n }\n }\n\n /* http://youmightnotneedjquery.com/#each */\n function forEachElement(selector, fn) {\n var elements = document.querySelectorAll(selector);\n for (var i = 0; i < elements.length; i++)\n fn(elements[i], i);\n }\n\n function openSidebar(driftApi, event) {\n event.preventDefault();\n driftApi.sidebar.open();\n return false;\n }\n\n var self = this;\n ready(function() {\n if (typeof drift !== \"undefined\") {\n drift.on('ready', function(api) {\n var handleClick = openSidebar.bind(this, api)\n forEachElement(DRIFT_CHAT_SELECTOR, function(el) {\n el.addEventListener('click', handleClick);\n });\n\n self.setState({\n chatEnabled: true\n });\n });\n }\n });\n }\n\n\n render() {\n const { chatEnabled } = this.state;\n\n return (\n
\n {chatEnabled ?\n
Chat now
\n :\n this.onAnalyticsSend('ContactUs_click')} href=\"https://smartbear.com/contact-us/\">Contact us \n }\n
\n );\n }\n}\n\nexport default ContactChat;\n","import React, { Component } from \"react\";\nimport './Header.scss';\n\nimport { Link } from \"react-router-dom\"; \nimport ReactGA from 'react-ga';\n\nimport CartIcon from '../../../containers/header/CartIcon.js';\nimport imgLogo from '../../../assets/SmartBear-Logo.svg';\nimport ContactChat from '../ContactChat/ContactChat.jsx';\n\nclass Header extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n\n }\n }\n\n onAnalyticsSend(value) {\n ReactGA.event({\n category: \"StoreComponent\",\n action: \"Header\",\n label: value\n }, ['gadev']);\n }\n\n render() {\n\n return (\n
\n
\n
\n this.onAnalyticsSend('GoToHome')}>\n \n \n
\n
\n \n
\n
\n \n
\n
\n
\n );\n }\n}\n\nexport default Header;\n","import React, { Component } from 'react';\n\nimport Helmet from \"react-helmet\";\n\nimport './Loader.scss';\n\nexport default class Loader extends Component {\n render() {\n return (\n <>\n \n \n \n\n
\n
\n
\n
Loading... Please wait
\n
\n
\n \n )\n }\n}","import React, { Component } from \"react\";\nimport \"./CartCheckout.scss\";\n\nimport Helmet from \"react-helmet\";\n\nimport Loader from '../Loader/Loader.jsx';\n\nclass CartCheckout extends Component {\n\n constructor(props) {\n super(props);\n\n this.state = {\n isLoading: false\n }\n\n this.checkoutUrl = \"https://shop.smartbear.com/758/\";\n this.checkoutCount = 0;\n\n this.checkout = this.checkout.bind(this);\n this.updateRemoteCart = this.updateRemoteCart.bind(this);\n this.resetRemoteCart = this.resetRemoteCart.bind(this); \n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.isCheckout !== this.props.isCheckout) {\n this.setState({\n isLoading: true\n }, () => this.updateRemoteCart());\n }\n }\n\n\tresetRemoteCart(callback) {\n\t\tvar script = document.createElement(\"iframe\");\n\t\tscript.src = this.checkoutUrl + \"?scope=checkout&cartreset=true&t=\" + new Date().getTime();\n\t\t\n\t\tif (typeof(callback) !== \"undefined\") {\n\t\t\tscript.onreadystatechange = function () {\n if (this.readyState == 'complete' || this.readyState == 'loaded') {\n callback();\n } \n };\n\t\t\tscript.onload = callback;\n\t\t}\n\n\t\tthis.checkoutCount = 0;\n\t\t\t\n\t\t(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(script);\t\t\n\t}\n\t\n\tupdateRemoteCart() {\n\t\tthis.resetRemoteCart(() => this.checkout());\n\t}\n\t\n\tcheckout() {\n\t\tconst { cartProducts } = this.props;\n\n if (this.checkoutCount < cartProducts.length) {\n let cartProduct = cartProducts[this.checkoutCount];\n\n this.checkoutCount++;\n\n if (cartProduct.product.url.length === 0) {\n this.checkout();\n return;\n }\n\n let count = cartProduct.count ? cartProduct.count : 1;\n\n let query = \"?t=\" + new Date().getTime();\n query += \"&quantity=\" + count;\n \n var script = document.createElement(\"iframe\");\n\t\t\tscript.src = this.checkoutUrl + cartProduct.product.url + query;\n\t\t\t\n\t\t\tscript.onreadystatechange = function () {\n\t\t\t\tif (this.readyState == 'complete' || this.readyState == 'loaded') {\n\t\t\t\t\tthis.checkout();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tscript.onload = this.checkout;\n\n\t\t (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(script);\n } else {\n \n /* this.setState({\n isLoading: false\n }, () => {*/\n this.props.cartDeleteProducts();\n\n let urlDefaultLanguageCurrentcy = '';\n if (window.location.search.indexOf(\"cb=default\") !== -1)\n urlDefaultLanguageCurrentcy = '&languages=en¤cy=USD';\n\n window.location = this.checkoutUrl + \"?scope=checkout&cfg=smartbear2021\" + urlDefaultLanguageCurrentcy; \n /* });*/\n }\n\t} \n\n render() {\n const { isLoading } = this.state; \n\n return (\n <>\n { isLoading \n ? \n \n : \n null }\n \n )\n }\n}\n\nexport default CartCheckout;\n","import { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport * as cartActions from \"../../actions/cartActions\";\nimport CartCheckout from \"../../components/common/CartCheckout/CartCheckout.jsx\";\n\nconst mapStateToProps = (state) => ({\n cartProducts: state.cart.cartProducts,\n isCheckout: state.cart.isCheckout\n});\n\nconst mapDispatchToProps = dispatch => ({\n ...bindActionCreators(cartActions, dispatch)\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(CartCheckout);\n","import React, { Component } from \"react\";\n\nimport ProductsStore from '../../../data/products.js';\n\nclass CartCookie extends Component {\n\n constructor(props) {\n super(props);\n\n this.cookieName = \"sbcart\";\n\n this.updateCookie = this.updateCookie.bind(this);\n this.updateCart = this.updateCart.bind(this);\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.cartProducts !== this.props.cartProducts) {\n this.updateCookie();\n }\n }\n\n componentDidMount() {\n this.updateCart();\n }\n\n updateCookie() {\n const { cartProducts } = this.props;\n\n let products = []\n\n cartProducts.forEach(cartProduct => {\n let count = cartProduct.count ? cartProduct.count : 1;\n products.push(cartProduct.product.id + \":\" + count);\n });\n\n this.setCookie(this.cookieName, products.join(\",\")); \n }\n\n updateCart() {\n let items = [],\n sbcart = this.getCookie(this.cookieName);\n\n if (sbcart.length != 0) {\n let pairs = sbcart.split(\",\");\n\n for(let i=0; i < pairs.length; i++) {\n let pair = pairs[i].split(\":\"); \n\n let saleitem = ProductsStore.getSaleItemById(pair[0]);\n if (saleitem) {\n let count = parseInt(pair[1]);\n count = count || 1;\n count = count > 0 ? count : 1;\n\n items.push({\n product: saleitem,\n count: count\n });\n }\n\n }\n }\n\n this.props.cartDeleteProducts();\n this.props.cartAddProducts(items); \n }\n\n\tgetCookie(name) {\n\t\tvar matches = document.cookie.match(new RegExp(\n\t\t\t\"(?:^|; )\" + name.replace(/([\\.$?*|{}\\(\\)\\[\\]\\\\\\/\\+^])/g, '\\\\$1') + \"=([^;]*)\"\n\t\t));\n\t\t\n\t\treturn matches ? decodeURIComponent(matches[1]) : \"\";\n\t}\n\t\n\tsetCookie(name, value) {\n\t\tvar date = new Date(new Date().getTime() + 2678400000),\n\t\t\tdomain = \"\"; \n\t\t\t\n\t\tdocument.cookie = name + \"=\" + value + \";\" + \"domain=\" + domain +\";\" + \" path=/; expires=\" + date.toUTCString();\n\t}\n \n render() {\n return null;\n }\n}\n\nexport default CartCookie;\n","import { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport * as cartActions from \"../../actions/cartActions\";\nimport CartCookie from \"../../components/common/CartCookie/CartCookie.jsx\";\n\nconst mapStateToProps = (state) => ({\n cartProducts: state.cart.cartProducts\n});\n\nconst mapDispatchToProps = dispatch => ({\n ...bindActionCreators(cartActions, dispatch)\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(CartCookie);\n","import React, { Component } from \"react\";\nimport NumberPicker from \"react-widgets/NumberPicker\";\nimport InterPrice from '../../../containers/common/InterPrice/InterPrice';\n\nimport ProductsStore from '../../../data/products.js';\n\nimport \"react-widgets/styles.css\";\n\nclass CartPreviewItem extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n items: [] \n }\n\n this.onChangeCount = this.onChangeCount.bind(this);\n this.onChangeCheckbox = this.onChangeCheckbox.bind(this); \n }\n\n componentDidUpdate(prevProps) {\n if ((prevProps.item !== this.props.item)) {\n this.resolveProducts();\n }\n }\n\n componentDidMount() {\n this.resolveProducts();\n }\n\n resolveProducts() {\n const { product } = this.props.item;\n const count = this.props.item.count || 1;\n\n let items = [];\n let saleitems = ProductsStore.getSaleItems(); \n\n // TestComplete pre-processing\n if (ProductsStore.isTestComplete(product.id)) {\n\n let ids = product.id.split(\"-\");\n let licenseType = ids.splice(1,1);\n let prefixId = `testcomplete-${licenseType}-`;\n ids = ids.slice(1);\n \n switch(ids[0]) {\n case 'pro':\n items.push({\n product: product,\n countPickerDisabled: false,\n priceDisabled: false,\n count: count\n });\n \n ['desktop', 'mobile', 'web', 'addon-te', 'addon-device-cloud-iq'].forEach(id => {\n let item = saleitems.filter(si => si.id === prefixId + id);\n if (item.length) {\n items.push({\n product: item[0],\n countPickerDisabled: true,\n checkboxDisabled: true,\n priceDisabled: true,\n count: count\n });\n } \n });\n break;\n \n case 'desktop':\n case 'mobile':\n case 'web':\n case 'addon-te':\n case 'addon-device-cloud-iq':\n let platform = saleitems.filter(si => si.id === prefixId + 'platform');\n \n if (platform.length) {\n items.push({\n product: platform[0],\n countPickerDisabled: false,\n checkboxDisabled: false,\n priceDisabled: false,\n count: count\n });\n } \n \n ids.forEach(id => {\n let item = saleitems.filter(si => si.id === prefixId + id);\n if (item.length) {\n items.push({\n product: item[0],\n countPickerDisabled: true,\n checkboxDisabled: false,\n priceDisabled: false,\n count: count\n }); \n } \n });\n \n break;\n } \n\n } else {\n // All other products\n items.push({\n product: product,\n countPickerDisabled: false,\n checkboxDisabled: false,\n priceDisabled: false,\n count: count\n });\n }\n\n this.setState({ \n items: items\n });\n } \n\n onChangeCount(value) {\n if (this.props.onChangeCount) {\n this.props.onChangeCount(this.props.item.product.id, value);\n }\n }\n\n onChangeCheckbox(e) {\n if (this.props.onChangeCheckbox) {\n let name = e.target.name;\n const { product } = this.props.item;\n const count = this.props.item.count || 1;\n\n if (ProductsStore.isTestComplete(product.id) && (product.id.indexOf(\"-pro\") === -1)) {\n name = name + \":\" + product.id + \":\" + count;\n }\n\n this.props.onChangeCheckbox(name, e.target.checked);\n }\n } \n\n render() {\n const { items } = this.state;\n\n return (\n <>\n {items.map((item, i) => {\n const count = item.count ? item.count : 1;\n \n const countPickerDisabled = this.props.countPickerDisabled || item.countPickerDisabled;\n \n return (\n
\n {this.props.checkboxDisabled ?\n null : (item.checkboxDisabled ?\n
\n :\n
\n \n
\n )}\n
\n {\n this.props.checkboxDisabled || item.checkboxDisabled \n ?\n item.product.title\n :\n \n } \n {item.product.licenseType ?
{item.product.licenseType}
: null} \n
\n
\n
\n {countPickerDisabled\n ? \n
[x{count}]
\n :\n \n }\n
\n
\n {item.priceDisabled \n ?\n null \n :\n \n }\n
\n
\n )\n })}\n \n \n );\n }\n}\n\nexport default CartPreviewItem;\n","import React, { Component } from \"react\";\nimport ReactGA from 'react-ga';\nimport './CartReview.scss';\n\nimport CartPreviewItem from '../CartPreview/CartPreviewItem.jsx';\n\nclass CartReview extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n items: []\n } \n\n this.onChangeCount = this.onChangeCount.bind(this);\n this.onChangeCheckbox = this.onChangeCheckbox.bind(this); \n }\n\n onAnalyticsSend(value) {\n ReactGA.event({\n category: \"StoreComponent\",\n action: \"CartReview\",\n label: value\n }, ['gadev']);\n }\n\n componentDidUpdate(prevProps) { \n if (prevProps.cartProducts !== this.props.cartProducts) {\n this.resolveProducts();\n }\n }\n\n componentDidMount() {\n this.resolveProducts();\n }\n\n \n onChangeCount(id, count) {\n const { items } = this.state;\n\n let cartProducts = [];\n\n items.forEach(item => {\n item.cartItems.map((cartItem, j) => {\n if (cartItem.product.id === id) {\n cartItem.count = count;\n this.onAnalyticsSend(item.productName, ' Change_Count');\n } \n\n cartProducts.push(cartItem);\n });\n });\n\n this.props.cartUpdateProducts(cartProducts);\n } \n \n onChangeCheckbox(id, checked) {\n if (this.props.onChangeItem) {\n this.props.onChangeItem(id, checked);\n this.onAnalyticsSend('Checkbox_click')\n }\n }\n\n resolveProducts() {\n const { cartProducts } = this.props;\n\n let products = [];\n cartProducts.forEach(cartProduct => {\n if (products.indexOf(cartProduct.product.productName) === -1) {\n products.push(cartProduct.product.productName);\n }\n });\n\n let items = [];\n products.forEach(product => {\n let cartItems = cartProducts.filter(item => item.product.productName === product);\n if (cartItems.length) {\n items.push({\n productName: cartItems[0].product.productName,\n productIcon: cartItems[0].product.productIcon,\n /**\n * apodrezov: Important - do not copy cartItems object\n */\n cartItems: cartItems.map(item => ( {product: item.product, count: item.count} ))\n });\n }\n });\n\n this.setState({\n items: items\n });\n }\n\n render() {\n const { items } = this.state;\n\n if (typeof items === \"undefined\")\n return null;\n\n const checkboxDisabled = this.props.checkboxDisabled ? this.props.checkboxDisabled : false;\n const countPickerDisabled = this.props.countPickerDisabled ? this.props.countPickerDisabled : false;\n\n return (\n
\n {items.map((item, i) => {\n return (\n
\n
\n
\n
{item.productName}
\n
\n
\n {item.cartItems.map((cartItem, j) => (\n \n ))}\n
\n
\n )\n\n })}\n
\n );\n }\n}\n\nexport default CartReview;\n","import { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport * as cartActions from \"../../actions/cartActions\";\nimport CartReview from \"../../components/common/CartReview/CartReview.jsx\";\n\nconst mapStateToProps = (state) => ({\n cartProducts: state.cart.cartProducts,\n interPrice: state.interPrice.interPrice\n});\n\nconst mapDispatchToProps = dispatch => ({\n ...bindActionCreators(cartActions, dispatch)\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(CartReview);\n","import React, { Component } from \"react\";\n\nimport './CartSubtotal.scss';\n\nimport priceHelper from '../../../utils/priceHelper.js';\n\nclass CartSubtotal extends Component {\n render() {\n let { items, interPrice, region } = this.props;\n\n if (typeof items === \"undefined\")\n items = [];\n\n const totalPrice = priceHelper.getTotalPrice(items, interPrice, region);\n\n return (\n
\n
\n
Subtotal
\n
\n
{totalPrice}
\n
\n
\n Sales tax may be applied based on your address information.\n
\n
\n );\n }\n}\n\nexport default CartSubtotal;\n","import { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport * as productActions from \"../../actions/productActions\";\nimport CartSubtotal from '../../components/common/CartSubtotal/CartSubtotal.jsx';\n\nconst mapStateToProps = (state) => ({\n interPrice: state.interPrice.interPrice,\n region: state.interPrice.region\n});\n\nconst mapDispatchToProps = dispatch => ({\n ...bindActionCreators({...productActions}, dispatch)\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(CartSubtotal);\n","import React, { Component } from \"react\";\nimport './CartMenu.scss';\n\nimport { withRouter, Link } from \"react-router-dom\"; \nimport Helmet from \"react-helmet\";\n\nimport ReactGA from 'react-ga';\n\nimport CartReview from '../../../containers/common/CartReview.js';\nimport CartSubtotal from '../../../containers/common/CartSubtotal.js';\n\nclass CartMenu extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n\n }\n\n this.sidebar = React.createRef(); \n this.sidebarMenu = React.createRef(); \n this.sidebarContent = React.createRef(); \n this.sidebarHeader = React.createRef(); \n this.sidebarFooter = React.createRef(); \n\n this.onClickClose = this.onClickClose.bind(this); \n this.onClickCheckout = this.onClickCheckout.bind(this); \n this.onClickViewCart = this.onClickViewCart.bind(this);\n\n this.handleResize = this.handleResize.bind(this);\n }\n\n onAnalyticsSend(value) {\n ReactGA.event({\n category: \"StoreComponent\",\n action: \"CartMenu\",\n label: value\n }, ['gadev']);\n }\n\n onClickClose() {\n this.props.cartMenuHide();\n this.props.cartResetProductsAdded();\n }\n\n onClickCheckout() {\n this.props.cartCheckout();\n }\n\n onClickViewCart() {\n this.props.cartMenuHide();\n\n this.props.history.push(\"/store/cart/\");\n }\n \n componentDidUpdate(prevProps) {\n if (prevProps.show !== this.props.show) {\n this.handleResize();\n }\n }\n\n handleResize() {\n if (this.sidebar && this.sidebar.current) {\n this.sidebar.current.style.height = window.innerHeight + \"px\";\n\n let headerHeight = this.sidebarHeader.current.style.height;\n let footerHeight = this.sidebarFooter && this.sidebarFooter.current ? this.sidebarFooter.current.style.height : 0;\n\n this.sidebar.current.style.height = (window.innerHeight - headerHeight - footerHeight) + \"px\";\n\n var self = this;\n setTimeout(function(){\n const { show } = self.props;\n\n if (show) {\n self.sidebarMenu.current.classList.add(\"show\");\n } else {\n self.sidebarMenu.current.classList.remove(\"show\");\n }\n }, 50); \n }\n } \n\n componentDidMount() {\n window.addEventListener('resize', this.handleResize);\n\n this.handleResize();\n }\n\n render() {\n\n const { cartProducts, cartProductsAdded, show } = this.props;\n\n if (!show)\n return null;\n\n let isCartEmpty = (typeof cartProducts === \"undefined\") || (cartProducts.length === 0);\n\n let addedItemsCount = (typeof cartProductsAdded === \"undefined\") ? 0 : cartProductsAdded.length;\n\n return (\n
\n \n \n \n\n
\n
{this.onClickClose(); this.onAnalyticsSend('Overlay_click')}}>
\n
\n
\n
Your Cart
\n
{this.onClickClose(); this.onAnalyticsSend('Button_click')}}>
\n
\n
\n { isCartEmpty ?\n <>\n Your cart is empty.
Please {this.onClickClose(); this.onAnalyticsSend('Choose_a_product_click')}}>choose a product and configure a license.\n \n :\n <>\n {addedItemsCount > 0 ?
{addedItemsCount} items added to cart!
: null}\n\n \n \n }\n
\n { isCartEmpty ? null : \n
\n {this.onClickClose(); this.onAnalyticsSend('Continue shopping click')}}>Continue shopping\n
\n \n\n
\n
{this.onClickViewCart(); this.onAnalyticsSend('View_cart_click')}}>View cart
\n
{this.onClickCheckout(); this.onAnalyticsSend('Checkout_click')}}>Checkout
\n
\n
\n
\n }\n
\n
\n
\n );\n }\n}\n\nexport default withRouter(CartMenu);\n","import { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport * as cartActions from \"../../actions/cartActions\";\nimport CartMenu from \"../../components/common/CartMenu/CartMenu.jsx\";\n\nconst mapStateToProps = (state) => ({\n cartProducts: state.cart.cartProducts,\n cartProductsAdded: state.cart.cartProductsAdded,\n show: state.cartMenu.show\n});\n\nconst mapDispatchToProps = dispatch => ({\n ...bindActionCreators(cartActions, dispatch)\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(CartMenu);\n","import React, { useRef } from 'react';\nimport './footer.scss';\n\nconst footer = () => {\n return (\n \n );\n};\n\nexport default footer;\n","let apis = { \n staging: {\n regionUrl: \"https://staging.smartbear.com/services/interprice/interprice.aspx/?getZone=1\",\n interpriceUrl: \"https://staging.smartbear.com/rest/customtableitem.sb.InternationalPricing?format=json&columns=ProductCode,Price_Euro,Price_USD,Price_USD_NORAM&hash=2194de77084977d086fee461482c7b31d7a5a17d1b8216dc7c4a85b8f2144d43\",\n productsUrl: \"https://staging.smartbear.com/rest/customtableitem.sb.Products?format=json&columns=Name,Price,Url,Description,Rank,IconCSSClass,LearnMoreLink,LearnMoreCaption,Solutions,MarketPlaces,Platforms,Hubs,ProductFamilyCSSClass,LinkToPricing&Where=eCommerceEnabled=1&hash=abc557b120695f47c9267e800ea2e6edc0267199526fc01e6308886be38c2c6c\",\n solutionsUrl: \"https://staging.smartbear.com/rest/customtableitem.sb.ProductSolutions?format=json&columns=Name&hash=97be180f2aee5dc4b63ff0f90c40e5714d8a510b04eaf2ac0b275118e6c1d265\",\n platformsUrl: \"https://staging.smartbear.com/rest/customtableitem.sb.ProductPlatforms?format=json&columns=Name&hash=d58a25e0d9e9e36b4d45f816af5946f9130e424b72bfac7564a6d097d5aa59b4\",\n marketPlaceUrl: \"https://staging.smartbear.com/rest/customtableitem.sb.ProductMarketPlace?format=json&columns=MarketPlace&hash=96ea8e75bdf453a64b2a8ef2f155219e514746ab18c6c44a6d1220a8a5539001\",\n hubsUrl: \"https://staging.smartbear.com/rest/customtableitem.sb.ProductHubs?format=json&columns=Name&hash=2d6c9cf8b076c82d3c0c3f6d67b31aec1734ca4d1d3bb104a00ac88844cf080e\"\n },\n production: {\n regionUrl: \"https://staging.smartbear.com/services/interprice/interprice.aspx/?getZone=1\",\n interpriceUrl: \"https://smartbear.com/rest/customtableitem.sb.InternationalPricing?format=json&columns=ProductCode,Price_Euro,Price_USD,Price_USD_NORAM&hash=8a01cac91cec3c46565b6dd8c7c88513a14d6221bcba8d884ea57aa0737adb80\",\n productsUrl: \"https://smartbear.com/rest/customtableitem.sb.Products?format=json&columns=Name,Price,Url,Description,Rank,IconCSSClass,LearnMoreLink,LearnMoreCaption,Solutions,MarketPlaces,Platforms,Hubs,ProductFamilyCSSClass,LinkToPricing&Where=eCommerceEnabled=1&hash=acef3dce2e87aa89983c20dcfdba32f0770363b3985d06589789659318bea129\",\n solutionsUrl: \"https://smartbear.com/rest/customtableitem.sb.ProductSolutions?format=json&columns=Name&hash=fa59354a6e0ae3680a78999d592d010b3cbfaeb0519677f84c422435495d57c4\",\n platformsUrl: \"https://smartbear.com/rest/customtableitem.sb.ProductPlatforms?format=json&columns=Name&hash=b90ef939bf65418eca53d555fd30431704cd77bf541dcb0827bca94b104483b7\",\n marketPlaceUrl: \"https://smartbear.com/rest/customtableitem.sb.ProductMarketPlace?format=json&columns=MarketPlace&hash=5bae792e65647d6b6733cae068d89d261a82edb3408dbed1b82a89680b344f82\",\n hubsUrl: \"https://smartbear.com/rest/customtableitem.sb.ProductHubs?format=json&columns=Name&hash=bf782b70e2951c9a6a87124cf61d61dd05933f3c9bb62af715cefa5fd316ac00\"\n }\n};\n\napis.local = apis.staging;\n\n/**\n * Detect current environment\n */\nlet currentEnv = 'local';\n if (window.location.hostname === \"staging.smartbear.com\") {\n currentEnv = \"staging\";\n} else if (window.location.hostname === \"smartbear.com\") {\n currentEnv = \"production\";\n}\n\nconst config = {\n env: currentEnv, \n api: apis[currentEnv]\n}\n\nexport default config;","import React, { Component } from \"react\";\nimport axios from \"axios\";\n\nimport Header from '../../components/header/Header/Header.jsx';\nimport CartCheckout from '../../containers/common/CartCheckout.js';\nimport CartCookie from '../../containers/common/CartCookie.js';\nimport CartMenu from '../../containers/common/CartMenu.js';\nimport Footer from '../../components/footer/footer';\n\nimport config from \"../../config.js\";\n\nclass DefaultTemplate extends Component {\n constructor(props) {\n super(props);\n\n this.fetchData();\n }\n\n fetchData() {\n const { setInterPrice, setRegion} = this.props;\n axios.get(config.api.interpriceUrl).then(response => {\n setInterPrice(\n response.data.customtableitem_sb_InternationalPricings[0].sb_InternationalPricing\n );\n });\n\n axios.get(config.api.regionUrl).then(response => {\n setRegion(\n response.data.zone\n );\n });\n }\n\n render() {\n return (\n
\n \n \n \n
\n {this.props.children} \n
\n
\n );\n }\n}\n\nexport default DefaultTemplate;\n","import { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport * as productActions from \"../../actions/productActions\";\nimport DefaultTemplate from '../../pages/templates/DefaultTemplate.jsx';\n\nconst mapStateToProps = (state) => ({\n InterPrice: state.interPrice.interPrice,\n isReady: state.products.isReady,\n});\n\nconst mapDispatchToProps = dispatch => ({\n ...bindActionCreators(productActions, dispatch)\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(DefaultTemplate);\n","import React, { Component, createRef } from \"react\";\nimport { Container, Card, Grid, Ref, Sticky } from \"semantic-ui-react\";\nimport axios from \"axios\";\nimport ReactGA from 'react-ga';\nimport {\n withRouter\n} from \"react-router-dom\";\nimport Helmet from \"react-helmet\";\n\nimport ProductCard from \"../components/home/Card.jsx\";\nimport AddonCard from \"../components/home/AddonCard.jsx\";\nimport Filter from \"../containers/home/Filter\";\nimport MobileFiter from \"../components/home/MobileFilter\";\nimport LeftMenu from \"../components/home/LeftMenu.jsx\";\n\nimport queryString from \"query-string\";\nimport htmlCleaner from \"../utils/htmlCleaner.js\";\nimport ProductsStore from '../data/products.js';\n\nimport DefaultTemplate from '../containers/templates/DefaultTemplate';\nimport Loader from '../components/common/Loader/Loader.jsx';\n\nimport config from \"../config.js\";\n\nimport \"./HomePage.scss\";\nimport hubs from \"../reducers/hubs.js\";\n\nclass HomePage extends Component {\n constructor(props) {\n super(props);\n this.state ={\n width: window.innerWidth,\n height: window.innerHeight,\n active: true\n }\n this.contextRef = createRef();\n this.fetchData();\n this.setupFilter();\n\n this.currentProduct = '';\n }\n\n onAnalyticsEventClick(area, value) {\n ReactGA.event({\n category: \"StoreComponent\",\n action: area,\n label: value,\n }, ['gadev']);\n }\n\n setupFilter() {\n const { setFilter } = this.props;\n let searchObj = queryString.parse(window.location.search);\n if (searchObj) {\n if (searchObj.hubs) { \n let hubs = searchObj.hubs.split(',');\n if (hubs.length) {\n hubs.forEach(item => { \n setFilter(htmlCleaner(item), 'Hubs')\n });\n }\n }\n\n if (searchObj.solutions) { \n // if(searchObj.solutions === 'Test Management BDD') {\n // searchObj.solutions = 'Test Management + BDD'\n // }\n let solutions = searchObj.solutions.split(',');\n if (solutions.length) {\n solutions.forEach(item => { \n if (item === 'Test Management BDD') {\n item = 'Test Management + BDD'\n }\n setFilter(htmlCleaner(item), 'Solutions')\n });\n }\n }\n\n if (searchObj.platforms) { \n let platforms = searchObj.platforms.split(',');\n if (platforms.length) {\n platforms.forEach(item => { setFilter(htmlCleaner(item), 'Platforms')});\n }\n } \n \n if (searchObj.marketPlaces) { \n let marketPlaces = searchObj.marketPlaces.split(',');\n if (marketPlaces.length) {\n marketPlaces.forEach(item => { setFilter(htmlCleaner(item), 'MarketPlaces')});\n }\n } \n if (searchObj.products) { \n let products = searchObj.products.split(',');\n if (products.length) {\n products.forEach(item => { setFilter(htmlCleaner(item), 'QueryProducts')});\n }\n } \n if (searchObj.productAddons) { \n let addons = searchObj.productAddons.split(',');\n if (addons.length) {\n addons.forEach(item => { setFilter(htmlCleaner(item), 'ProductAddons')});\n }\n } \n\n if (searchObj.product) { \n this.currentProduct = searchObj.product;\n }\n } \n }\n\n fetchData() {\n const { setProducts, setAddons, setSolutions, setMarketPlaces, setPlatforms, setHubs } = this.props;\n\n axios.get(config.api.productsUrl).then(response => {\n setProducts(\n response.data.customtableitem_sb_Products[0].sb_Products\n );\n });\n setAddons(\n ProductsStore.getAddons()\n );\n axios.get(config.api.solutionsUrl).then(response => {\n setSolutions(\n response.data.customtableitem_sb_ProductSolutions[0].sb_ProductSolutions\n )\n });\n axios.get(config.api.marketPlaceUrl).then(response => {\n setMarketPlaces(\n response.data.customtableitem_sb_ProductMarketPlaces[0].sb_ProductMarketplace\n )\n });\n axios.get(config.api.platformsUrl).then(response => {\n setPlatforms(\n response.data.customtableitem_sb_ProductPlatforms[0].sb_ProductPlatforms\n )\n });\n\n axios.get(config.api.hubsUrl).then(response => {\n setHubs(\n response.data.customtableitem_sb_ProductHubs[0].sb_ProductHubs\n )\n });\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.filter.selectedItems !== this.props.filter.selectedItems) {\n this.updateHistory()\n }\n }\n\n updateHistory() {\n const { filter } = this.props;\n\n let queryParams = [];\n\n if (filter.selectedItems.length) { \n\n let solutionParams = [],\n platformParams = [],\n marketPlaceParams = [],\n queryProducts = [],\n productAddonsParams = [],\n hubsParams = [];\n\n filter.selectedItems.forEach((selectedItem) => {\n if (!!selectedItem.Solutions) {\n solutionParams.push(selectedItem.Solutions);\n }\n\n if (!!selectedItem.Platforms) {\n platformParams.push(selectedItem.Platforms);\n }\n\n if (!!selectedItem.MarketPlaces) {\n marketPlaceParams.push(selectedItem.MarketPlaces);\n }\n\n if (!!selectedItem.ProductAddons) {\n productAddonsParams.push(selectedItem.ProductAddons);\n }\n\n if (!!selectedItem.QueryProducts) {\n queryProducts.push(selectedItem.QueryProducts);\n } \n\n if (!!selectedItem.Hubs) {\n hubsParams.push(selectedItem.Hubs);\n }\n });\n\n\n if (solutionParams.length)\n queryParams.push(\"solutions=\" + solutionParams);\n\n if (platformParams.length)\n queryParams.push(\"platforms=\" + platformParams); \n \n if (marketPlaceParams.length) \n queryParams.push(\"marketPlaces=\" + marketPlaceParams);\n\n if (productAddonsParams.length) \n queryParams.push(\"productAddons=\" + productAddonsParams);\n\n if (queryProducts.length) \n queryParams.push(\"products=\" + queryProducts); \n \n if (hubsParams.length)\n queryParams.push(\"hubs=\" + hubsParams);\n }\n\n let searchObj = queryString.parse(window.location.search);\n\n /*// Product filter\n if (searchObj && searchObj.products) {\n queryParams.push(\"products=\" + searchObj.products);\n }*/\n\n // Product popup (overrides all other params)\n if (searchObj && searchObj.product) {\n queryParams = [];\n queryParams.push(\"product=\" + searchObj.product);\n }\n\n let url = window.location.pathname.replace(process.env.PUBLIC_URL, \"\");\n if (queryParams.length)\n url = url + '?' + queryParams.join(\"&\");\n \n this.props.history.push(url);\n }\n\n updateDimensions = () => {\n this.setState({ width: window.innerWidth, height: window.innerHeight });\n };\n\n componentWillUnmount() {\n window.removeEventListener('resize', this.updateDimensions);\n }\n \n componentDidMount() {\n window.addEventListener('resize', this.updateDimensions);\n }\n\n render() {\n const { allProducts, products, addons, solutions, integrations, technologies, marketPlaces, platforms, hubs, isReady, cartAddProducts, cartMenuShow, show, mobileFilterShow, mobileFilterHide } = this.props;\n let {active, width} = this.state;\n if (width > 920) {\n active = true}\n else active = false\n\n // Needs to be refactored, move to LeftMenu event handlers\n // this.updateHistory();\n\n return (\n \n \n
\n {!isReady ? : \n \n \n
\n \n \n 921 ? 5 : null}>\n 921 ? 65 : 115}>\n \n \n \n 921 ? 11 : 16}>\n \n \n 921 ? width < 1368 ? 2 : 3 : 2} data-testid=\"products-group\">\n {products.map((product, i) => (\n \n ))}\n \n {addons !== null && addons.length > 0 ? (
\n
\n
Trainings, Certification and Add-Ons
\n
\n Purchase additional trainings, certifications, and add-ons for your favorite products. \n
\n
\n
) : ''}\n 921 ? width < 1368 ? 2 : 3 : 2} data-testid=\"addons-group\">\n {addons !== null ? addons.map((addon, i) => (\n \n )): ''}\n \n
\n
\n
\n
\n
\n }\n
\n
\n );\n }\n}\n\nexport default withRouter(HomePage);\n","import { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport filter from \"lodash/includes\";\nimport orderBy from \"lodash/orderBy\";\n\nimport * as productActions from \"../../actions/productActions\";\nimport * as filterActions from \"../../actions/filterActions\";\nimport * as cartActions from \"../../actions/cartActions\";\n\nimport HomePage from \"../../pages/HomePage.jsx\";\n\nimport ProductsStore from \"../../data/products\";\n\nconst sortByProducts = (products, filterBy) => {\n\n products = orderBy(orderBy(products, `Name`, \"asc\"), \"Rank\", \"desc\");\n\n if (filterBy !== '' && products !== []) {\n return products.filter(prod => {\n return prod.Name.toLowerCase().includes(filterBy.toLowerCase());\n }) \n }\n else if (filterBy === '') {\n return products;\n }\n};\n\nconst sortByAddons = (addons, filterBy) => {\n if (filterBy !== '' && addons !== []) {\n return addons.filter(addon => {\n return addon.productName.toLowerCase().includes(filterBy.toLowerCase());\n }) \n }\n else if (filterBy === '') {\n return addons;\n }\n}\n\n\nlet productsChanged = [];\nconst filterProducts = (products, selectedItems) => {\n if (selectedItems.length > 0) {\n productsChanged = products;\n for (let i = 0; i < selectedItems.length; i++) {\n\n if (!!selectedItems[i].Solutions) {\n productsChanged = productsChanged.filter(o => {\n if (o.Solutions !== null){\n return o.Solutions.toLowerCase().includes(selectedItems[i].Solutions.toLowerCase())}\n else return null\n }\n );\n }\n\n if (!!selectedItems[i].Platforms) {\n productsChanged = productsChanged.filter(o => {\n if(o.Platforms !== null) {\n return o.Platforms.toLowerCase().includes(selectedItems[i].Platforms.toLowerCase())}\n else return null}\n );\n }\n\n if (!!selectedItems[i].MarketPlaces) {\n productsChanged = productsChanged.filter(o => {\n if(o.MarketPlaces !== null) {\n return o.MarketPlaces.toLowerCase().includes(selectedItems[i].MarketPlaces.toLowerCase())}\n else return null}\n );\n } \n\n if (!!selectedItems[i].ProductAddons) {\n productsChanged = productsChanged.filter(o => {\n if (o.ProductAddons !== null) {\n return o.Name.toLowerCase().includes(selectedItems[i].ProductAddons.toLowerCase())}\n else return null}\n )\n }\n\n if (!!selectedItems[i].Hubs) {\n productsChanged = productsChanged.filter(o => {\n if (o.Hubs !== null) {\n return o.Hubs.toLowerCase().includes(selectedItems[i].Hubs.toLowerCase())}\n else return null}\n );\n }\n }\n\n \n \n // Query product filter neews to be last \n let queryProducts = [];\n for (let i = 0; i < selectedItems.length; i++) {\n if (!!selectedItems[i].QueryProducts) {\n\n for (let j = 0; j < productsChanged.length; j++) {\n if (selectedItems[i].QueryProducts.trim().toLowerCase() === productsChanged[j].Name.toLowerCase()) {\n queryProducts.push(products[j]);\n }\n }\n } \n }\n\n if (queryProducts.length) {\n productsChanged = [...queryProducts];\n }\n\n return productsChanged;\n } else if (selectedItems.length === 0) \n {\n return products;\n }\n};\n\nconst filterAddons = (addons, selectedItems) => { \n if (selectedItems.length > 0) {\n let addonsChanged = addons;\n for (let i = 0; i < selectedItems.length; i++) {\n if (!!selectedItems[i].ProductAddons) {\n addonsChanged = addonsChanged.filter(o => {\n if (o.productName !== null) {\n return o.productName.toLowerCase().includes(selectedItems[i].ProductAddons.toLowerCase())\n }\n else return null\n })\n }\n if (productsChanged.length > 0) {\n let addons = [];\n addonsChanged = addonsChanged.filter(o => {\n productsChanged.forEach(product => {\n if (product.Name.toLowerCase() === o.productName.toLowerCase()) {\n addons = addons.concat(o);\n }\n })\n })\n addonsChanged = addons;\n }\n }\n return addonsChanged;\n } \n else if ( selectedItems.length === 0 ) {\n return addons;\n }\n}\n\nconst filteringProducts = (products, filterBy, selectedItems) => {\n const filterProductsResult = filterProducts(products, selectedItems);\n return sortByProducts(filterProductsResult, filterBy);\n};\n\nconst filteringAddons = (addons, filterBy, selectedItems) => {\n const filterAddonsResult = filterAddons(addons, selectedItems);\n return sortByAddons(filterAddonsResult, filterBy);\n};\n\nconst mapStateToProps = state => {\n\n const { products, solutions, marketPlaces,\n platforms, hubs, filter, mobileFilter } = state;\n const mapState = {\n // allProducts is needed for recommended items\n allProducts: products.products, \n products:\n products.products &&\n filteringProducts(\n products.products,\n filter.filterBy,\n filter.selectedItems\n ),\n addons: products.addons && \n filteringAddons(\n products.addons, \n filter.filterBy,\n filter.selectedItems\n ),\n solutions: solutions,\n marketPlaces: marketPlaces,\n platforms: platforms,\n hubs: hubs,\n isReady: products.isReady,\n area: products.activeIndex,\n show: mobileFilter.show,\n filter\n };\n\n return mapState;\n};\n\nconst mapDispatchToProps = dispatch => ({\n ...bindActionCreators({ \n ...productActions,\n ...filterActions,\n ...cartActions,\n }, \n dispatch)\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(HomePage);\n","import React, { Component } from \"react\";\nimport './Breadcrumb.scss';\n\nclass Breadcrumb extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n\n }\n }\n\n\n render() {\n let step = this.props.step ? this.props.step : 'configure';\n \n return (\n
\n
1. Configure license
\n
2. Review Cart
\n
3. Checkout & Buy
\n
\n );\n }\n}\n\nexport default Breadcrumb;\n","import React, { Component } from \"react\";\nimport './CartReviewPage.scss';\n\nimport { Link } from \"react-router-dom\";\nimport Helmet from \"react-helmet\";\n\nimport DefaultTemplate from '../containers/templates/DefaultTemplate.js'\nimport CartReview from '../containers/common/CartReview.js';\nimport CartSubtotal from '../containers/common/CartSubtotal.js';\n\nimport Breadcrumb from '../components/common/Breadcrumb/Breadcrumb.jsx';\n\nimport ProductStore from \"../data/products.js\";\n\nclass CartReviewPage extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n removeItemIds: []\n }\n \n this.onChangeItem = this.onChangeItem.bind(this);\n this.onClickRemove = this.onClickRemove.bind(this); \n this.onClickCheckout = this.onClickCheckout.bind(this); \n }\n\n onChangeItem(id, checked) {\n\n let removeItemIds = [... this.state.removeItemIds];\n\n if (checked && (removeItemIds.indexOf(id) === -1)) {\n removeItemIds.push(id);\n } else if (!checked && (removeItemIds.indexOf(id) !== -1)) {\n removeItemIds = removeItemIds.filter(item => item !== id); \n }\n\n this.setState({\n removeItemIds: removeItemIds\n });\n }\n\n onClickRemove() {\n const { removeItemIds } = this.state;\n let { cartProducts } = this.props;\n\n if (removeItemIds.length) {\n\n let oldTCBaseId = \"\";\n let newTCBaseId = \"\";\n let newTCBaseCount = 1;\n\n removeItemIds.forEach(id => {\n // if TC\n if (id.indexOf(\":\") !== -1) {\n let modules = id.split(\":\");\n\n // if TC base\n if (modules[0].indexOf(\"-pro\") === -1) {\n\n oldTCBaseId = modules[1];\n if (newTCBaseId.length === 0) {\n newTCBaseId = oldTCBaseId;\n newTCBaseCount = parseInt(modules[2]);\n }\n\n let module = modules[0].split(\"-\");\n module = module[module.length - 1];\n\n switch(module) {\n case 'platform':\n newTCBaseId = \"\";\n break;\n\n case 'desktop':\n case 'mobile':\n case 'web': \n newTCBaseId = newTCBaseId.replace(\"-\" + module, \"\");\n break; \n }\n }\n }\n });\n\n\n if (oldTCBaseId.length) {\n this.props.cartDeleteProductByIDs([oldTCBaseId]);\n\n if (newTCBaseId.length) { \n let saleitem = ProductStore.getSaleItemById(newTCBaseId); \n if (saleitem) {\n this.props.cartAddProducts([{ \n product: saleitem,\n count: newTCBaseCount\n }]);\n }\n }\n }\n\n this.props.cartDeleteProductByIDs(removeItemIds);\n\n this.setState({\n removeItemIds: []\n });\n }\n }\n\n onClickCheckout() {\n this.props.cartCheckout();\n }\n\n render() {\n let { cartProducts } = this.props;\n let { removeItemIds } = this.state;\n\n if ((typeof cartProducts === \"undefined\")) {\n cartProducts = [];\n }\n\n let cnt = 0;\n cartProducts.forEach(cartProduct => {\n let count = cartProduct.count ? cartProduct.count : 1\n count = count > 0 ? count : 1; \n\n cnt += count;\n });\n\n return (\n \n \n\n
\n
\n \n
\n
Cart Overview
\n
{cnt} item{cnt === 1 ? \"\" : \"s\"}
\n
\n
\n
\n { cnt ? \n
\n \n\n
\n
Remove selected
\n
\n\n
\n\n
\n \n
\n
\n
Proceed to checkout
\n
\n
\n
\n :\n
Your cart is empty. Please choose a product and configure a license.
\n }\n \n
\n
\n
\n );\n }\n}\n\nexport default CartReviewPage;\n","import { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport * as cartActions from \"../actions/cartActions\";\nimport CartReviewPage from \"../pages/CartReviewPage.jsx\";\n\nconst mapStateToProps = (state) => ({\n cartProducts: state.cart.cartProducts\n});\n\nconst mapDispatchToProps = dispatch => ({\n ...bindActionCreators(cartActions, dispatch)\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(CartReviewPage);\n","export const cartPreviewAddProducts = products => ({\n type: \"CARTPREVIEW_ADD_PRODUCTS\",\n payload: products\n});\n\nexport const cartPreviewDeleteProducts = () => ({\n type: \"CARTPREVIEW_DELETE_PRODUCTS\",\n payload: []\n});\n","import React, { Component } from \"react\";\nimport './CartPreview.scss';\n\nimport { withRouter } from \"react-router-dom\";\n\nimport ProductsStore from '../../../data/products.js';\nimport ReactGA from 'react-ga'\n\nimport CartPreviewItem from './CartPreviewItem.jsx';\nimport CartSubtotal from '../../../containers/common/CartSubtotal.js';\n\nclass CartPreview extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n items: [] // saleitems displayed\n }\n\n this.onChangeItemCount = this.onChangeItemCount.bind(this);\n this.onClickCartAdd = this.onClickCartAdd.bind(this);\n this.onClickCartBuy = this.onClickCartBuy.bind(this);\n }\n\n onAnalyticsSend(value) {\n ReactGA.event({\n category: \"StoreComponent\",\n action: \"CartPreview\",\n label: value\n }, ['gadev']);\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.cartPreviewProducts !== this.props.cartPreviewProducts) {\n this.resolveProducts();\n }\n }\n\n componentDidMount() {\n this.props.cartPreviewDeleteProducts(); \n\n this.resolveProducts();\n }\n\n onChangeItemCount(id, count) {\n const { items } = this.state;\n\n let tmp = [];\n\n items.forEach(item => {\n\n tmp.push({\n product: item.product,\n count: (item.product.id === id) ? count : item.count\n });\n if (item.product.id === id) {\n this.onAnalyticsSend(item.product.title + ' Change_Count');\n }\n });\n\n this.setState({\n items: tmp\n });\n }\n\n resolveProducts() {\n const { cartPreviewProducts } = this.props;\n\n if (typeof cartPreviewProducts === \"undefined\") \n return;\n\n let items = [];\n\n cartPreviewProducts.forEach(product => { \n items.push({\n product: product\n });\n });\n\n this.setState({ \n items: items\n });\n }\n\n onClickCartAdd() {\n const { items } = this.state;\n \n this.props.cartAddProducts(items);\n\n this.props.cartMenuShow();\n }\n\n onClickCartBuy() {\n const { items } = this.state;\n\n this.props.cartAddProducts(items);\n this.props.cartCheckout();\n }\n\n render() {\n\n const { items } = this.state;\n\n // for redux state - https://blog.jakoblind.no/react-component-not-updating/\n const subTotalItems = Object.assign([], items);\n\n if (items.length === 0) {\n return (\n
\n
\n
Your cart is empty
\n
\n
\n Please configure the license or choose any add-ons. \n
\n
\n );\n }\n return (\n
\n
\n
Cart overview
\n
{items.length} items
\n
\n
\n {items.map((cartItem, i) => (\n \n ))}\n
\n
\n \n\n
{this.onClickCartBuy(); this.onAnalyticsSend('Buy')}}>Buy Now
\n
{this.onClickCartAdd(); this.onAnalyticsSend('CartAdd_click')}}>Add to cart
\n
\n
\n );\n }\n}\n\nexport default withRouter(CartPreview);\n","import { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport * as cartActions from \"../../actions/cartActions\";\nimport * as cartPreviewActions from \"../../actions/cartPreviewActions\";\nimport CartPreview from \"../../components/common/CartPreview/CartPreview.jsx\";\n\nconst mapStateToProps = (state) => ({\n cartPreviewProducts: state.cartPreview.cartPreviewProducts,\n interPrice: state.interPrice.interPrice\n});\n\nconst mapDispatchToProps = dispatch => ({\n ...bindActionCreators({\n ...cartActions, \n ...cartPreviewActions}, \n dispatch)\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(CartPreview);\n","import React, { Component } from \"react\";\nimport './PageTemplate.scss';\n\nimport { Link } from \"react-router-dom\";\nimport ReactTooltip from \"react-tooltip\";\nimport Helmet from \"react-helmet\";\n\nimport CartPreview from '../../containers/common/CartPreview.js';\nimport Breadcrumb from '../../components/common/Breadcrumb/Breadcrumb.jsx';\n\nimport DefaultTemplate from '../../containers/templates/DefaultTemplate.js';\n\nclass ProductTemplate extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n \n } \n }\n\n\n render() {\n return (\n \n \n
\n
\n \n Back to products\n \n \n \n
\n
\n
\n {this.props.children} \n\n \n
\n
\n \n
\n
\n
\n
\n );\n }\n}\n\nexport default ProductTemplate;\n","import React, { Component } from \"react\";\nimport InterPrice from '../../../containers/common/InterPrice/InterPrice';\n\nimport './SaleItem.scss';\n\nclass SaleItem extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n checked: this.props.checked ? this.props.checked : false,\n value: this.props.value ? this.props.value : null,\n name: this.props.name\n }\n\n this.handleClick = this.handleClick.bind(this);\n this.handleClickCallback = this.handleClickCallback.bind(this); \n }\n\n handleClickCallback(checked) {\n const { name, value } = this.state;\n\n if (this.props.onClick) {\n this.props.onClick(name, value, checked);\n } \n }\n\n handleClick() {\n const { checked } = this.state;\n\n if (!this.props.disabled) {\n this.setState({\n checked: !checked\n }, () => this.handleClickCallback(!checked));\n }\n }\n\n componentDidUpdate(prevProps) {\n if ((prevProps.checked !== this.props.checked)) {\n this.setState({\n checked: this.props.checked\n });\n }\n }\n\n render() {\n const cssChecked = this.state.checked ? \"si-active\" : \"\";\n const cssClassName = this.props.className ? this.props.className : \"\";\n const cssDisabled = this.props.disabled ? \"disabled\" : \"\";\n\n return (\n
\n
\n \n
\n {\n this.props.ico ?
: null\n }\n
{this.props.title}{this.props.price ?
: null}
\n {\n this.props.information ?
: null\n } \n \n
\n );\n }\n}\n\nexport default SaleItem;\n","import React, { Component } from \"react\";\nimport './AddonList.scss';\n\nimport SaleItem from '../SaleItem/SaleItem.jsx';\n\nclass AddonList extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n isOpen: false\n }\n\n this.onClick = this.onClick.bind(this);\n }\n\n onClick() {\n const { isOpen } = this.state;\n\n this.setState({\n isOpen: !isOpen\n });\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.selectedIds !== this.props.selectedIds) {\n if (this.props.selectedIds.length) { \n this.setState({\n isOpen: true\n });\n }\n } else if (prevProps.options !== this.props.options) {\n if (this.props.options.length) { \n this.setState({\n isOpen: true\n });\n }\n }\n }\n\n\n render() {\n const { isOpen } = this.state;\n\n let selectedIds = this.props.selectedIds ? this.props.selectedIds : [];\n let addons = this.props.addons ? this.props.addons : [];\n let options = this.props.options ? this.props.options : [];\n let handleAddonChange = this.props.handleAddonChange ? this.props.handleAddonChange : null;\n\n return (\n
\n
\n
Add-ons
\n
Certified Training, Additional support & applicaiton add-ons
\n
\n
\n\n { addons.map((saleitem, i) => {\n\n let disabled = false;\n let checked = false;\n\n options.forEach(option => {\n if (option.id === saleitem.id) {\n disabled = option.disabled;\n checked = option.checked;\n }\n });\n\n if (selectedIds.includes(saleitem.id)) {\n checked = true;\n }\n\n return (\n \n )\n })}\n\n
\n
\n );\n }\n}\n\nexport default AddonList;\n","import React, { Component } from \"react\";\n\nimport ProductsStore from '../../data/products.js';\n\nimport ProductTemplate from '../templates/ProductTemplate.jsx';\n\nimport SaleItem from '../../components/common/SaleItem/SaleItem.jsx';\nimport AddonList from '../../components/common/AddonList/AddonList.jsx';\n\nimport queryString from \"query-string\";\nimport { withRouter } from \"react-router-dom\";\n\nclass TestCompletePage extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n licenseType: null,\n platformType: null,\n moduleDesktopChecked: false,\n moduleMobileChecked: false,\n moduleWebChecked: false,\n moduleErrorMessage: false,\n // IDs of selected addons\n addonIds: []\n }\n\n this.handleLicenseChange = this.handleLicenseChange.bind(this);\n this.handlePlatformChange = this.handlePlatformChange.bind(this); \n this.handleModuleChange = this.handleModuleChange.bind(this); \n this.handleAddonChange = this.handleAddonChange.bind(this); \n\n this.product = ProductsStore.getProductByUrl('testcomplete');\n \n }\n\n updateSelection() {\n let searchObj = queryString.parse(window.location.search);\n\n let licenseType=null,\n platformType=null,\n moduleDesktopChecked=false,\n moduleMobileChecked=false,\n moduleWebChecked=false,\n moduleErrorMessage=false,\n addonIds=[];\n\n if (searchObj.licenseType) {\n switch(searchObj.licenseType) {\n case 'floating':\n case 'nodeLocked':\n licenseType = searchObj.licenseType;\n } \n }\n\n if (licenseType && searchObj.platformType) {\n switch(searchObj.platformType) {\n case 'base':\n case 'pro':\n platformType = searchObj.platformType;\n } \n }\n\n if (licenseType && platformType && searchObj.modules) {\n let modules = searchObj.modules.split(\",\");\n if (modules.length) {\n moduleDesktopChecked = modules.includes(\"desktop\");\n moduleMobileChecked = modules.includes(\"mobile\");\n moduleWebChecked = modules.includes(\"web\");\n } \n }\n\n if (searchObj.items) {\n addonIds = searchObj.items.split(\",\");\n }\n\n this.setState({\n licenseType: licenseType,\n platformType: platformType,\n moduleDesktopChecked: moduleDesktopChecked,\n moduleMobileChecked: moduleMobileChecked,\n moduleWebChecked: moduleWebChecked,\n addonIds: addonIds\n }, () => this.updateCart());\n }\n\n componentDidMount(){\n this.updateSelection();\n }\n\n handleLicenseChange(e) {\n this.setState({\n licenseType: e.target.value\n }, () => this.updateCart()); \n }\n \n handlePlatformChange(e) {\n const isPro = e.target.value === 'pro';\n\n this.setState({\n platformType: e.target.value,\n moduleDesktopChecked: true,\n moduleMobileChecked: isPro,\n moduleWebChecked: isPro\n }, () => this.updateCart()); \n\n }\n\n handleModuleChange(name, value, checked) {\n const { moduleDesktopChecked, moduleMobileChecked, moduleWebChecked } = this.state;\n let cnt = 0;\n if (moduleDesktopChecked) cnt++;\n if (moduleMobileChecked) cnt++;\n if (moduleWebChecked) cnt++;\n\n if (cnt === 1 && !checked) {\n this.setState({\n moduleErrorMessage: true\n });\n } \n switch(name) {\n case 'desktop':\n this.setState({ moduleDesktopChecked: checked }, () => this.updateCart());\n break;\n case 'mobile':\n this.setState({ moduleMobileChecked: checked }, () => this.updateCart());\n break;\n case 'web':\n this.setState({ moduleWebChecked: checked }, () => this.updateCart());\n break; \n }\n }\n\n handleAddonChange(name, value, checked) {\n\n let addonIds = [...this.state.addonIds ];\n\n let exists = false;\n\n addonIds.forEach((item, idx) => {\n if (item === name) {\n exists = true;\n }\n });\n\n if (checked && !exists) {\n addonIds.push(name);\n } else if (!checked && exists) {\n addonIds = addonIds.filter(item => item !== name); \n }\n\n this.setState({ \n addonIds: addonIds \n }, () => this.updateCart());\n }\n\n updateCart() {\n const {licenseType, platformType, moduleDesktopChecked, moduleMobileChecked, moduleWebChecked, addonIds } = this.state;\n\n let queryParams = [];\n let id = `testcomplete-${licenseType}-`;\n let previewSaleItems = [];\n let saleitems = [];\n switch(licenseType) {\n case 'floating':\n saleitems = this.product.saleitems.floating;\n queryParams.push(\"licenseType=\" + licenseType);\n break;\n\n case 'nodeLocked':\n saleitems = this.product.saleitems.nodeLocked;\n queryParams.push(\"licenseType=\" + licenseType);\n break; \n }\n \n switch(platformType) {\n case 'pro':\n id = id + `pro`;\n\n previewSaleItems = saleitems.filter(s => s.id === id);\n\n\n //Legacy version of \n // let addonTE = ProductsStore.getSaleItemById('testcomplete-addon-te');\n // if (addonTE) {\n // previewSaleItems.push(addonTE);\n \n // }\n\n queryParams.push(\"platformType=pro\");\n break;\n\n case 'base':\n let ids = [];\n\n if (moduleDesktopChecked) ids.push(\"desktop\");\n if (moduleMobileChecked) ids.push(\"mobile\");\n if (moduleWebChecked) ids.push(\"web\");\n\n id = id + ids.join('-');\n\n previewSaleItems = saleitems.filter(s => s.id === id);\n\n queryParams.push(\"platformType=base\");\n if (ids.length) {\n queryParams.push(\"modules=\" + ids.join(\",\"));\n }\n break;\n }\n\n // process addons\n let selectedItems = [];\n addonIds.forEach(item => {\n let addon = ProductsStore.getSaleItemById(item);\n if (addon) {\n previewSaleItems.push(addon);\n selectedItems.push(addon.id);\n }\n });\n\n if (selectedItems.length) {\n queryParams.push(\"items=\" + selectedItems.join(\",\"));\n }\n\n this.props.cartPreviewAddProducts(previewSaleItems);\n\n if (queryParams.length) {\n\n if (window.location.search.indexOf(\"cb=default\") !== -1)\n queryParams.push(\"cb=default\");\n\n let url = window.location.pathname.replace(process.env.PUBLIC_URL, \"\");\n this.props.history.push(url + '?' + queryParams.join(\"&\"));\n }\n }\n\n render() {\n const { licenseType , platformType, moduleDesktopChecked, moduleMobileChecked, moduleWebChecked, addonIds } = this.state;\n\n const platformDisabled = licenseType === null;\n const moduleDisabled = (licenseType === null) ? true : ((platformType === null) ? true : ((platformType === 'pro') ? true : false)); \n\n let moduleDesktopPrice = null;\n let moduleMobilePrice = null;\n let moduleWebPrice = null;\n\n if (platformType === 'base') {\n let modules = ['desktop', 'mobile', 'web'];\n\n modules.forEach(module => {\n let id = 'testcomplete-' + licenseType + '-' + module;\n let saletime = ProductsStore.getSaleItemById(id);\n if (saletime) {\n switch(module) {\n case 'desktop':\n moduleDesktopPrice = saletime.price;\n break;\n case 'mobile':\n moduleMobilePrice = saletime.price;\n break;\n case 'web':\n moduleWebPrice = saletime.price;\n break; \n }\n } \n });\n }\n\n let addonOptions = [];\n // For TC Pro TestExecute addon must be checked by default\n if ((platformType === 'pro')) {\n addonOptions.push({\n id: \"testcomplete-addon-te\",\n disabled: true,\n checked: true\n },{\n id: \"testcomplete-addon-device-cloud-iq\",\n disabled: true,\n checked: true\n });\n }\n\n return (\n \n
\n
\n
License type \n
Fixed: Single user test on physical machines only
\nFloating: Multiple users test on physical and virtual machines\">
\n
\n \n \n\n \n \n
\n\n
\n
Platform type
\n\n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n\n
\n
Select modules
\n\n \n\n \n\n \n
\n
\n \n
\n );\n }\n}\n\nexport default withRouter(TestCompletePage);\n","import { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport * as cartPreviewActions from \"../actions/cartPreviewActions\";\nimport TestCompletePage from \"../pages/products/TestCompletePage.jsx\";\n\nconst mapStateToProps = (state) => ({\n});\n\nconst mapDispatchToProps = dispatch => ({\n ...bindActionCreators(cartPreviewActions, dispatch)\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(TestCompletePage);\n","import React, { Component } from \"react\";\n\nimport ProductsStore from '../../data/products.js';\n\nimport ProductTemplate from '../templates/ProductTemplate.jsx';\nimport Price from '../../components/common/InterPrice/InterPrice.jsx';\n\nimport SaleItem from '../../components/common/SaleItem/SaleItem.jsx';\n\nimport queryString from \"query-string\";\nimport { withRouter } from \"react-router-dom\";\n\n\nclass AQTimePage extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n moduleFloatingChecked: false,\n moduleNodeLockedChecked: false,\n moduleErrorMessage: false,\n }\n \n this.handleModuleChange = this.handleModuleChange.bind(this); \n\n this.product = ProductsStore.getProductByUrl('aqtime-pro');\n }\n\n updateSelection() {\n let searchObj = queryString.parse(window.location.search);\n\n let moduleFloatingChecked = false,\n moduleNodeLockedChecked = false;\n\n\n\n if (searchObj.modules) {\n let modules = searchObj.modules.split(\",\");\n if (modules.length) {\n moduleFloatingChecked = modules.includes(\"aqtime-pro-floating\");\n moduleNodeLockedChecked = modules.includes(\"aqtime-pro-fixed\");\n } \n }\n\n this.setState({\n moduleFloatingChecked: moduleFloatingChecked,\n moduleNodeLockedChecked: moduleNodeLockedChecked,\n }, () => this.updateCart());\n }\n\n componentDidMount(){\n this.updateSelection();\n }\n\n handleModuleChange(name, value, checked) {\n const { moduleFloatingChecked, moduleNodeLockedChecked } = this.state;\n let cnt = 0;\n if (moduleFloatingChecked) cnt++;\n if (moduleNodeLockedChecked) cnt++;\n\n if (cnt === 1 && !checked) {\n this.setState({\n moduleErrorMessage: true\n });\n } \n switch(name) {\n case 'floating':\n this.setState({ moduleFloatingChecked: checked}, () => this.updateCart());\n break;\n case 'fixed':\n this.setState({ moduleNodeLockedChecked: checked}, () => this.updateCart());\n break; \n }\n }\n\n updateCart() {\n const {moduleFloatingChecked, moduleNodeLockedChecked} = this.state;\n\n let previewSaleItems = [];\n let saleitems = [];\n let queryParams = [];\n\n if (moduleFloatingChecked) saleitems.push(this.product.saleitems.floating[0]);\n if (moduleNodeLockedChecked) saleitems.push(this.product.saleitems.nodeLocked[0]);\n\n previewSaleItems = saleitems\n if (saleitems.length > 0) {\n let Ids = [];\n saleitems.forEach(item => { \n Ids.push(item.id);\n })\n queryParams.push(\"modules=\" + Ids.join(\",\"))\n }\n\n this.props.cartPreviewAddProducts(previewSaleItems);\n\n if (queryParams.length) {\n let url = window.location.pathname.replace(process.env.PUBLIC_URL, \"\");\n this.props.history.push(url + '?' + queryParams.join(\"&\"));\n }\n }\n\n render() {\n const { moduleFloatingChecked, moduleNodeLockedChecked } = this.state;\n \n\n return (\n \n
\n
\n
Choose license:
\n\n \n\n \n
\n
\n
\n );\n }\n}\n\nexport default withRouter(AQTimePage);\n","import { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport * as cartPreviewActions from \"../actions/cartPreviewActions\";\nimport AQTimePage from \"../pages/products/AQTimePage.jsx\";\n\nconst mapStateToProps = (state) => ({\n});\n\nconst mapDispatchToProps = dispatch => ({\n ...bindActionCreators(cartPreviewActions, dispatch)\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AQTimePage);\n","import React, { Component } from \"react\";\n\nimport ProductsStore from '../../data/products.js';\n\nimport ProductTemplate from '../templates/ProductTemplate.jsx';\nimport Price from '../../components/common/InterPrice/InterPrice.jsx';\n\nimport SaleItem from '../../components/common/SaleItem/SaleItem.jsx';\n\nimport queryString from \"query-string\";\nimport { withRouter } from \"react-router-dom\";\n\nclass TestLeftPage extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n moduleFloatingChecked: false,\n moduleNodeLockedChecked: false,\n moduleErrorMessage: false,\n }\n \n this.handleModuleChange = this.handleModuleChange.bind(this); \n\n this.product = ProductsStore.getProductByUrl('testleft');\n }\n\n updateSelection() {\n let searchObj = queryString.parse(window.location.search);\n\n let moduleFloatingChecked = false,\n moduleNodeLockedChecked = false;\n\n\n\n if (searchObj.modules) {\n let modules = searchObj.modules.split(\",\");\n if (modules.length) {\n moduleFloatingChecked = modules.includes(\"testleft-floating\");\n moduleNodeLockedChecked = modules.includes(\"testleft-fixed\");\n } \n }\n\n this.setState({\n moduleFloatingChecked: moduleFloatingChecked,\n moduleNodeLockedChecked: moduleNodeLockedChecked,\n }, () => this.updateCart());\n }\n\n componentDidMount(){\n this.updateSelection();\n }\n\n handleModuleChange(name, value, checked) {\n const { moduleFloatingChecked, moduleNodeLockedChecked } = this.state;\n let cnt = 0;\n if (moduleFloatingChecked) cnt++;\n if (moduleNodeLockedChecked) cnt++;\n\n if (cnt === 1 && !checked) {\n this.setState({\n moduleErrorMessage: true\n });\n } \n switch(name) {\n case 'floating':\n this.setState({ moduleFloatingChecked: checked}, () => this.updateCart());\n break;\n case 'fixed':\n this.setState({ moduleNodeLockedChecked: checked }, () => this.updateCart());\n break; \n }\n }\n\n updateCart() {\n const {moduleFloatingChecked, moduleNodeLockedChecked} = this.state;\n\n let previewSaleItems = [];\n let saleitems = [];\n let queryParams = [];\n\n if (moduleFloatingChecked) saleitems.push(this.product.saleitems.floating[0]);\n if (moduleNodeLockedChecked) saleitems.push(this.product.saleitems.nodeLocked[0]);\n\n previewSaleItems = saleitems\n if (saleitems.length > 0) {\n let Ids = [];\n saleitems.forEach(item => { \n Ids.push(item.id);\n })\n queryParams.push(\"modules=\" + Ids.join(\",\"))\n }\n\n this.props.cartPreviewAddProducts(previewSaleItems);\n\n if (queryParams.length) {\n let url = window.location.pathname.replace(process.env.PUBLIC_URL, \"\");\n this.props.history.push(url + '?' + queryParams.join(\"&\"));\n }\n }\n\n render() {\n const { moduleFloatingChecked, moduleNodeLockedChecked } = this.state;\n\n return (\n \n
\n
\n
Choose license:
\n\n \n\n \n
\n \n
\n
\n );\n }\n}\n\nexport default withRouter(TestLeftPage);\n","import { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport * as cartPreviewActions from \"../actions/cartPreviewActions\";\nimport TestLeftPage from \"../pages/products/TestLeftPage.jsx\";\n\nconst mapStateToProps = (state) => ({\n});\n\nconst mapDispatchToProps = dispatch => ({\n ...bindActionCreators(cartPreviewActions, dispatch)\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(TestLeftPage);\n","import React, { Component } from \"react\";\n\nimport ProductsStore from '../../data/products.js';\n\nimport ProductTemplate from '../templates/ProductTemplate.jsx';\nimport Price from '../../components/common/InterPrice/InterPrice.jsx';\n\nimport SaleItem from '../../components/common/SaleItem/SaleItem.jsx';\n\nimport queryString from \"query-string\";\nimport { withRouter } from \"react-router-dom\";\n\nclass CollaboratorPage extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n moduleNodeLockedChecked: false,\n moduleErrorMessage: false,\n }\n \n this.handleModuleChange = this.handleModuleChange.bind(this); \n\n this.product = ProductsStore.getProductByUrl('collaborator');\n }\n\n updateSelection() {\n let searchObj = queryString.parse(window.location.search);\n let moduleNodeLockedChecked = false;\n\n\n\n if (searchObj.modules) {\n let modules = searchObj.modules.split(\",\");\n if (modules.length) {\n moduleNodeLockedChecked = modules.includes(\"collaborator-five-user-one-year-fixed\");\n } \n }\n\n this.setState({\n moduleNodeLockedChecked: moduleNodeLockedChecked,\n }, () => this.updateCart());\n }\n\n componentDidMount(){\n this.updateSelection();\n }\n\n handleModuleChange(name, value, checked) {\n const { moduleNodeLockedChecked } = this.state;\n let cnt = 0;\n if (moduleNodeLockedChecked) cnt++;\n\n if (cnt === 1 && !checked) {\n this.setState({\n moduleErrorMessage: true\n });\n } \n switch(name) {\n case 'fixed':\n this.setState({ moduleNodeLockedChecked: checked}, () => this.updateCart());\n break; \n }\n }\n\n updateCart() {\n const {moduleFloatingChecked, moduleNodeLockedChecked} = this.state;\n\n let previewSaleItems = [];\n let saleitems = [];\n let queryParams = [];\n\n if (moduleNodeLockedChecked) saleitems.push(this.product.saleitems.nodeLocked[0]);\n\n previewSaleItems = saleitems\n\n if (saleitems.length > 0) {\n let Ids = [];\n saleitems.forEach(item => { \n Ids.push(item.id);\n })\n queryParams.push(\"modules=\" + Ids.join(\",\"))\n }\n\n this.props.cartPreviewAddProducts(previewSaleItems);\n\n if (queryParams.length) {\n let url = window.location.pathname.replace(process.env.PUBLIC_URL, \"\");\n this.props.history.push(url + '?' + queryParams.join(\"&\"));\n }\n }\n\n render() {\n const { moduleNodeLockedChecked } = this.state;\n \n\n return (\n \n
\n
\n
Choose license:
\n\n \n
\n
\n
\n );\n }\n}\n\nexport default withRouter(CollaboratorPage);\n","import { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport * as cartPreviewActions from \"../actions/cartPreviewActions\";\nimport CollaboratorPage from \"../pages/products/CollaboratorPage.jsx\";\n\nconst mapStateToProps = (state) => ({\n});\n\nconst mapDispatchToProps = dispatch => ({\n ...bindActionCreators(cartPreviewActions, dispatch)\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(CollaboratorPage);\n","import React, { Component } from \"react\";\n\nimport ProductsStore from '../../data/products.js';\n\nimport ProductTemplate from '../templates/ProductTemplate.jsx';\nimport Price from '../../components/common/InterPrice/InterPrice.jsx';\n\nimport SaleItem from '../../components/common/SaleItem/SaleItem.jsx';\n\nimport queryString from \"query-string\";\nimport { withRouter } from \"react-router-dom\";\n\nclass TestExecutePage extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n moduleFloatingChecked: false,\n moduleErrorMessage: false,\n }\n \n this.handleModuleChange = this.handleModuleChange.bind(this); \n\n this.product = ProductsStore.getProductByUrl('testexecute');\n }\n\n updateSelection() {\n let searchObj = queryString.parse(window.location.search);\n let moduleFloatingChecked = false;\n\n\n\n if (searchObj.modules) {\n let modules = searchObj.modules.split(\",\");\n if (modules.length) {\n moduleFloatingChecked = modules.includes(\"testexecute-floating\");\n } \n }\n\n this.setState({\n moduleFloatingChecked: moduleFloatingChecked,\n }, () => this.updateCart());\n }\n\n componentDidMount(){\n this.updateSelection();\n }\n\n handleModuleChange(name, value, checked) {\n const { moduleFloatingChecked } = this.state;\n let cnt = 0;\n if (moduleFloatingChecked) cnt++;\n\n if (cnt === 1 && !checked) {\n this.setState({\n moduleErrorMessage: true\n });\n } \n switch(name) {\n case 'floating':\n this.setState({ moduleFloatingChecked: checked}, () => this.updateCart());\n break; \n }\n }\n\n updateCart() {\n const {moduleFloatingChecked} = this.state;\n\n let previewSaleItems = [];\n let saleitems = [];\n let queryParams = [];\n\n if (moduleFloatingChecked) saleitems.push(this.product.saleitems.floating[0]);\n\n previewSaleItems = saleitems\n\n if (saleitems.length > 0) {\n let Ids = [];\n saleitems.forEach(item => { \n Ids.push(item.id);\n })\n queryParams.push(\"modules=\" + Ids.join(\",\"))\n }\n\n if (queryParams.length) {\n let url = window.location.pathname.replace(process.env.PUBLIC_URL, \"\");\n this.props.history.push(url + '?' + queryParams.join(\"&\"));\n }\n\n this.props.cartPreviewAddProducts(previewSaleItems);\n }\n\n render() {\n const { moduleFloatingChecked } = this.state;\n \n\n return (\n \n
\n
\n
Choose license:
\n\n \n
\n
\n
\n );\n }\n}\n\nexport default withRouter(TestExecutePage);\n","import { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport * as cartPreviewActions from \"../actions/cartPreviewActions\";\nimport TestExecutePage from \"../pages/products/TestExecutePage.jsx\";\n\nconst mapStateToProps = (state) => ({\n});\n\nconst mapDispatchToProps = dispatch => ({\n ...bindActionCreators(cartPreviewActions, dispatch)\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(TestExecutePage);\n","import React, { Component } from \"react\";\nimport InterPrice from '../../../containers/common/InterPrice/InterPrice';\n\nimport './SaleItemRadio.scss';\n\nclass SaleItemRadio extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n checked: this.props.checked ? this.props.checked : false,\n name: this.props.name\n }\n\n this.handleClick = this.handleClick.bind(this);\n this.handleClickCallback = this.handleClickCallback.bind(this); \n }\n\n handleClickCallback(checked, value) {\n const { name } = this.state;\n\n if (this.props.onClick) {\n this.props.onClick(name, value, checked);\n } \n }\n\n handleClick(e) {\n\n const { checked } = this.state;\n\n if (!this.props.disabled) {\n this.setState({\n checked: !checked\n }, () => this.handleClickCallback(!checked, e.target.value));\n }\n }\n\n componentDidUpdate(prevProps) {\n if ((prevProps.checked !== this.props.checked)) {\n this.setState({\n checked: this.props.checked\n });\n }\n }\n\n render() {\n\n const { name, items, selectedId, disabled, titleRemove } = this.props;\n\n const cssChecked = (this.state.checked && selectedId) ? \"si-radio-active\" : \"\";\n const cssDisabled = this.props.disabled ? \"disabled\" : \"\";\n\n return (\n
\n {\n items.map((item, key) => {\n\n let itemName = name + '_' + item.id;\n let itemChecked = disabled ? false : (item.id === selectedId);\n\n return (\n
\n \n\n \n
\n )\n })\n } \n
\n );\n }\n}\n\nexport default SaleItemRadio;\n","import React, { Component } from \"react\";\n\nimport ProductsStore from '../../data/products.js';\nimport ProductTemplate from '../templates/ProductTemplate.jsx';\n\nimport SaleItemRadio from '../../components/common/SaleItemRadio/SaleItemRadio.jsx';\nimport AddonList from '../../components/common/AddonList/AddonList.jsx';\n\nimport queryString from \"query-string\";\nimport { withRouter } from \"react-router-dom\";\n\nclass ReadyAPIPage extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n licenseType: null,\n moduleErrorMessage: false,\n addonIds: [],\n saleitemsIds: [],\n testSaleitemId: null,\n perfSaleitemId: null,\n virtSaleitemId: null\n }\n \n this.handleLicenseChange = this.handleLicenseChange.bind(this); \n this.handleAddonChange = this.handleAddonChange.bind(this); \n this.handleSalesItemsChange = this.handleSalesItemsChange.bind(this);\n this.handleClearSelection = this.handleClearSelection.bind(this);\n\n this.product = ProductsStore.getProductByUrl('readyapi');\n }\n\n updateSelection() {\n\n let { testSaleitemId, perfSaleitemId, virtSaleitemId } = this.state;\n\n let searchObj = queryString.parse(window.location.search);\n\n let licenseType=null,\n addonIds=[],\n saleitemsIds=[];\n\n if (searchObj.licenseType) {\n switch(searchObj.licenseType) {\n case 'floating':\n case 'nodeLocked':\n licenseType = searchObj.licenseType;\n } \n }\n\n if (searchObj.addons) {\n addonIds = searchObj.addons.split(\",\");\n }\n\n if (searchObj.modules) {\n saleitemsIds = searchObj.modules.split(',');\n \n for (let i = 0; i < saleitemsIds.length; i++) {\n let saleitemId = saleitemsIds[i];\n\n if (saleitemId.includes('test')) {\n testSaleitemId = saleitemId;\n } else if (saleitemId.includes('performance')) {\n perfSaleitemId = saleitemId;\n } else if (saleitemId.includes('virtualization')) {\n virtSaleitemId = saleitemId;\n }\n }\n }\n\n this.setState({\n licenseType: licenseType,\n addonIds: addonIds,\n saleitemsIds: saleitemsIds,\n perfSaleitemId: perfSaleitemId,\n testSaleitemId: testSaleitemId,\n virtSaleitemId: virtSaleitemId \n }, () => this.updateCart());\n }\n\n componentDidMount(){\n this.updateSelection();\n }\n\n handleLicenseChange(e) {\n this.setState({\n licenseType: e.target.value,\n testSaleitemId: null,\n perfSaleitemId: null,\n virtSaleitemId: null,\n saleitemsIds: []\n }, () => this.updateCart()); \n }\n\n handleClearSelection (name) {\n this.handleSalesItemsChange(name, null);\n }\n\n handleSalesItemsChange(name, value, checked) {\n\n let { testSaleitemId, perfSaleitemId, virtSaleitemId } = this.state;\n\n switch(name) {\n case 'performance':\n perfSaleitemId = value;\n break;\n\n case 'test':\n testSaleitemId = value;\n break;\n\n case 'virtualization':\n virtSaleitemId = value;\n break;\n }\n\n let saleitemsIds = [];\n if (perfSaleitemId) saleitemsIds.push(perfSaleitemId);\n if (testSaleitemId) saleitemsIds.push(testSaleitemId);\n if (virtSaleitemId) saleitemsIds.push(virtSaleitemId);\n \n this.setState({ \n saleitemsIds: saleitemsIds,\n perfSaleitemId: perfSaleitemId,\n testSaleitemId: testSaleitemId,\n virtSaleitemId: virtSaleitemId\n }, () => this.updateCart());\n\n }\n\n handleAddonChange(name, value, checked) {\n\n let addonIds = [...this.state.addonIds ];\n\n let exists = false;\n\n addonIds.forEach((item, idx) => {\n if (item === name) {\n exists = true;\n }\n });\n\n if (checked && !exists) {\n addonIds.push(name);\n } else if (!checked && exists) {\n addonIds = addonIds.filter(item => item !== name); \n }\n\n this.setState({ \n addonIds: addonIds \n }, () => this.updateCart());\n }\n\n updateCart() {\n const { licenseType, addonIds, saleitemsIds } = this.state;\n\n let previewSaleItems = [];\n let queryParams = [];\n let selectedAddons = [];\n let selectedModules = [];\n\n switch(licenseType) {\n case 'floating':\n queryParams.push(\"licenseType=\" + licenseType);\n break;\n\n case 'nodeLocked':\n queryParams.push(\"licenseType=\" + licenseType);\n break; \n }\n\n addonIds.forEach(item => {\n let addon = ProductsStore.getSaleItemById(item);\n if (addon) {\n previewSaleItems.push(addon);\n selectedAddons.push(addon.id);\n }\n });\n\n saleitemsIds.forEach(id => {\n let saleItem = ProductsStore.getSaleItemById(id);\n if (saleItem) {\n previewSaleItems.push(saleItem); \n selectedModules.push(saleItem.id) \n }\n });\n\n if (selectedAddons.length) {\n queryParams.push(\"addons=\" + selectedAddons.join(\",\"));\n }\n\n if (selectedModules.length) {\n queryParams.push(\"modules=\" + selectedModules.join(\",\"));\n }\n\n this.props.cartPreviewAddProducts(previewSaleItems);\n\n if (queryParams.length) {\n let url = window.location.pathname.replace(process.env.PUBLIC_URL, \"\");\n this.props.history.push(url + '?' + queryParams.join(\"&\"));\n }\n }\n\n onClean() {\n this.setState({licenseType: null,\n moduleErrorMessage: false,\n addonIds: [],\n saleitemsIds: [],\n }, () => this.updateCart())\n let pathname = window.location.pathname.split(3)[3]\n this.props.history.push(pathname)\n }\n\n render() {\n const { licenseType, addonIds } = this.state;\n const { testSaleitemId, perfSaleitemId, virtSaleitemId } = this.state;\n \n let disabled = true;\n let selectedLicenceType = 'nodeLocked';\n if (licenseType !== null) {\n selectedLicenceType = licenseType;\n disabled = false;\n }\n\n return (\n \n
\n
\n
License type\n
Fixed: Single user test on physical machines only
\n Floating: Multiple users test on physical and virtual machines\">
\n
\n \n \n\n \n \n
\n \n
Select modules
\n
\n
API Functional & Security Testing:\n {testSaleitemId ? this.handleClearSelection('test')}>Clear : null}\n
\n\n \n\n
API Performance Testing:\n {perfSaleitemId ? this.handleClearSelection('performance')}>Clear : null}\n
\n\n \n \n
API & Service Virtualization:\n {virtSaleitemId ? this.handleClearSelection('virtualization')}>Clear : null}\n
\n\n \n\n
\n
\n
\n );\n }\n}\n\nexport default withRouter(ReadyAPIPage);\n","import { connect } from \"react-redux\";\nimport { bindActionCreators } from \"redux\";\nimport * as cartPreviewActions from \"../actions/cartPreviewActions\";\nimport ReadyAPIPage from \"../pages/products/ReadyAPIPage\";\n\nconst mapStateToProps = (state) => ({\n});\n\nconst mapDispatchToProps = dispatch => ({\n ...bindActionCreators(cartPreviewActions, dispatch)\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ReadyAPIPage);\n","export default __webpack_public_path__ + \"static/media/sb_404.790ccfff.svg\";","import React, { Component } from \"react\";\nimport Helmet from \"react-helmet\";\n\nimport Header from '../components/header/Header/Header.jsx'\nimport Footer from '../components/footer/footer'\nimport sb_404 from '../assets/sb_404.svg';\n\nimport './NotFoundPage.scss';\n\nclass NotFoundPage extends Component {\n render() {\n return (\n \n
\n \n \n \n\n
\n \"\"\n

We're sorry but the page you were looking for was not found.

\n

\n Please use the site navigation above to find the page you are looking for or visit our sitemap.
\n You can also help us by reporting the issue here.\n

\n
\n