{"version":3,"sources":["store/coefitients.js","Constants.js","components/tips/Tips.jsx","reducers/app.js","reducers/navigation.js","constants/navigation.js","reducers/index.js","actions/index.js","components/presentation/PreviewMirror/PreviewMirror.jsx","components/presentation/PreviewMirror/PreviewMirrorContainer.js","components/presentation/PresentedMirror/PresentedMirror.jsx","components/presentation/PresentedMirror/PresentedMirrorContainer.js","components/presentation/PresentMirrorCell.jsx","components/presentation/previewCell/PreviewCell.jsx","components/presentation/previewCell/PreviewCellContainer.js","components/presentation/PresentedMirrorsCell.jsx","components/presentation/Bottomdetails/Bottomdetails.jsx","components/presentation/Hint/Hint.jsx","components/presentation/Field.jsx","components/navigation/Windows/Mirror.jsx","components/navigation/Windows/MirrorContainer.js","components/navigation/Windows/Windows.jsx","components/navigation/Addons/Addon.jsx","components/navigation/Addons/SideMirror.jsx","components/navigation/Addons/Addons.jsx","components/navigation/Select/Select.jsx","components/navigation/Select/SelectContainer.js","components/navigation/Details/ProductDetails.jsx","components/navigation/Details/Details.jsx","components/navigation/Details/DetailsContainer.js","components/navigation/Proceed/Proceed.jsx","actions/navigation.js","components/navigation/Phonetabs/Phonetabs.jsx","components/navigation/Checklist/SidlerIcon.base64.js","components/navigation/Checklist/Checklist.jsx","components/navigation/Navigation.jsx","components/navigation/NavigationContainer.js","components/IE.jsx","components/Mailsend/Mailsend.jsx","components/Main.jsx","containers/Main.js","components/loaders/loaders.jsx","App.js","containers/App.js","registerServiceWorker.js","index.js"],"names":["KOEFS","12","12l","12r","12lr","15","15l","15r","15lr","19","19l","19r","19lr","23","23l","23r","23lr","apiBase","ItemTypes","MountTypes","id","className","description","notificateProductNotAvailable","NotificationManager","warning","successNotification","params","success","text","warningNotification","H_31","left","H_40","initialState","emailFormState","stage","availableProducts","presentedMirrors","isSideMirror","selectParams","size","height","depth","mountType","heightArr","activeMirrorId","addonToProduct","mirrorToProduct","getSideMirrorProduct","getKitProduct","isMirrorDrag","requstedPreviewMirrorSize","requstedPreviewSideMirror","requstedPreviewAddonData","mirrorToProductFromState","state","m","console","log","_","find","type","type_id","getMirrorTypeId","addonToProductFromState","a","getSideMirrorProductFromState","res","concat","getKitProductFromState","length","getKitTypeId","width","findIndex","addons","getHeightArr","recalculateIds","forEach","i","_id","pushMirror","newMirror","side","unshift","push","triggerDeleteNotification","triggerAddNotification","recalculateScale","forEachRight","scale","calculateScale","nextMirror","HEIGHT_ARR","leftVl","filter","el","indexOf","rightVl","width_key","curr_width_key","app","newSize","currMirror","mirrorId","addonId","arguments","undefined","action","newMirrors","cloneDeep","formState","changed","newState","Object","objectSpread","dragAndPreviewOff","newMappers","mappers","products","_action$params","newMirrorSize","index","splice","vertical","remove","direction","existingSides","currMirrorIdx","leftMirror","rightMirror","blockAddingInBetween","isChecklistFetching","navigationReducer","configuratorApp","combineReducers","navigation","addCabinet","removeMirror","addAddon","emailForm","PreviewMirror","props","_this","classCallCheck","this","possibleConstructorReturn","getPrototypeOf","call","_imgSrc","bind","assertThisInitialized","_getPresentationClass","addComponent","mirror","initialStyle","ev","isRequestedPreviewMirror","addMirror","addonData","addSideMirror","requestedPreviewVerticalLighting","addVerticalLighting","imgSrc","imgClass","react_default","createElement","onClick","src","alt","style","Component","PreviewMirrorContainer","connect","dispatch","PresentedMirror","handleTouchScreen","document","documentElement","setState","touchScreen","isOpen","openSide","_getSvgClass","handleSideChange","handleAddon","resHandleAddon","mountTypeId","reduce","r","doorsOpen","nextSide","_this2","position","top","zIndex","cancelVerticalLighting","koef","opacity","PreviewMirror_PreviewMirrorContainer","_this3","mirrorButtonClass","appStage","setActiveMirror","flexDirection","srcSet","e","handleRemoveMirror","canDropMobile","_this$props","connectDropTarget","isOver","canDrop","canMoveAddon","_this$props$sidePrevi","sidePreviewParams","preview","react_svg","svgClassName","renderButtons","renderOverlay","renderSideChoose","DropTarget","monitor","getItem","drop","dropTarget","PresentedMirrorContainer","mirrors","hasAddon","PresentMirrorCell","renderMirror","PresentedMirror_PresentedMirrorContainer","widthStr","_calculateWidth","pieceToRender","PreviewCell","renderPreviewComponent","dndObject","getPreviewCoef","containerWidth","parentWidth","canDropOnClick","canDropMirror","previewComponent","key","PreviewCellContainer","coef","width_key_next","curr","PresentedMirrorsCell","map","presentation_PresentMirrorCell","previewCell_PreviewCellContainer","floatSide","previewContainerWidth","_calculateTotalWidthPercentage","containerWidthStr","previewCell","justifyContent","renderHeight","mHeight","selectSize","lastHeight","heightCellScale","details","renderInitialPreview","renderPreviewCell","renderMirrors","canMoveSideMirror","dropped","lastMirror","svgInCellPercentage","clientWidth","clientHeight","getHeightCellScale","Bottomdetails","p","paddingTop","widthBlocks","existingR","existingL","vl","leftVL","rightVL","reverse","_calculateTotalWidth","formStyleWithPadding","renderEachWidth","renderSummary","Hint","Field","toggleButton","renderPlaceholder","previewOrDrag","presentation_Hint_Hint","showDetails","lib","presentation_PresentedMirrorsCell","presentation_Bottomdetails_Bottomdetails","renderShowSizeButton","mirrorSource","beginDrag","startDrag","canDrag","isProductAvailable","endDrag","didDrop","dropTargetData","getDropResult","NavMirror","requestPreview","img","Image","onload","connectDragPreview","requestPreviewMirror","connectDragSource","isDragging","mirrorWidth","cursor","DragSource","dragSource","dragPreview","MirrorContainer","lProduct","available","Mirror","Windows","tabsClass","cabinets","Windows_MirrorContainer","presentation","Addon","addon","requestPreviewAddon","getCursorStyle","SideMirror","requstPreviewSideMirror","Addons","Addons_SideMirror","_getProductById","sizes","Addons_Addon","HeightArr","Select","handleMountTypeChange","arrToRender","h","value","onChange","setSelectSize","parseInt","target","renderDepthOptons","setMountType","renderMountTypeOptons","renderSizeSelect","renderMountTypeSelect","SelectContainer","ProductDetails","_formDescription","_formPrice","renderIcons","renderDeleteIcon","renderInfoIcon","renderPdfIcon","_removeObject","product","name","price","toFixed","window","currency","toUpperCase","removeAddon","removeSideMirror","status","_this$props2","_this$props3","link","href","download","children","ProductContainer","Details","_renderTopWrapper","_renderProductsInfo","_renderSideMirror","_renderKit","_renderMirrrors","_renderAddonds","handler","productAddon","Details_ProductDetails","_this4","sideMirrorProduct","sideMirrorComponent","kitProduct","kitComponents","kitCount","Array","k","DETAILS_IMG","DetailsContainer","Proceed","componentDidMount","grecaptcha","render","sitekey","lang","badge","callback","proceed","onRecaptcha","execute","showCaptcha","captcha","fetchChecklist","fetchChecklistLoaded","proceed_Url","dataObj","_getProductsIds","recaptcha","method","headers","Content-Type","body","JSON","stringify","fetch","then","response","json","data","order_id","type_name","showChecklist","catch","error","buttonStyle","parseFloat","Phonetabs","buttonToggle","_getClassName","imgData","Checklist","getPdfBlobURL","checklistData","totalPrice","doc","jsPDF","setFontSize","addFont","setFont","addImage","setFontStyle","toString","y","textWithLink","url","blob","output","URL","createObjectURL","_formPdf","click","_printPdf","open","print","_emailHandleForm","hideChecklist","renderProducts","Navigation","checklist","handleStateChange","findkey","setConfiguratorStage","param","nextState","chain","flatten","kit","compact","selectedButton","productsForOrder","_formOrderProductsList","react_spinners","loading","navigation_Checklist_Checklist","navigation_Phonetabs_Phonetabs","Select_SelectContainer","navigation_Windows_Windows","navigation_Addons_Addons","Details_DetailsContainer","navigation_Proceed_Proceed","NavigationContainer","IE","Mailsend","email","validateEmail","test","sendMail","message","handleEmailChange","_ref","_target$value","trim","isValidEmail","stopPropagation","disabled","Main","components_IE","navigation_NavigationContainer","components_Mailsend_Mailsend","presentation_Field","DragDropContext","HTML5Backend","MainContainer","Loaders","App","loadProducts","fetch_Url","setProducts","setCurrency","renderCurrencyModal","loaders","containers_Main","AppContainer","isLocalhost","Boolean","location","hostname","match","registerValidSW","swUrl","navigator","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","store","createStore","__REDUX_DEVTOOLS_EXTENSION__","ReactDOM","es","containers_App","getElementById","process","origin","addEventListener","get","ready","unregister","reload","checkValidServiceWorker","registerServiceWorker"],"mappings":"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","file":"static/js/main.c61ee8e9.chunk.js","sourcesContent":["export const VIEW_WIDTH = 1480;\nexport const VIEW_HEIGHT = 1080;\n\nconst W_12 = 242.28;\nconst W_12_R = 281.52;\nconst W_12_L = 283.6;\nconst W_12_LR = 322.65;\n\nconst W_15 = 290.7;\nconst W_15_R = 329.9;\nconst W_15_L = 332.6;\nconst W_15_LR = 371.64;\n\nconst W_19 = 340;\nconst W_19_R = 379.8;\nconst W_19_L = 381.74;\nconst W_19_LR = 421.48;\n\nconst W_23 = 388.5;\nconst W_23_R = 427.83;\nconst W_23_L = 430.7;\nconst W_23_LR = 469.4;\n\n// const W_12 = 241.8;\n// const W_12_R = 241.8;\n// const W_12_L = 241.8;\n// const W_12_LR = 241.8;\n\n// const W_15 = 290.75;\n// const W_15_R = 290.75;\n// const W_15_L = 290.75;\n// const W_15_LR = 290.75;\n\n// const W_19 = 339.74;\n// const W_19_R = 339.74;\n// const W_19_L = 339.74;\n// const W_19_LR = 339.74;\n\n// const W_23 = 388.55;\n// const W_23_R = 388.55;\n// const W_23_L = 388.55;\n// const W_23_LR = 388.55;\n\nconst KOEF_12 = VIEW_WIDTH / W_12;\nconst KOEF_12_L = VIEW_WIDTH / W_12_L;\nconst KOEF_12_R = VIEW_WIDTH / W_12_R;\nconst KOEF_12_LR = VIEW_WIDTH / W_12_LR;\nconst KOEF_15 = VIEW_WIDTH / W_15;\nconst KOEF_15_L = VIEW_WIDTH / W_15_L;\nconst KOEF_15_R = VIEW_WIDTH / W_15_R;\nconst KOEF_15_LR = VIEW_WIDTH / W_15_LR;\nconst KOEF_19 = VIEW_WIDTH / W_19;\nconst KOEF_19_L = VIEW_WIDTH / W_19_L;\nconst KOEF_19_R = VIEW_WIDTH / W_19_R;\nconst KOEF_19_LR = VIEW_WIDTH / W_19_LR;\nconst KOEF_23 = VIEW_WIDTH / W_23;\nconst KOEF_23_L = VIEW_WIDTH / W_23_L;\nconst KOEF_23_R = VIEW_WIDTH / W_23_R;\nconst KOEF_23_LR = VIEW_WIDTH / W_23_LR;\n\nexport const PRESENT_CELL_BASE_WIDTH_COEF = 14.5;\n\nexport const KOEFS = {\n \"12\" : KOEF_12,\n \"12l\": KOEF_12_L,\n \"12r\": KOEF_12_R,\n \"12lr\": KOEF_12_LR,\n \"15\" : KOEF_15,\n \"15l\": KOEF_15_L,\n \"15r\": KOEF_15_R,\n \"15lr\": KOEF_15_LR,\n \"19\" : KOEF_19,\n \"19l\": KOEF_19_L,\n \"19r\": KOEF_19_R,\n \"19lr\": KOEF_19_LR,\n \"23\" : KOEF_23,\n \"23l\": KOEF_23_L,\n \"23r\": KOEF_23_R,\n \"23lr\": KOEF_23_LR,\n}\n\nexport const MAX_MIRROR_COUNT = 4;\n","export const apiBase = 'https://cc.sidler-international.com/api/v2'\n// export const apiBase = 'http://0.0.0.0:3000/api/v2'\n\nexport const ItemTypes = {\n DEFAULT_MIRROR : 'default_mirror',\n SIDE_MIRROR : 'side_mirror',\n VERTICAL_LIGHTING: 'vertical_lighting',\n ADDON : 'addon'\n};\nexport const MountTypes = [\n {\n id : '01',\n className : 'surface-mount',\n description : 'Surface Mount'\n },\n {\n id : '02',\n className : 'semi-recessed',\n description : 'Semi-Recessed'\n },\n {\n id : '03',\n className : 'recessed',\n description : 'Recessed'\n }\n];\n","import {NotificationManager} from 'react-notifications';\nimport 'react-notifications/lib/notifications.css';\n\nexport const notificateProductNotAvailable =() =>{\n NotificationManager.warning('Product is not available');\n}\n\nexport const notificateVlIsAlreadyMounted = () =>{\n NotificationManager.warning('Vertical Lighting is already mounted on this side');\n}\n\nexport const notificateProductNotAvailableForThisSize =() =>{\n NotificationManager.warning('Product unavailable for this cabinet size');\n}\n\nexport const handleTipsAdd =() =>{\n NotificationManager.success('Ganging-Kit has been added');\n}\n\nexport const handleTipsRemove =() =>{\n NotificationManager.warning('Ganging Kit has been removed');\n}\n\nexport const successNotification = (params) => {\n NotificationManager.success(params.text);\n}\n\nexport const warningNotification = (params) => {\n NotificationManager.warning(params.text);\n}\n\nexport const notificateVlInBetween = () => {\n\tNotificationManager.warning('Double Vertical Lightings are not a possible option');\n}","import { KOEFS, MAX_MIRROR_COUNT } from '../store/coefitients';\nimport { MountTypes } from '../Constants';\nimport { handleTipsAdd, handleTipsRemove, notificateProductNotAvailableForThisSize, notificateVlIsAlreadyMounted, notificateVlInBetween } from '../components/tips/Tips';\nimport _ from 'lodash';\n\nconst H_31 = {\n \"12\": 579.3,\n \"12r\": 579.3,\n \"12l\": 579.3,\n \"12lr\": 579.3,\n \"15\": 573.6,\n \"15r\": 573.6,\n \"15l\": 573.6,\n \"15lr\": 573.6,\n \"19\": 567.74,\n \"19r\": 567.74,\n \"19l\": 567.74,\n \"19lr\": 567.74,\n \"23\": 561.16,\n \"23r\": 561.16,\n \"23l\": 561.16,\n \"23lr\": 561.16,\n left: 610.32\n}\n\nconst H_40 = {\n \"12\": 610,\n \"12r\": 610,\n \"12l\": 610,\n \"12lr\": 610,\n \"15\": 603.74,\n \"15r\": 603.74,\n \"15l\": 603.74,\n \"15lr\": 603.74,\n \"19\": 597.59,\n \"19r\": 597.59,\n \"19l\": 597.59,\n \"19lr\": 597.59,\n \"23\": 591.44,\n \"23r\": 591.44,\n \"23l\": 591.44,\n \"23lr\": 591.44,\n left: 640.32\n}\n\nconst initialState = {\n emailFormState: false,\n stage: 'construct',\n availableProducts: [],\n presentedMirrors: [],\n isSideMirror: false,\n selectParams: {\n size: {\n height: 31,\n depth: 4\n },\n mountType: MountTypes[0].id\n },\n heightArr: H_31,\n activeMirrorId: '',\n\n\n addonToProduct: () => { },\n mirrorToProduct: () => { },\n getSideMirrorProduct: () => { },\n getKitProduct: () => { },\n\n /*\n ================\n D'n'D STATE\n ================\n */\n isMirrorDrag: false,\n requstedPreviewMirrorSize: null,\n requstedPreviewSideMirror: false,\n requstedPreviewAddonData: null\n}\n\n\nconst app = (state = initialState, action) => {\n\n //common used vars\n let newSize, currMirror,\n mirrorId, addonId;\n let newMirrors = _.cloneDeep(state.presentedMirrors);\n\n const mappers = (newState) => {\n return {\n addonToProduct: addonToProductFromState(newState),\n mirrorToProduct: mirrorToProductFromState(newState),\n getSideMirrorProduct: getSideMirrorProductFromState(newState),\n getKitProduct: getKitProductFromState(newState)\n }\n }\n\n const formState = (changed) => {\n let newState = { ...state, ...dragAndPreviewOff, ...changed };\n let newMappers = mappers(newState);\n return { ...newState, ...newMappers }\n }\n\n const dragAndPreviewOff = {\n isMirrorDrag: false,\n requstedPreviewMirrorSize: null,\n requstedPreviewSideMirror: false,\n requstedPreviewAddonData: null\n }\n\n switch (action.type) {\n //app data\n case 'SET_APP_STAGE':\n return formState({ stage: action.stage })\n case 'SET_AVAILABLE_PRODUCTS':\n return { ...state, availableProducts: action.products }\n //email send \n case 'EMAIL_FORM':\n return { ...state, emailFormState: action.emailFormState }\n //side mirror\n case 'ADD_SIDE_MIRROR':\n return formState({ isSideMirror: true })\n case 'REMOVE_SIDE_MIRROR':\n return formState({ isSideMirror: false })\n case 'SET_ACTIVE_MIRROR': \n return { ...state, activeMirrorId: action.id }\n //selectParams\n case 'SET_MOUNT_TYPE':\n newSize = state.selectParams.size;\n if (action.mountType === '02' && state.selectParams.size.depth === 4) {\n newSize.depth = 4;\n }\n return formState({ selectParams: { mountType: action.mountType, size: newSize } })\n case 'SET_SELECT_SIZE':\n newSize = { ...state.selectParams.size, ...action.size };\n if (state.mountType === '02' && action.size.depth === 4) {\n newSize.depth = 4;\n }\n let heightArr = getHeightArr(newSize.height);\n _.forEach(newMirrors, (m, i) => {\n m.size = { ...m.size, ...newSize };\n _.forEach(m.addons, (a) => {\n if(a.id.indexOf('06h') === 0){\n a.id = `06h${m.size.height}`\n }\n })\n })\n return formState({ selectParams: { ...state.selectParams, size: newSize }, heightArr, presentedMirrors: newMirrors })\n\n //mirrors\n case 'ADD_CABINET':\n let { size, side } = action.params;\n let newMirrorSize = { ...state.selectParams.size, ...size };\n let newMirror = { size: newMirrorSize, addons: [] };\n pushMirror(newMirror, side, newMirrors);\n recalculateIds(newMirrors);\n recalculateScale(newMirrors);\n triggerAddNotification(newMirrors);\n return formState({ presentedMirrors: newMirrors })\n case 'REMOVE_CABINET':\n let index = action.index;\n newMirrors.splice(index, 1);\n // _.remove(newMirrors, { id: addonId });\n let isSideMirror = newMirrors.length == 0 ? false : state.isSideMirror\n recalculateIds(newMirrors);\n recalculateScale(newMirrors);\n triggerDeleteNotification(newMirrors);\n return formState({ presentedMirrors: newMirrors, isSideMirror })\n\n //addons\n case 'ADD_ADDON':\n mirrorId = action.params.mirrorId;\n addonId = action.params.addonId;\n let description = action.params.description;\n currMirror = _.find(newMirrors, m => m._id === mirrorId);\n // Workaround to handle logic for vertical lightning\n if(addonId === `06h${currMirror.size.height}`){\n currMirror.vertical = true;\n }\n // Workaround to handle logic for 12 inch mirror\n else if(currMirror.size.width === 12 && (addonId === '03' || addonId === '04')) {\n notificateProductNotAvailableForThisSize()\n } else {\n currMirror.addons.push({ id: addonId, description: description })\n }\n return formState({ presentedMirrors: newMirrors })\n case 'REMOVE_ADDON':\n mirrorId = action.params.mirrorId;\n addonId = action.params.addonId;\n currMirror = _.find(newMirrors, m => m._id === mirrorId);\n _.remove(currMirror.addons, { id: addonId });\n if(addonId === `06h${currMirror.size.height}`){\n recalculateScale(newMirrors);\n }\n return formState({ presentedMirrors: newMirrors })\n case 'CANCEL_VERTICAL_LIGHTING': \n mirrorId = action.id\n currMirror = _.find(newMirrors, m => m._id === mirrorId);\n currMirror.vertical = false;\n return formState({ presentedMirrors: newMirrors })\n case 'ADD_VERTICAL_LIGHTING': \n mirrorId = action.id\n currMirror = _.find(newMirrors, m => m._id === mirrorId);\n currMirror.vertical = false;\n // Handle one per side logic\n description = `Vertical Lighting (${action.direction})`\n \n const descriptionR = `Vertical Lighting (right)`\n const descriptionL = `Vertical Lighting (left)`\n \n let existingSides = _.filter(currMirror.addons, a => a.description === description)\n\n // Do not allow adding VL in between\n const currMirrorIdx = _.findIndex(newMirrors, m => m._id === mirrorId);\n const leftMirror = (currMirrorIdx < newMirrors.length - 1) ? newMirrors[currMirrorIdx + 1] : {}\n const rightMirror = (currMirrorIdx > 0) ? newMirrors[currMirrorIdx - 1] : {}\n\n let blockAddingInBetween = false\n\n if(leftMirror.addons && _.filter(leftMirror.addons, a => a.description === descriptionR).length > 0 && description === descriptionL) blockAddingInBetween = true\n if(rightMirror.addons && _.filter(rightMirror.addons, a => a.description === descriptionL).length > 0 && description === descriptionR) blockAddingInBetween = true\n \n if(blockAddingInBetween){\n notificateVlInBetween();\n } else{\n if(existingSides.length == 0){\n currMirror.addons.push({ id: `06h${currMirror.size.height}`, description });\n recalculateScale(newMirrors);\n } else {\n notificateVlIsAlreadyMounted();\n } \n }\n return formState({ presentedMirrors: newMirrors })\n /*\n ================\n D'n'D \n ================\n */\n case 'START_DRAG':\n return formState({ isMirrorDrag: true })\n case 'END_DRAG':\n return formState({ isMirrorDrag: false })\n case 'REQUEST_PREVIEW_MIRROR':\n let requstedPreviewMirrorSize = { ...state.selectParams.size, ...action.size };\n //if already was requseted -> off preview || full\n if (state.requstedPreviewMirrorSize || state.presentedMirrors.length === MAX_MIRROR_COUNT) {\n requstedPreviewMirrorSize = null;\n }\n return formState({ requstedPreviewMirrorSize })\n case 'REQUEST_PREVIEW_SIDE_MIRROR':\n let requstedPreviewSideMirror = !state.requstedPreviewSideMirror;\n if (state.isSideMirror) {\n requstedPreviewSideMirror = false;\n }\n return formState({ requstedPreviewSideMirror })\n case 'REQUEST_PREVIEW_ADDON':\n let requstedPreviewAddonData = action.params;\n //if already was requseted -> off preview || full\n if (state.requstedPreviewAddonData) {\n requstedPreviewAddonData = null;\n }\n return formState({ requstedPreviewAddonData })\n\n default:\n return state\n }\n}\n\n\n/*\n===============\nSTORE CALCULATIONS & HELPERS\n===============\n*/\n\nconst mirrorToProductFromState = (state) => m => {\n console.log(state);\n return _.find(state.availableProducts, {type: 'cabinet', type_id: getMirrorTypeId(m)})\n}\nconst addonToProductFromState = (state) => a => {\n return _.find(state.availableProducts, { type: 'addon', type_id: a.id });\n}\nconst getSideMirrorProductFromState = (state) => () => {\n let res = null;\n //recessed and side mirror not allowed;\n if (state.isSideMirror && state.selectParams.mountType !== '03') {\n //hardcoded for request from michael\n console.log(\"SIDE MIRROR TYPE\")\n console.log(state.selectParams.mountType)\n let depth = state.selectParams.mountType == '02' ? '2' : state.selectParams.size.depth\n res = _.find(state.availableProducts, { type: 'addon', type_id:(`d${depth}h${state.selectParams.size.height}`) });\n }\n\n return res;\n}\nconst getKitProductFromState = (state) => () => {\n let res = null;\n if (state.presentedMirrors.length > 1) {\n res = _.find(state.availableProducts, { type: 'kit', type_id: getKitTypeId(state.selectParams.size) });\n }\n return res;\n}\n\nconst getMirrorTypeId = (m) => {\n let res = m.size.width + 'x' + m.size.height + 'x' + m.size.depth;\n //case for eOutlet included\n let ElectricalOutletIndex = _.findIndex(m.addons, { id: '03' });\n // NOTE: DISABLING ELECTRICAL OUTLET FOR MIRROR SIZE 12\n if (ElectricalOutletIndex !== -1 && m.size.width > 12) {\n res += 'xe';\n }\n return res;\n}\n\nconst getKitTypeId = (size) => {\n let res = 'd' + size.depth;\n return res;\n}\n\n\n//good\nconst getHeightArr = (height) => {\n let res = height === 31 ? H_31 : H_40;\n return res;\n}\n//good\nconst recalculateIds = (presentedMirrors) => {\n _.forEach(presentedMirrors, (m, i) => {\n m._id = i;\n })\n}\n//good\nconst pushMirror = (newMirror, side, presentedMirrors) => {\n if (presentedMirrors.length === MAX_MIRROR_COUNT) {\n return;\n }\n else if (side === 'right') {\n presentedMirrors.unshift(newMirror);\n }\n else {\n presentedMirrors.push(newMirror);\n }\n}\n\nconst triggerDeleteNotification = (presentedMirrors) => {\n if (presentedMirrors.length) {\n handleTipsRemove();\n }\n}\n\nconst triggerAddNotification = (presentedMirrors) => {\n if (presentedMirrors.length !== 1) {\n handleTipsAdd();\n }\n}\n//good\nconst recalculateScale = (presentedMirrors) => {\n _.forEachRight(presentedMirrors, (m, i) => {\n if (i === presentedMirrors.length - 1) {\n m.scale = 1;\n }\n else {\n m.scale = calculateScale(m, presentedMirrors);\n }\n })\n}\n//good\nconst calculateScale = (m, presentedMirrors) => {\n let res = 1;\n let nextMirror = presentedMirrors[m._id + 1];\n //choose params based on height\n const HEIGHT_ARR = getHeightArr(m.size.height);\n //calculate scale for this current mirror\n let leftVl = _.filter(nextMirror.addons, (el) => el.id === `06h${m.size.height}` && el.description.indexOf(\"(left)\") >= 0);\n let rightVl = _.filter(nextMirror.addons, (el) => el.id === `06h${m.size.height}` && el.description.indexOf(\"(right)\") >= 0);\n let width_key = nextMirror.size.width + (leftVl.length ? \"l\" : \"\") + (rightVl.length ? \"r\" : \"\")\n leftVl = _.filter(m.addons, (el) => el.id === `06h${m.size.height}` && el.description.indexOf(\"(left)\") >= 0);\n rightVl = _.filter(m.addons, (el) => el.id === `06h${m.size.height}` && el.description.indexOf(\"(right)\") >= 0);\n let curr_width_key = m.size.width + (leftVl.length ? \"l\" : \"\") + (rightVl.length ? \"r\" : \"\")\n res = (KOEFS[width_key] * HEIGHT_ARR[width_key]) / (KOEFS[curr_width_key] * HEIGHT_ARR.left);\n //take into account previous mirror's scale\n res *= nextMirror.scale;\n return res;\n}\n\nexport default app","import { FETCH_CHECKLIST_START, FETCH_CHECKLIST_LOADED } from \"../constants/navigation\"\n\n\nconst initialState = {\n isChecklistFetching: false,\n};\n\nconst navigationReducer = (state = initialState, action) => {\n switch (action.type) {\n case FETCH_CHECKLIST_START:\n return { ...state, isChecklistFetching: true }\n case FETCH_CHECKLIST_LOADED:\n return { ...state, isChecklistFetching: false }\n default:\n return state;\n }\n}\nexport default navigationReducer;","export const FETCH_CHECKLIST_START = \"FETCH_CHECKLIST_START\";\nexport const FETCH_CHECKLIST_LOADED = \"CREATE_CHECKLIST_LOADED\";","import { combineReducers } from 'redux'\nimport app from './app'\nimport navigation from './navigation'\n\nconst configuratorApp = combineReducers({\n app,\n navigation\n})\n\nexport default configuratorApp","export const setProducts = (products) => {\n return {\n type: 'SET_AVAILABLE_PRODUCTS',\n products\n }\n}\n\nexport const setConfiguratorStage = (stage) => {\n return {\n type: 'SET_APP_STAGE',\n stage\n }\n}\n\nexport const setSelectSize = (size) => {\n return {\n type: 'SET_SELECT_SIZE',\n size\n }\n}\n\nexport const setMountType = (mountType) => {\n return {\n type: 'SET_MOUNT_TYPE',\n mountType\n }\n}\n\nexport const addCabinet = (params) => {\n return {\n type: 'ADD_CABINET',\n params\n }\n}\n\nexport const removeMirror = (index) => {\n return {\n type: 'REMOVE_CABINET',\n index\n }\n}\nexport const addAddon = (params) => {\n return {\n type: 'ADD_ADDON',\n params\n }\n}\nexport const addSideMirror = () => {\n return {\n type: 'ADD_SIDE_MIRROR'\n }\n}\n\nexport const removeAddon = (params) => {\n return {\n type: 'REMOVE_ADDON',\n params\n }\n}\nexport const removeSideMirror = (stage) => {\n return {\n type: 'REMOVE_SIDE_MIRROR'\n }\n}\n\n/*\n==============================\n D'n'D actions\n==============================\n*/\n\nexport const startDrag = () => {\n return {\n type: 'START_DRAG'\n }\n}\nexport const endDrag = () => {\n return {\n type: 'END_DRAG'\n }\n}\nexport const requstPreviewSideMirror = () => {\n return {\n type: 'REQUEST_PREVIEW_SIDE_MIRROR'\n }\n}\nexport const requestPreviewVerticalLighting = () => {\n return {\n type: 'REQUEST_PREVIEW_VERTICAL_LIGHTING'\n }\n}\nexport const requestPreviewMirror = (size) => {\n return {\n type: 'REQUEST_PREVIEW_MIRROR',\n size\n }\n}\n\nexport const requestPreviewAddon = (params) => {\n return {\n type: 'REQUEST_PREVIEW_ADDON',\n params\n }\n}\n\nexport const emailForm = (emailFormState) => {\n return { \n type: 'EMAIL_FORM',\n ...emailFormState \n }\n}\n\nexport const setActiveMirror = (id) => {\n return { \n type: 'SET_ACTIVE_MIRROR',\n id\n }\n}\n\nexport const cancelVerticalLighting = (id) => {\n return { \n type: 'CANCEL_VERTICAL_LIGHTING',\n id\n }\n}\n\nexport const addVerticalLighting = (id, direction) => {\n return { \n type: 'ADD_VERTICAL_LIGHTING',\n id, direction\n }\n}","import React, { Component } from 'react';\nimport _ from 'lodash';\nimport './styles.css'\n\nclass PreviewMirror extends Component {\n constructor(props){\n super(props);\n this._imgSrc = this._imgSrc.bind(this);\n this._getPresentationClass = this._getPresentationClass.bind(this);\n this.addComponent = this.addComponent.bind(this);\n }\n\n _imgSrc() {\n const mirror = this.props.mirror;\n let mirrorWidth = mirror.size.width;\n let mirrorHeight = mirror.size.height;\n let res = \"img/preview/\" + mirrorWidth + \"x\" + mirrorHeight + \"x4-highlited\";\n return res + \".png\";\n }\n\n _getPresentationClass() {\n const mirror = this.props.mirror;\n let initialStyle = \"mirror__presentation width-\" + mirror.size.width;\n let leftVl = _.filter(mirror.addons, (el) => el.id === `06h${mirror.size.height}` && el.description.indexOf(\"(left)\") >= 0);\n let rightVl = _.filter(mirror.addons, (el) => el.id === `06h${mirror.size.height}` && el.description.indexOf(\"(right)\") >= 0);\n if(leftVl.length > 0){\n initialStyle += \"l\"\n }\n if(rightVl.length > 0){\n initialStyle += \"r\"\n }\n return initialStyle;\n }\n\n addComponent(ev) {\n let size = this.props.mirror.size;\n let side = this.props.side;\n if (this.props.isRequestedPreviewMirror) {\n let params = {size, side};\n this.props.addMirror(params);\n }\n else if(this.props.requstedPreviewAddonData){\n let mirrorId = this.props.mirror._id;\n let addonData = this.props.requstedPreviewAddonData;\n let params = {mirrorId, ...addonData};\n this.props.addAddon(params);\n }\n else if(this.props.requstedPreviewSideMirror){\n this.props.addSideMirror();\n }\n else if(this.props.requestedPreviewVerticalLighting){\n this.props.addVerticalLighting();\n }\n }\n\n render() {\n let imgSrc = this._imgSrc();\n let imgClass = this._getPresentationClass();\n return (\n
\n \"\"\n
\n
\n );\n }\n }\n\nexport default PreviewMirror;\n","import { connect } from 'react-redux'\nimport { addCabinet, addAddon, addSideMirror } from '../../../actions'\nimport PreviewMirror from './PreviewMirror'\n\nconst mapStateToProps = state => {\n return {\n isRequestedPreviewMirror : !!state.app.requstedPreviewMirrorSize,\n requstedPreviewSideMirror : state.app.requstedPreviewSideMirror,\n requstedPreviewAddonData : state.app.requstedPreviewAddonData,\n requestedPreviewVerticalLighting: state.app.requestedPreviewVerticalLighting\n }\n}\n\nconst mapDispatchToProps = dispatch => {\n return {\n addMirror: (params) => {\n dispatch(addCabinet(params))\n },\n addAddon: (params) => {\n dispatch(addAddon(params))\n },\n addSideMirror: () => {\n dispatch(addSideMirror())\n }\n }\n}\n\nconst PreviewMirrorContainer = connect(\n mapStateToProps,\n mapDispatchToProps\n)(PreviewMirror)\n\nexport default PreviewMirrorContainer","import React, { Component } from 'react';\nimport { DropTarget } from 'react-dnd';\nimport ReactSVG from 'react-svg';\nimport _ from 'lodash';\nimport './styles.css';\nimport PreviewMirror from '../PreviewMirror/PreviewMirrorContainer';\nimport { ItemTypes, MountTypes } from '../../../Constants';\n\nconst cellTarget = {\n canDrop(props, monitor) {\n var canDrop = false;\n let mirrorId = props.mirror._id;\n let addonId = monitor.getItem().id;\n canDrop = props.canMoveAddon({ mirrorId, addonId });\n return canDrop;\n },\n //THIS RETURNS OBJECT TO IT'S dragSource endDrag METHOD\n drop(props, monitor) {\n let mirrorId = props.mirror._id;\n return { mirrorId };\n }\n};\n\nfunction collect(connect, monitor) {\n return {\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n canDrop: monitor.canDrop()\n };\n}\n\n\nclass PresentedMirror extends Component {\n constructor(props) {\n super(props);\n this.state = {\n isOpen: false,\n openSide: 'left',\n touchScreen: false,\n }\n this._imgSrc = this._imgSrc.bind(this);\n this._getSvgClass = this._getSvgClass.bind(this);\n this.handleSideChange = this.handleSideChange.bind(this);\n }\n\n componentWillMount(){\n this.handleTouchScreen()\n }\n\n _imgSrc() {\n const mirror = this.props.mirror;\n let leftVl = _.filter(mirror.addons, (el) => el.id === `06h${mirror.size.height}` && el.description.indexOf(\"(left)\") >= 0);\n let rightVl = _.filter(mirror.addons, (el) => el.id === `06h${mirror.size.height}` && el.description.indexOf(\"(right)\") >= 0);\n let mirrorWidth = mirror.size.width;\n let mirrorHeight = mirror.size.height;\n let res = \"img/presentation/\" + mirrorWidth + \"x\" + mirrorHeight + \"x4\";\n if(leftVl.length > 0){\n res += \"-L\"\n }\n if(rightVl.length > 0){\n res += \"-R\"\n }\n return res + \".svg\";\n }\n\n _vlImgSrc() {\n const mirror = this.props.mirror;\n let mirrorDepth = mirror.size.depth;\n let mirrorHeight = mirror.size.height;\n let res = \"img/light-\" + mirrorDepth + \"x\" + mirrorHeight + \".svg\";\n return res;\n }\n\n handleTouchScreen = () => {\n if (\"ontouchstart\" in document.documentElement) {\n this.setState({\n touchScreen: !this.state.touchScreen,\n })\n }\n }\n\n _getSvgClass() {\n let handleAddon = ''\n let resHandleAddon = ''\n if (this.state.isOpen && this.state.openSide === 'left') { handleAddon = '-L-O' }\n if (!this.state.isOpen && this.state.openSide === 'left') { handleAddon = '-L' }\n if (this.state.isOpen && this.state.openSide === 'right') { handleAddon = '-R-O' }\n if (!this.state.isOpen && this.state.openSide === 'right') { handleAddon = '-R' }\n const mirror = this.props.mirror;\n let initialStyle = \"mirror__presentation width-\" + this.props.mirror.size.width;\n let leftVl = _.filter(mirror.addons, (el) => el.id === `06h${mirror.size.height}` && el.description.indexOf(\"(left)\") >= 0);\n let rightVl = _.filter(mirror.addons, (el) => el.id === `06h${mirror.size.height}` && el.description.indexOf(\"(right)\") >= 0);\n if(leftVl.length > 0){\n initialStyle += \"l\"\n }\n if(rightVl.length > 0){\n initialStyle += \"r\"\n }\n let mountTypeId = this.props.mountTypeId;\n let res = initialStyle;\n let addons = _.reduce(mirror.addons, (r, a) => {\n if (a.id === '05') {\n r += ' has-addon-' + a.id + handleAddon;\n resHandleAddon = ' has-addon-' + a.id + handleAddon;\n }\n else {\n r += ' has-addon-' + a.id;\n }\n return r;\n }, \"\");\n\n let doorsOpen = \" is-open-R\";\n if (this.state.openSide === 'left') {\n doorsOpen = \" is-open-L\";\n }\n\n if (this.state.isOpen) {\n res += addons;\n res += doorsOpen;\n }\n if (!this.state.isOpen) {\n res += resHandleAddon;\n }\n //recessed type removes sideMirror\n if (this.props.isSideMirror && mountTypeId !== '03') {\n let isSideMirrorClass = \" has-addon-01\";\n res += isSideMirrorClass;\n }\n let depth = mirror.size.depth;\n let mountType = _.find(MountTypes, { id: mountTypeId });\n let mountTypeClass = ' ' + mountType.className + '-' + depth;\n res += mountTypeClass;\n return res;\n }\n\n handleSideChange() {\n let nextSide = this.state.openSide === 'right' ? 'left' : 'right';\n this.setState({ openSide: nextSide });\n }\n\n renderSideChoose() {\n const mirror = this.props.mirror;\n return (\n \n

Choose a side to mount vertical lighting

\n
{this.props.addVerticalLighting(mirror._id, \"left\")}}>
\n
{this.props.addVerticalLighting(mirror._id, \"right\")}}>
\n
{this.props.cancelVerticalLighting(mirror._id)}}>Cancel
\n
\n );\n };\n\n renderOverlay(koef) {\n const mirror = this.props.mirror;\n return (\n \n \n \n );\n };\n\n handleRemoveMirror(mirror) {\n this.props.removeMirror(mirror._id);\n }\n\n renderButtons() {\n const mirrorButtonClass = ((this.state.touchScreen && (this.props.mirror._id === this.props.activeMirrorId)) ? \"mirror__button__touch\" : \"mirror__button\")\n const mirror = this.props.mirror;\n let res = null;\n if (this.props.appStage !== 'checkout') {\n res = (\n
{this.props.setActiveMirror(this.props.mirror._id)}}>\n
\n \n {this.state.isOpen ?\n \n : null\n }\n \n
\n
\n )\n }\n return res;\n }\n\n render() {\n const { connectDropTarget, isOver, canDrop, mirror } = this.props;\n let imgSrc = this._imgSrc();\n let imgClass = this._getSvgClass();\n let addonData = this.props.requstedPreviewAddonData;\n let canDropMobile;\n if (addonData) { \n let mirrorId = this.props.mirror._id;\n let addonId = addonData.addonId;\n canDropMobile = this.props.canMoveAddon({ mirrorId, addonId });\n }\n let vertical = this.props.mirror.vertical;\n let { opacity, preview } = this.props.sidePreviewParams;\n let vl = _.filter(mirror.addons, (el) => el.id === `06h${mirror.size.height}`);\n return connectDropTarget(\n
\n \n {!vertical && this.renderButtons()}\n {!isOver && canDrop && this.renderOverlay(0.5)}\n {isOver && canDrop && this.renderOverlay(1)}\n {addonData && canDropMobile && this.renderOverlay(1)}\n {preview && this.renderOverlay(opacity)}\n {vertical && this.renderSideChoose()}\n
\n )\n }\n}\n\n\nexport default DropTarget(ItemTypes.ADDON, cellTarget, collect)(PresentedMirror);\n","import { connect } from 'react-redux'\nimport { removeMirror, setActiveMirror, cancelVerticalLighting, addVerticalLighting } from '../../../actions'\nimport PresentedMirror from './PresentedMirror'\nimport _ from 'lodash';\n\nconst mapStateToProps = state => {\n let canMoveAddon = (params) => {\n let { mirrorId, addonId } = params;\n let currMirror = _.find(state.app.presentedMirrors, m => m._id === mirrorId);\n let addons = _.filter(currMirror.addons, a => a.id === addonId)\n let hasAddon = currMirror && addons.length;\n if(addonId == `06h${currMirror.size.height}` && addons.length == 1){ // Special case for Vertical Lighting\n return true;\n }\n return currMirror && !hasAddon;\n }\n return {\n activeMirrorId: state.app.activeMirrorId,\n appStage: state.app.stage,\n availableProducts: state.app.availableProducts,\n mirrors: state.app.presentedMirrors,\n isSideMirror: state.app.isSideMirror,\n canMoveAddon: canMoveAddon,\n mountTypeId: state.app.selectParams.mountType,\n requstedPreviewAddonData: state.app.requstedPreviewAddonData,\n }\n}\n\nconst mapDispatchToProps = dispatch => {\n return {\n removeMirror: (id) => {\n dispatch(removeMirror(id))\n },\n setActiveMirror: (id) => {\n dispatch(setActiveMirror(id))\n },\n cancelVerticalLighting: (id) => {\n dispatch(cancelVerticalLighting(id))\n },\n addVerticalLighting: (id, direction) => {\n dispatch(addVerticalLighting(id, direction))\n }\n }\n}\n\nconst PresentedMirrorContainer = connect(\n mapStateToProps,\n mapDispatchToProps\n)(PresentedMirror)\n\nexport default PresentedMirrorContainer","import React, { Component } from 'react';\nimport { PRESENT_CELL_BASE_WIDTH_COEF } from '../../store/coefitients';\nimport PresentedMirror from './PresentedMirror/PresentedMirrorContainer';\n\n\nclass PresentMirrorCell extends Component {\n constructor(props){\n super(props);\n this.renderMirror = this.renderMirror.bind(this);\n }\n\n _calculateWidth () {\n let mirror = this.props.mirror;\n let width = PRESENT_CELL_BASE_WIDTH_COEF;\n width *= mirror.scale;\n let widthStr = width + '%';\n return widthStr;\n }\n\n renderMirror() {\n let m = this.props.mirror;\n let res = ;\n return res;\n }\n\n render() {\n let widthStr = this._calculateWidth();\n let pieceToRender = this.renderMirror();\n return (\n
\n {pieceToRender}\n
\n );\n }\n}\n\nexport default PresentMirrorCell;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { DropTarget } from 'react-dnd';\nimport { PRESENT_CELL_BASE_WIDTH_COEF } from '../../../store/coefitients';\nimport {ItemTypes} from '../../../Constants';\nimport PreviewMirror from '../PreviewMirror/PreviewMirrorContainer';\nimport './style.css';\n\nconst cellTarget = {\n canDrop(props, monitor) {\n var canDrop = false;\n canDrop = props.canDropMirror;\n return canDrop;\n },\n //THIS RETURNS OBJECT TO IT'S dragSource endDrag METHOD\n drop(props, monitor) {\n let side = props.side;\n return { side };\n }\n};\n\nfunction collect(connect, monitor) {\n return {\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n canDrop: monitor.canDrop(),\n dndObject : monitor.getItem()\n };\n}\n\nclass PreviewCell extends Component {\n static propTypes = {\n isOver: PropTypes.bool.isRequired,\n canDrop: PropTypes.bool.isRequired,\n connectDropTarget: PropTypes.func.isRequired\n };\n constructor(props){\n super(props);\n this.renderPreviewComponent = this.renderPreviewComponent.bind(this);\n }\n\n\n _calculateWidth (dndObject) {\n let width = PRESENT_CELL_BASE_WIDTH_COEF;\n let size = dndObject.size;\n let side = this.props.side;\n width *= this.props.getPreviewCoef(side, size);\n let containerWidth = this.props.parentWidth;\n if (containerWidth) {\n width = width * 100 / containerWidth;\n }\n let widthStr = width + '%';\n return widthStr;\n }\n\n renderOverlay(mirror, opacity) {\n let side = this.props.side;\n return (\n \n );\n };\n\n renderPreviewComponent(isOver, canDrop, canDropOnClick, nextMirror) {\n let res = null;\n \n if (!isOver && canDrop) {\n res = this.renderOverlay(nextMirror, 0.5);\n }\n else if (isOver && canDrop) {\n res = this.renderOverlay(nextMirror, 1);\n }\n else if (canDropOnClick && this.props.preview) {\n res = this.renderOverlay(nextMirror, 1);\n }\n return res;\n }\n\n render() {\n const { connectDropTarget, isOver, canDrop, dndObject } = this.props;\n let nextMirror = dndObject;\n if (this.props.preview) {\n nextMirror = {size :this.props.requstedPreviewMirrorSize};\n }\n //check for addon. Why - don't know. They are called here smwhy\n if (!(nextMirror && nextMirror.size) || ( dndObject && (dndObject.type === 'addon')) ) {\n nextMirror = {size :{width : 15}};\n }\n let widthStr = this._calculateWidth(nextMirror);\n let canDropOnClick = this.props.canDropMirror;\n let previewComponent = this.renderPreviewComponent(isOver, canDrop, canDropOnClick, nextMirror);\n return connectDropTarget(\n
\n {previewComponent}\n
\n );\n }\n}\n\nexport default DropTarget(ItemTypes.DEFAULT_MIRROR, cellTarget, collect)(PreviewCell);\n","import { connect } from 'react-redux'\nimport { addCabinet, addAddon, addSideMirror } from '../../../actions'\nimport { KOEFS, MAX_MIRROR_COUNT } from '../../../store/coefitients';\nimport PreviewCell from './PreviewCell';\nimport _ from 'lodash';\n\nconst mapStateToProps = state => {\n const calculateScale = (m) => {\n let res = 1;\n let nextMirror = state.app.presentedMirrors[m._id + 1];\n let nextWidth = nextMirror.size.width;\n //choose params based on height\n const HEIGHT_ARR = state.app.heightArr;\n //calculate scale for this current mirror\n let leftVl = _.filter(m.addons, (el) => el.id === `06h${nextMirror.size.height}` && el.description.indexOf(\"(left)\") >= 0);\n let rightVl = _.filter(m.addons, (el) => el.id === `06h${nextMirror.size.height}` && el.description.indexOf(\"(right)\") >= 0);\n let width_key = m.size.width + (leftVl.length ? \"l\" : \"\") + (rightVl.length ? \"r\" : \"\");\n leftVl = _.filter(nextMirror.addons, (el) => el.id === `06h${nextMirror.size.height}` && el.description.indexOf(\"(left)\") >= 0);\n rightVl = _.filter(nextMirror.addons, (el) => el.id === `06h${nextMirror.size.height}` && el.description.indexOf(\"(right)\") >= 0);\n let width_key_next = nextMirror.size.width + (leftVl.length ? \"l\" : \"\") + (rightVl.length ? \"r\" : \"\");\n res = (KOEFS[width_key_next] * HEIGHT_ARR[width_key_next]) / (KOEFS[width_key] * HEIGHT_ARR.left);\n //take into account previous mirror's scale\n res *= nextMirror.scale;\n return res;\n }\n\n const getPreviewCoef = (side, size) => {\n let coef = 1;\n if (state.app.presentedMirrors.length === 0) {\n\n }\n //lastOne\n else if (side === 'right') {\n coef = calculateScale({ _id: -1, size: size })\n }\n //firstOne\n else if (side === 'left') {\n let curr = state.app.presentedMirrors[state.app.presentedMirrors.length - 1];\n const HEIGHT_ARR = state.app.heightArr;\n let leftVl = _.filter(curr.addons, (el) => el.id === `06h${curr.size.height}` && el.description.indexOf(\"(left)\") >= 0);\n let rightVl = _.filter(curr.addons, (el) => el.id === `06h${curr.size.height}` && el.description.indexOf(\"(right)\") >= 0);\n let width_key = curr.size.width + (leftVl.length ? \"l\" : \"\") + (rightVl.length ? \"r\" : \"\");\n coef = ((KOEFS[width_key] * HEIGHT_ARR.left) / (KOEFS[size.width] * HEIGHT_ARR[size.width]));\n }\n return coef;\n }\n\n\n const canDropMirror = () => {\n let isFull = (state.app.presentedMirrors.length === MAX_MIRROR_COUNT);\n return !isFull;\n }\n\n return {\n getPreviewCoef: getPreviewCoef,\n requstedPreviewMirrorSize : state.app.requstedPreviewMirrorSize,\n canDropMirror : canDropMirror()\n }\n}\n\nconst mapDispatchToProps = dispatch => {\n return {\n addMirror: (params) => {\n dispatch(addCabinet(params))\n },\n addAddon: (params) => {\n dispatch(addAddon(params))\n },\n addSideMirror: () => {\n dispatch(addSideMirror())\n }\n }\n}\n\nconst PreviewCellContainer = connect(\n mapStateToProps,\n mapDispatchToProps\n)(PreviewCell)\n\nexport default PreviewCellContainer","import React, { Component } from 'react';\nimport { connect } from 'react-redux'\nimport PropTypes from 'prop-types';\nimport { DropTarget } from 'react-dnd';\nimport { ItemTypes } from '../../Constants';\nimport PresentMirrorCell from './PresentMirrorCell';\nimport PreviewCell from './previewCell/PreviewCellContainer';\nimport { KOEFS, PRESENT_CELL_BASE_WIDTH_COEF, VIEW_HEIGHT, VIEW_WIDTH, MAX_MIRROR_COUNT } from '../../store/coefitients';\nimport _ from 'lodash';\n\nconst cellTarget = {\n canDrop(props, monitor) {\n return props.canMoveSideMirror;\n },\n //THIS RETURNS OBJECT TO IT'S dragSource endDrag METHOD\n drop(props, monitor) {\n return { dropped: true };\n }\n};\n\nfunction collect(connect, monitor) {\n return {\n connectDropTarget: connect.dropTarget(),\n isOver: monitor.isOver(),\n canDrop: monitor.canDrop()\n };\n}\n\nclass PresentedMirrorsCell extends Component {\n static propTypes = {\n isOver: PropTypes.bool.isRequired,\n canDrop: PropTypes.bool.isRequired,\n connectDropTarget: PropTypes.func.isRequired,\n };\n\n renderMirrors(params) {\n let res = null;\n let mirrors = this.props.mirrors;\n res = _.map(mirrors, (m, i) => {\n return (\n \n )\n })\n return res;\n }\n\n renderInitialPreview() {\n let res = null;\n let preview = this.props.requstedPreviewMirrorSize;\n if (!this.props.mirrors.length) {\n res = (\n \n )\n }\n return res;\n }\n\n _calculateTotalWidthPercentage() {\n let res = 0;\n let mirrors = this.props.mirrors;\n res = _.reduce(mirrors, (r, m) => {\n r += m.scale * PRESENT_CELL_BASE_WIDTH_COEF;\n return r;\n }, res)\n return res;\n }\n\n renderPreviewCell(side) {\n let res = null;\n let floatSide = side === 'left' ? 'flex-end' : 'flex-start';\n let preview = this.props.requstedPreviewMirrorSize;\n let previewContainerWidth = (100 - this._calculateTotalWidthPercentage()) / 2;\n let containerWidthStr = previewContainerWidth + '%';\n let previewCell = (this.props.mirrors.length < MAX_MIRROR_COUNT) ? : null;\n if (this.props.mirrors.length) {\n res = (\n
\n {previewCell}\n {side === 'right' ? this.renderHeight() : null}\n
\n )\n }\n return res;\n }\n\n renderHeight() {\n let mHeight = this.props.selectSize.height;\n let lastHeight = this.props.heightCellScale;\n let res = null;\n if (this.props.mirrors.length && this.props.details) {\n res = (\n
\n
\n

{mHeight}

\n
\n
\n )\n }\n return res;\n }\n\n render() {\n const { connectDropTarget, isOver, canDrop } = this.props;\n let opacity = 1;\n let preview = false;\n if (!isOver && canDrop) {\n opacity = 0.5;\n preview = true;\n }\n else if (isOver && canDrop) {\n opacity = 1;\n preview = true;\n }\n else if (this.props.requstedPreviewSideMirror) {\n opacity = 1;\n preview = true;\n }\n return connectDropTarget(\n
\n {this.renderInitialPreview()}\n {this.renderPreviewCell('right')}\n {this.renderMirrors({ opacity, preview })}\n {this.renderPreviewCell('left')}\n
\n );\n }\n}\n\nconst mapStateToProps = state => {\n const canMoveSideMirror = () => {\n //no mirrors - can't add side mirror\n let res = !state.app.isSideMirror && state.app.presentedMirrors.length\n return !!res;\n }\n\n const canMovePresentedCell = () => {\n //no mirrors - can't add side mirror\n const res = state.app.presentedMirrors.length;\n return !!res;\n }\n\n const getHeightCellScale = () => {\n let res = 100;\n let mirrors = state.app.presentedMirrors;\n let HEIGHT_ARR = state.app.heightArr;\n if (mirrors.length) {\n let lastMirror = state.app.presentedMirrors[0];\n let leftVl = _.filter(lastMirror.addons, (el) => el.id === `06h${lastMirror.size.height}` && el.description.indexOf(\"(left)\") >= 0);\n let rightVl = _.filter(lastMirror.addons, (el) => el.id === `06h${lastMirror.size.height}` && el.description.indexOf(\"(right)\") >= 0);\n let width_key = lastMirror.size.width + (leftVl.length ? \"l\" : \"\") + (rightVl.length ? \"r\" : \"\");\n let svgInCellPercentage = (0.78 * PRESENT_CELL_BASE_WIDTH_COEF * document.documentElement.clientWidth * VIEW_HEIGHT / (0.3 * 100 * VIEW_WIDTH * document.documentElement.clientHeight));\n res *= (HEIGHT_ARR[width_key] * lastMirror.scale * KOEFS[width_key] * svgInCellPercentage / VIEW_HEIGHT);\n }\n res += '%'\n return res;\n }\n\n return {\n canMoveSideMirror: canMoveSideMirror(),\n selectSize: state.app.selectParams.size,\n requstedPreviewMirrorSize: state.app.requstedPreviewMirrorSize,\n requstedPreviewSideMirror: state.app.requstedPreviewSideMirror,\n heightCellScale: getHeightCellScale()\n }\n}\n\nconst mapDispatchToProps = dispatch => {\n return {\n }\n}\n\nPresentedMirrorsCell = DropTarget(ItemTypes.SIDE_MIRROR, cellTarget, collect)(PresentedMirrorsCell);\nexport default connect(mapStateToProps, mapDispatchToProps)(PresentedMirrorsCell)\n","import React, { Component } from 'react';\nimport { PRESENT_CELL_BASE_WIDTH_COEF } from '../../../store/coefitients';\nimport _ from 'lodash';\nimport './style.css';\n\nconst VL_WIDTH_LABEL = 2.25\n\nclass Bottomdetails extends Component {\n\n formStyleWithPadding() {\n let p = 12 / this.props.mirrors.length;\n p += '%'\n let res = {\n paddingTop : p\n };\n return res;\n }\n\n renderEachWidth() {\n let mirrors = this.props.mirrors;\n let widthBlocks = [];\n let eachWidth = _.map(mirrors, (m, i) => {\n let width = m.scale * PRESENT_CELL_BASE_WIDTH_COEF;\n const descriptionR = 'Vertical Lighting (right)'\n const descriptionL = 'Vertical Lighting (left)'\n let existingR = _.filter(m.addons, a => a.description === descriptionR)\n let existingL = _.filter(m.addons, a => a.description === descriptionL)\n const vl_width = 1.4 + '%';\n const vl = (i, side) => (\n
{VL_WIDTH_LABEL}
\n )\n let leftVL = existingL.length > 0 ? vl(i, \"left\") : null\n let rightVL = existingR.length > 0 ? vl(i, \"right\") : null\n width -= existingL.length * 1.4 + existingR.length * 1.4\n width += '%';\n widthBlocks.push(rightVL)\n widthBlocks.push(\n
\n
\n {m.size.width}\n
\n
\n )\n widthBlocks.push(leftVL)\n \n return m\n })\n _.reverse(widthBlocks);\n let res = null;\n if (this.props.mirrors.length && this.props.details) {\n res = (\n
\n {widthBlocks}\n
\n )\n }\n return res;\n }\n\n _calculateTotalWidthPercentage() {\n let res = 0;\n let mirrors = this.props.mirrors;\n res = _.reduce(mirrors, (r, m) => {\n r+= m.scale * PRESENT_CELL_BASE_WIDTH_COEF;\n return r;\n }, 0)\n res += '%';\n return res;\n }\n\n _calculateTotalWidth() {\n let res = 0;\n let mirrors = this.props.mirrors;\n res = _.reduce(mirrors, (r, m) => {\n const descriptionR = 'Vertical Lighting (right)'\n const descriptionL = 'Vertical Lighting (left)'\n let existingR = _.filter(m.addons, a => a.description === descriptionR)\n let existingL = _.filter(m.addons, a => a.description === descriptionL)\n r+= m.size.width + existingR.length * VL_WIDTH_LABEL + existingL.length * VL_WIDTH_LABEL;\n return r;\n }, res)\n return res;\n }\n\n renderSummary() {\n let width = this._calculateTotalWidthPercentage();\n let res = null;\n if (this.props.mirrors.length && this.props.details) {\n res = (\n
\n
\n {this._calculateTotalWidth()}\n
\n
\n )\n }\n return res;\n }\n\n render() {\n let style = this.formStyleWithPadding();\n return (\n
\n {this.renderEachWidth()}\n {this.renderSummary()}\n
\n );\n }\n}\n\nexport default Bottomdetails;\n","import React, { Component } from 'react';\n\nimport './style.css';\n\nclass Hint extends Component {\n render() {\n return (\n
\n
Drag and drop cabinets and add-ons here
\n
\n );\n }\n}\n\nexport default Hint;","import React, { Component } from 'react';\nimport PresentedMirrorsCell from './PresentedMirrorsCell';\nimport './style.css';\nimport Bottomdetails from './Bottomdetails/Bottomdetails';\nimport Hint from './Hint/Hint';\nimport 'react-notifications/lib/notifications.css';\nimport {NotificationContainer} from 'react-notifications';\n\n\nclass Field extends Component {\n constructor(props){\n super(props);\n this.state = {\n details: false\n }\n\n this.toggleButton = this.toggleButton.bind(this);\n this.renderPlaceholder = this.renderPlaceholder.bind(this);\n }\n toggleButton(){\n this.setState({ details : !this.state.details })\n }\n\n renderPlaceholder() {\n let res = null;\n if (this.props.mirrors.length === 0 && !this.props.previewOrDrag) {\n res = ;\n }\n return res;\n }\n\n renderShowSizeButton() {\n let res = null;\n if (this.props.mirrors.length) {\n res = (\n
\n \"\"\n
\n )\n }\n return res;\n }\n\n render() {\n let showDetails = this.state.details && !this.props.previewOrDrag;\n return (\n
\n \n {this.renderPlaceholder()}\n
\n \n \n {this.renderShowSizeButton()}\n
\n );\n }\n}\nexport default Field;\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { DragSource } from 'react-dnd';\nimport { ItemTypes } from '../../../Constants';\nimport './styles.css';\n\nconst mirrorSource = {\n beginDrag(props) {\n let size = { ...props.selectSize, ...props.size };\n props.startDrag();\n return { size: size };\n },\n \n canDrag(props, monitor) {\n let size = { ...props.selectSize, ...props.size };\n let type_id = size.width + \"x\" + size.height + \"x\" + size.depth;\n let canMove = props.isProductAvailable({ type: 'cabinet', type_id });\n return canMove;\n },\n\n endDrag(props, monitor) {\n if (monitor.didDrop()) {\n let dropTargetData = monitor.getDropResult();\n const mirror = { size: props.size };\n let params = { size: mirror.size, side: dropTargetData.side };\n props.addCabinet(params)\n }\n props.endDrag()\n }\n};\n\nfunction collect(connect, monitor) {\n return {\n connectDragSource: connect.dragSource(),\n connectDragPreview: connect.dragPreview(),\n isDragging: monitor.isDragging(),\n };\n}\n\nclass NavMirror extends Component {\n static propTypes = {\n connectDragSource: PropTypes.func.isRequired,\n connectDragPreview: PropTypes.func.isRequired,\n isDragging: PropTypes.bool.isRequired,\n };\n constructor(props) {\n super(props);\n this._imgSrc = this._imgSrc.bind(this);\n this.requestPreview = this.requestPreview.bind(this);\n }\n\n componentDidMount() {\n const img = new Image();\n const mirror = { size: this.props.size };\n img.src = \"img/jpg/thubmnail-\" + mirror.size.width + \"_.jpg\";\n img.onload = () => this.props.connectDragPreview(img);\n }\n\n requestPreview() {\n let size = this.props.size;\n this.props.requestPreviewMirror(size);\n }\n\n\n _imgSrc() {\n const mirror = { size: this.props.size };\n let mirrorWidth = mirror.size.width;\n let res = \"img/jpg/thubmnail-\" + mirrorWidth + \"_.jpg\";\n return res;\n }\n\n render() {\n const { connectDragSource, isDragging } = this.props;\n const mirror = { size: this.props.size };\n let mirrorWidth = mirror.size.width;\n let imgSrc = this._imgSrc();\n return connectDragSource(\n
\n \"\"\n
\n

{mirrorWidth}\"

\n
\n
\n );\n }\n}\n\nexport default DragSource(ItemTypes.DEFAULT_MIRROR, mirrorSource, collect)(NavMirror);\n","import { connect } from 'react-redux'\nimport { addCabinet, startDrag, endDrag, requestPreviewMirror } from '../../../actions'\nimport Mirror from './Mirror'\nimport _ from 'lodash'\n\nconst mapStateToProps = state => {\n const isProductAvailable = (params) => {\n let lProduct = _.find(state.app.availableProducts, params);\n return lProduct && lProduct.available !== \"0\";\n }\n\n return {\n selectSize: state.app.selectParams.size,\n isProductAvailable: isProductAvailable\n }\n}\n\nconst mapDispatchToProps = dispatch => {\n return {\n addCabinet: (params) => {\n dispatch(addCabinet(params))\n },\n requestPreviewMirror: (size) => {\n dispatch(requestPreviewMirror(size))\n },\n startDrag: () => {\n dispatch(startDrag())\n },\n endDrag: () => {\n dispatch(endDrag())\n }\n }\n}\n\nconst MirrorContainer = connect(\n mapStateToProps,\n mapDispatchToProps\n)(Mirror)\n\nexport default MirrorContainer","import React, {Component} from 'react';\nimport MirrorContainer from './MirrorContainer';\nimport './styles.css';\n\n\nclass Windows extends Component {\n render() {\n var tabsClass = 'model' + (this.props.cabinets ? 'hidden' : '');\n return (\n
\n
\n

Model Dimensions

\n
\n
\n \n \n \n \n
\n
\n );\n }\n}\n\nexport default Windows;\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux'\nimport PropTypes from 'prop-types';\nimport { DragSource } from 'react-dnd';\nimport { ItemTypes } from '../../../Constants';\nimport { addAddon, requestPreviewAddon } from '../../../actions';\nimport { notificateProductNotAvailable } from '../../tips/Tips'\n\nconst mirrorSource = {\n beginDrag(props) {\n props.requestPreviewAddon()\n return {\n id: props.addonId,\n type: 'addon'\n };\n },\n\n canDrag(props, monitor) {\n let canMove = props.addon.available;\n return canMove;\n },\n\n endDrag(props, monitor) {\n if (monitor.didDrop()) {\n let dropTargetData = monitor.getDropResult();\n let params = { mirrorId: dropTargetData.mirrorId, addonId: props.addonId, description: props.description };\n props.addAddon(params)\n }\n }\n};\n\nfunction collect(connect, monitor) {\n return {\n connectDragSource: connect.dragSource(),\n connectDragPreview: connect.dragPreview(),\n isDragging: monitor.isDragging(),\n };\n}\n\nclass Addon extends Component {\n static propTypes = {\n connectDragSource: PropTypes.func.isRequired,\n connectDragPreview: PropTypes.func.isRequired,\n isDragging: PropTypes.bool.isRequired,\n };\n constructor(props) {\n super(props);\n this._imgSrc = this._imgSrc.bind(this);\n this.requestPreview = this.requestPreview.bind(this);\n }\n\n getCursorStyle() {\n let res = 'move';\n if (!this.props.addon.available) {\n res = 'not-allowed'\n }\n return res;\n }\n\n _imgSrc() {\n const addonId = this.props.addonId.indexOf(\"06h\") === 0 ? \"06\" : this.props.addonId;\n let res = \"img/add-on-\" + addonId + \".png\";\n return res;\n }\n\n componentDidMount() {\n const img = new Image();\n img.src = this._imgSrc();\n img.onload = () => {\n return this.props.connectDragPreview(img)\n };\n }\n\n requestPreview() {\n if (this.props.addon.available) {\n let params = { addonId: this.props.addonId, description: this.props.description };\n this.props.requestPreviewAddon(params);\n }\n else {\n notificateProductNotAvailable();\n }\n }\n\n render() {\n const { connectDragSource, isDragging } = this.props;\n let imgSrc = this._imgSrc();\n let opacity = (isDragging || !this.props.addon.available) ? 0.5 : 1;\n return connectDragSource(\n
\n \"\"\n

{this.props.description}

\n
\n );\n }\n}\n\n\nconst mapStateToProps = state => {\n return {}\n}\n\nconst mapDispatchToProps = dispatch => {\n return {\n addAddon: (params) => {\n dispatch(addAddon(params))\n },\n requestPreviewAddon: (params) => {\n dispatch(requestPreviewAddon(params))\n }\n }\n}\n\n\nAddon = DragSource(ItemTypes.ADDON, mirrorSource, collect)(Addon);\nexport default connect(mapStateToProps, mapDispatchToProps)(Addon);\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux'\nimport PropTypes from 'prop-types';\nimport { DragSource } from 'react-dnd';\nimport { ItemTypes } from '../../../Constants';\nimport { addSideMirror, requstPreviewSideMirror } from '../../../actions';\nimport { notificateProductNotAvailable } from '../../tips/Tips'\n\nconst mirrorSource = {\n beginDrag(props) {\n return {\n type: 'addon'\n };\n },\n\n canDrag(props, monitor) {\n let canMove = props.addon.available !== '0';\n return canMove;\n },\n\n endDrag(props, monitor) {\n if (monitor.didDrop()) {\n props.addSideMirror();\n }\n }\n};\n\nfunction collect(connect, monitor) {\n return {\n connectDragSource: connect.dragSource(),\n connectDragPreview: connect.dragPreview(),\n isDragging: monitor.isDragging(),\n };\n}\n\nclass SideMirror extends Component {\n static propTypes = {\n connectDragSource: PropTypes.func.isRequired,\n connectDragPreview: PropTypes.func.isRequired,\n isDragging: PropTypes.bool.isRequired,\n };\n constructor(props) {\n super(props);\n this._imgSrc = this._imgSrc.bind(this);\n this.requestPreview = this.requestPreview.bind(this);\n }\n\n getCursorStyle() {\n let res = 'move';\n if (this.props.addon.available === '0') {\n res = 'not-allowed'\n }\n return res;\n }\n\n _imgSrc() {\n let res = \"img/add-on-01.png\";\n return res;\n }\n\n componentDidMount() {\n const img = new Image();\n img.src = this._imgSrc();\n img.onload = () => {\n return this.props.connectDragPreview(img)\n };\n }\n\n requestPreview() {\n if (this.props.addon.available) {\n this.props.requstPreviewSideMirror();\n }\n else {\n notificateProductNotAvailable();\n }\n }\n\n render() {\n const { connectDragSource, isDragging } = this.props;\n let imgSrc = this._imgSrc();\n let opacity = (isDragging || !this.props.addon.available) ? 0.5 : 1;\n return connectDragSource(\n
\n \"\"\n

{this.props.description}

\n
\n );\n }\n}\n\n\nconst mapStateToProps = state => {\n return {}\n}\n\nconst mapDispatchToProps = dispatch => {\n return {\n addSideMirror: () => {\n dispatch(addSideMirror())\n },\n requstPreviewSideMirror: () => {\n dispatch(requstPreviewSideMirror())\n }\n }\n}\n\nSideMirror = DragSource(ItemTypes.SIDE_MIRROR, mirrorSource, collect)(SideMirror);\nexport default connect(mapStateToProps, mapDispatchToProps)(SideMirror);\n","import React, {Component} from 'react'\nimport Addon from './Addon.jsx'\nimport SideMirror from './SideMirror.jsx'\nimport { connect } from 'react-redux'\nimport _ from 'lodash'\nimport './styles.css'\n\nclass Addons extends Component {\n _getProductById(id) {\n let availableProducts = this.props.availableProducts;\n let res = _.find(availableProducts, {type_id : id, type : 'addon'}) || {};\n return res;\n }\n\n render() {\n var tabsClass = 'addons' + (this.props.addons ? 'hidden' : '');\n return (\n
\n
\n

Add-ons

\n
\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n );\n }\n}\nconst mapStateToProps = state => {\n return {\n sizes: state.app.selectParams.size\n }\n}\n\nconst mapDispatchToProps = dispatch => {\n return {}\n}\nexport default connect(mapStateToProps, mapDispatchToProps)(Addons);\n","import React, { Component } from \"react\";\nimport { MountTypes } from '../../../Constants';\nimport { warningNotification, successNotification } from '../../tips/Tips'\nimport _ from 'lodash';\nimport './styles.css';\n\nconst HeightArr = [4, 6];\n\nclass Select extends Component {\n constructor(props) {\n super(props);\n this.handleMountTypeChange = this.handleMountTypeChange.bind(this);\n }\n\n renderDepthOptons() {\n let mountTypeId = this.props.mountTypeId;\n let arrToRender = HeightArr;\n //SEMI-RECESSED AND DEPTH 4 NOT ALLOWED\n if (mountTypeId === '02') {\n arrToRender = _.filter(HeightArr, h => { return h !== 4 })\n };\n arrToRender = _.map(arrToRender, (h, i) => {\n return (\n \n )\n });\n return arrToRender;\n }\n\n renderSizeSelect() {\n return (\n
\n
\n

Height

\n \n
\n
\n

Depth

\n \n
\n
\n )\n }\n\n renderMountTypeOptons() {\n let depth = this.props.selectSize.depth;\n let arrToRender = MountTypes;\n //SEMI-RECESSED AND DEPTH 4 NOT ALLOWED\n if (depth === 4) {\n arrToRender = _.filter(MountTypes, m => { return m.id !== '02' })\n };\n arrToRender = _.map(arrToRender, (m, i) => {\n return (\n \n )\n });\n return arrToRender;\n }\n\n handleMountTypeChange(e) {\n //sideMirror && recessed case\n if (this.props.isSideMirror && e.target.value === '03') {\n let text = 'Side Mirror is unavailable for Recessed Mount Type, it was deleted';\n warningNotification({ text })\n }\n else if (this.props.isSideMirror && e.target.value !== '03' && this.props.mountTypeId === '03') {\n let text = 'Side Mirror added';\n successNotification({ text })\n }\n this.props.setMountType(e.target.value)\n }\n\n renderMountTypeSelect() {\n return (\n
\n

Mount Type

\n \n
\n )\n }\n\n render() {\n var tabsClass = 'selectAll' + (this.props.cabinets ? 'hidden' : '');\n return (\n
\n {this.renderSizeSelect()}\n {this.renderMountTypeSelect()}\n
\n\n );\n }\n}\nexport default Select;\n","import { connect } from 'react-redux'\nimport { setSelectSize, setMountType } from '../../../actions'\nimport Select from './Select'\n\nconst mapStateToProps = state => {\n return {\n selectSize : state.app.selectParams.size,\n isSideMirror : state.app.isSideMirror,\n mountTypeId : state.app.selectParams.mountType\n }\n}\n\nconst mapDispatchToProps = dispatch => {\n return {\n setSelectSize: (size) => {\n dispatch(setSelectSize(size))\n },\n setMountType: (type) => {\n dispatch(setMountType(type))\n }\n }\n}\n\nconst SelectContainer = connect(\n mapStateToProps,\n mapDispatchToProps\n)(Select)\n\nexport default SelectContainer","import React, { Component } from 'react';\nimport { connect } from 'react-redux'\nimport { removeMirror, removeSideMirror, removeAddon } from '../../../actions';\n\nclass ProductDetails extends Component {\n constructor(props) {\n super(props);\n this._formDescription = this._formDescription.bind(this);\n this._formPrice = this._formPrice.bind(this);\n this.renderIcons = this.renderIcons.bind(this);\n this.renderDeleteIcon = this.renderDeleteIcon.bind(this);\n this.renderInfoIcon = this.renderInfoIcon.bind(this);\n this.renderPdfIcon = this.renderPdfIcon.bind(this);\n this._removeObject = this._removeObject.bind(this);\n }\n\n\n _formDescription() {\n let res = this.props.product.name;\n return res;\n }\n\n _formPrice() {\n let price = +this.props.product.price;\n let res = price.toFixed(2) + ` ${window.currency.toUpperCase()}`;\n return res;\n }\n\n _removeObject() {\n let type = this.props.type;\n switch (type) {\n case 'mirror':\n let id = this.props.mirror._id;\n this.props.removeMirror(id);\n break;\n case 'addon':\n let mirrorId = this.props.mirrorId;\n let addonId = this.props.addon.id;\n this.props.removeAddon({ mirrorId, addonId })\n break;\n case 'side_mirror':\n this.props.removeSideMirror();\n break;\n default:\n break;\n }\n }\n\n renderDeleteIcon() {\n let res = null;\n let { type, status } = this.props;\n if (type !== 'kit' && status !== 'checklist') {\n res = (\"\");\n }\n return res;\n }\n\n renderInfoIcon() {\n let res = null;\n let { type, product } = this.props;\n if (type === 'kit') {\n res = (\n
\n \"\"\n
\n

{product.description}

\n
\n
\n )\n }\n return res;\n }\n\n renderPdfIcon() {\n let { type, product } = this.props;\n let link = \"/product_\" + product.id + \"_configuration_info.pdf\"\n let res = (\n \n \"\"\n \n );\n if (type === 'addon' && this.props.product.type_id === '03') {\n res = null;\n }\n return res;\n }\n\n renderIcons() {\n let res = (\n
\n {this.renderDeleteIcon()}\n {this.renderInfoIcon()}\n {this.renderPdfIcon()}\n
\n )\n return res;\n }\n\n render() {\n const children = this.props.children;\n\n return (\n
\n
\n {this.renderIcons()}\n
\n
{this._formDescription()}
\n
\n
\n
{this._formPrice()}
\n
\n
\n {children}\n
\n )\n }\n}\n\n\nconst mapStateToProps = state => { return {} }\nconst mapDispatchToProps = dispatch => {\n return {\n removeMirror: (id) => {\n dispatch(removeMirror(id))\n },\n removeAddon: (params) => {\n dispatch(removeAddon(params))\n },\n removeSideMirror: (stage) => {\n dispatch(removeSideMirror())\n }\n }\n}\n\nconst ProductContainer = connect(\n mapStateToProps,\n mapDispatchToProps\n)(ProductDetails)\nexport default ProductContainer;\n","import React, { Component } from 'react';\nimport ProductDetails from './ProductDetails';\nimport './styles.css';\nimport _ from 'lodash';\n\nclass Details extends Component {\n constructor(props) {\n super(props);\n this._renderTopWrapper = this._renderTopWrapper.bind(this);\n this._renderProductsInfo = this._renderProductsInfo.bind(this);\n this._renderSideMirror = this._renderSideMirror.bind(this);\n this._renderKit = this._renderKit.bind(this);\n this._renderMirrrors = this._renderMirrrors.bind(this);\n this._renderAddonds = this._renderAddonds.bind(this);\n }\n\n _renderTopWrapper(imgSrc) {\n return (\n
\n
this.props.handler('details')}>\n \"\"\n

\n Details\n

\n
\n
\n )\n }\n\n _renderAddonds(addons, mirrorId) {\n let addonsList = _.map(addons, (a, i) => {\n let productAddon = this.props.addonToProduct(a);\n return (\n \n )\n })\n let res = addonsList;\n return addons.length ? res : null;\n }\n\n _renderMirrrors() {\n let renderedMirrors = _.map(this.props.mirrors, (m, i) => {\n let product = this.props.mirrorToProduct(m);\n return (\n \n {this._renderAddonds(m.addons, m._id)}\n \n )\n })\n return renderedMirrors;\n }\n\n _renderSideMirror() {\n let sideMirrorProduct = this.props.sideMirrorProduct;\n let sideMirrorComponent = null;\n if (sideMirrorProduct) {\n sideMirrorComponent = (\n \n );\n }\n return sideMirrorComponent;\n }\n\n _renderKit() {\n let kitProduct = this.props.kitProduct;\n let kitComponents = null;\n if (kitProduct) {\n let kitCount = this.props.mirrors.length - 1;\n kitComponents = _.map(Array(kitCount), (k, i) => \n );\n }\n return kitComponents;\n }\n\n _renderProductsInfo() {\n return (\n
\n
\n
\n {this._renderMirrrors()}\n {this._renderSideMirror()}\n {this._renderKit()}\n
\n
\n
\n )\n }\n\n render() {\n const showDetails = this.props.details;\n const DETAILS_IMG = showDetails ? \"img/arrow-down.svg\" : \"img/arrow-up.svg\";\n return (\n\n
\n {this._renderTopWrapper(DETAILS_IMG)}\n {showDetails &&\n this._renderProductsInfo()\n }\n
\n\n );\n }\n}\nexport default Details;\n","import { connect } from 'react-redux'\nimport Details from './Details'\n\nconst mapStateToProps = state => {\n return {\n availableProducts: state.app.availableProducts,\n mirrors: state.app.presentedMirrors,\n sizes: state.app.selectParams.size,\n\n kitProduct: state.app.getKitProduct(),\n sideMirrorProduct: state.app.getSideMirrorProduct(),\n mirrorToProduct: state.app.mirrorToProduct,\n addonToProduct: state.app.addonToProduct,\n }\n}\n\nconst DetailsContainer = connect(mapStateToProps)(Details)\n\nexport default DetailsContainer\n","import React, { Component } from 'react';\nimport {apiBase} from '../../../Constants';\nimport { connect } from 'react-redux';\nimport './styles.css';\nimport _ from 'lodash';\n\nimport { fetchChecklistStart, fetchChecklistLoaded } from '../../../actions/navigation'\n\nclass Proceed extends Component {\n constructor(props) {\n super(props);\n this.state = {\n showCaptcha: false\n }\n this.proceed = this.proceed.bind(this);\n this.onRecaptcha = this.onRecaptcha.bind(this);\n }\n\n componentDidMount = () => {\n if (window.grecaptcha) {\n const { grecaptcha } = window;\n grecaptcha.render('recaptcha', {\n sitekey : '6LeHzzsUAAAAAKH11Iy5RjYivnZZDrvInL7J1bfQ',\n lang : 'en',\n size : 'invisible',\n badge : 'topleft',\n callback : this.proceed\n });\n }\n };\n\n _getProductsIds() {\n let products = this.props.products || [];\n return _.map(products, p => parseInt(p.id, 10));\n }\n\n proceed(captcha) {\n const { fetchChecklist, fetchChecklistLoaded } = this.props;\n\n let products = this.props.products || [];\n if (!products.length) {\n return;\n }\n let proceed_Url = `${apiBase}/confirm`;\n let ids = this._getProductsIds();\n let dataObj = {\n products: ids,\n recaptcha: captcha,\n currency: window.currency,\n }\n let params = {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(dataObj)\n };\n fetchChecklist();\n fetch(proceed_Url, params)\n .then(response => response.json())\n .then(data => {\n data.order_id = data.id;\n data.products = data.products.map((p) => {\n p.price = p[`price_${window.currency}`]\n p.type = p.type_name\n return p\n })\n fetchChecklistLoaded();\n this.props.showChecklist(data);\n })\n .catch(e => {\n console.log(e);\n console.log('ERROR');\n fetchChecklistLoaded();\n return { error: true }\n })\n }\n\n\n onRecaptcha = () => {\n const { grecaptcha } = window;\n grecaptcha.execute();\n };\n\n render() {\n let products = this.props.products || [];\n let buttonStyle = !products.length ? { cursor: \"not-allowed\", opacity: 0.5 } : {};\n let price = _.reduce(products, (r, p) => {\n r += parseFloat(p.price);\n return r;\n }, 0)\n return (\n
\n
\n
\n
{price} {window.currency.toUpperCase()}
\n
\n
\n
\n Proceed\n
\n
\n
\n\n );\n }\n}\n\nconst mapDispatchToProps = dispatch => ({\n fetchChecklist: () => dispatch(fetchChecklistStart()),\n fetchChecklistLoaded: () => dispatch(fetchChecklistLoaded())\n})\n\n\nexport default connect(null, mapDispatchToProps)(Proceed);\n","import { FETCH_CHECKLIST_START, FETCH_CHECKLIST_LOADED} from \"../constants/navigation\"\n\nexport const fetchChecklistStart = () => ({\n type : FETCH_CHECKLIST_START\n})\n\nexport const fetchChecklistLoaded = () => ({\n type : FETCH_CHECKLIST_LOADED\n})","import React, { Component } from 'react';\nimport './styles.css';\n\nclass Phonetabs extends Component {\n _getClassName(type){\n let defaultClass = 'tabs__button button-'+ type;\n let res = defaultClass;\n if (type === this.props.buttonToggle ){\n res += ' active';\n\n }\n return res;\n }\n render() {\n\n return (\n
\n\n \n\n \n \n
\n );\n }\n}\n\nexport default Phonetabs;\n","let imgData = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABAAAAAQACAYAAAB/HSuDAAAAIGNIUk0AAH' +\n 'omAACAhAAA+gAAAIDoAAB1MAAA6mAAADqYAAAXcJy6UTwAAAAGYktHRAD/AP8A/6C9p5MAAAAHdElNRQ' +\n 'fiAwYHBxpC/0wdAABI20lEQVR42u3dd7xlZ0Hv4d9a+7TpfdILJAQIoTfp0gTpF5Ryrw2QIqjAxasXsC' +\n 'AKF0RBBERR6YK0gDSVKp2QBNJJAgFSZjKT6eX0vfe6f+wzk4QkZDJz+vs8n89JOXNm73V2W2t917veVZ' +\n '1/h9ObAAAAAItaPdcLAAAAAMw8AQAAAAAKIAAAAABAAQQAAAAAKIAAAAAAAAUQAAAAAKAAAgAAAAAUQA' +\n 'AAAACAAggAAAAAUAABAAAAAAogAAAAAEABBAAAAAAogAAAAAAABRAAAAAAoAACAAAAABRAAAAAAIACCA' +\n 'AAAABQAAEAAAAACiAAAAAAQAEEAAAAACiAAAAAAAAFEAAAAACgAAIAAAAAFEAAAAAAgAIIAAAAAFAAAQ' +\n 'AAAAAKIAAAAABAAQQAAAAAKIAAAAAAAAUQAAAAAKAAAgAAAAAUQAAAAACAAggAAAAAUAABAAAAAAogAA' +\n 'AAAEABBAAAAAAogAAAAAAABRAAAAAAoAACAAAAABRAAAAAAIACCAAAAABQAAEAAAAACiAAAAAAQAEEAA' +\n 'AAACiAAAAAAAAFEAAAAACgAAIAAAAAFEAAAAAAgAIIAAAAAFAAAQAAAAAKIAAAAABAAQQAAAAAKIAAAA' +\n 'AAAAUQAAAAAKAAAgAAAAAUQAAAAACAAggAAAAAUAABAAAAAAogAAAAAEABBAAAAAAogAAAAAAABRAAAA' +\n 'AAoAACAAAAABRAAAAAAIACCAAAAABQAAEAAAAACiAAAAAAQAEEAAAAACiAAAAAAAAFEAAAAACgAAIAAA' +\n 'AAFEAAAAAAgAIIAAAAAFAAAQAAAAAKIAAAAABAAQQAAAAAKIAAAAAAAAUQAAAAAKAAAgAAAAAUQAAAAA' +\n 'CAAggAAAAAUAABAAAAAAogAAAAAEABBAAAAAAogAAAAAAABRAAAAAAoAACAAAAABRAAAAAAIACCAAAAA' +\n 'BQAAEAAAAACiAAAAAAQAEEAAAAACiAAAAAAAAFEAAAAACgAAIAAAAAFEAAAAAAgAIIAAAAAFAAAQAAAA' +\n 'AKIAAAAABAAQQAAAAAKIAAAAAAAAUQAAAAAKAAAgAAAAAUQAAAAACAAggAAAAAUAABAAAAAAogAAAAAE' +\n 'ABBAAAAAAogAAAAAAABRAAAAAAoAACAAAAABRAAAAAAIACCAAAAABQAAEAAAAACiAAAAAAQAEEAAAAAC' +\n 'iAAAAAAAAFEAAAAACgAAIAAAAAFEAAAAAAgAIIAAAAAFAAAQAAAAAKIAAAAABAAQQAAAAAKIAAAAAAAA' +\n 'UQAAAAAKAAAgAAAAAUQAAAAACAAggAAAAAUAABAAAAAAogAAAAAEABBAAAAAAogAAAAAAABRAAAAAAoA' +\n 'ACAAAAABRAAAAAAIACCAAAAABQAAEAAAAACiAAAAAAQAEEAAAAACiAAAAAAAAFEAAAAACgAAIAAAAAFE' +\n 'AAAAAAgAIIAAAAAFAAAQAAAAAKIAAAAABAAQQAAAAAKIAAAAAAAAUQAAAAAKAAAgAAAAAUQAAAAACAAg' +\n 'gAAAAAUAABAAAAAAogAAAAAEABBAAAAAAogAAAAAAABRAAAAAAoAACAAAAABRAAAAAAIACCAAAAABQAA' +\n 'EAAAAACiAAAAAAQAEEAAAAACiAAAAAAAAFEAAAAACgAAIAAAAAFEAAAAAAgAIIAAAAAFAAAQAAAAAKIA' +\n 'AAAABAAQQAAAAAKIAAAAAAAAUQAAAAAKAAAgAAAAAUQAAAAACAAggAAAAAUAABAAAAAAogAAAAAEABBA' +\n 'AAAAAogAAAAAAABRAAAAAAoAACAAAAABRAAAAAAIACCAAAAABQAAEAAAAACiAAAAAAQAEEAAAAACiAAA' +\n 'AAAAAFEAAAAACgAAIAAAAAFEAAAAAAgAIIAAAAAFAAAQAAAAAKIAAAAABAAQQAAAAAKIAAAAAAAAUQAA' +\n 'AAAKAAAgAAAAAUQAAAAACAAggAAAAAUAABAAAAAAogAAAAAEABBAAAAAAogAAAAAAABRAAAAAAoAACAA' +\n 'AAABRAAAAAAIACCAAAAABQAAEAAAAACiAAAAAAQAEEAAAAACiAAAAAAAAFEAAAAACgAAIAAAAAFEAAAA' +\n 'AAgAIIAAAAAFAAAQAAAAAKIAAAAABAAQQAAAAAKIAAAAAAAAUQAAAAAKAAAgAAAAAUQAAAAACAAggAAA' +\n 'AAUAABAAAAAAogAAAAAEABBAAAAAAogAAAAAAABRAAAAAAoAACAAAAABRAAAAAAIACCAAAAABQAAEAAA' +\n 'AACiAAAAAAQAEEAAAAACiAAAAAAAAFEAAAAACgAAIAAAAAFEAAAAAAgAIIAAAAAFAAAQAAAAAKIAAAAA' +\n 'BAAQQAAAAAKIAAAAAAAAUQAAAAAKAAAgAAAAAUQAAAAACAAggAAAAAUAABAAAAAAogAAAAAEABBAAAAA' +\n 'AogAAAAAAABRAAAAAAoAACAAAAABRAAAAAAIACCAAAAABQAAEAAAAACiAAAAAAQAEEAAAAACiAAAAAAA' +\n 'AFEAAAAACgAAIAAAAAFEAAAAAAgAIIAAAAAFAAAQAAAAAKIAAAAABAAQQAAAAAKIAAAAAAAAUQAAAAAK' +\n 'AAAgAAAAAUQAAAAACAAggAAAAAUAABAAAAAAogAAAAAEABBAAAAAAogAAAAAAABRAAAAAAoAACAAAAAB' +\n 'RAAAAAAIACCAAAAABQAAEAAAAACiAAAAAAQAEEAAAAACiAAAAAAAAFEAAAAACgAAIAAAAAFEAAAAAAgA' +\n 'IIAAAAAFAAAQAAAAAKIAAAAABAAQQAAAAAKIAAAAAAAAUQAAAAAKAAAgAAAAAUQAAAAACAAggAAAAAUA' +\n 'ABAAAAAAogAAAAAEABBAAAAAAogAAAAAAABRAAAAAAoAACAAAAABRAAAAAAIACCAAAAABQAAEAAAAACi' +\n 'AAAAAAQAEEAAAAACiAAAAAAAAFEAAAAACgAAIAAAAAFEAAAAAAgAIIAAAAAFAAAQAAAAAKIAAAAABAAQ' +\n 'QAAAAAKIAAAAAAAAUQAAAAAKAAAgAAAAAUQAAAAACAAggAAAAAUAABAAAAAAogAAAAAEABBAAAAAAogA' +\n 'AAAAAABRAAAAAAoAACAAAAABRAAAAAAIACCAAAAABQAAEAAAAACiAAAAAAQAEEAAAAACiAAAAAAAAFEA' +\n 'AAAACgAAIAAAAAFEAAAAAAgAIIAAAAAFAAAQAAAAAKIAAAAABAAQQAAAAAKIAAAAAAAAUQAAAAAKAAAg' +\n 'AAAAAUQAAAAACAAggAAAAAUAABAAAAAAogAAAAAEABBAAAAAAogAAAAAAABRAAAAAAoAACAAAAABRAAA' +\n 'AAAIACCAAAAABQAAEAAAAACiAAAAAAQAEEAAAAACiAAAAAAAAFEAAAAACgAAIAAAAAFEAAAAAAgAIIAA' +\n 'AAAFAAAQAAAAAKIAAAAABAAQQAAAAAKIAAAAAAAAUQAAAAAKAAAgAAAAAUQAAAAACAAggAAAAAUAABAA' +\n 'AAAAogAAAAAEABBAAAAAAogAAAAAAABRAAAAAAoAACAAAAABRAAAAAAIACCAAAAABQAAEAAAAACiAAAA' +\n 'AAQAEEAAAAACiAAAAAAAAFEAAAAACgAAIAAAAAFEAAAAAAgAIIAAAAAFAAAQAAAAAKIAAAAABAAQQAAA' +\n 'AAKIAAAAAAAAUQAAAAAKAAAgAAAAAUQAAAAACAAggAAAAAUAABAAAAAAogAAAAAEABBAAAAAAogAAAAA' +\n 'AABRAAAAAAoAACAAAAABRAAAAAAIACCAAAAABQAAEAAAAACiAAAAAAQAEEAAAAACiAAAAAAAAFEAAAAA' +\n 'CgAAIAAAAAFEAAAAAAgAIIAAAAAFAAAQAAAAAKIAAAAABAAQQAAAAAKIAAAAAAAAUQAAAAAKAAAgAAAA' +\n 'AUQAAAAACAAggAAAAAUAABAAAAAAogAAAAAEABBAAAAAAogAAAAAAABRAAAAAAoAACAAAAABRAAAAAAI' +\n 'ACCAAAAABQAAEAAAAACiAAAAAAQAEEAAAAACiAAAAAAAAFEAAAAACgAAIAAADAAc3UFyxCfXO9AAAAAL' +\n 'OpmtrBb7rdpGmSqkrV10rV35eqVadpkqbdTjPRTrrd3g/XdVJVSTXXSw+HTwAAAADK0TRJu5tqsD8DJx' +\n '6boTvfMUN3Pi0DJ5yUvrWrUw32J90m3f0jmdiyJeNX/DhjF/8g4z/6Sdq79/YCQG0gNQuTAAAAACxq1x' +\n '/x76RevjTL73fvrHr8Y7PsfvdP/1HHpGq10nQ7aSYn00xOpqrrVAMDqfr6klTpjOzP2OWXZd+Xvpw9//' +\n 'WljP/kqqRJqqpKY0QAC0h1/h1Od4YLAACwODVJ1W2SVpWl971n1j/7N7LiwQ9ONTiUyWs3Z+SC8zN6wU' +\n 'UZv/LKdHbsTjM2ntR16pXL0n/0URm602lZeo97ZOi0O6VeuiwTV1+ZnR/9aHZ95BNpX7cz6TMagIVDAA' +\n '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' +\n '2Tn12eG042VE2di1tVtz6nHMVqqiR9ddq79mbrG9+aZmIi637r2bN4mc8qQ3e6Y+9cX72P22TqkgPtqZ' +\n 'ErXj/ToOmN8Jvjq3I03W7veZ2h53S2V4m3afuh+Zn/abWy5G53zsbf/930rVg1I8vXHR1NZ++w/X84Qg' +\n 'IAi1JVJc3oaDp7diU5eUbuo0mTamAwR/3+72Xw9rfL/m99J93h4WRqdvrDOuLT7U7L7La9icqaI9omqZ' +\n 'retaunZbbdn504rdWXqq8v3dGRtLfuSPu67ekOj0z9mSNl3LKqrtIdGct1b31n6pWrsu7pz8hsbQ0OnH' +\n 'xy6qVL0t0/svAv9cms6U0iee/e1SymGvFhfzgfXLcU/vqrkva2bRk578I0czgCb/DUU7LiMb+Yqp7GSQ' +\n 'CbJk23O2fP8IH1/q09qlWSqtWfamAg9fLlGTr9jln5yEdk8PiTZmzZOrt2prN3j89fOEICAItTVaUzOp' +\n 'bJLVuTu83QXUytnlsrVmXds/5X1v7q03vnJk+tmA5rhunp2PmfptuZruW52ds5sBHbbqezd2/Gf/Lj7P' +\n '/OWdn3la9n7PIr0ky2U9W1EQHcRFMlaVXp7B/JdX/3jgzd4dQsved9ZmVjuf/oo9O3alUm9g735ieAQ1' +\n 'D19WfD815w2NdYv+kNeu1VrVb2fuULufL3/k8yMftzghyw5klPzZonPHl6b7S5Pt/PyQiA27Der6q6d9' +\n 'Cj1Tcrr8vxTdeks2/YewCOkADAotVMTGbsRz/Kql+anfur+vpT9fXP9a+9sI4LDST10uXpP/rYLPuFB2' +\n 'Xdr/1a9n75S9n5oY9m7KLLelsjZlzn5tR1JjdvzbZ3/ktO+Os7pV62fMZf+61Vq9O3YW0mrto01789C0' +\n 'xVt3oT0zJ95sHjWbX6ktb0b0rP1Vpvvq9txy69LM34hDk14Ah5B7EoNVWSpsnoxZekOzG7k4VxOJpUVZ' +\n 'X+DUdl3TP+Z076h7dl/Qt+M61Vy5OOWde5GVWSViv7v/7t7Pvvr8zKhmtrydL0bdjoHG6AWdYdH8voBR' +\n 'emma6RiVAwAYDFq64zdsllmbzW0br578a7bwNHH5ejX/a/c/zrXp3B250gAnDzqqQ7MpZdHzszneF9M3' +\n '93ff3p37h2rn9rgOJMbL4mo5dc3jvtADgi3kUsXnWVyc1bM3z2OXO9JByGqq8/qx7zuBz/xtdlyemniQ' +\n 'DcvLrO6AWXZOyHl8/K3fWtWTf/x8lyqxxDhIVl+Kzvpr1lm9MCYRoIACxqzWQ7e/7rC+mODs/1onAYmq' +\n 'bJsnveJ8e99tUZOu32IgA3VVXp7NmXsYsunpW7a61afXgTfDK/TF16FJj/uiPD2fuFL6Vpz92Ej7CYCA' +\n 'AsalVdZ+Sc8zJy4QVzvSgchgM7Wkvvds8c86o/TP9R65M5vOQT81PT6Wb8pz+dlfuqly9xBGoRqAQAWD' +\n 'CGzz07I+een8rkfzAtvJNY3Koq3T37svvfP51ue3Kul4bD1KTJ8gc9NOtf8OzU/X3G7/IzmrR37kkzXZ' +\n 'dZ+zmqgf7eDNRegwAzrjM6nJ0f+Vg6e/eLdjBNBAAWtSZJU9fZ+4WvZOR7Z8/14nCYqlSpqiprn/YrWf' +\n '6LD0o6nbleJOaZZrKT2dgrr1otcwAAzJJ9//2V7Pvqtxz9h2nk3cTiViWpq7R37M62d74r7d0753qJOA' +\n 'Kt5Suz/rm/lb6N6xKXAuIG6mWDs7aBaP8fYGY1SSY2XZVt73xXusOjaeqqd4ln4IgJAJShrrP/69/J9v' +\n 'e+J932xFwvDUdg2b3undVP+mUBgCRTO+NVlb51azMbu+ZNp+OlBzCDmvQm/tv69ndk7MIfOPoP08w7ij' +\n 'JUSdPtZvu7P5hdZ545K+cKMzOqui9rnvbU9B+9MenYEytdk96w/MGTTpqd+5uYSLpdwwAAplnTNL1TNy' +\n 'cnsv1d/5Ldn/hsmsqRf5huAgDlqKp0949k6xvfkt3/fmbSdR75QjV06mlZ8dAHJo2QU7ymSb1iWQbvcI' +\n 'dZubvuvlFXogCYAVVVJe3J7PjA+7Ltne9JM9k28R/MAAGAstRV2rt2Z/Nr35ht73tPumMjSXrVmYWjav' +\n 'VlxSMfnnrp0FwvCnOtaTJ4uxMzeLvbzcrdtXfv8nkBMI0OHPnvToxn+/vem61veUe6o2MuuQozRACgPH' +\n 'Wdzu592frGt2bzX74241f/9OD15lk4lpxxRvqPP7Y3HJuCNVn2wPunb/XaWbmv9s7tLgEIMI2qqkp3/9' +\n '5c9463Z+ub357u/lFH/mEGCQCUqa7SnZjIzn87M1e96CXZ9cmPp7Nv78E/doRv/utftyFL7nya56pUTV' +\n 'J1mvStX5uVj37U7Nzl5ETaW3fM9W8OsCg0U1/jV1+ZzX/+mmx7x7vTHRt35B9mmABAuaoqqeuMXXx5Nr' +\n '3qNbnq91+SXZ/+ZCa3b41DfPNf1defoTvf0eiNgjVNNysf+bAsOf0us3J/neHhTG7d6sgUzAfehgteMz' +\n 'GWvZ//j1z1ey/NrjM/m6bT9fkKs6BvrhcA5lrTV6eZaGff176d/d89N0O3v12W/cJ9svRe98rg7U5Oa9' +\n 'WqVK3W1E/f3Iqp6X2/qm51Z7Rpmqmfqw9t46WqplaG1c+70UO/zaZ3m7d2SZ2DB9Wr3Mrv1FyfSg78WF' +\n '2nHhhKVddTv29SzdCW2sBJJ6fq70vaXbMEl6bbzcBxR2fd/3pW6r6BWbnL9o7tmdy+w9GpBa85pM/r6b' +\n 'u7Jp39e9O0O4e/c3PgQ3murkDRNAdHW83N3XdvfOnXupXOrl1zsCRMh6Y9mdGLL8qOD34oe//zy+nsH0' +\n '5ajknCbBEAIOlt0bRaaSY6Gb348oxefFmqD3w0rZXL01qxPKlbP3ejp6nS2wE/pPs6tA3Ppkqq1Ie+wV' +\n 'jXP/dHm6l/9ELBrUSF9HbcU1e3vrNzoH+0ej9XDQ5kyV1Oz9pnPTMDJ5ycagZHU/RvWJ96aCidfcOOGp' +\n 'SkaVIN9Gfdc349S+5y11m724mrrk5nz14BYFGoZu0zozs+ms2ve11Gz7vkBjH5tmvSJN3u3OyAJ1NXv5' +\n 'ij0XFTAeLg714l3ZHRNJOu5rNwNGnv2Z2RC87Pns/+R/b99zfSvm5H74CEnX+YVQIA3FCVpK+3Imranb' +\n 'R37k57x9RRhuZW/t6t/cyMmyenLTTJvq+flbEfXZET/uoNMzo5W2vlqtSDg+nuG54vvz0zrdukqpI1v/' +\n 'KkrH3GMzKbxyNHL700zdhEUttY5baZ3LQ5Y5dclvQdfgAoWpWbruKqQwjUM2yqf8/c7TfNgj3Nrel20h' +\n '0dSXv79oz/+IqMnPv97P/u2Rm/9EfpDI8kVZ30tay7YQ4IAHBLqql/LNCV71yqmmT/N7+bke+dm5WPeP' +\n 'SM3U89tDRV/0DMA1iIbjf1kqGsfdbTsvFFL069dHlmfhN86q4nxzN20cU3PgoJh6KqUvX19Y5yOtK5qI' +\n 'x8/7sZvfiS3gi8IwiDTbeTauo8tqbppv+YY7L8gQ9JvWTpXP+Kt7zMUyve8R9fltEfXJq0O2kmJ9LZP5' +\n 'L29h2Z3Lo1k9dszuTmLWnv2JVmdCxNpk5BPIKRMMCREwCA6VclzdhEJq7ePLP3M3WKQpUmdssWqSYHL/' +\n 'U4eIeTs+H5z8nqxz8x9eDQ1A/MzvM+uXVrRi/94YI9GsdcEpIXq71f+nK2/f27kr4j3Jxubvw/9ZKhrH' +\n 'rcL2XDC56fodudktkKnbfFgc/CesmyDH/37Oz5xOfSGR3r/WH3hvM1TJ12OLXTb74emHsCADAjqr46rV' +\n 'UrZ/Q+msl2b2KtebZhxDRomjTdbuqqTv9xR2fV438pa57x9AyefPs5Odtl7OKL0r72ut6wVbiNhKPFqf' +\n 'e81jnidVB14//pjo5n90c/ldELLs6GFz0vqx79mBtEz/ml/9gTcuwrX5WlZ5yR697xz5m4apNTXWCeEw' +\n 'CA6dUk6XQycPsTsuQed5/Ru+qO7E8zOWH/P02adFOlTjWtO8fNjO9s3+TmqypVf19aq1Zm8NTbZcVDHp' +\n 'SVj3hEBm9/Sqp6aqNylp/vpulk/ze+1bs+9Rxv2DZperOhOxXhkDW9S5HM6RI0U6NY4JBUVZq6ythlV2' +\n 'TTK/88I2efkw3P++0MHH9SkkyNeZsfnwBVkmpoadY+/ZkZOv30bP27t2X/V7+dptNNVU1NAzw/FhWYIg' +\n 'BQjKbTmTfz5C1evY2S/qM3ZOOLX5DBk06e0Xtr79mT7thYyt66qLLqCb+cwTvc/ojOQb05Tbc7Y++Zg3' +\n 'N6Ndfv0CZVqqGB9K3bkIGTTszAccenXrZ8zjd0Jzdvyv7vnD0vhnH3bzwqR//hS9KMT8z1osx/VZX2zp' +\n '3Z8Z4Ppb1779w9f02Tpn1gtBLTpr71S9ouaFWSVp1mZCw7P/CxjJx3YTa++AVZ8fBHpu4fyHw7LaBJlS' +\n 'Vn3D0n/NUbsuMDH8iO934o7R27U7Vqm14wzwgALH5NUi8dzMpHPzyt1WuiAsyQJklVpX/92ix/4AOz5I' +\n 'y7HvqlEQ/T5JYtacYnij+ncPl9H5Dl933AXC/GDGnm/GjXvm99KxNXb5oXs//3rVmXtU975lwvxoIxft' +\n 'VPsusjn0h27Z2zfaWqbmXFLz4kAyecYBLA6VJVvTD3jbPTdBb36IqmrlI1VUYvuizX/NGfZM2vnpv1z3' +\n '52Bo45LvMpAkxNYZi+1Wuz8XdelKV3u2u2vuVtGTnvkl58q+Z6JA5wgABAAZrUy5Zm4wufl6FT7zTXC8' +\n 'M0Gv/JT9LttK8fGs4iNLfH/zv792XPZ/8z3cn2EV3DfTofDw5d0+mk6c5t9K0GBrL+2b/d++95MIpkca' +\n 'iy96tfzP5vn5ss8gCQTE2c16rT2T+S7e/6YEa+d342/u4Ls+LBD03V1z/Xi3cDvdd31erLioc+PIOnnJ' +\n 'Lr/vGd2X3mZ9MdHRPAYJ7wTqRAja8Z+5o93fGxjP3gMgM6mFH7z/p2Rr53weIearzY3dx1QqvZ/OjoHf' +\n '3s7fz7mp6v3ODfBZk6kj7yvQtz9ctfmS1/++ZMbts610t1iwaOOzHHvupVOfbPX5HBk49PnIoJ84ItGg' +\n 'pyw40GXzO3UTY7Jrdem/EfXjHjpxlQpiZJZ3hfdn3kY+nuH5kX5/9zGJruzQeAWVbNwWcki1SVpK+Vzp' +\n '592f4P78lVL3lZ9n3r62k67blesptVDy7J2qf9ak5865uy8tEPS1VXN75MIDDrbDkDC9LI+edncst1SW' +\n '2jmulXJdn31a9m/zfPdorJQnZL+xlVJR6ysE2NBhj+zvdy9cv+MFv//u1p79w+10t1s5omWXL6XXP8G1' +\n '6fjS99YfrWreqduqEDwJyw9gMWnKY9kX1f+Wqa8cm5XhQWqcnrtmT7e96f7uhYGmvKRagyqoOFrZqaG6' +\n 'CvlfbOPbnube/MVS97efafc1aabqd3ydB54sDcF32r1mTj81+Y4//m9Vl6zzNSNd1URgPArLNZAyw4Y5' +\n 'dfluFvnz0vZmVn8Wm6nez40Aczet5FJq1a6A6cAmBfn8WsqpJusv/rZ+Xq3/+DbPund6azZ/dcL9VNNE' +\n '2TqtWXlQ9+WE78uzdn7a/9aqolg0VM5AjziS0bYAFp0nQ72fXJT6V93Q4zajPNekei9n3ja9n5gY86T3' +\n 'WxmAdzAMCMmxoNMHndjmx909tz9R/8YYbP/16aZv7sXN9wnT1w7PE55hWvzLGv+eMM3u6EpG2CQJgtAg' +\n 'CwgFQZufD87PnMfxq+ywyoMvbTH2frm/4u7R27vcaAhaeukk6TfV/6eq763f+d7e99dzr79871Ut38og' +\n '4OZu3/eGpOfNubs/Kxj0jVMkEgzAYBAJj3mqmzGTvDe7P9n9+VyS3b09RV7/xHOGK911d7145sfeNfZ/' +\n 'TCS5O+2usLWJCaOr3RANduzZY3/G2u+aP/m9FLLpyHo2F6V8dYcqe75PjXvy5HvezF6Vu/Jml3UjVJNd' +\n '8WFxYJAQCY93r7YU12nfmJ7P3i11I5L5tpVaW7f2+2vPnN2fv5r6YytwSwGNR1mnY3e/7jy7nyxS/Njn' +\n '/713SG98/1Ut1U06Rv5apseN7zc8KbXp9l97l70jRp5l2wgMXBVg6wAFQZvfiibH/3+9NMTjoyyzTpbV' +\n 'x29u3N1jf/bXZ9+N97o028vhYVuxAUbWpugImrN+fav3hjNv3xH2f08kvn1VUCeqdbVanqVlY88CE54e' +\n '/enLW/+YzUS5ckna6RADDNBABg3pvctjVb3/S3mbhyk5n/mUZVJnduy7VveEN2fOAjSafjvP/FpmlcAA' +\n 'CS3miAiXZ2//t/5qoXvyS7Pv7RdMdG5nqpbtbA0cfmmD/6vznutX+SoVNPTtPtKnkwjWxJA/Nae8+ubP' +\n 'nrv8n+r37bzj/T4sCRr7Ef/yibXvUn2fnhT6bpdtPUdhUXnSaGEcOUA3MDjP/4qmz+s9dl05+9OuM/ue' +\n 'LAn2Y+7WXXA4NZ88Sn5IS3vTmrHv/o3ql/JgiEaWFrGpi3Jndsy7X/7/XZfeZn40LeTJt2O3u//IVc/Z' +\n 'KXZ+/nv9r7niP/QCGquk4zNpHdH/t0rnzR72fXpz+Z7vh45t96tsnQHe6U41/3lzn6D38//RvXpel05n' +\n 'qhYMHrm+sFADjgwJG6qqoyfuWPc+0b3ph9X/hqmlRyJYev6Z3XX6XK5NZrs/29783OD38ind17ExNKAo' +\n 'VpqvSiZ1Nl7PIfZ9OrXpPhs8/Jhuc9L4MnnJTeSID5EAOqVElay1dm/bOfmyV3vWu2vuVtGTnre70LGl' +\n 'TV/FhMWGAEAGD+qJI0TfZ/51vZ8ldvysj5l6Sqait4jkhTVWkmxrL3G1/P9n/854yce2Fv+9YpJcWqqs' +\n 'qoD6iStOp0R8ey618/ntHzLsqGF78gKx/xiNT9g3O9dDde1KrO8vv+QgbffHK2v+vd2fmhj6ezdzjp8z' +\n 'kOt5UAAMyZpmmmtsF7G+LdfXuz88yPZds735P2lu29SYuu/2M4JDc8dtUdH83IBedn50c+ln1f/O/eBm' +\n 'NdH5h0mlJVVS8CAElVpamrjF58WTb90Z9k5FfOyfrnPicDxxyX6+cFmB/vl/4NR+fo//3yLLn73XLdW/' +\n '8hY5f+KKkFPbgtBABg7lRVupMTmdxybYbP+k52f/pzGfnu99OdbBuazWFrJicyseXajJx7TvZ8/ksZOe' +\n 'vctHft6b2mpl5XppIqnBcA3NiB0QD7R7LjPR/KyPfPz8bffWFWPORhSV//PNn9n1rU/oGsfuzjs+ROd8' +\n 'p1b/+H7Pns59OdmDCqCw6RAADMmmZyIt2x0bR3787k5k0Zu/SyDH//vIxeeEkmN12bZqKdqtXq1fx5rk' +\n 'llJ2IeaDrtdEdH0tm1KxPXXJPRSy/NyHnnZ/SiH2Ry05Y0E5O9I/6tVu+815lYhrl+ELhFt3yt8yZNez' +\n 'JNt33bZhafzaOMB66NPsN300yNmZm10yJm6fTyg1d/6HZn5g7qalFeYaKpeq+5kfMuztV/8MqsfebTsu' +\n '43fiP969fPsw+7JgMnnpxj//RVGbrb6dn+T+/N5LXXGQkAh0AAoAztTu9SN90mOcwV9vUbE9O4XE2TdK' +\n 'c2v45wpdU0TdJ0p3Vjp3ft3Vu4vaa3Ad2dGE/TnuxdQ73bTdPppGm300x20oxOpDO8L519e9PZsyftbT' +\n 'vT3r4t7W0709m1O92RsTSdbtKqeuW+r3WE2xdVmomJtHfu6IWEmVIl3bHRW96IbZKJzZsy9sPLDvv56D' +\n '2fmXq9HukGzfS/dpumSdNpT992fNOk6XZu+c8mxtMdH013bCzdfSNp79yZ9o7tmdy6PZNbt6S9dVs6O3' +\n 'enMzKWpun23k9Tr6kbPALTr6rS2bM/W/7qTWmtWHHYny/MgKpKe8/udPeP5EbvoarK5Pad2fSnr0k9OH' +\n 'Sbbu/gEcaZfpqr3kzts7dDXiV1a/ZOi6iSqnX499VUVSa3XJu0b+Ezo66z9z+/nIkrrsnMPVlVxi67tD' +\n 'ej/ow/YLPoQNtu1ens2Z/t73xf9n/jOxk49ti5XrJbXN4kqQcHUjXVjIVeWEyq8+9w+qL63IKbU1VV6u' +\n 'VLe9eRPUJNt5ne7Ynpvq7tdO6A/JzbanoPRm8Ht2mmdlhv/HXwsWoOXF946sTrqSNNB7Y1p22F3TRpLV' +\n '+W/mOOmfEjTO1t29PetfsWN9BbS4dSDfQf4e9zgxAwLY9PZu31MV23d+BV03S7SbfT+3e7M/Xaam7wsq' +\n 'qvnxF6NjcADyxyp2Pnfz6qqpsf/dFk6jnLob1eDp4GPc2f//NJlYX1u1XVwcB3szrTG8RvVl33vhbxTm' +\n 'fVHDgYMM9fHHWdqhIA4FAIAJRjvq+8FqR5eAme5vBHedy2X/1Whst6vU2zefhaAwBYYJwCQDmcF1aG+X' +\n 'J5r/mwDAAAcAOmywQAAIACCAAAAABQAAEAAAAACiAAAAAAQAEEAAAAACiAAAAAAAAFEAAAAACgAAIAAA' +\n 'AAFEAAAAAAgAIIAAAAAFAAAQAAAAAKIAAAAABAAQQAAAAAKIAAAAAAAAUQAAAAAKAAAgAAAAAUQAAAAA' +\n 'CAAggAAAAAUAABAAAAAAogAAAAAEABBAAAAAAogAAAAAAABRAAAAAAoAACAAAAABRAAAAAAIACCAAAAA' +\n 'BQAAEAAAAACiAAAAAAQAEEAAAAACiAAAAAAAAFEAAAAACgAAIAAAAAFEAAAAAAgAIIAAAAAFAAAQAAAA' +\n 'AKIAAAAABAAQQAAAAAKIAAAAAAAAUQAAAAAKAAAgAAAAAUQAAAAACAAggAAAAAUAABAAAAAAogAAAAAE' +\n 'ABBAAAAAAogAAAAAAABRAAAAAAoAACAAAAABRAAAAAAIACCAAAAABQAAEAAAAACiAAAAAAQAEEAAAAAC' +\n 'iAAAAAAAAFEAAAAACgAAIAAAAAFEAAAAAAgAIIAAAAAFAAAQAAAAAKIAAAAABAAQQAAAAAKIAAAAAAAA' +\n 'UQAAAAAKAAAgAAAAAUQAAAAACAAggAAAAAUAABAAAAAAogAAAAAEABBAAAAAAogAAAAAAABRAAAAAAoA' +\n 'ACAAAAABRAAAAAAIACCAAAAABQAAEAAAAACiAAAAAAQAEEAAAAACiAAAAAAAAFEAAAAACgAAIAAAAAFE' +\n 'AAAAAAgAIIAAAAAFAAAQAAAAAKIAAAAABAAQQAAAAAKIAAAAAAAAUQAAAAAKAAAgAAAAAUQAAAAACAAg' +\n 'gAAAAAUAABAAAAAAogAAAAAEABBAAAAAAogAAAAAAABRAAAAAAoAACAAAAABRAAAAAAIACCAAAAABQAA' +\n 'EAAAAACiAAAAAAQAEEAAAAACiAAAAAAAAFEAAAAACgAAIAAAAAFEAAAAAAgAIIAAAAAFAAAQAAAAAKIA' +\n 'AAAABAAQQAAAAAKIAAAAAAAAUQAAAAAKAAAgAAAAAUQAAAAACAAggAAAAAUAABAAAAAAogAAAAAEABBA' +\n 'AAAAAogAAAAAAABRAAAAAAoAACAAAAABRAAAAAAIACCAAAAABQAAEAAAAACiAAAAAAQAEEAAAAACiAAA' +\n 'AAAAAFEAAAAACgAAIAAAAAFEAAAAAAgAIIAAAAAFAAAQAAAAAKIAAAAABAAQQAAAAAKIAAAAAAAAUQAA' +\n 'AAAKAAAgAAAAAUQAAAAACAAggAAAAAUAABAAAAAAogAAAAAEABBAAAAAAogAAAAAAABRAAAAAAoAACAA' +\n 'AAABRAAAAAAIACCAAAAABQAAEAAAAACiAAAAAAQAEEAAAAACiAAAAAAAAFEAAAAACgAAIAAAAAFEAAAA' +\n 'AAgAIIAAAAAFAAAQAAAAAKIAAAAABAAQQAAAAAKIAAAAAAAAUQAAAAAKAAAgAAAAAUQAAAAACAAggAAA' +\n 'AAUAABAAAAAAogAAAAAEABBAAAAAAogAAAAAAABRAAAAAAoAACAAAAABRAAAAAAIACCAAAAABQAAEAAA' +\n 'AACiAAAAAAQAEEAAAAACiAAAAAAAAFEAAAAACgAAIAAAAAFEAAAAAAgAIIAAAAAFAAAQAAAAAKIAAAAA' +\n 'BAAQQAAAAAKIAAAAAAAAUQAAAAAKAAAgAAAAAUQAAAAACAAggAAAAAUAABAAAAAAogAAAAAEABBAAAAA' +\n 'AogAAAAAAABRAAAAAAoAACAAAAABRAAAAAAIACCAAAAABQAAEAAAAACiAAAAAAQAEEAAAAACiAAAAAAA' +\n 'AFEAAAAACgAAIAAAAAFEAAAAAAgAIIAAAAAFAAAQAAAAAKIAAAAABAAQQAAAAAKIAAAAAAAAUQAAAAAK' +\n 'AAAgAAAAAUQAAAAACAAggAAAAAUAABAAAAAAogAAAAAEABBAAAAAAogAAAAAAABRAAAAAAoAACAAAAAB' +\n 'RAAAAAAIACCAAAAABQAAEAAAAACiAAAAAAQAEEAAAAACiAAAAAAAAFEAAAAACgAAIAAAAAFEAAAAAAgA' +\n 'IIAAAAAFAAAQAAAAAKIAAAAABAAQQAAAAAKIAAAAAAAAUQAAAAAKAAAgAAAAAUQAAAAACAAggAAAAAUA' +\n 'ABAAAAAAogAAAAAEABBAAAAAAogAAAAAAABRAAAAAAoAACAAAAABRAAAAAAIACCAAAAABQAAEAAAAACi' +\n 'AAAAAAQAEEAAAAACiAAAAAAAAFEAAAAACgAAIAAAAAFEAAAAAAgAIIAAAAAFAAAQAAAAAKIAAAAABAAQ' +\n 'QAAAAAKIAAAAAAAAUQAAAAAKAAAgAAAAAUQAAAAACAAggAAAAAUAABAAAAAAogAAAAAEABBAAAAAAogA' +\n 'AAAAAABRAAAAAAoAACAAAAABRAAAAAAIACCAAAAABQAAEAAAAACiAAAAAAQAEEAAAAACiAAAAAAAAFEA' +\n 'AAAACgAAIAAAAAFEAAAAAAgAIIAAAAAFAAAQAAAAAKIAAAAABAAQQAAAAAKIAAAAAAAAUQAAAAAKAAAg' +\n 'AAAAAUQAAAAACAAggAAAAAUAABAAAAAAogAAAAAEABBAAAAAAogAAAAAAABRAAAAAAoAACAAAAABRAAA' +\n 'AAAIACCAAAAABQAAEAAAAACiAAAAAAQAEEAAAAACiAAAAAAAAFEAAAAACgAAIAAAAAFEAAAAAAgAIIAA' +\n 'AAAFAAAQAAAAAKIAAAAABAAQQAAAAAKIAAAAAAAAUQAAAAAKAAAgAAAAAUQAAAAACAAggAAAAAUAABAA' +\n 'AAAAogAAAAAEABBAAAAAAogAAAAAAABRAAAAAAoAACAAAAABRAAAAAAIACCAAAAABQAAEAAAAACiAAAA' +\n 'AAQAEEAAAAACiAAAAAAAAFEAAAAACgAAIAAAAAFEAAAAAAgAIIAAAAAFAAAQAAAAAKIAAAAABAAQQAAA' +\n 'AAKIAAAAAAAAUQAAAAAKAAAgAAAAAUQAAAAACAAggAAAAAUAABAAAAAAogAAAAAEABBAAAAAAogAAAAA' +\n 'AABRAAAAAAoAACAAAAABRAAAAAAIACCAAAAABQAAEAAAAACiAAAAAAQAEEAAAAACiAAAAAAAAFEAAAAA' +\n 'CgAAIAAAAAFEAAAAAAgAIIAAAAAFAAAQAAAAAKIAAAAABAAQQAAAAAKIAAAAAAAAUQAAAAAKAAAgAAAA' +\n 'AUQAAAAACAAggAAAAAUAABAAAAAAogAAAAAEABBAAAAAAogAAAAAAABRAAAAAAoAACAAAAABRAAAAAAI' +\n 'ACCAAAAABQAAEAAAAACiAAAAAAQAEEAAAAACiAAAAAAAAFEAAAAACgAAIAAAAAFEAAAAAAgAIIAAAAAF' +\n 'AAAQAAAAAKIAAAAABAAQQAAAAAKIAAAAAAAAUQAAAAAKAAAgAAAAAUQAAAAACAAggAAAAAUAABAAAAAA' +\n 'ogAAAAAEABBAAAAAAogAAAAAAABRAAAAAAoAACAAAAABRAAAAAAIACCAAAAABQAAEAAAAACiAAAAAAQA' +\n 'EEAAAAACiAAAAAAAAFEAAAAACgAAIAAAAAFEAAAAAAgAIIAAAAAFAAAQAAAAAKIAAAAABAAQQAAAAAKI' +\n 'AAAAAAAAUQAAAAAKAAAgAAAAAUQAAAAACAAggAAAAAUAABAAAAAAogAAAAAEABBAAAAAAogAAAAAAABR' +\n 'AAAAAAoAACAAAAABRAAAAAAIACCAAAAABQAAEAAAAACiAAAAAAQAEEAAAAACiAAAAAAAAFEAAAAACgAA' +\n 'IAAAAAFEAAAAAAgAIIAAAAAFAAAQAAAAAKIAAAAABAAQQAAAAAKIAAAAAAAAUQAAAAAKAAAgAAAAAUQA' +\n 'AAAACAAggAAAAAUAABAAAAAAogAAAAAEABBAAAAAAogAAAAAAABRAAAAAAoAACAAAAABRAAAAAAIACCA' +\n 'AAAABQAAEAAAAACiAAAAAAQAEEAAAAACiAAAAAAAAFEAAAAACgAAIAAAAAFEAAAAAAgAIIAAAAAFAAAQ' +\n 'AAAAAKIAAAAABAAQQAAAAAKIAAAAAAAAUQAAAAAKAAAgAAAAAUQAAAAACAAggAAAAAUAABAAAAAAogAA' +\n 'AAAEABBAAAAAAogAAAAAAABRAAAAAAoAACAAAAABRAAAAAAIACCAAAAABQAAEAAAAACiAAAAAAQAEEAA' +\n 'AAACiAAAAAAAAFEAAAAACgAAIAAAAAFEAAAAAAgAIIAAAAAFAAAQAAAAAKIAAAAABAAQQAAAAAKIAAAA' +\n 'AAAAUQAAAAAKAAAgAAAAAUQAAAAACAAggAAAAAUAABAAAAAAogAAAAAEABBAAAAAAogAAAAAAABRAAAA' +\n 'AAoAACAAAAABRAAAAAAIACCAAAAABQAAEAAAAACiAAAAAAQAEEAAAAACiAAAAAAAAFEAAAAACgAAIAAA' +\n 'AAFOD/AxRUE3P/OmX6AAAAAElFTkSuQmCC';\n\nexport default imgData;","import React, { Component } from 'react'\nimport { connect } from 'react-redux'\nimport _ from 'lodash'\nimport jsPDF from 'jspdf'\n\nimport ProductDetails from '../Details/ProductDetails'\nimport { emailForm } from '../../../actions'\nimport './style.css'\nimport imgData from './SidlerIcon.base64'\n\nclass Checklist extends Component {\n renderProducts(products) {\n let res = _.map(products, (p, i) => {\n let type = p.type;\n return ()\n })\n return res;\n }\n\n getPdfBlobURL = () => {\n let data = this.props.checklistData;\n const totalPrice = +data.price;\n var doc = new jsPDF();\n doc.setFontSize(13);\n doc.addFont('Arial', 'sans-serif');\n doc.setFont('Arial');\n doc.addImage(imgData, 'JPEG', 25, 18, 20, 20);\n doc.text('SIDLER® International Ltd.', 50, 22);\n doc.text('( 888 )-415-2422', 50, 27);\n doc.text('7626 Winston Street', 50, 32);\n doc.text('Burnaby, BC V5A 2H4, CANADA', 50, 37);\n doc.addFont('Arial', 'sans-serif');\n doc.setFont('Arial');\n doc.setFontSize(19);\n doc.setFontStyle('bold')\n doc.text('Configuration number: ' + data.order_id.toString(), 25, 58);\n doc.addFont('Arial', 'sans-serif');\n doc.setFont('Arial');\n doc.setFontStyle('bold');\n doc.text('Total price: ' + totalPrice.toFixed(2) + ' ' + window.currency.toUpperCase(), 25, 68);\n doc.setFontSize(16);\n doc.addFont('Arial', 'sans-serif');\n doc.setFont('Arial');\n doc.setFontStyle('normal')\n data.products.map((product, i) => {\n const price = +product.price\n let y = 78 + (i * 10);\n doc.text(product.name, 25, y);\n doc.text(price.toFixed(2), 150, y);\n return product;\n });\n doc.setFontSize(13);\n doc.textWithLink('sidler-international.com', 80, 285, { url: 'http://www.sidler-international.com' });\n let blob = doc.output('blob');\n return window.URL.createObjectURL(blob);\n }\n\n _formPdf = () => {\n // let blocked = document.getElementsByClassName('ad-banner')[0].clientHeight\n let url = this.getPdfBlobURL()\n let link = document.createElement('a')\n link.href = url\n link.download = \"checkout.pdf\"\n link.click()\n }\n _printPdf = () => {\n let url = this.getPdfBlobURL()\n let w = window.open(url)\n w.print()\n }\n _emailHandleForm = () => {\n window.order_id = this.props.checklistData.order_id\n this\n .props\n .emailForm({ emailFormState: true })\n }\n render() {\n const { checklistData } = this.props;\n let { products, price, order_id } = checklistData;\n price = +price;\n return (\n
\n ad\n
\n Back\n
\n
\n
\n

Configuration Number

\n

#{order_id}

\n
\n
\n {this.renderProducts(products)}\n
\n
\n
\n \n \n \n
\n
\n
Total
\n
{price.toFixed(2)} {window.currency.toUpperCase()}
\n
\n
\n
\n
\n \n Locate Dealer\n \n
\n
\n );\n }\n}\n\nconst mapStateToProps = state => ({\n isChecklistFetching: state.navigation.isChecklistFetching,\n})\n\nconst mapDispatchToProps = dispatch => {\n return {\n emailForm: emailFormState => {\n dispatch(emailForm(emailFormState))\n }\n }\n}\nexport default connect(mapStateToProps, mapDispatchToProps)(Checklist);\n","import React, { Component } from 'react';\nimport { MoonLoader } from 'react-spinners';\n\nimport Windows from './Windows/Windows';\nimport Addons from './Addons/Addons';\nimport Select from './Select/SelectContainer';\nimport Details from './Details/DetailsContainer';\nimport Proceed from './Proceed/Proceed';\nimport Phonetabs from './Phonetabs/Phonetabs';\nimport Checklist from './Checklist/Checklist';\nimport _ from 'lodash';\n\nimport './style.css'\n\n\nclass Navigation extends Component {\n constructor(props) {\n super(props);\n this.state = {\n cabinets: true,\n addons: false,\n details: false,\n checklist: false\n }\n this.handleStateChange = this.handleStateChange.bind(this);\n this.showChecklist = this.showChecklist.bind(this);\n this.hideChecklist = this.hideChecklist.bind(this);\n this.findkey = this.findkey.bind(this);\n }\n\n showChecklist(data) {\n this.props.setConfiguratorStage('checkout');\n this.setState({ checklist: true, checklistData: data })\n }\n\n hideChecklist() {\n this.props.setConfiguratorStage('construct');\n this.setState({ checklist: false })\n }\n\n handleStateChange(param) {\n let nextState = {\n cabinets: false,\n addons: false,\n details: false\n };\n nextState[param] = !this.state[param];\n this.setState(nextState);\n\n }\n findkey() {\n let res = '';\n for (let key in this.state) {\n if (this.state[key] === true) {\n res = key;\n break\n }\n }\n return res;\n }\n\n _formOrderProductsList() {\n let presentedMirrors = this.props.mirrors;\n let mirrors = _.map(presentedMirrors, this.props.mirrorToProduct);\n let addons = _.chain(presentedMirrors).map(m => m.addons).flatten().filter(a => a.id !== '03').map(this.props.addonToProduct).value();\n let sideMirrorProduct = this.props.sideMirrorProduct;\n let kitCount = presentedMirrors.length ? presentedMirrors.length - 1 : 0;\n let kit = _.map(Array(kitCount), () => this.props.kitProduct);\n let res = _.concat(mirrors, addons, sideMirrorProduct, kit);\n res = _.compact(res);\n\n return res;\n }\n\n render() {\n const { isChecklistFetching } = this.props;\n\n let selectedButton = this.findkey();\n let productsForOrder = this._formOrderProductsList();\n if (isChecklistFetching) {\n return (\n
\n
\n \n
\n
\n )\n }\n return (\n\n
\n {this.state.checklist\n ? \n :
\n \n
\n
\n \n
\n \n
\n
\n );\n }\n}\n\nconst mapStateToProps = state => {\n return {}\n}\n\nconst mapDispatchToProps = dispatch => {\n return {\n emailForm: emailFormState => {\n dispatch(emailForm(emailFormState))\n }\n }\n}\nexport default connect(mapStateToProps, mapDispatchToProps)(Mailsend);","import React, { Component } from 'react'\nimport Field from './presentation/Field'\nimport Navigation from './navigation/NavigationContainer'\nimport { DragDropContext } from 'react-dnd'\nimport HTML5Backend from 'react-dnd-html5-backend'\nimport IE from './IE'\nimport Mailsend from '../components/Mailsend/Mailsend'\n\nclass Main extends Component {\n \n render(){\n const { presentedMirrors, previewOrDrag } = this.props;\n return (\n
\n \n \n { this.props.emailFormState ? : null}\n
\n \n
\n
\n );\n }\n}\n\nexport default DragDropContext(HTML5Backend)(Main);\n","import { connect } from 'react-redux'\nimport Main from '../components/Main'\n\nconst mapStateToProps = state => {\n let previewOrDrag = state.app.isMirrorDrag || !!state.app.requstedPreviewMirrorSize;\n return {\n emailFormState: state.app.emailFormState,\n presentedMirrors : state.app.presentedMirrors,\n previewOrDrag\n }\n}\n\nconst mapDispatchToProps = dispatch => {\n return {\n }\n}\n\nconst MainContainer = connect(\n mapStateToProps,\n mapDispatchToProps\n)(Main)\n\nexport default MainContainer","import React, { Component } from 'react';\nimport './style.css'\n\nclass Loaders extends Component {\n render() {\n return (\n
\n
\n \"\"/\n
\n
\n );\n }\n}\n\nexport default Loaders;","import React, { Component } from 'react';\nimport './App.css';\nimport { apiBase } from './Constants';\nimport Main from './containers/Main';\nimport Loaders from './components/loaders/loaders';\n\nclass App extends Component {\n\n constructor(){\n super()\n this.state = {\n currency: false\n }\n }\n\n setCurrency(currency){\n this.setState({ currency })\n window.currency = currency;\n this.loadProducts();\n }\n\n loadProducts(){\n let fetch_Url = `${ apiBase }/products`;\n // DEMO URL\n //let fetch_Url = 'http://sidler-test-feature.s3-website.us-east-2.amazonaws.com/products.json';\n fetch(fetch_Url).then(response => response.json())\n .then(data => {\n let products = data.map(p => {\n p.price = p[`price_${this.state.currency}`];\n p.type = p.type_name;\n p.available = !!p.available;\n return p;\n })\n this.props.setProducts(products);\n })\n .catch(e => {\n console.log(e);\n console.log('ERROR');\n return { error: true }\n })\n\n }\n\n renderCurrencyModal(){\n return(\n
\n
\n

Select your country

\n
\n
{ this.setCurrency('cad') } }> Canada
\n
{ this.setCurrency('usd') } }> USA
\n
\n
\n
\n )\n }\n\n render() {\n return (\n
\n
\n \"rotate\n
\n { !this.state.currency && this.renderCurrencyModal() }\n { (!this.state.currency && this.props.loading)\n ? :\n
}\n
\n );\n }\n}\n\nexport default App;\n","import { connect } from 'react-redux'\nimport { setProducts } from '../actions'\nimport App from '../App.js'\n\nconst mapStateToProps = state => {\n return {\n availableProducts: state.app.availableProducts,\n loading: state.app.availableProducts.length ? false : true\n }\n}\n\nconst mapDispatchToProps = dispatch => {\n return {\n setProducts: (products) => {\n dispatch(setProducts(products))\n }\n }\n}\n\nconst AppContainer = connect(\n mapStateToProps,\n mapDispatchToProps\n)(App)\n\nexport default AppContainer","// In production, we register a service worker to serve assets from local cache.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\n// cached resources are updated in the background.\n\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\n// This link also includes instructions on opting out of this behavior.\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport default function register() {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (!isLocalhost) {\n // Is not local host. Just register service worker\n registerValidSW(swUrl);\n } else {\n // This is running on localhost. Lets check if a service worker still exists or not.\n checkValidServiceWorker(swUrl);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and\n // the fresh content will have been added to the cache.\n // It's the perfect time to display a \"New content is\n // available; please refresh.\" message in your web app.\n console.log('New content is available; please refresh.');\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n if (\n response.status === 404 ||\n response.headers.get('content-type').indexOf('javascript') === -1\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { Provider } from 'react-redux'\nimport { createStore } from 'redux'\nimport configuratorApp from './reducers'\nimport './index.css';\nimport App from './containers/App';\nimport registerServiceWorker from './registerServiceWorker';\n\n\nlet store = createStore(\n configuratorApp,\n window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__()\n)\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n)\nregisterServiceWorker();\n"],"sourceRoot":""}