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

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

\r\n

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

\r\n
\r\n