{"version":3,"sources":["redux/user/user.selectors.js","redux/routing/routing.selectors.js","components/scrollToTop/ScrollToTop.jsx","components/custom-button/customButton.js","pages/sign-up/signUp.js","pages/sign-in/signIn.js","pages/passwordReset/passwordReset.jsx","components/generateQr/generateGoogleQr.js","components/renderDirectCardImage/renderGoogleReviewCardImage.js","components/upload-your-logo/canvasUtils.js","components/upload-your-logo/styles.js","components/upload-your-logo/index.js","components/upload-your-logo/uploadLogo.jsx","components/customGoogleQr/canvasUtils.js","components/customGoogleQr/index.js","components/customGoogleQr/styles.js","components/customGoogleQr/customGoogleQr.jsx","pages/google-review/googleReview.jsx","components/customQr/canvasUtils.js","components/customQr/index.js","components/customQr/styles.js","components/customQr/customQr.jsx","components/design-tools/phonecase/PhoneData.js","redux/object/object.actions.js","components/design-tools/phonecase/index.js","redux/drawing-area/drawing-area.actions.js","pages/splash/splash.jsx","pages/shop/Shop.jsx","components/nav/NavHeader.jsx","components/nav/SideNavLink.jsx","components/nav/LogoutModal.jsx","components/nav/SideNav.jsx","components/nav/Nav.jsx","pages/dashboard/Dashboard.jsx","components/design-tools/uploadimage/index.js","components/design-tools/text/index.js","components/design-tools/shape/index.js","components/design-tools/layer/index.js","components/design-tools/ItemPanel.js","components/properties/Font.js","components/properties/index.js","components/content-panel/ContentPanel.js","redux/object/objects.types.js","redux/observe.js","redux/compareAttribute.js","components/design-canvas/DesignCanvas.js","components/design-tools/entityObject.js","components/drawing-area/DrawingArea.js","pages/design-phone/DesignPhone.js","pages/design-card/DesignCard.js","components/generateQr/generateMultiUserQR.js","components/renderDirectCardImage/renderMultiDirectCardImage.js","components/upload-your-logo-multiUser/canvasUtils.js","components/upload-your-logo-multiUser/index.js","components/upload-your-logo-multiUser/styles.js","components/upload-your-logo-multiUser/uploadLogo.jsx","pages/rangewater-multiOrder/rangewaterMultiOrder.jsx","pages/rangewater-admin-orders/rangewaterAdminOrders.jsx","components/upload-your-logo-front-multiUser/canvasUtils.js","components/upload-your-logo-front-multiUser/index.js","components/upload-your-logo-front-multiUser/styles.js","components/upload-your-logo-front-multiUser/uploadLogo.jsx","pages/sugarcoat-admin-orders/sugarcoatAdminOrders.jsx","pages/enterprise/editEnterpriseUserPage.jsx","redux/selectedUser/selectedUser.actions.js","components/user-card/userCard.jsx","pages/enterprise/enterprise.jsx","pages/sales/sales.jsx","pages/sales-admin/sales-admin.jsx","pages/admin/admin.jsx","pages/contact-us/ContactUs.jsx","pages/device-compatibility/DeviceCompatibility.jsx","redux/fulfillment/fulfillment.actions.js","pages/fulfillment/Fulfillment.jsx","components/LinkRedirect/index.js","components/renderDirectCardImage/renderDirectCardImage.js","pages/rangewater-order/rangewaterOrder.jsx","pages/gallery-residential-order/galleryResidential.jsx","pages/columbia-residential-order/columbiaResidential.jsx","App.js","serviceWorker.js","index.js","assets/logo5.png","components/generateQr/generateQR.js","redux/user/user.reducer.js","redux/routing/routing.reducer.js","redux/fulfillment/fulfillment.reducer.js","redux/designImages/designImages.reducer.js","redux/selectedUser/selectedUser.reducer.js","redux/drawing-area/drawing-area.reducers.js","redux/object/object.reducers.js","redux/mobile/mobile.reducer.js","redux/root-reducer.js","redux/store.js","pages/profile/profile.jsx","components/renderDirectCardImage/imgs/RW3.png","pages/shop/assets/images/IDCard/card-back.png","components/generate-card/contact.js","pages/sugarcoat-admin-orders/assets/images/IDCard/logo-Placeholder.jpg","pages/fulfillment/assets/GalleryMyTapCardLogo.png","pages/fulfillment/assets/RW1.png","pages/fulfillment/assets/fivestar.png","pages/landing/LoginModal/LoginModal.jsx","redux/user/user.actions.js","redux/designImages/designImages.actions.js","utils/firebase/firebase.utils.js","pages/contact-form/contact-form.jsx","pages/contact-form/graph.jsx","pages/contact-form/assets/images/placeholder.jpeg","components/renderDirectCardImage/imgs/card-back.png","components/customGoogleQr/assets/card-back.png","pages/google-review/assets/images/IDCard/card-back copy.png","pages/google-review/assets/images/IDCard/fivestar.png","pages/google-review/assets/images/IDCard/mytapQr.png","components/customQr/assets/card-back.png","pages/shop/assets/images/IDCard/customcard.png","pages/shop/assets/images/IDCard/customcardyours.png","pages/rangewater-multiOrder/assets/images/IDCard/RW1.png","pages/rangewater-multiOrder/assets/images/IDCard/RW2.png","pages/rangewater-admin-orders/assets/images/IDCard/mytapQr.png","pages/rangewater-admin-orders/assets/images/IDCard/card-back copy.png","pages/rangewater-admin-orders/assets/images/IDCard/logo-Placeholder.jpg","pages/sugarcoat-admin-orders/assets/images/IDCard/mytapQr.png","pages/sugarcoat-admin-orders/assets/images/IDCard/card-back copy.png","pages/sugarcoat-admin-orders/assets/images/IDCard/card-front.png","components/user-card/graph.jsx","pages/rangewater-order/assets/images/IDCard/RW1.png","pages/rangewater-order/assets/images/IDCard/RW2.png","pages/gallery-residential-order/assets/images/IDCard/GalleryMyTapCardLogo.png","pages/gallery-residential-order/assets/images/IDCard/RW2.png","pages/columbia-residential-order/assets/images/IDCard/CR.png","pages/columbia-residential-order/assets/images/IDCard/CR2.png","components/images/canvasUtils.js","components/images/styles.js","components/images/index.js","assets/rangewater.png","pages/shop/assets/images/IDCard/mytapcard.png","assets/mytap_white__transparent.png","redux/routing/routing.actions.js","pages/rangewater-admin-orders/assets/images/IDCard/RW1.png","pages/rangewater-admin-orders/assets/images/IDCard/RW2.png","pages/sugarcoat-admin-orders/assets/images/IDCard/RW1.png","pages/sugarcoat-admin-orders/assets/images/IDCard/RW2.png"],"names":["selectCurrentUser","createSelector","state","user","hasOwnProperty","currentUser","selectRedirectRoute","routing","route","ScrollToTop","prevProps","this","props","location","window","scrollTo","Fragment","Component","withRouter","CustomButton","children","isGoogleSignIn","inverted","otherProps","className","Register","onChange","e","target","name","value","setState","handleSubmit","preventDefault","displayName","email","password","password2","alert","auth","createUserWithEmailAndPassword","createUserProfileDocument","size","style","marginTop","marginBottom","textDecoration","to","icon","md","onSubmit","fontFamily","label","group","type","validate","error","success","margin","i","Login","signInWithEmailAndPassword","PasswordReset","reset","sendPasswordResetEmail","then","catch","db","firebase","firestore","MyTapReviewCardURL","storage","ref","database","store","getState","MyCardDirectURL","userId","id","shortUrl","ReactDOM","render","text","length","correctLevel","dotScale","bgSrc","MyLogo","callback","data","collection","doc","update","GoogleQrImg","document","getElementById","renderDirectCardImage","QrImg","customQrImg","customGoogleQrImg","canvas","getContext","width","height","ctx","img1","Image","img2","src","CardTemplate","Promise","all","resolve","reject","onload","drawImage","fullQuality","toDataURL","reviewCardImage","createImage","url","image","addEventListener","setAttribute","getRadianAngle","degreeValue","Math","PI","getCroppedImg","imageSrc","pixelCrop","rotation","createElement","maxSize","max","safeArea","sqrt","translate","rotate","fillStyle","fillRect","getImageData","putImageData","round","x","y","base64Image","reviewCardUploadedLogo","console","log","getRotatedImage","toBlob","file","URL","createObjectURL","ORIENTATION_TO_ANGLE","readFile","reader","FileReader","result","readAsDataURL","StyledDemo","withStyles","theme","cropContainer","position","background","breakpoints","up","cropButton","flexShrink","marginLeft","controls","padding","display","flexDirection","alignItems","sliderContainer","flex","sliderLabel","down","minWidth","slider","classes","React","useState","setImageSrc","crop","setCrop","setRotation","zoom","setZoom","croppedAreaPixels","setCroppedAreaPixels","setCroppedImage","onCropComplete","useCallback","croppedArea","showCroppedImage","croppedImage","onFileChange","files","options","maxSizeMB","maxWidthOrHeight","useWebWorker","imageCompression","compressedFile","imageDataUrl","getOrientation","orientation","aspect","onCropChange","onRotationChange","onZoomChange","showGrid","restrictPosition","Typography","variant","root","min","step","aria-labelledby","container","Button","onClick","color","accept","UploadLogo","modal","toggle","isOpen","customLogo","CustomGoogleQr","fetchDesigns","FieldValue","delete","customQrImgPreview","fas","generateQr","alt","cardBack","top","left","connect","uid","directLinksUrl","dispatch","ownProps","payload","GoogleReview","loading","customQrCode","saveBtn","selectedIndex","onDirectURLChange","customQrCheckbox","event","checked","handleSelect","includes","setTimeout","API2","API3","Box","mt","textAlign","CircularProgress","bind","onBlur","saveMyTapReviewCardURLToDB","placeholder","Carousel","activeIndex","index","onSelect","interval","Item","CardBack","cardBackPlaceholder","fiveStar","cascade","placement","stripe","elements","generateAndBuy","stripeCustomerId","createStripeCustomer","createSession","session","redirectToCheckout","sessionId","disabled","orderPlaced","updateUser","defaultRedirect","CustomQr","phoneOptions","isDisabled","addObject","selectedObject","releasedObject","updateObject","setObject","PhoneCase","selectPhoneCase","selectedOption","ImageURL","origin","changeCase","customStyles","option","provided","borderBottom","backgroundColor","isSelected","control","styles","classNamePrefix","defaultValue","configViewport","objects","addPhoneCase","toggleToolbar","Splash","createPortal","ShopPage","caseURL","caseName","cardURL","selectedPhoneCase","addedPhone","MyCardClassic","MyCard","MyCase","bandColor","MyCardDirect","classicSelectedIndex","customSelectedIndex","open","JSON","parse","localStorage","getItem","openScene","oneself","sceneManager","releaseObject","toggleDesignState","handleSelect2","role","history","push","isEnterprise","resetDirectUrlInput","pType","initScene","designType","path","phoneCase","changeDesignType","pUrl","pName","toString","generateQR","img","setItem","fluid","object","customCard","renderCustomQrCardImg","card","customCardYours","setDesignState","productType","link","bandColorChangeHandler","phone","designImages","formData","NavHeader","collapseID","QRmodal","toggleCollapse","prevState","toggleQR","renderIcon","href","split","goBack","toggleSideNav","dark","SideNavLink","LogoutModal","toggleModal","onLogoutClick","signOut","Sidenav","modalOpen","toggleLoginModal","loginModalOpen","handleSwitchChange","authenticatedLinks","roleLinkRenderer","adminControl","Switch","renderLinks","renderRoleLink","hidden","forwardedRef","LoginModal","require","ConnectedSideNav","forwardRef","Nav","handleClick","sideNavHidden","handleOutsideClick","removeEventListener","childRef","contains","createRef","SideNav","node","Dashboard","imgInfo","imageURL","selectImage","_this","_fileInput","onloadend","addImage","floor","random","Date","getTime","kind","Text","payloadObject","addText","addTextItem","Shape","addShape","addShapeItem","viewBox","points","cx","cy","r","lastAction","activedObject","updateSequence","items","useSelector","slice","map","el","getImgDataObject","lockVertically","values","oldIndex","newIndex","sourceIdx","targetIdx","changed","renderList","isDragged","cursor","undefined","overflowY","overflowX","renderItem","zIndex","listStyleType","border","boxShadow","borderRadius","ItemPanel","statePanel","newProps","updatePanelState","pHide","activeTool","stateToolbar","mobile","fonts","sort","labelFont","activeObject","googleUserId","deleteObject","activeFontFamily","setActiveFontFamily","showModalText","setShowModalText","setText","showColorModal","setShowColorModal","fill","setColor","showOutlineColorModal","setShowOutlineColorModal","stroke","outlineColor","setOutlineColor","fontSize","setFontSize","setTextAlign","fontWeight","setFontWeight","fontStyle","setFontStyle","underline","setUnderline","strokeWidth","setStrokeWidth","showTextModal","pShow","handleChange","updateOutlineColor","hex","updateColor","handleChangeFontSize","changeTextAlign","pAlign","changeTextStyle","pStyle","changeThickness","Number","deleteItem","useHistory","saveDesign","getCropImage","imgbase64","changeValue","pKind","pPM","font","changeButtons","deleteButton","content","apiKey","families","limit","nextFont","family","onKeyDown","Modal","show","onHide","Header","closeButton","Title","Body","Form","Group","controlId","Control","as","rows","Footer","centered","disableAlpha","onChangeComplete","enabled","panelContent","ContentPanel","kindPanel","activeAdd","ev","showItems","changePanel","data-tab","designState","showItemPanel","showPropPanel","saveButton","drawingH","addItem","imgData","getLaptopPanel","getMobilePanel","action","ObjectActionTypesModify","designOn","fn","subscribe","indexOf","isLastAction","lastActionMatchesAction","compareAttribute","attr1","attr2","diffAttr","key","DesignTool","SceneManager","pOption","_canvas","_width","_height","_objects","fabric","Canvas","perPixelTargetFind","targetFindTolerance","preserveObjectStacking","setDimensions","requestRenderAll","_sendMessage","message","_initialize","FontFacePreloader","load","clear","pWidth","pHeight","pW","pH","pID","idx","pAttr","getObjectfromID","deleteInstance","splice","discardActiveObject","pSequance","shape","getObjects","remove","insertAt","pData","format","quality","multiplier","a","download","body","appendChild","click","removeChild","own","cropInfo","attribute","multi","response","instance","clone","opacity","setOptions","globalCompositeOperation","add","w","getScaledWidth","set","imgdata","fabricObject","pManager","_attribute","_manager","diff","Manager","fromURL","instImage","attr","evented","selectable","scaleX","scaleY","sendMessage","setElement","instText","objectCaching","setActiveObject","initialize","imageDOM","ratioX","ratioY","ratio","instShape","radius","Triangle","Circle","Rect","EntityObject","scene","newProp","DrawingArea","manager","c","messageFromScene","setManager","canvasViewport","resize","on","forEach","obj","angle","clearScene","child","chidren","createChildren","hideToolbar","pan","DesignPhone","classList","sideBarWidth","innerWidth","h","innerHeight","IDCard","storageRef","selectedUser","putString","getDownloadURL","QrImgUrl","renderMultiDirectCardImage","img3","RangewaterCardTemplate","RangeWaterMultiOrder","longUrlList","oldLinkId","get","querySnapshot","linkDocId","createShortLink","longURL","createdAt","serverTimestamp","shortCode","nanoid","totalClicks","clickDates","deleteOldShortUrl","RW1","justifyContent","RW2","right","createSession2","RangewaterAdminOrders","longCode","substring","lastIndexOf","linkDoc","linkID","updateShortLink","logoPlaceHolder","reviewCardUploadedFrontLogo","SugarcoatAdminOrders","cardFront","transform","EditEnterpriseUserPage","explicitUser","useParams","setUser","useDispatch","isRendered","useRef","useEffect","setSelectedUser","err","creatorId","UserCard","editModal","setEditModal","editModal2","setEditModal2","editMenu","setEditMenu","groupAssignmentMenu","setGroupAssignmentMenu","setClicks","setClickDates","clickTimes","setClickTimes","setLinkDocId","search","setSearch","getClicks","current","toggleEditModal","toggleEditModal2","API","graph","clicks","dates","date","seconds","setHours","toLocaleTimeString","addToGroup","removeGroupFromUser","paddingTop","firstName","confirm","createdUsers","arrayRemove","adminDeleteUser","onMouseDown","hint","containerClass","groups","filter","toLowerCase","borderTop","afterSubmit","title","firebaseUserConfig","initializeApp","authDomain","databaseURL","projectId","storageBucket","messagingSenderId","appId","measurementId","Enterprise","setEmail","setPassword","setPassword2","setDisplayName","setCreatedUsers","newGroup","setNewGroup","userGroups","newUserModal","setNewUserModal","newGroupModal","setNewGroupModal","where","onSnapshot","snapshot","docs","onCreateUser","nonEmptyFields","Object","keys","field","trim","credentials","arrayUnion","toggleNewUserModal","toggleNewGroupModal","onCreateGroup","toUpperCase","removeGroup","deleteGroupFromDb","maxWidth","assignedGroupMembers","getAssignedGroupMembers","flexWrap","alignContent","mapStateToProps","createStructuredSelector","setCurrentUser","Sales","SalesAdmin","salesAdminData","setSalesAdminData","stripePromoCodes","setStripePromoCodes","redemptionsPerProductPerCode","setRedemptionsPerProductPerCode","newPromoCode","setNewPromoCode","saleAdminInit","getStripePromoCodes","stringify","getRedemptions","temporaryStructure","promises","promoCode","orderByChild","equalTo","once","orders","val","orderData","item","find","promo","code","parentCode","coupon","getSalesAdminData","stuff","coupons","getSalesAdminPromoCodes","newCodePayload","createNewPromoCode","scope","salesManager","toFixed","Admin","ContactUs","company","axios","method","resetForm","lg","rounded","DeviceCompatibility","Fulfillment","allOrders","fetchOrders","order","fulfilled","stripeCheckoutSessionId","float","quantity","recipientName","shippingAddress","line1","line2","city","postal_code","country","fulfilledBy","wordWrap","customerEmail","toLocaleString","copyImageToClipboard","Five","Gallary","RW","navigator","clipboard","writeText","trackerCode","customerName","tracker","customerAddress","orderId","b","renderUnfulfilledOrders","renderInProcessOrders","renderfulfilledOrders","renderOldfulfilledOrders","fulfillment","parsedOrders","LinkRedirect","setLoading","exists","currentProfile","profile","parseInt","increment","fetchLinkDoc","RangeWaterOrder","GalleryResidential","LogoFront","aspectRatio","ColumbiaResidentialOrder","CR","CR2","Landing","lazy","App","unsubscribeFromAuth","onAuthStateChanged","userAuth","snapShot","component","exact","redirectRoute","fallback","Shop","DesignCard","Boolean","hostname","match","stripePromise","loadStripe","serviceWorker","ready","registration","unregister","module","exports","INITIAL_STATE","userReducer","routingReducer","fulfillmentReducer","designImagesReducer","selectedUserReducer","CANVAS_INITIAL_STATE","DESIGN_TYPE_INITIAL_STATE","ACTIVE_OBJECT_INITAL_STATE","originX","originY","isMobile","userAgent","combineReducers","oldL","addingObj","concat","_id1","_id2","leaveObjects","middleware","thunk","createStore","rootReducer","compose","applyMiddleware","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","updateProfile","cardUrl","profileState","formDataKey","croppedImgKey","croppedImg","lastName","cellPhone","workPhone","homePhone","persEmail","workEmail","workLink","homeCity","homeStreet","homeState","workCity","homeZip","workStreet","workState","socialType1","workZip","birthday","socialLink1","socialUserName1","socialType2","socialLink2","socialUserName2","socialType3","socialLink3","socialUserName3","socialType4","socialLink4","socialUserName4","socialType5","socialLink5","socialUserName5","socialType6","socialLink6","socialUserName6","imgLink","youtubeLink","html","withHttp","test","toHtml","encodedString","Buffer","landingUrl","generateCard","contact","vCard","organization","workUrl","homeAddress","street","stateProvince","postalCode","workAddress","socialUrls","replace","userName","photo","embedFromString","substr","version","getFormattedString","paddingLeft","paddingRight","signInWithGoogle","signInWithFacebook","fab","designs","config","additionalData","userRef","functions","provider","GoogleAuthProvider","setCustomParameters","prompt","signInWithPopup","provider2","FacebookAuthProvider","firebaseCreateSession","httpsCallable","firebaseCreateSession2","firebaseCreateStripeCustomer","firebaseGetSalesData","firebaseGetStripePromoCodes","firebaseCreateNewPromoCode","firebaseDeleteUser","successUrl","cancelUrl","FormPage","modal2","cardHasUrl","directLink","customDirectLink","generateQrLink","inputFocus","modal3","toggle2","toggle3","GRAPHAPI","inputFocusHandler","setURL","resetName","preview","formattedURL","from","LANDING","parsedFormData","formData2","formData3","formData4","Clicks","Dates","updateLinksProfile","stateChangeHandler","parsedFormData2","parsedFormData3","parsedFormData4","center","profileChangeHandler","Placeholder","directChangeHandler","paddingBottom","defaultActiveKey","Toggle","Card","eventKey","Collapse","inputs","noTag","generator","onFocus","far","tag","overflow","croppedImg2","croppedImg3","croppedImg4","premium","graphUrl","cropShape","setRedirect"],"mappings":"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W5d,MAC7B,oBAED,WAAU,IAAD,OACL,OACI,yBAAKsB,UAAW,aAAeb,KAAKT,MAAM4d,YAAcnd,KAAKC,MAAMwd,OAAS,UAAU,KACzD,UAAxBzd,KAAKC,MAAMsd,YAAwB,kBAAC,GAAK,MACjB,SAAxBvd,KAAKC,MAAMsd,YAAuB,kBAAC,GAAI,MACf,UAAxBvd,KAAKC,MAAMsd,YAAwB,kBAAC,GAAK,MACjB,UAAxBvd,KAAKC,MAAMsd,YAAwB,kBAAC,GAAK,MACjB,UAAxBvd,KAAKC,MAAMsd,YAAwB,4BAAQ1c,UAAU,gBAAgByM,QAAS,SAAAtM,GAAC,OAAE,EAAKqc,iBAAiB,UAAQ,aAI3H,EApDU,CAASxS,IAAMvK,WAyEfmO,gBAlBS,SAAClP,EAAOsP,GAC5B,MAAO,CACH2O,aAAeje,EAAMie,aACrBC,OAASle,EAAMke,WAII,SAAC7O,EAAUC,GAClC,MAAO,KAUIJ,CAA6CyO,ICnFtDQ,GAAQ,CACZ,eACA,mBACA,sBACA,qBACA,qBACA,mBACA,eACA,kBACA,kBACA,iBACA,oBACA,iBACA,SACA,YACA,QACA,aACA,YACA,eACA,eACA,oBACA,mBACA,mBACA,UACA,UACA,eACA,UACA,UACA,gBACA,kBACA,gBACA,WACA,aACA,aACA,SACA,cACA,WACA,SACA,WACA,kBACA,WACA,SACA,WACA,UACA,cACA,WACA,uBACA,SACA,WACA,gBACA,QACA,qBACA,oBACA,qBACA,oBACA,aACA,gBACA,oBACA,aACA,iBACA,sBACA,gBACA,UACA,eACA,qBACA,qBACA,wBACA,wBACA,oBACA,uBACA,mBACA,mBACA,kBACA,qBACA,qBACA,qBACA,eACA,aACA,kBACA,mBACA,YACA,aACA,0BACA,yBACA,eACA,UACA,eACA,aACA,aACA,UACA,YACA,YACA,aACA,oBACA,gBACA,aACA,qBACA,eACA,oBACA,cACA,eACA,WACA,iBACA,oBACA,kBACA,SACA,SACA,cACA,QACA,cACA,UACA,SACA,SACA,eACA,aACA,kBACA,aACA,eACA,UACA,WACA,YACA,cACA,cACA,YACA,eACA,cACA,YACA,sBACA,mBACA,SACA,cACA,WACA,gBACA,SACA,YACA,eACA,SACA,YACA,iBACA,YACA,cACA,UACA,OACA,QACA,QACA,eACA,eACA,oBACA,eACA,QACA,YACA,aACA,eACA,mBACA,QACA,WACA,iBACA,aACA,gBACA,qBACA,aACA,OACA,aACA,QACA,YACA,YACA,YACA,sBACA,mBACA,YACA,WACA,WACA,SACA,WACA,mBACA,eACA,UACA,SACA,QACA,YACA,SACA,QACA,eACA,aACA,qBACA,cACA,gBACA,iBACA,cACA,SACA,cACA,aACA,oBACA,eACA,aACA,YACA,cACA,UACA,YACA,UACA,oBACA,eACA,cACA,cACA,YACA,SACA,cACA,OACA,QACA,sBACA,OACA,QACA,cACA,YACA,QACA,aACA,UACA,aACA,WACA,eACA,YACA,WACA,aACA,aACA,SACA,iBACA,WACA,iBACA,YACA,aACA,QACA,WACA,iBACA,YACA,aACA,kBACA,yBACA,wBACA,cACA,SACA,WACA,YACA,cACA,SACA,wBACA,iBACA,iBACA,uBACA,aACA,QACA,WACA,gBACA,gBACA,eACA,UACA,aACA,uBACA,eACA,mBACA,UACA,aACA,WACA,gBACA,WACA,YACA,YACA,eACA,SACA,SACA,cACA,kBACA,aACA,kBACA,cACA,oBACA,qBACA,cACA,UACA,WACA,eACA,UACA,SACA,YACA,iBACA,yBACA,aACA,iBACA,cACA,eACA,SACA,WACA,iBACA,qBACA,aACA,eACA,gBACA,iBACA,sBACA,kBACA,SACA,QACA,WACA,qBACA,YACA,QACA,SACA,UACA,gBACA,UACA,WACA,SACA,cACA,iCACA,wBACA,SACEC,OAEOC,GAAY,CACrB,YAGaF,M,wDChUf,mmGAAA1a,GAAA,wBAAAA,EAAA,sBAAAA,GAAA,iBAAAA,GAAA,ssDAAAA,EAAA,yBAAAA,GAAA,IAAAA,EAAA,uBAAAA,GAAA,4bAAAA,EAAA,yBAAAA,GAAA,IAAAA,EAAA,uBAAAA,GAAA,yhBAAAA,EAAA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","file":"static/js/main.71a075a7.chunk.js","sourcesContent":["import { createSelector } from \"reselect\";\n\nconst selectUser = (state) => state.user;\n\n// Return false if current user status is unknown (i.e. Firebase hasn't checked yet)\n// Return null if no current user (and Firebase has checked)\n// Else, return current user\nexport const selectCurrentUser = createSelector([selectUser], (user) => {\n if (user.hasOwnProperty(\"currentUser\")) {\n return user.currentUser;\n }\n\n return false;\n});\n","import { createSelector } from \"reselect\";\n\nconst redirectRoute = (state) => state.routing;\n\nexport const selectRedirectRoute = createSelector(\n redirectRoute,\n (route) => route\n);\n","import React, { Component } from \"react\";\nimport { withRouter } from \"react-router-dom\";\n\nclass ScrollToTop extends Component {\n\tcomponentDidUpdate(prevProps) {\n\t\tif (this.props.location !== prevProps.location) {\n\t\t\twindow.scrollTo(0, 0);\n\t\t}\n\t}\n\n\trender() {\n\t\treturn \n\t}\n}\n\nexport default withRouter(ScrollToTop)","import React from 'react';\nimport './custom-button.styles.css'\n\nconst CustomButton =({\n children, \n isGoogleSignIn, \n inverted, \n ...otherProps\n}) => (\n \n)\n\nexport default CustomButton;","import {\n MDBContainer,\n MDBRow,\n MDBCol,\n MDBInput,\n MDBIcon,\n MDBCard,\n MDBCardBody\n} from \"mdbreact\";\n\nimport React, { Component } from \"react\";\nimport { Link, withRouter } from \"react-router-dom\";\n\nimport {\n auth,\n createUserProfileDocument\n} from \"../../utils/firebase/firebase.utils\";\n\nimport CustomButton from \"../../components/custom-button/customButton\";\n\nclass Register extends Component {\n constructor() {\n super();\n this.state = {\n displayName: \"\",\n email: \"\",\n password: \"\",\n password2: \"\"\n };\n }\n\n onChange = (e) => {\n const { name, value } = e.target;\n this.setState({ [name]: value });\n };\n\n handleSubmit = async (e) => {\n e.preventDefault();\n const { displayName, email, password, password2 } = this.state;\n if (password !== password2) {\n alert(\"passwords dont match\");\n return;\n }\n try {\n const { user } = await auth.createUserWithEmailAndPassword(\n email,\n password\n );\n\n await createUserProfileDocument(user, { displayName });\n this.setState({\n displayName: \"\",\n email: \"\",\n password: \"\",\n password2: \"\"\n });\n } catch (error) {\n alert(error);\n }\n };\n\n render() {\n return (\n
\n \n \n \n \n\n \n \n \n \n \n
\n \n SIGN UP\n

\n\n
\n \n \n \n \n
\n
\n

\n Already have an account? Log in\n

\n\n {/* \n Register\n */}\n\n \n   Register\n \n
\n \n
\n
\n
\n
\n
\n
\n );\n }\n}\n\nexport default withRouter(Register);\n","import React, { Component } from \"react\";\nimport {\n MDBContainer,\n MDBRow,\n MDBCol,\n MDBInput,\n MDBIcon,\n MDBCard,\n MDBCardBody\n} from \"mdbreact\";\nimport { Link } from \"react-router-dom\";\n\n// import { connect } from \"react-redux\";\n// import { loginUser } from \"../../redux/actions/authActions\";\n\nimport { auth } from \"../../utils/firebase/firebase.utils\";\n\nimport CustomButton from \"../../components/custom-button/customButton\";\n\nclass Login extends Component {\n constructor() {\n super();\n this.state = {\n email: \"\",\n password: \"\"\n };\n }\n\n onChange = (e) => {\n const { name, value } = e.target;\n this.setState({ [name]: value });\n };\n\n onSubmit = async (e) => {\n e.preventDefault();\n const { email, password } = this.state;\n try {\n await auth.signInWithEmailAndPassword(email, password);\n this.setState({ email: \"\", password: \"\" });\n } catch (error) {\n alert(error);\n }\n };\n\n render() {\n return (\n
\n \n \n \n \n\n \n \n \n \n \n
\n \n SIGN IN\n

\n
\n \n \n
\n
\n

\n Don't have an account?{\" \"}\n Register\n

\n\n {/* \n Login\n */}\n\n \n   Login\n \n
\n \n
\n
\n
\n
\n
\n
\n );\n }\n}\n\nexport default Login;\n","import React, { Component } from \"react\";\nimport { auth } from \"../../utils/firebase/firebase.utils\";\nimport {\n MDBContainer,\n MDBRow,\n MDBCol,\n MDBInput,\n MDBIcon,\n MDBCard,\n MDBCardBody\n} from \"mdbreact\";\nimport { Link } from \"react-router-dom\";\nimport CustomButton from \"../../components/custom-button/customButton\";\n\nclass PasswordReset extends Component {\n constructor() {\n super();\n this.state = {\n email: \"\"\n };\n }\n\n onChange = (e) => {\n const { name, value } = e.target;\n this.setState({ [name]: value });\n };\n\n reset=()=>{\n this.setState({email: \"\"})\n }\n\n handleSubmit = async (e) => {\n e.preventDefault();\n const email = this.state.email\n await auth\n .sendPasswordResetEmail(email)\n .then(function () {\n // Email sent.\n alert(\"Email Sent\"); \n })\n .catch(function (error) {\n // An error happened.\n });\n this.reset()\n\n };\n\n render() {\n return (\n
\n \n \n \n \n\n \n \n \n \n \n
\n \n RESET YOUR PASSWORD\n

\n
\n \n
\n
\n \n RESET\n \n
\n \n
\n
\n
\n
\n
\n
\n\n\n );\n }\n}\n\nexport default PasswordReset;\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport store from \"../../redux/store\";\n\nimport ReactQr from \"react-awesome-qr\";\n\nimport firebase from \"../../utils/firebase/firebase.utils\";\n\nimport MyLogo from \"../../assets/logo5.png\";\n\nexport default {\n generateQR: function () {\n var db = firebase.firestore();\n var storageRef = firebase.storage().ref();\n var database = firebase.database();\n\n const MyCardDirectURL = store.getState().user.currentUser.MyCardDirectURL;\n const MyTapReviewCardURL =\n store.getState().user.currentUser.MyTapReviewCardURL;\n const userId = store.getState().user.currentUser.id;\n const shortUrl = store.getState().user.currentUser.shortUrl;\n // const isPremium = store.getState().user.currentUser.premium;\n\n\n // console.log('eowedwedcewsecdwswcsdcswdcs',userId)\n\n ReactDOM.render(\n 4 ?\n MyTapReviewCardURL:''\n }\n correctLevel={3}\n size={700}\n dotScale={0.7}\n // MyTapReviewCardURL.length > 4 ? null :\n bgSrc={\n MyTapReviewCardURL && MyTapReviewCardURL.length > 4 ? null : MyLogo\n }\n callback={\n (data) =>\n // console.log(data)\n\n db\n .collection(\"users\")\n .doc(`${userId}`)\n .update({\n GoogleQrImg: `${data}`\n })\n \n\n // storageRef\n // .child(`${this.props.userId}, QRCODE.png`)\n // .putString(data, \"data_url\")\n // .then(function (snapshot) {\n // // alert(\"QR SENT\");\n // })\n }\n />,\n document.getElementById(\"yo\")\n );\n }\n};\n","import store from \"../../redux/store\";\nimport firebase from \"../../utils/firebase/firebase.utils\";\n\nimport CardTemplate from \"./imgs/card-back.png\";\n\nexport default {\n renderDirectCardImage: async function () {\n var db = firebase.firestore();\n const QrImg = store.getState().user.currentUser?.GoogleQrImg;\n const customQrImg = store.getState().user.currentUser?.customGoogleQrImg;\n const userId = store.getState().user.currentUser?.id;\n \n var canvas = document.getElementById(\"canvas1\");\n if (!canvas || !canvas.getContext) {\n return false;\n }\n canvas.width = 2.5 * 445;\n canvas.height = 2.5 * 280;\n var ctx = canvas.getContext(\"2d\");\n var img1 = new Image();\n var img2 = new Image();\n img1.src = CardTemplate;\n img2.src = customQrImg ? customQrImg : QrImg;\n \n await Promise.all([\n new Promise((resolve, reject) => {\n img1.onload = function () {\n ctx.drawImage(img1, 0, 0, 2.5 * 445, 2.5 * 280);\n resolve();\n };\n }),\n new Promise((resolve, reject) => {\n img2.onload = function () {\n resolve();\n };\n })\n ]);\n \n ctx.drawImage(img2, 2.5 * 140, 2.5 * 56, 2.5 * 165, 2.5 * 165);\n \n var fullQuality = canvas.toDataURL();\n \n \n await db.collection(\"users\")\n .doc(`${userId}`)\n .update({\n reviewCardImage: `${fullQuality}`\n });\n }\n \n \n};\n","import store from \"../../redux/store\";\nimport firebase from \"../../utils/firebase/firebase.utils\";\n\nconst createImage = (url) =>\n new Promise((resolve, reject) => {\n const image = new Image();\n image.addEventListener(\"load\", () => resolve(image));\n image.addEventListener(\"error\", (error) => reject(error));\n image.setAttribute(\"crossOrigin\", \"anonymous\"); // needed to avoid cross-origin issues on CodeSandbox\n image.src = url;\n });\n\nfunction getRadianAngle(degreeValue) {\n return (degreeValue * Math.PI) / 180;\n}\n\n/**\n * This function was adapted from the one in the ReadMe of https://github.com/DominicTobias/react-image-crop\n * @param {File} image - Image File url\n * @param {Object} pixelCrop - pixelCrop Object provided by react-easy-crop\n * @param {number} rotation - optional rotation parameter\n */\nexport async function getCroppedImg(imageSrc, pixelCrop, rotation = 0) {\n const image = await createImage(imageSrc);\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n\n // image.width = image.width / 2;\n // image.height = image.height / 2;\n\n // const safeArea = Math.max(image.width, image.height) * 2\n\n const maxSize = Math.max(image.width, image.height);\n const safeArea = 2 * ((maxSize / 2) * Math.sqrt(2));\n\n // set each dimensions to double largest dimension to allow for a safe area for the\n // image to rotate in without being clipped by canvas context\n canvas.width = safeArea;\n canvas.height = safeArea;\n\n // translate canvas context to a central location on image to allow rotating around the center.\n ctx.translate(safeArea / 2, safeArea / 2);\n ctx.rotate(getRadianAngle(rotation));\n ctx.translate(-safeArea / 2, -safeArea / 2);\n\n ctx.fillStyle = \"white\";\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n\n // draw rotated image and store data.\n ctx.drawImage(\n image,\n safeArea / 2 - image.width * 0.5,\n safeArea / 2 - image.height * 0.5\n );\n const data = ctx.getImageData(0, 0, safeArea, safeArea);\n\n // set canvas width to final desired crop size - this will clear existing context\n canvas.width = pixelCrop.width;\n canvas.height = pixelCrop.height;\n\n // paste generated rotate image with correct offsets for x,y crop values.\n ctx.putImageData(\n data,\n Math.round(0 - safeArea / 2 + image.width * 0.5 - pixelCrop.x),\n Math.round(0 - safeArea / 2 + image.height * 0.5 - pixelCrop.y)\n );\n\n // As Base64 string\n // return canvas.toDataURL('image/jpeg');\n\n const base64Image = canvas.toDataURL(\"image/jpeg\");\n // const baseString = base64Image.substr(base64Image.indexOf(\",\") + 1);\n // localStorage.setItem('customLogo',base64Image)\n\n var userId = store.getState().user.currentUser.id;\n var db = firebase.firestore();\n db.collection(\"users\")\n .doc(`${userId}`)\n .update({\n reviewCardUploadedLogo: `${base64Image}`,\n })\n .then(function () {\n console.log(\"Document successfully written!\");\n })\n .catch(function (error) {\n console.error(\"Error writing document: \", error);\n });\n\n return base64Image;\n\n // As a blob\n // return new Promise(resolve => {\n // canvas.toBlob(file => {\n // resolve(URL.createObjectURL(file))\n // }, 'image/jpeg')\n // })\n}\n\nexport async function getRotatedImage(imageSrc, rotation = 0) {\n const image = await createImage(imageSrc);\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n\n const orientationChanged =\n rotation === 90 ||\n rotation === -90 ||\n rotation === 270 ||\n rotation === -270;\n if (orientationChanged) {\n canvas.width = image.height;\n canvas.height = image.width;\n } else {\n canvas.width = image.width;\n canvas.height = image.height;\n }\n\n ctx.translate(canvas.width / 2, canvas.height / 2);\n ctx.rotate((rotation * Math.PI) / 180);\n ctx.drawImage(image, -image.width / 2, -image.height / 2);\n\n return new Promise((resolve) => {\n canvas.toBlob((file) => {\n resolve(URL.createObjectURL(file));\n }, \"image/jpeg\");\n });\n}\n","export const styles = theme => ({\n cropContainer: {\n position: 'relative',\n width: '100%',\n height: 200,\n background: 'white',\n [theme.breakpoints.up('sm')]: {\n height: 400,\n },\n },\n cropButton: {\n flexShrink: 0,\n marginLeft: 16,\n },\n controls: {\n padding: 16,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'stretch',\n [theme.breakpoints.up('sm')]: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n },\n sliderContainer: {\n display: 'flex',\n flex: '1',\n alignItems: 'center',\n },\n sliderLabel: {\n [theme.breakpoints.down('xs')]: {\n minWidth: 65,\n },\n },\n slider: {\n padding: '22px 0px',\n marginLeft: 16,\n [theme.breakpoints.up('sm')]: {\n flexDirection: 'row',\n alignItems: 'center',\n margin: '0 16px',\n },\n },\n})\n","import React, { useState, useCallback } from \"react\";\nimport Cropper from \"react-easy-crop\";\nimport Slider from \"@material-ui/lab/Slider\";\nimport Button from \"@material-ui/core/Button\";\nimport Typography from \"@material-ui/core/Typography\";\nimport { withStyles } from \"@material-ui/core/styles\";\nimport { getOrientation } from \"get-orientation/browser\";\n// import ImgDialog from \"./ImgDialog\";\nimport { getCroppedImg, getRotatedImage } from \"./canvasUtils\";\nimport { styles } from \"./styles\";\nimport imageCompression from \"browser-image-compression\";\n\n\nconst ORIENTATION_TO_ANGLE = {\n \"3\": 180,\n \"6\": 90,\n \"8\": -90,\n};\n\nconst Demo = ({ classes }) => {\n const [imageSrc, setImageSrc] = React.useState(null);\n const [crop, setCrop] = useState({ x: 0, y: 0 });\n const [rotation, setRotation] = useState(0);\n const [zoom, setZoom] = useState(1);\n const [croppedAreaPixels, setCroppedAreaPixels] = useState(null);\n // eslint-disable-next-line \n const [croppedImage, setCroppedImage] = useState(null);\n\n\n const onCropComplete = useCallback((croppedArea, croppedAreaPixels) => {\n setCroppedAreaPixels(croppedAreaPixels);\n }, []);\n\n const showCroppedImage = useCallback(async () => {\n try {\n const croppedImage = await getCroppedImg(\n imageSrc,\n croppedAreaPixels,\n rotation\n );\n console.log(\"donee\", { croppedImage });\n \n \n\n setCroppedImage(croppedImage);\n setImageSrc(null)\n \n\n\n } catch (e) {\n console.error(e);\n }\n\n }, [imageSrc, croppedAreaPixels, rotation]);\n\n // const onClose = useCallback(() => {\n // setCroppedImage(null);\n // }, []);\n\n const onFileChange = async (e) => {\n if (e.target.files && e.target.files.length > 0) {\n const file = e.target.files[0];\n\n // const imageFile = file;\n\n const options = {\n maxSizeMB: 1,\n maxWidthOrHeight: 1920,\n useWebWorker: true,\n };\n try {\n const compressedFile = await imageCompression(file, options);\n\n let imageDataUrl = await readFile(compressedFile);\n\n // apply rotation if needed\n const orientation = await getOrientation(compressedFile);\n const rotation = ORIENTATION_TO_ANGLE[orientation];\n if (rotation) {\n imageDataUrl = await getRotatedImage(imageDataUrl, rotation);\n }\n\n setImageSrc(imageDataUrl);\n } catch (error) {\n console.log(error);\n }\n }\n };\n\n return (\n
\n {imageSrc ? (\n \n
\n \n
\n
\n
\n \n Zoom\n \n setZoom(zoom)}\n />\n
\n
\n \n Rotation\n \n setRotation(rotation)}\n />\n
\n \n Save\n \n
\n {/* */}\n
\n ) : (\n \n )}\n
\n );\n};\n\nfunction readFile(file) {\n return new Promise((resolve) => {\n const reader = new FileReader();\n reader.addEventListener(\"load\", () => resolve(reader.result), false);\n reader.readAsDataURL(file);\n });\n}\n\nconst StyledDemo = withStyles(styles)(Demo);\n\nexport default StyledDemo;\n","import React from \"react\";\n\nimport StyledDemo from \"./index\";\n\nimport {\n MDBContainer,\n MDBIcon,\n MDBBtn,\n MDBModal,\n MDBModalBody,\n MDBModalFooter\n} from \"mdbreact\";\n\n\n\n\n\nclass UploadLogo extends React.Component {\n state = {\n modal: false\n };\n\n toggle = () => {\n this.setState({\n modal: !this.state.modal\n });\n };\n\n render() {\n return (\n \n \n Upload Logo\n \n\n \n \n \n\n \n \n \n \n Close\n \n \n \n \n );\n }\n}\n\n\nexport default UploadLogo;\n","import store from \"../../redux/store\";\nimport firebase from \"../../utils/firebase/firebase.utils\";\n\nconst createImage = (url) =>\n new Promise((resolve, reject) => {\n const image = new Image();\n image.addEventListener(\"load\", () => resolve(image));\n image.addEventListener(\"error\", (error) => reject(error));\n image.setAttribute(\"crossOrigin\", \"anonymous\"); // needed to avoid cross-origin issues on CodeSandbox\n image.src = url;\n });\n\nfunction getRadianAngle(degreeValue) {\n return (degreeValue * Math.PI) / 180;\n}\n\n/**\n * This function was adapted from the one in the ReadMe of https://github.com/DominicTobias/react-image-crop\n * @param {File} image - Image File url\n * @param {Object} pixelCrop - pixelCrop Object provided by react-easy-crop\n * @param {number} rotation - optional rotation parameter\n */\nexport async function getCroppedImg(imageSrc, pixelCrop, rotation = 0) {\n const image = await createImage(imageSrc);\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n\n // image.width = image.width / 2;\n // image.height = image.height / 2;\n\n // const safeArea = Math.max(image.width, image.height) * 2\n\n const maxSize = Math.max(image.width, image.height);\n const safeArea = 2 * ((maxSize / 2) * Math.sqrt(2));\n\n // set each dimensions to double largest dimension to allow for a safe area for the\n // image to rotate in without being clipped by canvas context\n canvas.width = safeArea;\n canvas.height = safeArea;\n\n // translate canvas context to a central location on image to allow rotating around the center.\n ctx.translate(safeArea / 2, safeArea / 2);\n ctx.rotate(getRadianAngle(rotation));\n ctx.translate(-safeArea / 2, -safeArea / 2);\n\n ctx.fillStyle = \"white\";\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n\n // draw rotated image and store data.\n ctx.drawImage(\n image,\n safeArea / 2 - image.width * 0.5,\n safeArea / 2 - image.height * 0.5\n );\n const data = ctx.getImageData(0, 0, safeArea, safeArea);\n\n // set canvas width to final desired crop size - this will clear existing context\n canvas.width = pixelCrop.width;\n canvas.height = pixelCrop.height;\n\n // paste generated rotate image with correct offsets for x,y crop values.\n ctx.putImageData(\n data,\n Math.round(0 - safeArea / 2 + image.width * 0.5 - pixelCrop.x),\n Math.round(0 - safeArea / 2 + image.height * 0.5 - pixelCrop.y)\n );\n\n // As Base64 string\n // return canvas.toDataURL('image/jpeg');\n\n const base64Image = canvas.toDataURL(\"image/jpeg\");\n // const baseString = base64Image.substr(base64Image.indexOf(\",\") + 1);\n // localStorage.setItem('customLogo',base64Image)\n\n var userId = store.getState().user.currentUser.id;\n var db = firebase.firestore();\n db.collection(\"users\")\n .doc(`${userId}`)\n .update({\n customLogo: `${base64Image}`,\n })\n .then(function () {\n console.log(\"Document successfully written!\");\n })\n .catch(function (error) {\n console.error(\"Error writing document: \", error);\n });\n\n return base64Image;\n\n // As a blob\n // return new Promise(resolve => {\n // canvas.toBlob(file => {\n // resolve(URL.createObjectURL(file))\n // }, 'image/jpeg')\n // })\n}\n\nexport async function getRotatedImage(imageSrc, rotation = 0) {\n const image = await createImage(imageSrc);\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n\n const orientationChanged =\n rotation === 90 ||\n rotation === -90 ||\n rotation === 270 ||\n rotation === -270;\n if (orientationChanged) {\n canvas.width = image.height;\n canvas.height = image.width;\n } else {\n canvas.width = image.width;\n canvas.height = image.height;\n }\n\n ctx.translate(canvas.width / 2, canvas.height / 2);\n ctx.rotate((rotation * Math.PI) / 180);\n ctx.drawImage(image, -image.width / 2, -image.height / 2);\n\n return new Promise((resolve) => {\n canvas.toBlob((file) => {\n resolve(URL.createObjectURL(file));\n }, \"image/jpeg\");\n });\n}\n","import React, { useState, useCallback } from \"react\";\nimport Cropper from \"react-easy-crop\";\nimport Slider from \"@material-ui/lab/Slider\";\nimport Button from \"@material-ui/core/Button\";\nimport Typography from \"@material-ui/core/Typography\";\nimport { withStyles } from \"@material-ui/core/styles\";\nimport { getOrientation } from \"get-orientation/browser\";\n// import ImgDialog from \"./ImgDialog\";\nimport { getCroppedImg, getRotatedImage } from \"./canvasUtils\";\nimport { styles } from \"./styles\";\nimport imageCompression from \"browser-image-compression\";\n\n\nconst ORIENTATION_TO_ANGLE = {\n \"3\": 180,\n \"6\": 90,\n \"8\": -90,\n};\n\nconst Demo = ({ classes }) => {\n const [imageSrc, setImageSrc] = React.useState(null);\n const [crop, setCrop] = useState({ x: 0, y: 0 });\n const [rotation, setRotation] = useState(0);\n const [zoom, setZoom] = useState(1);\n const [croppedAreaPixels, setCroppedAreaPixels] = useState(null);\n // eslint-disable-next-line \n const [croppedImage, setCroppedImage] = useState(null);\n\n\n const onCropComplete = useCallback((croppedArea, croppedAreaPixels) => {\n setCroppedAreaPixels(croppedAreaPixels);\n }, []);\n\n const showCroppedImage = useCallback(async () => {\n try {\n const croppedImage = await getCroppedImg(\n imageSrc,\n croppedAreaPixels,\n rotation\n );\n console.log(\"donee\", { croppedImage });\n \n \n\n setCroppedImage(croppedImage);\n setImageSrc(null)\n \n\n\n } catch (e) {\n console.error(e);\n }\n\n }, [imageSrc, croppedAreaPixels, rotation]);\n\n // const onClose = useCallback(() => {\n // setCroppedImage(null);\n // }, []);\n\n const onFileChange = async (e) => {\n if (e.target.files && e.target.files.length > 0) {\n const file = e.target.files[0];\n\n // const imageFile = file;\n\n const options = {\n maxSizeMB: 1,\n maxWidthOrHeight: 1920,\n useWebWorker: true,\n };\n try {\n const compressedFile = await imageCompression(file, options);\n\n let imageDataUrl = await readFile(compressedFile);\n\n // apply rotation if needed\n const orientation = await getOrientation(compressedFile);\n const rotation = ORIENTATION_TO_ANGLE[orientation];\n if (rotation) {\n imageDataUrl = await getRotatedImage(imageDataUrl, rotation);\n }\n\n setImageSrc(imageDataUrl);\n } catch (error) {\n console.log(error);\n }\n }\n };\n\n return (\n
\n {imageSrc ? (\n \n
\n \n
\n
\n
\n \n Zoom\n \n setZoom(zoom)}\n />\n
\n
\n \n Rotation\n \n setRotation(rotation)}\n />\n
\n \n Save\n \n
\n {/* */}\n
\n ) : (\n \n )}\n
\n );\n};\n\nfunction readFile(file) {\n return new Promise((resolve) => {\n const reader = new FileReader();\n reader.addEventListener(\"load\", () => resolve(reader.result), false);\n reader.readAsDataURL(file);\n });\n}\n\nconst StyledDemo = withStyles(styles)(Demo);\n\nexport default StyledDemo;\n","export const styles = theme => ({\n cropContainer: {\n position: 'relative',\n width: '100%',\n height: 200,\n background: 'white',\n [theme.breakpoints.up('sm')]: {\n height: 400,\n },\n },\n cropButton: {\n flexShrink: 0,\n marginLeft: 16,\n },\n controls: {\n padding: 16,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'stretch',\n [theme.breakpoints.up('sm')]: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n },\n sliderContainer: {\n display: 'flex',\n flex: '1',\n alignItems: 'center',\n },\n sliderLabel: {\n [theme.breakpoints.down('xs')]: {\n minWidth: 65,\n },\n },\n slider: {\n padding: '22px 0px',\n marginLeft: 16,\n [theme.breakpoints.up('sm')]: {\n flexDirection: 'row',\n alignItems: 'center',\n margin: '0 16px',\n },\n },\n})\n","import React from \"react\";\nimport { connect } from \"react-redux\";\nimport firebase from \"../../utils/firebase/firebase.utils\";\nimport StyledDemo from \"./index\";\nimport ReactQr from \"react-awesome-qr\";\nimport {\n MDBContainer,\n MDBBtn,\n MDBModal,\n MDBModalBody,\n MDBModalFooter,\n MDBIcon\n} from \"mdbreact\";\n\nimport cardBack from \"./assets/card-back.png\";\n\nimport { fetchDesigns } from \"../../redux/designImages/designImages.actions\";\n\nclass CustomGoogleQr extends React.Component {\n state = {\n modal: false\n };\n\n toggle = () => {\n var db = firebase.firestore();\n this.props.fetchDesigns();\n\n this.setState({\n modal: !this.state.modal\n });\n db.collection(\"users\").doc(`${this.props.userId}`).update({\n customLogo: firebase.firestore.FieldValue.delete()\n });\n // .then(()=>{\n // db.collection(\"users\").doc(`${this.props.userId}`).update({\n // customQrImgPreview: firebase.firestore.FieldValue.delete()\n // })\n // })\n };\n\n generateQr() {\n var db = firebase.firestore();\n var database = firebase.database();\n\n const thing = (\n
\n \n // localStorage.setItem('customQrImg',data)\n db\n .collection(\"users\")\n .doc(`${this.props.userId}`)\n .update({\n customQrImgPreview: `${data}`\n })\n }\n />\n\n 4\n ? this.props.MyTapReviewCardURL\n : ''\n }\n correctLevel={3}\n size={700}\n dotScale={0.7}\n margin={0}\n bgSrc={this.props.customLogo}\n callback={\n (data) =>\n db\n .collection(\"users\")\n .doc(`${this.props.userId}`)\n .update({\n customGoogleQrImg: `${data}`\n })\n }\n />\n
\n );\n\n return thing;\n }\n\n render() {\n return (\n \n \n \n \n\n \n \n \n\n {this.props.customLogo ? this.generateQr() : null}\n\n {this.props.customLogo ? (\n
\n \n \n
\n ) : null}\n
\n \n \n Close\n \n \n
\n
\n );\n }\n}\n\nconst mapStateToProps = ({ user }) => ({\n currentUser: user?.currentUser?.displayName,\n userId: user?.currentUser?.uid,\n customQrImg: user?.currentUser?.customQrImg,\n customQrImgPreview: user?.currentUser?.customQrImgPreview,\n customLogo: user?.currentUser?.customLogo,\n directLinksUrl: user?.currentUser?.directLinksUrl,\n shortUrl: user?.currentUser?.shortUrl,\n MyTapReviewCardURL: user?.currentUser?.MyTapReviewCardURL\n});\n\nconst mapDispatchToProps = (dispatch, ownProps) => {\n return {\n fetchDesigns: (payload) => {\n dispatch(fetchDesigns(payload));\n }\n };\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(CustomGoogleQr);\n","import React from \"react\";\nimport { connect } from \"react-redux\";\nimport {\n MDBMedia,\n MDBCard,\n MDBContainer,\n MDBCardBody,\n MDBModalBody,\n MDBCardImage,\n MDBCardTitle,\n MDBCardText,\n MDBTooltip,\n MDBCardFooter,\n MDBBtn,\n MDBLink,\n MDBIcon\n} from \"mdbreact\";\n\nimport firebase from \"../../utils/firebase/firebase.utils\";\n\nimport { defaultRedirect } from \"../../redux/routing/routing.actions\";\nimport { fetchDesigns } from \"../../redux/designImages/designImages.actions\";\n\nimport API2 from \"../../components/generateQr/generateGoogleQr\";\nimport API3 from \"../../components/renderDirectCardImage/renderGoogleReviewCardImage\";\n\nimport { Carousel } from \"react-bootstrap\";\nimport UploadLogo from \"../../components/upload-your-logo/uploadLogo\";\nimport CustomGoogleQr from \"../../components/customGoogleQr/customGoogleQr\";\nimport { CircularProgress, Box } from \"@material-ui/core\";\n\n// Stripe\nimport { ElementsConsumer } from \"@stripe/react-stripe-js\";\n\n//\n\nimport {\n createSession,\n createStripeCustomer\n} from \"../../utils/firebase/firebase.utils\";\nimport { updateUser } from \"../../redux/user/user.actions\";\nimport \"./RMO.styles.scss\";\nimport CardBack from \"./assets/images/IDCard/card-back copy.png\";\nimport fiveStar from \"./assets/images/IDCard/fivestar.png\";\nimport cardBackPlaceholder from \"./assets/images/IDCard/mytapQr.png\";\n\n\n\nclass GoogleReview extends React.Component {\n state = {\n MyTapReviewCardURL: \"\",\n loading: false,\n customQrCode: false,\n saveBtn: \"SAVE\",\n selectedIndex: \"\",\n };\n\n\n\n onDirectURLChange = (e) => {\n const { name, value } = e.target;\n this.setState({ [name]: value });\n };\n\n customQrCheckbox = (event) => {\n var db = firebase.firestore();\n // console.log(event.target.name, event.target.checked);\n const { name, checked } = event.target;\n this.setState({ [name]: checked });\n\n if (this.state.customQrCode === false) {\n return db.collection(\"users\").doc(`${this.props.userId}`).update({\n customGoogleQrImg: firebase.firestore.FieldValue.delete()\n });\n }\n };\n\n\n handleSelect = (selectedIndex) => {\n this.setState({\n selectedIndex: selectedIndex\n });\n };\n\n saveMyTapReviewCardURLToDB(e) {\n var db = firebase.firestore();\n\n this.state.customQrCode = false \n\n db.collection(\"users\").doc(`${this.props.userId}`).update({\n customGoogleQrImg: firebase.firestore.FieldValue.delete()\n });\n \n db.collection(\"users\").doc(`${this.props.userId}`).update({\n MyTapReviewCardURL: \n this.state.MyTapReviewCardURL.includes(\"http://\"||\"https://\")\n ? this.state.MyTapReviewCardURL\n : `https://${this.state.MyTapReviewCardURL}`\n }).then(()=> {\n setTimeout(() => {\n API2.generateQR();\n }, 500);\n })\n \n this.setState({ saveBtn: \"SAVED!\" });\n setTimeout(() => {\n this.setState({ saveBtn: \"SAVE\" });\n }, 3000);\n\n }\n\n\n generateAndBuy(e) {\n // setTimeout(() => {\n // API2.generateQR();\n // }, 500);\n\n setTimeout(() => {\n API3.renderDirectCardImage();\n }, 1000);\n }\n\n render() {\n const { currentUser } = this.props.user;\n\n if (this.state.loading)\n return (\n \n \n \n );\n\n return (\n \n
\n \n Single Link Card\n \n \n \n \n \n

Current order: {this.props.MyTapReviewCardURL}

\n
\n\n \n \n \n \n \n \n \n \n\n \n \n
\n \n
\n \n
\n \n \n \n\n \n \n \n {this.props.MyTapReviewCardURL && this.props.MyTapReviewCardURL.length > 10 ?\n
\n \n \n
\n : \n }\n\n {this.state.customQrCode === true ? (\n \n \n \n \n
Create your custom QR-Code!
\n
\n ) : null}\n \n
\n \n \n \n
$20
\n
\n \n \n \n \n {({ stripe, elements }) => (\n {\n this.setState({ loading: true });\n e.preventDefault();\n this.generateAndBuy();\n if (!currentUser.stripeCustomerId) {\n return await createStripeCustomer(\n currentUser\n ).then(async () => {\n const session = await createSession(\n \"MyTap SL Review Card\",\n currentUser.uid\n );\n stripe.redirectToCheckout({\n sessionId: session.data.id\n });\n console.log(\"session\", session);\n });\n } else {\n const session = await createSession(\n \"MyTap SL Review Card\",\n currentUser.uid\n );\n stripe.redirectToCheckout({\n sessionId: session.data.id\n });\n console.log(\"session\", session);\n }\n }}\n >\n \n \n \n \n\n \n )}\n \n \n
Order!
\n
\n
\n
\n
\n
\n \n );\n }\n}\n\nconst mapStateToProps = (state, ownProps) => {\n // console.log('dddddd',this.props.user.id)\n // console.log('bbbbbb',this.props.currentUser)\n // console.log('selectedUser',state.selectedUser.currentUser?.uid)\n\n return {\n reviewCardUploadedLogo:\n state.user.currentUser?.reviewCardUploadedLogo,\n MyTapReviewCardURL: state.user.currentUser?.MyTapReviewCardURL,\n GoogleQrImg: state.user.currentUser?.GoogleQrImg,\n customGoogleQrImg: state.user.currentUser?.customGoogleQrImg,\n reviewCardImage: state.user.currentUser?.reviewCardImage,\n shortUrl: state.user.currentUser?.shortUrl,\n orderPlaced: state.user.currentUser?.orderPlaced,\n user: state.user,\n userId: state.user.currentUser?.uid,\n currentUser: state.user?.currentUser,\n \n };\n};\n\nconst mapDispatchToProps = (dispatch, ownProps) => {\n return {\n updateUser: (payload) => {\n dispatch(updateUser(payload));\n },\n defaultRedirect: () => {\n dispatch(defaultRedirect());\n },\n fetchDesigns: (payload) => {\n dispatch(fetchDesigns(payload));\n }\n };\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(GoogleReview);\n","import store from \"../../redux/store\";\nimport firebase from \"../../utils/firebase/firebase.utils\";\n\nconst createImage = (url) =>\n new Promise((resolve, reject) => {\n const image = new Image();\n image.addEventListener(\"load\", () => resolve(image));\n image.addEventListener(\"error\", (error) => reject(error));\n image.setAttribute(\"crossOrigin\", \"anonymous\"); // needed to avoid cross-origin issues on CodeSandbox\n image.src = url;\n });\n\nfunction getRadianAngle(degreeValue) {\n return (degreeValue * Math.PI) / 180;\n}\n\n/**\n * This function was adapted from the one in the ReadMe of https://github.com/DominicTobias/react-image-crop\n * @param {File} image - Image File url\n * @param {Object} pixelCrop - pixelCrop Object provided by react-easy-crop\n * @param {number} rotation - optional rotation parameter\n */\nexport async function getCroppedImg(imageSrc, pixelCrop, rotation = 0) {\n const image = await createImage(imageSrc);\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n\n // image.width = image.width / 2;\n // image.height = image.height / 2;\n\n // const safeArea = Math.max(image.width, image.height) * 2\n\n const maxSize = Math.max(image.width, image.height);\n const safeArea = 2 * ((maxSize / 2) * Math.sqrt(2));\n\n // set each dimensions to double largest dimension to allow for a safe area for the\n // image to rotate in without being clipped by canvas context\n canvas.width = safeArea;\n canvas.height = safeArea;\n\n // translate canvas context to a central location on image to allow rotating around the center.\n ctx.translate(safeArea / 2, safeArea / 2);\n ctx.rotate(getRadianAngle(rotation));\n ctx.translate(-safeArea / 2, -safeArea / 2);\n\n ctx.fillStyle = \"white\";\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n\n // draw rotated image and store data.\n ctx.drawImage(\n image,\n safeArea / 2 - image.width * 0.5,\n safeArea / 2 - image.height * 0.5\n );\n const data = ctx.getImageData(0, 0, safeArea, safeArea);\n\n // set canvas width to final desired crop size - this will clear existing context\n canvas.width = pixelCrop.width;\n canvas.height = pixelCrop.height;\n\n // paste generated rotate image with correct offsets for x,y crop values.\n ctx.putImageData(\n data,\n Math.round(0 - safeArea / 2 + image.width * 0.5 - pixelCrop.x),\n Math.round(0 - safeArea / 2 + image.height * 0.5 - pixelCrop.y)\n );\n\n // As Base64 string\n // return canvas.toDataURL('image/jpeg');\n\n const base64Image = canvas.toDataURL(\"image/jpeg\");\n // const baseString = base64Image.substr(base64Image.indexOf(\",\") + 1);\n // localStorage.setItem('customLogo',base64Image)\n\n var userId = store.getState().user.currentUser.id;\n var db = firebase.firestore();\n db.collection(\"users\")\n .doc(`${userId}`)\n .update({\n customLogo: `${base64Image}`,\n })\n .then(function () {\n console.log(\"Document successfully written!\");\n })\n .catch(function (error) {\n console.error(\"Error writing document: \", error);\n });\n\n return base64Image;\n\n // As a blob\n // return new Promise(resolve => {\n // canvas.toBlob(file => {\n // resolve(URL.createObjectURL(file))\n // }, 'image/jpeg')\n // })\n}\n\nexport async function getRotatedImage(imageSrc, rotation = 0) {\n const image = await createImage(imageSrc);\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n\n const orientationChanged =\n rotation === 90 ||\n rotation === -90 ||\n rotation === 270 ||\n rotation === -270;\n if (orientationChanged) {\n canvas.width = image.height;\n canvas.height = image.width;\n } else {\n canvas.width = image.width;\n canvas.height = image.height;\n }\n\n ctx.translate(canvas.width / 2, canvas.height / 2);\n ctx.rotate((rotation * Math.PI) / 180);\n ctx.drawImage(image, -image.width / 2, -image.height / 2);\n\n return new Promise((resolve) => {\n canvas.toBlob((file) => {\n resolve(URL.createObjectURL(file));\n }, \"image/jpeg\");\n });\n}\n","import React, { useState, useCallback } from \"react\";\nimport Cropper from \"react-easy-crop\";\nimport Slider from \"@material-ui/lab/Slider\";\nimport Button from \"@material-ui/core/Button\";\nimport Typography from \"@material-ui/core/Typography\";\nimport { withStyles } from \"@material-ui/core/styles\";\nimport { getOrientation } from \"get-orientation/browser\";\n// import ImgDialog from \"./ImgDialog\";\nimport { getCroppedImg, getRotatedImage } from \"./canvasUtils\";\nimport { styles } from \"./styles\";\nimport imageCompression from \"browser-image-compression\";\n\n\nconst ORIENTATION_TO_ANGLE = {\n \"3\": 180,\n \"6\": 90,\n \"8\": -90,\n};\n\nconst Demo = ({ classes }) => {\n const [imageSrc, setImageSrc] = React.useState(null);\n const [crop, setCrop] = useState({ x: 0, y: 0 });\n const [rotation, setRotation] = useState(0);\n const [zoom, setZoom] = useState(1);\n const [croppedAreaPixels, setCroppedAreaPixels] = useState(null);\n // eslint-disable-next-line \n const [croppedImage, setCroppedImage] = useState(null);\n\n\n const onCropComplete = useCallback((croppedArea, croppedAreaPixels) => {\n setCroppedAreaPixels(croppedAreaPixels);\n }, []);\n\n const showCroppedImage = useCallback(async () => {\n try {\n const croppedImage = await getCroppedImg(\n imageSrc,\n croppedAreaPixels,\n rotation\n );\n console.log(\"donee\", { croppedImage });\n \n \n\n setCroppedImage(croppedImage);\n setImageSrc(null)\n \n\n\n } catch (e) {\n console.error(e);\n }\n\n }, [imageSrc, croppedAreaPixels, rotation]);\n\n // const onClose = useCallback(() => {\n // setCroppedImage(null);\n // }, []);\n\n const onFileChange = async (e) => {\n if (e.target.files && e.target.files.length > 0) {\n const file = e.target.files[0];\n\n // const imageFile = file;\n\n const options = {\n maxSizeMB: 1,\n maxWidthOrHeight: 1920,\n useWebWorker: true,\n };\n try {\n const compressedFile = await imageCompression(file, options);\n\n let imageDataUrl = await readFile(compressedFile);\n\n // apply rotation if needed\n const orientation = await getOrientation(compressedFile);\n const rotation = ORIENTATION_TO_ANGLE[orientation];\n if (rotation) {\n imageDataUrl = await getRotatedImage(imageDataUrl, rotation);\n }\n\n setImageSrc(imageDataUrl);\n } catch (error) {\n console.log(error);\n }\n }\n };\n\n return (\n
\n {imageSrc ? (\n \n
\n \n
\n
\n
\n \n Zoom\n \n setZoom(zoom)}\n />\n
\n
\n \n Rotation\n \n setRotation(rotation)}\n />\n
\n \n Save\n \n
\n {/* */}\n
\n ) : (\n \n )}\n
\n );\n};\n\nfunction readFile(file) {\n return new Promise((resolve) => {\n const reader = new FileReader();\n reader.addEventListener(\"load\", () => resolve(reader.result), false);\n reader.readAsDataURL(file);\n });\n}\n\nconst StyledDemo = withStyles(styles)(Demo);\n\nexport default StyledDemo;\n","export const styles = theme => ({\n cropContainer: {\n position: 'relative',\n width: '100%',\n height: 200,\n background: 'white',\n [theme.breakpoints.up('sm')]: {\n height: 400,\n },\n },\n cropButton: {\n flexShrink: 0,\n marginLeft: 16,\n },\n controls: {\n padding: 16,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'stretch',\n [theme.breakpoints.up('sm')]: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n },\n sliderContainer: {\n display: 'flex',\n flex: '1',\n alignItems: 'center',\n },\n sliderLabel: {\n [theme.breakpoints.down('xs')]: {\n minWidth: 65,\n },\n },\n slider: {\n padding: '22px 0px',\n marginLeft: 16,\n [theme.breakpoints.up('sm')]: {\n flexDirection: 'row',\n alignItems: 'center',\n margin: '0 16px',\n },\n },\n})\n","import React from \"react\";\nimport { connect } from \"react-redux\";\nimport firebase from \"../../utils/firebase/firebase.utils\";\nimport StyledDemo from \"./index\";\nimport ReactQr from \"react-awesome-qr\";\nimport {\n MDBContainer,\n MDBBtn,\n MDBModal,\n MDBModalBody,\n MDBModalFooter,\n MDBIcon\n} from \"mdbreact\";\n\nimport cardBack from \"./assets/card-back.png\";\n\nimport { fetchDesigns } from \"../../redux/designImages/designImages.actions\";\n\nclass CustomQr extends React.Component {\n state = {\n modal: false\n };\n\n toggle = () => {\n var db = firebase.firestore();\n this.props.fetchDesigns();\n\n this.setState({\n modal: !this.state.modal\n });\n db.collection(\"users\").doc(`${this.props.userId}`).update({\n customLogo: firebase.firestore.FieldValue.delete()\n });\n // .then(()=>{\n // db.collection(\"users\").doc(`${this.props.userId}`).update({\n // customQrImgPreview: firebase.firestore.FieldValue.delete()\n // })\n // })\n };\n\n generateQr() {\n var db = firebase.firestore();\n var database = firebase.database();\n\n const thing = (\n
\n \n // localStorage.setItem('customQrImg',data)\n db\n .collection(\"users\")\n .doc(`${this.props.userId}`)\n .update({\n customQrImgPreview: `${data}`\n })\n }\n />\n\n 4\n ? this.props.MyCardDirectURL\n : this.props.shortUrl\n }\n correctLevel={3}\n size={700}\n dotScale={0.7}\n margin={0}\n bgSrc={this.props.customLogo}\n callback={\n (data) =>\n database.ref(`designs/ + ${this.props.userId}`).update({\n customQrImg: `${data}`\n })\n\n // db\n // .collection(\"users\")\n // .doc(`${this.props.userId}`)\n // .update({\n // customQrImg: `${data}`\n // })\n }\n />\n
\n );\n\n return thing;\n }\n\n render() {\n return (\n \n \n \n \n\n \n \n \n\n {this.props.customLogo ? this.generateQr() : null}\n\n {this.props.customLogo ? (\n
\n \n \n
\n ) : null}\n
\n \n \n Close\n \n \n
\n
\n );\n }\n}\n\nconst mapStateToProps = ({ user }) => ({\n currentUser: user?.currentUser?.displayName,\n userId: user?.currentUser?.uid,\n customQrImg: user?.currentUser?.customQrImg,\n customQrImgPreview: user?.currentUser?.customQrImgPreview,\n customLogo: user?.currentUser?.customLogo,\n directLinksUrl: user?.currentUser?.directLinksUrl,\n shortUrl: user?.currentUser?.shortUrl,\n MyCardDirectURL: user?.currentUser?.MyCardDirectURL\n});\n\nconst mapDispatchToProps = (dispatch, ownProps) => {\n return {\n fetchDesigns: (payload) => {\n dispatch(fetchDesigns(payload));\n }\n };\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(CustomQr);\n","export const phoneOptions = [\n {\n value: \"Please select phone case...\",\n label: \"Select Your Phone Case...\",\n color: \"#00B8D9\",\n isDisabled: true\n },\n { value: \"iPhone 6 Plus\", label: \"iPhone 6 Plus\", color: \"#00B8D9\" },\n { value: \"iPhone 7 - 8\", label: \"iPhone 7 - 8\", color: \"#0052CC\" },\n {\n value: \"iPhone 7 Plus - 8 Plus\",\n label: \"iPhone 7 Plus - 8 Plus\",\n color: \"#5243AA\"\n },\n { value: \"iPhone 11\", label: \"iPhone 11\", color: \"#FF5630\" },\n { value: \"iPhone 11 Pro\", label: \"iPhone 11 Pro\", color: \"#FF8B00\" },\n { value: \"iPhone 11 Pro Max\", label: \"iPhone 11 Pro Max\", color: \"#FFC400\" },\n { value: \"iPhone X\", label: \"iPhone X\", color: \"#36B37E\" },\n { value: \"iPhone XR\", label: \"iPhone XR\", color: \"#00875A\" },\n { value: \"iPhone XS Max\", label: \"iPhone XS Max\", color: \"#253858\" },\n { value: \"Samsung Note 9\", label: \"Samsung Note 9\", color: \"#666666\" },\n { value: \"Samsung Note 10\", label: \"Samsung Note 10\", color: \"#5243AA\" },\n {\n value: \"Samsung Note 10 Plus\",\n label: \"Samsung Note 10 Plus\",\n color: \"#FF5630\"\n },\n { value: \"Samsung S8 Plus\", label: \"Samsung S8 Plus\", color: \"#FF8B00\" },\n { value: \"Samsung S9\", label: \"Samsung S9\", color: \"#36B37E\" },\n { value: \"Samsung S9 Plus\", label: \"Samsung S9 Plus\", color: \"#00875A\" },\n { value: \"Samsung S10\", label: \"Samsung S10\", color: \"#253858\" },\n { value: \"Samsung S10E\", label: \"Samsung S10E\", color: \"#666666\" },\n { value: \"Samsung S20 Plus\", label: \"Samsung S20 Plus\", color: \"#666666\" }\n];\n","export const addObject = (payload) => {\n return {\n type: \"OBJECT/ADD\",\n payload\n };\n};\n\nexport const updateSequence = (payload) => {\n return {\n type: \"OBJECT/SEQUENCE\",\n payload\n };\n};\n\nexport const selectedObject = (payload) => {\n return {\n type: \"OBJECT/SELECTED\",\n payload\n };\n};\n\nexport const releasedObject = (payload) => {\n return {\n type: \"OBJECT/RELEASED\",\n payload\n };\n};\n\nexport const updateObject = (payload) => {\n return {\n type: \"OBJECT/UPDATE\",\n payload\n };\n};\n\nexport const deleteObject = (payload) => {\n return {\n type: \"OBJECT/DELETE\",\n payload\n };\n};\n\nexport const setObject = (payload) => {\n return {\n type: \"OBJECT/SET\",\n payload\n };\n};\n","import React, { Component } from \"react\";\nimport Select from \"react-select\";\nimport { phoneOptions } from \"./PhoneData\";\n\nimport { connect } from \"react-redux\";\nimport { addObject, updateObject } from \"../../../redux/object/object.actions\";\n\nclass PhoneCase extends Component {\n componentDidMount() {}\n\n componentDidUpdate() {}\n\n selectPhoneCase = (selectedOption) => {\n var ImageURL =\n window.location.origin +\n \"/assets/images/PhoneCase/\" +\n selectedOption.value +\n \"/PNG File/sample (1).png\";\n this.props.changeCase(ImageURL, selectedOption.value);\n };\n\n render() {\n const customStyles = {\n option: (provided, state) => ({\n ...provided,\n borderBottom: \"2px solid black\",\n backgroundColor: state.isSelected ? \"gray\" : \"white\",\n position: \"relative !important\"\n }),\n control: (provided) => ({\n ...provided,\n marginTop: \"5%\"\n })\n };\n\n return (\n \n );\n }\n}\n\nconst mapStateToProps = (state, ownProps) => {\n return {\n objects: state.objects\n };\n};\n\nconst mapDispatchToProps = (dispatch, ownProps) => {\n return {\n addPhoneCase: (payload) => {\n dispatch(addObject(payload));\n },\n updateObject: (payload) => {\n dispatch(updateObject(payload));\n }\n };\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(PhoneCase);\n","export const toggleDesignState = (payload) => {\n return {\n type: \"CANVAS/DESIGNING\",\n payload\n };\n};\n\nexport const setManager = (payload) => {\n return {\n type: \"CANVAS/MANAGER\",\n payload\n };\n};\n\nexport const configViewport = (payload) => {\n return {\n type: \"CANVAS/CONFIG_VIEWPORT\",\n payload: payload\n };\n};\n\nexport const zoom = (payload) => {\n return {\n type: \"CANVAS/ZOOM\",\n payload: payload\n };\n};\n\nexport const pan = (payload) => {\n return {\n type: \"CANVAS/PAN\",\n payload: payload\n };\n};\n\nexport const toggleToolbar = (payload) => {\n return {\n type: \"TOOLBAR/TOGGLE\",\n payload: payload\n };\n};\n\nexport const changeDesignType = (payload) => {\n return {\n type: \"CANVAS/DESIGNTYPE\",\n payload: payload\n };\n};\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\n\nimport \"./splash.styles.scss\";\n\nconst Splash = () => {\n return ReactDOM.createPortal(\n
\n
\n

MyTap

\n

Loading...

\n
\n
,\n document.getElementById(\"splash\")\n );\n};\n\nexport default Splash;\n","import React from \"react\";\nimport { connect } from \"react-redux\";\nimport { useHistory } from \"react-router-dom\";\n// import { MDBMedia, MDBBtn } from \"mdbreact\";\nimport {\n MDBMedia,\n MDBCard,\n MDBContainer,\n MDBCardBody,\n MDBCardImage,\n MDBCardTitle,\n MDBCardText,\n MDBTooltip,\n MDBCardFooter,\n MDBBtn,\n MDBLink,\n MDBIcon\n} from \"mdbreact\";\n\nimport { Carousel } from \"react-bootstrap\";\n\nimport firebase from \"../../utils/firebase/firebase.utils\";\nimport GoogleReview from \"../google-review/googleReview\"\nimport CustomQr from \"../../components/customQr/customQr\";\nimport PhoneCase from \"../../components/design-tools/phonecase\";\nimport {\n toggleDesignState,\n changeDesignType\n} from \"../../redux/drawing-area/drawing-area.actions\";\nimport { setObject, addObject } from \"../../redux/object/object.actions\";\nimport { defaultRedirect } from \"../../redux/routing/routing.actions\";\nimport { fetchDesigns } from \"../../redux/designImages/designImages.actions\";\n\nimport API2 from \"../../components/generateQr/generateQR\";\n\nimport { CircularProgress, Box } from \"@material-ui/core\";\n\n// Stripe\nimport { CardElement, ElementsConsumer } from \"@stripe/react-stripe-js\";\n\n//\n\nimport \"./Shop.styles.scss\";\nimport {\n createSession,\n createStripeCustomer\n} from \"../../utils/firebase/firebase.utils\";\nimport { updateUser } from \"../../redux/user/user.actions\";\n\nimport Splash from \"../splash/splash\";\n\nimport basicCard from \"./assets/images/IDCard/mytapcard.png\";\nimport cardBack from \"./assets/images/IDCard/card-back.png\";\nimport customCard from \"./assets/images/IDCard/customcard.png\";\nimport customCardYours from \"./assets/images/IDCard/customcardyours.png\";\n\n\n\n// import RangewaterCardTemplate from \"../../components/renderDirectCardImage/imgs/RW3.png\";\n\nconst RouterButton = ({ path, label, click, disabled, productType }) => {\n let history = useHistory();\n function handleClick() {\n click();\n history.push(path);\n }\n return (\n \n {label}\n \n );\n};\n\nclass ShopPage extends React.Component {\n state = {\n caseURL: \"/assets/images/PhoneCase/iPhone 6 Plus/PNG File/sample (1).png\",\n caseName: \"iPhone 6 Plus\",\n cardURL: \"/assets/images/IDCard/idcard better.png\",\n selectedPhoneCase: \"\",\n addedPhone: false,\n MyCardClassic: false,\n MyCard: false,\n MyCase: false,\n bandColor: \"\",\n MyCardDirect: false,\n MyCardDirectURL: \"\",\n loading: false,\n classicSelectedIndex: \"\",\n customSelectedIndex: \"\"\n };\n\n componentDidMount() {\n this.props.defaultRedirect();\n this.props.fetchDesigns();\n\n setTimeout(() => {\n if (this.props.MyCardDirectURL) {\n this.setState({ MyCardDirectURL: this.props.MyCardDirectURL });\n } else {\n this.setState({ MyCardDirectURL: \"\" });\n }\n }, 2000);\n }\n\n // Redirect to fulfillment page when applicable\n componentDidUpdate() {\n if (\n this.props.currentUser &&\n this.props.currentUser?.role === \"fulfillment\"\n ) {\n this.props.history.push(\"/fulfillment\");\n }\n if (this.props.currentUser?.email === \"rangewater@gmail.com\") {\n this.props.history.push(\"/rangewater-order\");\n }\n if (this.props.currentUser.email === \"marmenta@galleryresidential.com\") {\n this.props.history.push(\"/gallery-residential\");\n }\n if (this.props.currentUser?.email === \"ksarvis@columbiares.com\") {\n this.props.history.push(\"/columbia-residential-order\");\n }\n if (this.props.currentUser?.isEnterprise) {\n this.props.history.push(\"/enterprise\");\n }\n // this.props.fetchDesigns();\n if (this.state.MyCardDirect === false) {\n this.resetDirectUrlInput();\n }\n }\n\n open = () => {\n let objects = JSON.parse(window.localStorage.getItem(\"phoneState\"));\n\n this.props.openScene(objects);\n let oneself = this;\n setTimeout(function () {\n oneself.props.sceneManager.releaseObject();\n oneself.props.toggleDesignState(true);\n }, 1);\n };\n\n setDesignState(pType) {\n this.props.initScene([]);\n let designType = {\n type: pType,\n path:\n pType === \"card\"\n ? this.state.cardURL\n : pType === \"phone\"\n ? this.state.caseURL\n : \"\",\n name: pType === \"card\" ? \"\" : this.state.caseName,\n phoneCase:\n pType === \"card\"\n ? null\n : pType === \"phone\"\n ? this.state.selectedPhoneCase\n : \"\"\n };\n this.props.changeDesignType(designType);\n this.props.toggleDesignState(true);\n }\n\n changeCase(pUrl, pName, selectedPhoneCase) {\n this.setState({\n caseURL: pUrl,\n caseName: pName\n });\n this.setState({ addedPhone: true });\n this.setState({ selectedPhoneCase });\n }\n\n customQrCheckbox = (event) => {\n // console.log(event.target.name, event.target.checked);\n const { name, checked } = event.target;\n this.setState({ [name]: checked });\n };\n\n onDirectURLChange = (e) => {\n const { name, value } = e.target;\n this.setState({ [name]: value });\n };\n\n bandColorChangeHandler(event) {\n // alert(event.target.value)\n this.setState({ bandColor: event.target.value });\n }\n\n directURLToDB(e) {\n var db = firebase.firestore();\n db.collection(\"users\")\n .doc(`${this.props.userId}`)\n .update({\n MyCardDirectURL: this.state.MyCardDirectURL.toString()\n })\n .then(() => {\n API2.generateQR();\n });\n }\n\n resetDirectUrlInput() {\n var db = firebase.firestore();\n db.collection(\"users\").doc(`${this.props.userId}`).update({\n MyCardDirectURL: \"\"\n });\n }\n\n renderCustomQrCardImg() {\n var canvas = document.getElementById(\"canvas2\");\n if (!canvas || !canvas.getContext) {\n return false;\n }\n canvas.width = 2.5 * 445;\n canvas.height = 2.5 * 280;\n var ctx = canvas.getContext(\"2d\");\n var img1 = new Image();\n var img2 = new Image();\n img1.src = cardBack;\n img2.src = this.props.customQrImgPreview;\n img1.onload = function () {\n ctx.drawImage(img1, 0, 0, 2.5 * 445, 2.5 * 280);\n };\n img2.onload = function () {\n ctx.drawImage(img2, 2.5 * 151, 2.5 * 65, 2.5 * 147, 2.5 * 147);\n };\n setTimeout(() => {\n const img = canvas.toDataURL(\"image/png\");\n localStorage.setItem(\"customQrCardImg\", img);\n }, 500);\n }\n\n handleSelect = (selectedIndex) => {\n this.setState({\n classicSelectedIndex: selectedIndex\n });\n };\n handleSelect2 = (selectedIndex) => {\n this.setState({\n customSelectedIndex: selectedIndex\n });\n };\n\n render() {\n const { currentUser } = this.props.user;\n\n if (!currentUser) {\n return ;\n }\n\n if (this.state.loading)\n return (\n \n \n \n );\n\n return (\n \n
\n

Shop

\n

\n Fully-customizable, with\n more exciting products on the way! Create yours today.\n

\n
\n\n
\n
\n \n \n
\n \n
\n {/* \n
Frontside
\n
*/}\n
\n\n \n {!this.state.MyCardClassic\n ? null\n : this.renderCustomQrCardImg()}\n {!this.state.MyCardClassic ? (\n \n ) : (\n \n )}\n {/* \n
Backside
\n
*/}\n
\n \n \n \n {this.state.classicSelectedIndex === 1? \n Pre-Designed Card-Back\n : Pre-Designed Card-Front}\n \n \n {this.state.classicSelectedIndex === 1 ? (\n
\n \n \n
\n ) : null}\n
\n \n \n {this.state.MyCardClassic === true ? (\n
$25
\n ) : (\n
$20
\n )}\n
\n \n {this.state.MyCardClassic === true ? (\n \n \n \n \n
Create your custom QR-Code!
\n
\n ) : null}\n\n \n \n \n {({ stripe, elements }) => (\n {\n this.setState({ loading: true });\n e.preventDefault();\n if (!currentUser.stripeCustomerId) {\n return await createStripeCustomer(\n currentUser\n ).then(async () => {\n const session = await createSession(\n `${\n this.state.MyCardClassic === true\n ? \"MyCard Classic + QR\"\n : \"MyCard Classic\"\n }`,\n currentUser.uid\n );\n stripe.redirectToCheckout({\n sessionId: session.data.id\n });\n console.log(\"session\", session);\n });\n } else {\n const session = await createSession(\n `${\n this.state.MyCardClassic === true\n ? \"MyCard Classic + QR\"\n : \"MyCard Classic\"\n }`,\n currentUser.uid\n );\n stripe.redirectToCheckout({\n sessionId: session.data.id\n });\n console.log(\"session\", session);\n }\n }}\n >\n \n \n \n \n )}\n \n \n
Buy!
\n
\n
\n
\n
\n
\n\n
\n \n \n
\n \n
\n \n
\n\n \n {!this.state.MyCard ? null : this.renderCustomQrCardImg()}\n {!this.state.MyCard ? (\n \n ) : (\n \n )}\n \n \n \n\n \n \n {this.state.customSelectedIndex === 1? \n Customizable Card-Back\n : Customizable Card-Front}\n \n \n {this.state.customSelectedIndex === 1 ? (\n
\n \n \n
\n ) : null}\n
\n \n \n {this.state.MyCard === true &&\n this.state.MyCardDirect === true ? (\n
$40
\n ) : this.state.MyCardDirect === true ? (\n
$30
\n ) : this.state.MyCard === true ? (\n
$45
\n ) : (\n
$40
\n )}\n
\n \n {this.state.customSelectedIndex != 1 ? (\n \n \n {/* {\n this.setDesignState(\"card\");\n }}\n productType=\"card\"\n /> */}\n this.setDesignState(\"card\")}\n productType=\"card\"\n link\n >\n \n \n \n
DESIGN YOUR CARD!
\n
\n ) : null}\n\n {this.state.MyCard === true ? (\n \n \n \n \n
Create your custom QR-Code!
\n
\n ) : null}\n\n \n \n \n {({ stripe, elements }) => (\n {\n // this.directURLToDB();\n this.setState({ loading: true });\n e.preventDefault();\n if (!currentUser.stripeCustomerId) {\n return await createStripeCustomer(\n currentUser\n ).then(async () => {\n const session = await createSession(\n `${\n // this.state.MyCard === true ? \"card + QR\" : \"card\"\n this.state.MyCard === true &&\n this.state.MyCardDirect === true\n ? \"MyCard Direct + QR\"\n : this.state.MyCardDirect === true\n ? \"MyCard Direct\"\n : this.state.MyCard === true\n ? \"card + QR\"\n : \"card\"\n }`,\n currentUser.uid\n );\n stripe.redirectToCheckout({\n sessionId: session.data.id\n });\n console.log(\"session\", session);\n });\n } else {\n const session = await createSession(\n `${\n this.state.MyCard === true &&\n this.state.MyCardDirect === true\n ? \"MyCard Direct + QR\"\n : this.state.MyCardDirect === true\n ? \"MyCard Direct\"\n : this.state.MyCard === true\n ? \"card + QR\"\n : \"card\"\n }`,\n currentUser.uid\n );\n stripe.redirectToCheckout({\n sessionId: session.data.id\n });\n console.log(\"session\", session);\n }\n }}\n >\n \n \n \n \n )}\n \n \n
Buy!
\n
\n
\n
\n
\n
\n\n {/*
\n

MyCase Custom

\n \n\n
\n
\n \n
\n
\n {\n this.setDesignState(\"phone\");\n }}\n disabled={!this.state.addedPhone}\n productType=\"phonecase\"\n />\n
\n \n {({ stripe, elements }) => (\n {\n e.preventDefault();\n\n if (!currentUser.stripeCustomerId) {\n return await createStripeCustomer(currentUser).then(\n async () => {\n const session = await createSession(\n `${\n this.state.MyCase === true\n ? \"phoneCase + QR\"\n : \"phoneCase\"\n }`\n );\n stripe.redirectToCheckout({\n sessionId: session.data.id\n });\n console.log(\"session\", session);\n }\n );\n } else {\n const session = await createSession(\n `${\n this.state.MyCase === true\n ? \"phoneCase + QR\"\n : \"phoneCase\"\n }`\n );\n stripe.redirectToCheckout({\n sessionId: session.data.id\n });\n console.log(\"session\", session);\n }\n }}\n >\n\n \n Buy\n \n \n )}\n \n\n {this.state.MyCase === true ? (\n
$70
\n ) : (\n
$60
\n )}\n\n
\n \n \n
\n\n {this.state.MyCase === true ? : null}\n
*/}\n\n
\n \n\n \n \n MyBand\n \n \n
\n
\n \n \n\n \n\n \n \n
\n
\n
\n \n \n
$10
\n
\n \n \n \n \n {({ stripe, elements }) => (\n {\n this.setState({ loading: true });\n e.preventDefault();\n\n if (!currentUser.stripeCustomerId) {\n return await createStripeCustomer(\n currentUser\n ).then(async () => {\n const session = await createSession(\n `${\n this.state.bandColor === \"white\"\n ? \"MyBand - White\"\n : \"MyBand - Black\"\n }`,\n currentUser.uid\n );\n stripe.redirectToCheckout({\n sessionId: session.data.id\n });\n console.log(\"session\", session);\n });\n } else {\n const session = await createSession(\n `${\n this.state.bandColor === \"white\"\n ? \"MyBand - White\"\n : \"MyBand - Black\"\n }`,\n currentUser.uid\n );\n stripe.redirectToCheckout({\n sessionId: session.data.id\n });\n console.log(\"session\", session);\n }\n }}\n >\n \n \n \n \n )}\n \n \n
Buy!
\n
\n
\n
\n
\n
\n\n
\n \n \n \n
\n\n\n
\n
\n );\n }\n}\n\nconst mapStateToProps = (state, ownProps) => {\n // console.log('dddddd',state.user)\n return {\n user: state.user,\n email: state.email,\n objects: state.objects,\n sceneManager: state.sceneManager,\n // phone: state.user.currentUser?.phone,\n // card: state.user.currentUser?.card,\n currentUser: state.user?.currentUser,\n phone: state?.designImages[0]?.phone,\n card: state?.designImages[0]?.card,\n userId: state.user.currentUser?.id,\n MyCardDirectURL: state.user.currentUser?.MyCardDirectURL,\n reviewCardUploadedLogo: state.user.currentUser?.reviewCardUploadedLogo,\n formData: state.user.currentUser?.formData,\n QrImg: state.user.currentUser?.QrImg,\n customQrImgPreview: state.user.currentUser?.customQrImgPreview\n };\n};\n\nconst mapDispatchToProps = (dispatch, ownProps) => {\n return {\n openScene: (payload) => {\n dispatch(setObject(payload));\n },\n toggleDesignState: (payload) => {\n dispatch(toggleDesignState(payload));\n },\n initScene: (payload) => {\n dispatch(setObject(payload));\n },\n addObject: (payload) => {\n dispatch(addObject(payload));\n },\n changeDesignType: (payload) => {\n dispatch(changeDesignType(payload));\n },\n updateUser: (payload) => {\n dispatch(updateUser(payload));\n },\n defaultRedirect: () => {\n dispatch(defaultRedirect());\n },\n fetchDesigns: (payload) => {\n dispatch(fetchDesigns(payload));\n }\n };\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ShopPage);\n","import React, { Component } from \"react\";\nimport { MDBNavbar, MDBIcon, MDBModal, MDBContainer } from \"mdbreact\";\nimport { connect } from \"react-redux\";\nimport { withRouter } from \"react-router-dom\";\n\nimport \"./NavHeader.styles.scss\";\n\nclass NavHeader extends Component {\n state = {\n collapseID: \"\",\n QRmodal: false,\n };\n\n\n toggleCollapse = (collapseID) => () =>\n this.setState((prevState) => ({\n collapseID: prevState.collapseID !== collapseID ? collapseID : \"\"\n }));\n\n toggleQR = () => {\n this.setState({\n QRmodal: !this.state.QRmodal\n });\n };\n\n renderIcon = () => {\n const routes = window.location.href.split(\"/\");\n\n if (routes.includes(\"design\")) {\n return (\n
\n this.props.history.goBack()}\n />\n
\n );\n } else {\n return (\n \n );\n }\n };\n\n render() {\n return (\n \n {this.renderIcon()}\n\n {!this.props.currentUser || \n this.props.currentUser.role === \"fulfillment\" ||\n this.props.currentUser.email === \"americanrooterservices@gmail.com\" ||\n this.props.currentUser.email === \"rangewater@gmail.com\" ||\n this.props.currentUser.email === \"sugarcoatops@gmail.com\" ||\n this.props.currentUser.email === \"marmenta@galleryresidential.com\" ||\n this.props.currentUser.email === \"ksarvis@columbiares.com\" ? \n\n (MyTap.net) \n : \n this.toggleQR()}>\n {\" \"}\n \n }\n\n\n \n \n \n \n \n \n \n\n \n \n \n \n \n );\n }\n}\n\n// const mapStateToProps = ({ user: { currentUser } }) => ({ currentUser });\n\nconst mapStateToProps = (state, ownProps) => {\n // console.log('dddddd',state.designImages[0])\n return {\n currentUser: state.user?.currentUser,\n customQrImg: state?.designImages[0]?.customQrImg,\n };\n};\n\n\nexport default withRouter(connect(mapStateToProps)(NavHeader));\n","import React from \"react\";\nimport { MDBIcon } from \"mdbreact\";\nimport { Link } from \"react-router-dom\";\n\nconst SideNavLink = ({ toggleSideNav, route, icon, label }) => {\n return (\n \n \n

{label}

\n \n );\n};\n\nexport default SideNavLink;\n","import React from \"react\";\nimport { MDBIcon, MDBModal, MDBModalBody, MDBBtn } from \"mdbreact\";\nimport { auth } from \"../../utils/firebase/firebase.utils\";\n\nconst LogoutModal = ({ isOpen, toggleModal, history, toggleSideNav }) => {\n const onLogoutClick = async (e) => {\n e.preventDefault();\n toggleSideNav();\n toggleModal(false);\n history.push(\"/\");\n await auth.signOut();\n };\n\n return (\n \n {/* toggleModal(false)}> */}\n \n \n Log Out \n \n \n \n );\n};\n\nexport default LogoutModal;\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { connect } from \"react-redux\";\nimport { MDBIcon, MDBContainer, MDBModal, MDBModalBody } from \"mdbreact\";\nimport { Link } from \"react-router-dom\";\nimport { withRouter } from \"react-router-dom\";\nimport firebase from \"../../utils/firebase/firebase.utils\";\n\nimport SideNavLink from \"./SideNavLink\";\nimport LogoutModal from \"./LogoutModal\";\nimport LoginModal from \"../../pages/landing/LoginModal/LoginModal\";\nimport Switch from \"@material-ui/core/Switch\";\n\nimport \"./SideNav.styles.scss\";\n\nclass Sidenav extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n modalOpen: false,\n loginModalOpen: false,\n QRmodal: false,\n checked: false\n };\n }\n\n componentDidUpdate() {\n if (this.props.currentUser && this.state.loginModalOpen) {\n this.toggleLoginModal();\n }\n var db = firebase.firestore();\n if (this.props.adminControl && this.state.checked === true) {\n db.collection(\"users\").doc(`${this.props.userId}`).update({\n isEnterprise: true\n });\n }\n else if ((this.props.adminControl)) {\n db.collection(\"users\").doc(`${this.props.userId}`).update({\n isEnterprise: false\n });\n } else{\n \n }\n }\n\n // toggleQR = () => {\n // this.setState({\n // QRmodal: !this.state.QRmodal\n // });\n // };\n\n toggleModal = () => {\n this.setState((prevState) => ({ modalOpen: !prevState.modalOpen }));\n };\n\n toggleLoginModal = () => {\n this.setState((prevState) => ({\n loginModalOpen: !prevState.loginModalOpen\n }));\n };\n\n handleSwitchChange = () => {\n this.setState({ checked: !this.state.checked });\n };\n\n authenticatedLinks = (roleLinkRenderer) => (\n
\n {this.props.currentUser.role === \"fulfillment\" ||\n this.props.currentUser.email === \"americanrooterservices@gmail.com\" ||\n this.props.currentUser.email === \"rangewater@gmail.com\" ||\n this.props.currentUser.email === \"sugarcoatops@gmail.com\" ||\n this.props.currentUser.email === \"marmenta@galleryresidential.com\" ||\n this.props.currentUser.email === \"ksarvis@columbiares.com\" ? null : (\n <>\n \n {/*
this.toggleQR()}>\n {\" \"}\n

QR CODE

\n
\n \n \n \n \n \n \n \n \n \n */}\n\n \n \n \n )}\n\n {roleLinkRenderer()}\n\n {this.props.adminControl ?\n this.handleSwitchChange()}\n />\n :null}\n\n
\n {\n this.toggleModal();\n }}\n />\n

Log Out

\n
\n
\n );\n\n renderLinks = () => {\n return this.props.currentUser ? (\n this.authenticatedLinks(this.renderRoleLink)\n ) : (\n
\n {/* */}\n \n\n
\n {\n this.toggleLoginModal();\n }}\n />\n

Log In

\n
\n
\n );\n };\n\n renderRoleLink = () => {\n switch (this.props.currentUser.role) {\n case \"enterprise\":\n return (\n \n );\n case \"admin\":\n return (\n \n );\n case \"sales admin\":\n return (\n \n );\n case \"sales\":\n return (\n \n );\n default:\n return null;\n }\n };\n\n render() {\n const routes = window.location.href.split(\"/\");\n\n if (routes.includes(\"design\")) {\n return null;\n }\n\n return ReactDOM.createPortal(\n \n \n \n \n \n \n {this.renderLinks()}\n ,\n document.getElementById(\"sidenav\")\n );\n }\n}\n\n// const mapStateToProps = ({ user: { currentUser } }) => ({ currentUser });\n\nconst mapStateToProps = (state, ownProps) => {\n // console.log('dddddd',state.designImages[0])\n return {\n currentUser: state.user?.currentUser,\n userId: state.user.currentUser?.uid,\n adminControl: state.user.currentUser?.adminControl,\n customQrImg: state?.designImages[0]?.customQrImg\n };\n};\n\nconst ConnectedSideNav = withRouter(connect(mapStateToProps)(Sidenav));\n\nexport default React.forwardRef((props, ref) => (\n \n));\n","import React from \"react\";\n\nimport NavHeader from \"./NavHeader\";\nimport SideNav from \"./SideNav\";\n\nclass Nav extends React.Component {\n constructor(props) {\n super(props);\n this.childRef = React.createRef();\n this.state = {\n sideNavHidden: true\n };\n }\n\n handleClick = () => {\n if (this.state.sideNavHidden) {\n // attach/remove event handler\n document.addEventListener(\"click\", this.handleOutsideClick, false);\n } else {\n document.removeEventListener(\"click\", this.handleOutsideClick, false);\n }\n\n this.toggleSideNav();\n };\n\n handleOutsideClick = (e) => {\n // do nothing on design page\n const routes = window.location.href.split(\"/\");\n if (routes.includes(\"design\")) {\n return null;\n }\n\n // ignore clicks on the component itself\n if (this.childRef.contains(e.target)) {\n return;\n }\n\n this.handleClick();\n };\n\n toggleSideNav = () => {\n this.setState((prevState) => ({ sideNavHidden: !prevState.sideNavHidden }));\n };\n\n render() {\n return (\n
\n \n {\n this.childRef = node;\n }}\n hidden={this.state.sideNavHidden}\n toggleSideNav={this.handleClick}\n />\n
\n );\n }\n}\n\nexport default Nav;\n","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport { MDBRow, MDBContainer, MDBIcon, MDBCard } from \"mdbreact\";\nimport { Link } from \"react-router-dom\";\n\nimport \"./dashboard.scss\";\n\nclass Dashboard extends Component {\n render() {\n return (\n \n \n \n \n \n

Add your info

\n \n
\n \n \n \n

Enter our shop

\n \n
\n
\n
\n );\n }\n}\n\nconst mapStateToProps = ({ user }) => ({\n currentUser: user.currentUser.displayName\n});\n\nexport default connect(mapStateToProps)(Dashboard);\n","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport { addObject } from \"../../../redux/object/object.actions\";\n\nclass Image extends Component {\n\n state = {\n imgInfo : {\n file: null,\n imageURL: \"\",\n },\n }\n\n componentDidMount() {}\n\n componentDidUpdate() {}\n\n selectImage = (e) => {\n e.preventDefault();\n\n let reader = new FileReader();\n let file = e.target.files[0];\n let _this = this;\n let _fileInput = e.target;\n\n reader.onloadend = () => {\n let imgInfo = {\n file: file,\n imageURL: reader.result,\n };\n \n this.setState({imgInfo : imgInfo});\n _this.props.addImage({\n id : Math.floor(Math.random()*10000)+'_'+ new Date().getTime(),\n kind : \"Image\",\n type : 'image',\n url : imgInfo.imageURL,\n })\n\n _fileInput.value = \"\";\n };\n\n reader.readAsDataURL(file);\n };\n\n render() {\n return (\n
\n this.selectImage(e)} />\n {/* */}\n
\n );\n }\n}\n\nconst mapStateToProps = (state, ownProps) => {\n return {\n // prop: state.prop\n }\n}\n\nconst mapDispatchToProps = (dispatch, ownProps) => {\n return {\n addImage: (payload) => {\n dispatch(addObject(payload))\n }\n }\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Image);\n","import React, { Component } from \"react\";\nimport { Button } from \"react-bootstrap\";\nimport FontAwesome from \"react-fontawesome\";\n\nimport { connect } from \"react-redux\";\nimport { addObject } from \"../../../redux/object/object.actions\";\n\nclass Text extends Component {\n\n componentDidMount() {}\n\n componentDidUpdate() {}\n\n addTextItem(){\n let payloadObject = {\n id : Math.floor(Math.random()*10000)+'_'+ new Date().getTime(),\n kind : 'Text',\n type : 'text',\n text : 'Default Text',\n }\n this.props.addText(payloadObject);\n }\n\n render() {\n return (\n
\n \n
\n );\n }\n}\n\nconst mapStateToProps = (state, ownProps) => {\n return {\n // prop: state.prop\n }\n}\n\nconst mapDispatchToProps = (dispatch, ownProps) => {\n return {\n addText: (payload) => {\n dispatch(addObject(payload))\n }\n }\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Text);\n","import React, { Component } from \"react\";\n\nimport { connect } from \"react-redux\";\nimport { addObject } from \"../../../redux/object/object.actions\";\n\nclass Shape extends Component {\n componentDidMount() {}\n\n componentDidUpdate() {}\n\n addShapeItem(pType){\n this.props.addShape({\n id : Math.floor(Math.random()*10000)+'_'+ new Date().getTime(),\n kind : \"Shape\",\n type : pType,\n })\n }\n\n render() {\n return (\n
\n \n \n \n \n
\n );\n }\n}\n\nconst mapStateToProps = (state, ownProps) => {\n return {\n // prop: state.prop\n }\n}\n\nconst mapDispatchToProps = (dispatch, ownProps) => {\n return {\n addShape : (payload) => {\n dispatch(addObject(payload))\n }\n }\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Shape);\n","import React from \"react\";\nimport { List} from \"react-movable\";\n\nimport { connect, useSelector } from \"react-redux\";\nimport { MDBMedia } from \"mdbreact\";\n\nimport {\n updateSequence,\n releasedObject,\n selectedObject\n} from \"../../../redux/object/object.actions\";\n\nfunction Layer({\n objects,\n activedObject,\n lastAction,\n sceneManager,\n canvas,\n updateSequence,\n releasedObject,\n selectedObject,\n}) {\n const { items } = useSelector((state) => ({\n items: state.objects.slice(1, state.objects.length).map((el) => {\n let img = sceneManager.getImgDataObject(el.id);\n el.img = img;\n return el;\n }),\n }));\n\n const changed = (oldIndex, newIndex) => {\n updateSequence({\n sourceIdx: oldIndex + 1,\n targetIdx: newIndex + 1,\n });\n sceneManager.updateSequence({\n sourceIdx: oldIndex,\n targetIdx: newIndex,\n });\n };\n\n return (\n changed(oldIndex, newIndex)}\n renderList={({ children, props, isDragged }) => (\n \n {children}\n \n )}\n renderItem={({ value, props, isDragged, isSelected }) => (\n \n {/* {value.kind+\" : \"} */}\n \n \n )}\n />\n );\n}\n\nconst mapStateToProps = (state, ownProps) => {\n return {\n objects: state.objects,\n lastAction: state.lastAction,\n activedObject: state.activedObject,\n sceneManager: state.sceneManager,\n canvas: state.canvas,\n };\n};\n\nconst mapDispatchToProps = (dispatch, ownProps) => {\n return {\n updateSequence: (payload) => {\n dispatch(updateSequence(payload));\n },\n releasedObject: (payload) => {\n dispatch(releasedObject(payload));\n },\n selectedObject: (payload) => {\n dispatch(selectedObject(payload));\n },\n };\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Layer);\n","import React from 'react';\nimport { connect } from 'react-redux';\n\nimport Image from \"./uploadimage\";\nimport Text from \"./text\";\nimport Shape from \"./shape\";\nimport Layer from \"./layer\";\n\n// import { toggleDesignState, toggleToolbar } from '../DrawingAreaReducer';\n\nclass ItemPanel extends React.Component{\n state = {\n statePanel : 'hide',\n }\n\n // hidePanel(){\n // this.props.toggleDesignState(true);\n // this.props.toggleToolbar('hide');\n // }\n\n // addedPhoneCase(){\n // this.setState({addedPhone:true})\n // }\n\n UNSAFE_componentWillReceiveProps(newProps){\n this.updatePanelState('show', newProps);\n }\n\n UNSAFE_componentWillMount(){\n this.updatePanelState();\n }\n\n updatePanelState(pHide='show', newProps=undefined){\n let state = 'hide';\n if(newProps!==undefined){\n if(newProps.activeTool!=='layer'){\n state = newProps.stateToolbar;\n }else{\n state = pHide;\n\n }\n }else{\n if(this.props.activeTool!=='layer'){\n state = this.props.stateToolbar;\n }else{\n state = pHide;\n }\n }\n this.setState({statePanel:state});\n }\n\n render (){\n return (\n
\n {this.props.activeTool===\"image\" && }\n {this.props.activeTool===\"text\" && }\n {this.props.activeTool===\"shape\" && }\n {this.props.activeTool===\"layer\" && }\n {this.props.activeTool===\"layer\" && }\n
\n )\n \n }\n}\n\nconst mapStateToProps = (state, ownProps) => {\n return {\n stateToolbar : state.stateToolbar,\n mobile : state.mobile,\n }\n}\n\nconst mapDispatchToProps = (dispatch, ownProps) => {\n return {\n // toggleDesignState : (payload)=>{\n // dispatch(toggleDesignState(payload))\n // },\n // toggleToolbar : (payload)=>{\n // dispatch(toggleToolbar(payload))\n // }\n }\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ItemPanel);","const fonts = [\n 'Adobe Arabic',\n 'Adobe Caslon Pro',\n 'Adobe Fan Heiti Std',\n 'Adobe Fangsong Std',\n 'Adobe Garamond Pro',\n 'Adobe Gothic Std',\n 'Adobe Hebrew',\n 'Adobe Heiti Std',\n 'Adobe Kaiti Std',\n 'Adobe Ming Std',\n 'Adobe Myungjo Std',\n 'Adobe Song Std',\n 'Allura',\n 'Amatic SC',\n 'Arial',\n 'Bahnscrift',\n 'Birch Std',\n 'Blackoak Std',\n 'Book Antiqua',\n 'Bookman Old Style',\n 'Bookshelf Symbol',\n 'Brush Script Std',\n 'Calibri',\n 'Cambria',\n 'Cambria Math',\n 'Candara',\n 'Century',\n 'Chaparral Pro',\n 'Charlemagne Std',\n 'Comic Sans MS',\n 'Consolas',\n 'Constantia',\n 'Cooper Std',\n 'Corbel',\n 'Courier New',\n 'DengXian',\n 'Ebrima',\n 'FangSong',\n 'Franklin Gothic',\n 'Gabriola',\n 'Gadugi',\n 'Garamond',\n 'Georgia',\n 'Giddyup Std',\n 'Hobo Std',\n 'HoloLens MDL2 Assets',\n 'Impact',\n 'Ink Free',\n 'Javanese Text',\n 'KaiTi',\n 'Kozuka Gothic Pr6N',\n 'Kozuka Gothic Pro',\n 'Kozuka Mincho Pr6N',\n 'Kozuka Mincho Pro',\n 'Leelawadee',\n 'Leelawadee UI',\n 'Letter Gothic Std',\n 'Lithos Pro',\n 'Lucida Console',\n 'Lucida Sans Unicode',\n 'Malgun Gothic',\n 'Marlett',\n 'Mesquite Std',\n 'Microsoft Himalaya',\n 'Microsoft JhengHei',\n 'Microsoft JhengHei UI',\n 'Microsoft New Tai Lue',\n 'Microsoft PhagsPa',\n 'Microsoft Sans Serif',\n 'Microsoft Tai Le',\n 'Microsoft Uighur',\n 'Microsoft YaHei',\n 'Microsoft YaHei UI',\n 'Microsoft Yi Baiti',\n 'MingLiU_HKSCS-ExtB',\n 'MingLiU-ExtB',\n 'Minion Pro',\n 'Mongolian Baiti',\n 'Monotype Corsiva',\n 'MS Gothic',\n 'MS PGothic',\n 'MS Reference Sans Serif',\n 'MS Reference Specialty',\n 'MS UI Gothic',\n 'MB Boli',\n 'Myanmar Text',\n 'Myriad Pro',\n 'Mirmala UI',\n 'NSimSun',\n 'Nueva Std',\n 'OCR A Std',\n 'Orator Std',\n 'Palatino Linotype',\n 'PMingLiU-ExtB',\n 'Poplar Std',\n 'Prestige Elite Std',\n 'Rosewood Std',\n 'Segoe MDL2 Assets',\n 'Segoe Print',\n 'Segoe Script',\n 'Segoe UI',\n 'Segoe UI Emoji',\n 'Segoe UI Historic',\n 'Segoe UI Symbol',\n 'SimHei',\n 'SimSun',\n 'SimSun-ExtB',\n 'Sitka',\n 'Stencil Std',\n 'Sylfaen',\n 'Symbol',\n 'Tahoma',\n 'TeamViewer15',\n 'Tekton Pro',\n 'Times New Roman',\n 'Trajan Pro',\n 'Trebuchet MS',\n 'Verdana',\n 'Webdings',\n 'Wingdings',\n 'Wingdings 2',\n 'Wingdings 3',\n 'Yu Gothic',\n 'Yu Gothic UI',\n 'Roboto Slab',\n 'Noto Sans',\n 'Open Sans Condensed',\n 'Playfair Display',\n 'Ubuntu',\n 'Turret Road',\n 'PT Serif',\n 'Titillium Web',\n 'Nunito',\n 'Fira Sans',\n 'Noto Sans JP',\n 'Grenze',\n 'Work Sans',\n 'PT Sans Narrow',\n 'Quicksand',\n 'Inconsolata',\n 'Notable',\n 'Teko',\n 'Mukta',\n 'Arimo',\n 'Noto Sans KR',\n 'Noto Sans TC',\n 'Yanone Kaffeesatz',\n 'Josefin Sans',\n 'Heebo',\n 'Cute Font',\n 'Fjalla One',\n 'Indie Flower',\n 'Barlow Condensed',\n 'Anton',\n 'Pacifico',\n 'Dancing Script',\n 'Squada One',\n 'Abril Fatface',\n 'Shadows Into Light',\n 'Ramabhadra',\n 'Acme',\n 'Bree Serif',\n 'Kanit',\n 'Catamaran',\n 'Amatic SC',\n 'Righteous',\n 'Fira Sans Condensed',\n 'Ubuntu Condensed',\n 'Patua One',\n 'Orbitron',\n 'Alegreya',\n 'Cinzel',\n 'Rajdhani',\n 'Permanent Marker',\n 'Francois One',\n 'Satisfy',\n 'Cuprum',\n 'Ranga',\n 'Courgette',\n 'Caveat',\n 'Kalam',\n 'Luckiest Guy',\n 'Zilla Slab',\n 'Pathway Gothic One',\n 'Fredoka One',\n 'Alfa Slab One',\n 'Kaushan Script',\n 'Great Vibes',\n 'Cookie',\n 'Lobster Two',\n 'Sacramento',\n 'Gloria Hallelujah',\n 'Patrick Hand',\n 'Poiret One',\n 'Economica',\n 'Passion One',\n 'Bangers',\n 'BenchNine',\n 'Handlee',\n 'Saira Stencil One',\n 'Josefin Slab',\n 'Lexend Deca',\n 'Lexend Mega',\n 'Russo One',\n 'Neucha',\n 'Paytone One',\n 'Viga',\n 'Gudea',\n 'Playfair Display SC',\n 'Ruda',\n 'Ultra',\n 'Vollkorn SC',\n 'Tangerine',\n 'Khand',\n 'Advent Pro',\n 'Monoton',\n 'Yellowtail',\n 'Amaranth',\n 'Marck Script',\n 'Unica One',\n 'Playball',\n 'Parisienne',\n 'Bad Script',\n 'Unlock',\n 'Press Start 2P',\n 'Boogaloo',\n 'Homemade Apple',\n 'Audiowide',\n 'Schoolbell',\n 'Baloo',\n 'Chilanka',\n 'Asap Condensed',\n 'Fugaz One',\n 'Sigmar One',\n 'Julius Sans One',\n 'Shadows Into Light Two',\n 'Covered By Your Grace',\n 'Oleo Script',\n 'Allura',\n 'Merienda',\n 'Rock Salt',\n 'Staatliches',\n 'Damion',\n 'Love Ya Like A Sister',\n 'Rubik Mono One',\n 'Pragati Narrow',\n 'Nothing You Could Do',\n 'Barriecito',\n 'Chewy',\n 'Mr Dafoe',\n 'Pinyon Script',\n 'Black Ops One',\n 'Leckerli One',\n 'Slackey',\n 'Alex Brush',\n 'Fredericka the Great',\n 'Caveat Brush',\n 'Nanum Pen Script',\n 'Niconne',\n 'Lilita One',\n 'Prociono',\n 'Reenie Beanie',\n 'Aclonica',\n 'Bahianita',\n 'Italianno',\n 'Cabin Sketch',\n 'Aladin',\n 'Marvel',\n 'Coming Soon',\n 'Saira Condensed',\n 'Yesteryear',\n 'Berkshire Swash',\n 'Ruge Boogie',\n 'Cinzel Decorative',\n 'Nanum Brush Script',\n 'Grand Hotel',\n 'Norican',\n 'Arizonia',\n 'Raleway Dots',\n 'Pattaya',\n 'Kristi',\n 'Shojumaru',\n 'Calligraffitti',\n 'Mountains of Christmas',\n 'Beth Ellen',\n 'Mr De Haviland',\n 'Ceviche One',\n 'Finger Paint',\n 'Montez',\n 'Six Caps',\n 'Seaweed Script',\n 'Cedarville Cursive',\n 'Faster One',\n 'Bungee Shade',\n 'Zhi Mang Xing',\n 'Clicker Script',\n 'Mrs Saint Delafield',\n 'Euphoria Script',\n 'Galada',\n 'Eater',\n 'Codystar',\n 'IM Fell English SC',\n 'Creepster',\n 'Ewert',\n 'Sarina',\n 'Nosifer',\n 'League Script',\n 'Miniver',\n 'Monofett',\n 'Barrio',\n 'Metal Mania',\n 'Libre Barcode 39 Extended Text',\n 'Libre Barcode 39 Text',\n 'Kenia',\n ].sort();\n\nexport let labelFont = [ \n 'Wallpoet'\n];\n\nexport default fonts;","import React, { useState } from \"react\";\nimport { connect } from \"react-redux\";\nimport { useHistory } from \"react-router-dom\";\n\nimport FontAwesome from \"react-fontawesome\";\nimport fonts from \"./Font\";\nimport { Button, Modal, Form } from \"react-bootstrap\";\nimport { SketchPicker } from \"react-color\";\n\n// import { MDBBtn, MDBIcon } from 'mdbreact';\n\nimport { updateObject, deleteObject } from \"../../redux/object/object.actions\";\nimport FontPicker from \"font-picker-react\";\n\nimport firebase from \"../../utils/firebase/firebase.utils\";\n\n// import imageCompression from 'browser-image-compression';\n\n\nconst PropertyPanel = ({\n height,\n options,\n designType,\n phoneCase,\n lastAction,\n sceneManager,\n updateObject,\n deleteObject,\n mobile,\n userId,\n googleUserId\n}) => {\n const [activeFontFamily, setActiveFontFamily] = useState(\"Open Sans\");\n const [showModalText, setShowModalText] = useState(false);\n\n const [text, setText] = useState(options.text);\n\n const [showColorModal, setShowColorModal] = useState(false);\n const [color, setColor] = useState(options.fill);\n\n const [showOutlineColorModal, setShowOutlineColorModal] = useState(false);\n const [outlineColor, setOutlineColor] = useState(options.stroke);\n\n const [fontSize, setFontSize] = useState(options.fontSize);\n\n const [textAlign, setTextAlign] = useState(options.textAlign);\n\n const [fontWeight, setFontWeight] = useState(options.fontWeight);\n const [fontStyle, setFontStyle] = useState(options.fontStyle);\n const [underline, setUnderline] = useState(options.underline);\n\n const [strokeWidth, setStrokeWidth] = useState(options.strokeWidth);\n\n const showPanel = () => {\n return lastAction === \"OBJECT/SELECTED\" || lastAction === \"OBJECT/UPDATE\";\n };\n\n const showTextModal = (pShow) => {\n if (pShow) setText(options.text);\n setShowModalText(pShow);\n };\n const updateText = (e) => {\n setShowModalText(false);\n updateObject({ id: options.id, text: text });\n };\n const handleChange = (event) => {\n setText(event.target.value);\n };\n\n const updateOutlineColor = (event) => {\n setOutlineColor(event.hex);\n updateObject({ id: options.id, stroke: event.hex });\n // setShowOutlineColorModal(false);\n };\n\n const updateColor = (event) => {\n setColor(event.hex);\n updateObject({ id: options.id, fill: event.hex });\n // setShowColorModal(false);\n };\n\n const handleChangeFontSize = (value) => {\n setFontSize(value);\n updateObject({ id: options.id, fontSize: value });\n };\n\n const changeTextAlign = (pAlign = \"center\") => {\n setTextAlign(pAlign);\n updateObject({ id: options.id, textAlign: pAlign });\n };\n\n const changeTextStyle = (pStyle) => {\n if (\"fontWeight\" in pStyle) {\n setFontWeight(pStyle.fontWeight);\n } else if (\"fontStyle\" in pStyle) {\n setFontStyle(pStyle.fontStyle);\n } else if (\"underline\" in pStyle) {\n setUnderline(pStyle.underline);\n }\n updateObject({\n ...pStyle,\n id: options.id\n });\n };\n\n const changeThickness = (value) => {\n setStrokeWidth(value);\n updateObject({ id: options.id, strokeWidth: Number(value) });\n };\n\n const deleteItem = () => {\n deleteObject({ id: options.id });\n sceneManager.deleteObject(options.id);\n };\n\n let history = useHistory();\n\n async function saveDesign() {\n // let imgbase64 = sceneManager.getSceneBase64Image();\n console.log(\"save\");\n let imgbase64 = await sceneManager.getCropImage();\n\n \n var database = firebase.database();\n database.ref(`designs/ + ${userId}`).update({\n [designType]: imgbase64\n })\n\n history.push(\"/shop\");\n }\n\n\n function changeValue(pKind, pPM) {\n switch (pKind) {\n case \"fontSize\":\n let font = fontSize + (pPM === \"plus\" ? 1 : -1);\n if (font < 1) font = 1;\n handleChangeFontSize(font);\n break;\n case \"strokeWidth\":\n let stroke =\n Math.round((strokeWidth + (pPM === \"plus\" ? 0.1 : -0.1)) * 100) / 100;\n if (stroke < 0.1) stroke = 0;\n changeThickness(stroke);\n break;\n default:\n }\n }\n\n const panelContent = () => {\n let objKind = options.kind;\n let content = null;\n\n switch (objKind) {\n case \"Phone\":\n break;\n case \"Image\":\n content = <>{deleteButton()};\n break;\n case \"Text\":\n content = (\n <>\n {mobile && deleteButton()}\n showTextModal(true)}\n >\n
\n \n
\n
Edit Text
\n \n
\n
\n \n
\n
Font
\n
\n {\n setActiveFontFamily(nextFont.family);\n setTimeout(function () {\n updateObject({\n id: options.id,\n fontFamily: nextFont.family\n });\n }, 1000);\n }}\n style={{ width: \"150px\", height: \"50px\" }}\n />\n
\n
\n
\n
\n \n
\n
Text
\n setShowColorModal(true)}\n style={{ display: \"flex\" }}\n >\n \n   \n

\n {color}\n

\n \n
\n
\n
\n \n
\n
Size
\n
\n handleChangeFontSize(e.target.value)}\n onKeyDown={(e) => setFontSize(e.target.value)}\n />\n
\n {mobile && changeButtons(\"fontSize\")}\n
\n
\n
\n \n
\n
Outline
\n setShowOutlineColorModal(true)}\n style={{ display: \"flex\" }}\n >\n \n   \n

\n {outlineColor}\n

\n \n
\n
\n
\n \n
\n
Outline Size
\n
\n changeThickness(e.target.value)}\n onKeyDown={(e) => setStrokeWidth(e.target.value)}\n />\n
\n {mobile && changeButtons(\"strokeWidth\")}\n
\n
\n
\n \n
\n
Align
\n
\n changeTextAlign(\"left\")}\n >\n \n \n changeTextAlign(\"center\")}\n >\n \n \n changeTextAlign(\"right\")}\n >\n \n \n
\n
\n
\n
\n \n
\n
Style
\n
\n {\n let updateProp = {\n fontWeight: fontWeight === \"bold\" ? \"\" : \"bold\"\n };\n changeTextStyle(updateProp);\n }}\n >\n \n \n {\n let updateProp = {\n fontStyle: fontStyle === \"italic\" ? \"\" : \"italic\"\n };\n changeTextStyle(updateProp);\n }}\n >\n \n \n {\n let updateProp = {\n underline: underline ? false : true\n };\n changeTextStyle(updateProp);\n }}\n >\n \n \n
\n
\n {!mobile && deleteButton()}\n showTextModal(false)}>\n \n Edit Text\n \n \n \n \n \n \n \n showTextModal(false)}\n >\n Close\n \n \n \n \n\n setShowOutlineColorModal(false)}\n centered\n >\n updateOutlineColor(e)}\n enabled\n />\n \n\n setShowColorModal(false)}\n centered\n >\n updateColor(e)}\n enabled\n />\n \n \n );\n break;\n case \"Shape\":\n content = (\n <>\n {mobile && deleteButton()}\n
\n
\n \n
\n
fill
\n setShowColorModal(true)}\n style={{ display: \"flex\" }}\n >\n \n   \n

\n {color}\n

\n \n
\n
\n
\n \n
\n
stroke
\n setShowOutlineColorModal(true)}\n style={{ display: \"flex\" }}\n >\n \n   \n

\n {outlineColor}\n

\n \n
\n
\n
\n \n
\n
Outline Size
\n
\n changeThickness(e.target.value)}\n onKeyDown={(e) => setStrokeWidth(e.target.value)}\n />\n
\n {mobile && changeButtons(\"strokeWidth\")}\n
\n {!mobile && deleteButton()}\n setShowOutlineColorModal(false)}\n centered\n >\n updateOutlineColor(e)}\n enabled\n />\n \n\n setShowColorModal(false)}\n centered\n >\n updateColor(e)}\n enabled\n />\n \n \n );\n break;\n default:\n }\n return content;\n };\n\n const changeButtons = (pKind) => {\n return (\n
\n changeValue(pKind, \"plus\")}\n >\n changeValue(pKind, \"minus\")}\n >\n
\n );\n };\n\n const saveButton = () => {\n return (\n \n );\n };\n\n const deleteButton = () => {\n return (\n \n );\n };\n\n return (\n \n {panelContent()}\n {!mobile && saveButton()}\n \n );\n};\n\nconst mapStateToProps = (state, ownProps) => {\n return {\n options: { ...state.activeObject },\n designType: state.designType.type,\n phoneCase: state.designType.phoneCase,\n lastAction: state.lastAction,\n sceneManager: state.sceneManager,\n mobile: state.mobile,\n userId: state.user?.currentUser?.id,\n googleUserId: state.user?.currentUser?.uid\n };\n};\n\nconst mapDispatchToProps = (dispatch, ownProps) => {\n return {\n deleteObject: (payload) => {\n dispatch(deleteObject(payload));\n },\n updateObject: (payload) => {\n dispatch(updateObject(payload));\n }\n };\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(PropertyPanel);\n","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport { MDBIcon, MDBContainer, MDBRow, MDBNavbarBrand } from \"mdbreact\";\nimport { withRouter } from \"react-router-dom\";\n\nimport ItemPanel from \"../design-tools/ItemPanel\";\nimport PropertyPanel from \"../properties\";\nimport FontAwesome from \"react-fontawesome\";\n\nimport \"@fortawesome/fontawesome-free/css/all.min.css\";\nimport \"bootstrap-css-only/css/bootstrap.min.css\";\nimport \"mdbreact/dist/css/mdb.css\";\n\nimport { toggleToolbar } from \"../../redux/drawing-area/drawing-area.actions\";\nimport firebase from \"../../utils/firebase/firebase.utils\";\n\nimport \"./ContentPanel.styles.css\";\n\nclass ContentPanel extends Component {\n state = {\n kindPanel: \"\",\n activeAdd: false\n };\n changePanel(pKind, ev) {\n this.setState({ kindPanel: pKind });\n // ev.stopPropagation();\n this.props.toggleToolbar(\"show\");\n }\n\n showItems() {\n this.setState({ activeAdd: !this.state.activeAdd });\n }\n\n addItem(pKind) {\n this.showItems();\n this.changePanel(pKind);\n }\n\n saveButton() {\n return (\n this.saveDesign()}\n >\n
\n \n
\n
Save
\n \n );\n }\n\n getLaptopPanel() {\n return (\n \n {/*
this.changePanel('', e)}> */}\n
\n {/* */}\n this.changePanel(\"image\", e)}\n disabled={!this.props.designState}\n >\n \n
Image
\n \n this.changePanel(\"text\", e)}\n disabled={!this.props.designState}\n >\n \n
Text
\n \n this.changePanel(\"shape\", e)}\n disabled={!this.props.designState}\n >\n \n
Shape
\n \n this.changePanel(\"layer\", e)}\n disabled={!this.props.designState}\n >\n \n
Layer
\n \n
\n \n \n \n );\n }\n\n getMobilePanel() {\n let showItemPanel =\n this.props.lastAction !== \"OBJECT/RELEASED\" &&\n this.props.lastAction !== \"OBJECT/SELECTED\" &&\n this.props.lastAction !== \"OBJECT/UPDATE\";\n let showPropPanel =\n this.props.lastAction === \"OBJECT/SELECTED\" ||\n this.props.lastAction === \"OBJECT/UPDATE\";\n // let propHeight = window.innerHeight - 64 - this.props.drawingH - 35 - 66;\n let propHeight = 48 * 4.5;\n return (\n \n {this.saveButton()}\n \n \n this.addItem(\"image\")}\n >\n \n
Image
\n \n this.addItem(\"text\")}\n >\n \n
Text
\n \n this.addItem(\"shape\")}\n >\n \n
Shape
\n \n \n \n \n \n \n \n\n {showItemPanel && }\n {showPropPanel && }\n \n \n );\n }\n\n async saveDesign() {\n console.log(\"save\");\n let imgData = await this.props.sceneManager.getCropImage();\n\n \n var database = firebase.database();\n database.ref(`designs/ + ${this.props.userId}`).update({\n [this.props.designType]: imgData\n })\n\n this.props.history.push(\"/shop\");\n }\n\n render() {\n return (\n <>\n {!this.props.mobile && this.getLaptopPanel()}\n {this.props.mobile && this.getMobilePanel()}\n \n );\n }\n}\n\nconst mapStateToProps = (state, ownProps) => {\n return {\n designState: state.designState,\n designType: state.designType.type,\n phoneCase: state.designType.phoneCase,\n mobile: state.mobile,\n lastAction: state.lastAction,\n sceneManager: state.sceneManager,\n userId: state.user?.currentUser?.id,\n googleUserId: state.user?.currentUser?.uid\n };\n};\n\nconst mapDispatchToProps = (dispatch, ownProps) => {\n return {\n toggleToolbar: (action) => {\n dispatch(toggleToolbar(action));\n }\n };\n};\nexport default withRouter(\n connect(mapStateToProps, mapDispatchToProps)(ContentPanel)\n);\n","export let ObjectActionTypeOpen = \"OBJECT/SET\";\nexport let ObjectActionTypesModify = [\n \"OBJECT/ADD\",\n \"OBJECT/SELECTED\",\n \"OBJECT/RELEASED\",\n \"OBJECT/UPDATE\",\n \"OBJECT/DELETE\",\n \"OBJECT/SEQUENCE\"\n];\n","import store from \"./store\";\nimport {\n ObjectActionTypeOpen,\n ObjectActionTypesModify\n} from \"./object/objects.types\";\n\n// ['a','b','c'].indexOf('a') > -1 === ['a','b','c'].includes('a')\n//\nvar isLastAction = function isLastAction(lastAction, action) {\n return typeof action === \"string\"\n ? lastAction === action\n : action.indexOf(lastAction) > -1;\n};\n\nvar lastActionMatchesAction = function lastActionMatchesAction(\n lastAction,\n action\n) {\n switch (action) {\n case \"anyChange\":\n return ObjectActionTypesModify.indexOf(lastAction) > -1;\n case \"open\":\n return lastAction === ObjectActionTypeOpen;\n default:\n return isLastAction(lastAction, action);\n }\n};\n\n// diagramOn will return a function\n// that allows you to unsubscribe from the store\n// http://redux.js.org/docs/api/Store.html#subscribelistener\n//\nexport let designOn = function designOn(action, fn) {\n return store.subscribe(function () {\n var state = store.getState();\n if (lastActionMatchesAction(state.lastAction, action)) {\n fn(state.lastAction, state.activeObject);\n }\n });\n};\n","export const compareAttribute = function (attr1, attr2) {\n let diffAttr = [];\n for (let key in attr1) {\n if (key !== \"index\" && key in attr2) {\n if (attr1[key] !== attr2[key]) {\n diffAttr.push(key);\n }\n }\n }\n return diffAttr;\n};\n","// import 'fabric-webpack'\nimport { fabric } from \"fabric\"\nimport { compareAttribute } from '../../redux/compareAttribute';\nimport { labelFont } from '../properties/Font';\nimport FontFacePreloader from 'fontface-preloader';\n\nexport default class DesignTool{};\n\nclass SceneManager{\n _canvas = null;\n _width = null;\n _height = null;\n _objects = [];\n\n constructor(pOption){\n let canvas = this._canvas = new fabric.Canvas(pOption.canvas, {\n perPixelTargetFind : true,\n targetFindTolerance : 5,\n preserveObjectStacking : true,\n backgroundColor : \"#aaa\",\n });\n canvas.setDimensions({width : pOption.width, height : pOption.height});\n canvas.requestRenderAll();\n this._height = pOption.height;\n this._width = pOption.width;\n this._sendMessage = pOption.message;\n\n // function addEvents(){\n // canvas.on('selection:created', function(){\n // oneself._sendMessage({\n // type : 'objectSelected'\n // });\n // });\n\n // canvas.on('selection:cleared', function(){\n // oneself._sendMessage({\n // type : 'objectReleased'\n // });\n // });\n\n // canvas.on('selection:updated', function(){\n // oneself._sendMessage({\n // type : 'objectUpdated'\n // });\n // });\n // }\n\n this._initialize = function(){\n let font = new FontFacePreloader(labelFont);\n font.load().then(function(){\n console.log('font is loaded');\n });\n // add events\n // addEvents()\n // for zoom\n\n // for pan\n\n // clear canvas\n this._objects = [];\n canvas.clear().requestRenderAll();\n\n }\n \n this._initialize();\n }\n\n get canvas(){ return this._canvas; };\n\n get width(){ return this._width; };\n set width(pWidth){ this._width = pWidth }\n\n get height(){ return this._height; }\n set height(pHeight){ this._height = pHeight; }\n\n resize(pW, pH){\n this.width = pW;\n this.height = pH;\n this.canvas.setDimensions({width : pW, height : pH});\n this.canvas.requestRenderAll();\n }\n\n clearScene(){\n this._objects = [];\n this.canvas.clear().requestRenderAll();\n }\n\n getObjectfromID(pID){\n for(let i=0;i-1;\n\n if(!flagExist){\n switch(pAttr.kind){\n case \"Phone\":\n this._objects.push( new DesignTool.PhoneCase(pAttr, this) );\n break;\n case \"Text\":\n this._objects.push( new DesignTool.Text(pAttr, this));\n break;\n case \"Image\":\n this._objects.push( new DesignTool.Image(pAttr, this));\n break;\n case \"Shape\":\n this._objects.push( new DesignTool.Shape(pAttr, this));\n break;\n default:\n \n }\n }else{\n // console.log('the instance existed already');\n }\n }\n\n updateObject(pAttr){\n let {object} = this.getObjectfromID(pAttr.id);\n if(!!object) object.updateObject(pAttr);\n }\n\n deleteObject(pID){\n let {idx,object} = this.getObjectfromID(pID);\n if(!!object){\n object.deleteInstance();\n this._objects.splice(idx,1);\n }\n }\n\n releaseObject(){\n this.canvas.discardActiveObject();\n }\n\n updateSequence(pSequance){\n let shape = this.canvas.getObjects()[pSequance.sourceIdx];\n this.canvas.remove(shape).insertAt(shape, pSequance.targetIdx).requestRenderAll()\n }\n\n sendMessage(pData){\n this._sendMessage(pData);\n }\n\n getSceneBase64Image(){\n return this._canvas.toDataURL({\n\t\t\tformat: 'png',\n quality : 1,\n multiplier : 2,\n\t\t});\n }\n\n downloadImage(base64Image){\n const a = document.createElement(\"a\");\n a.href = base64Image;\n a.download = \"\";\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n }\n\n getCropImage(){\n let own =this;\n let cropInfo = this._objects[0].attribute;\n let multi = 1200/this.width;\n return new Promise((response, reject)=>{\n\n own._objects[0].instance.clone(function(crop){\n\n cropInfo.opacity = 1;\n crop.setOptions(cropInfo);\n crop.globalCompositeOperation = 'destination-out';\n own._canvas.add(crop).requestRenderAll();\n\n if(crop.name!==undefined){\n let name = new fabric.Text(crop.name, {\n fontFamily : 'Wallpoet',\n fontSize : 25,\n fill : '#333',\n top : own._canvas.height - 25,\n });\n let w = name.getScaledWidth();\n name.set('left', (own._canvas.width-w)/2);\n own._canvas.add(name).requestRenderAll();\n }\n\n // own.downloadImage(own._canvas.toDataURL({\n // format: 'png',\n // quality : 1,\n // multiplier : 1,\n // }));\n \n let imgdata = own._canvas.toDataURL({\n format: 'png',\n quality : 1,\n multiplier : multi,\n });\n response(imgdata);\n });\n });\n \n }\n\n getImgDataObject(pID){\n let {idx, object} = this.getObjectfromID(pID);\n if(idx>-1 && !!object){\n return object.instance.toDataURL({\n format: 'png',\n quality : 1,\n multiplier : 1,\n });\n }else{\n // throw(\"don't exist the object with \" + pID + 'on canvas.');\n } \n }\n}\nDesignTool.SceneManager = SceneManager;\n\nclass fabricObject{\n _attribute = null;\n _manager = null;\n\n instance = null;\n\n constructor(pAttr, pManager){\n this._attribute = pAttr;\n this._manager = pManager;\n }\n\n updateObject(pAttr){\n let diff = compareAttribute(this.attribute, pAttr);\n if(diff.length>0){\n if(diff.indexOf('index')>0){\n debugger\n }else{\n if(this.instance.type==='image') delete pAttr.stroke;\n this.instance.setOptions(pAttr);\n this.Manager.canvas.requestRenderAll();\n this._attribute = pAttr;\n }\n }\n }\n\n deleteInstance(){\n this.Manager.canvas.remove(this.instance).requestRenderAll();\n }\n\n set Manager(pManager){\n this._manager = pManager;\n }\n get Manager(){\n return this._manager;\n }\n get id(){\n return this._attribute.id;\n }\n\n get attribute(){\n return this._attribute;\n }\n set attribute(pAttr){\n this._attribute = pAttr;\n }\n\n get canvas(){\n return this._manager.canvas;\n }\n}\nDesignTool.fabricObject = fabricObject;\n\nclass PhoneCase extends fabricObject{\n constructor(pAttr, pManager){\n super(pAttr, pManager);\n\n initialize();\n\n let oneself = this;\n function initialize(){\n fabric.Image.fromURL(pAttr.url, function(instImage){\n let attr = {\n ...pAttr,\n evented : false,\n selectable : false,\n opacity : 0.75,\n };\n\n if(attr.width===0 && attr.height===0 && attr.left===-10000 && attr.top===-10000){\n attr.scaleX = pManager.width*1.2/instImage.width;\n attr.scaleY = pManager.height*1.2/instImage.height;\n attr.width = instImage.width;\n attr.height = instImage.height;\n attr.left = pManager.width/2 - attr.width*attr.scaleX/2;\n attr.top = pManager.height/2 - attr.height*attr.scaleY/2;\n attr.index = -1;\n }\n instImage.setOptions(attr);\n \n pManager.canvas.add(instImage).requestRenderAll();\n oneself.attribute = attr;\n oneself.instance = instImage;\n\n pManager.sendMessage({\n type : \"updateAttribute\",\n data : attr,\n });\n\n // pManager.sendMessage({\n // type : 'bindEvent',\n // data : instImage,\n // })\n });\n }\n }\n\n updateObject(pAttr){\n let oneself = this;\n let diff = compareAttribute(this.attribute, pAttr);\n if(diff.length>0){\n if(diff.indexOf('index')>0){\n }else if(diff.indexOf('url')!==-1){\n var img=new Image();\n img.onload=function(){\n oneself.instance.setElement(img);\n oneself.canvas.requestRenderAll();\n }\n img.src = pAttr.url;\n }else{\n console.log('error in phone case')\n }\n }\n }\n}\nDesignTool.PhoneCase = PhoneCase;\n\nclass Text extends fabricObject{\n constructor(pAttr, pManager){\n super(pAttr, pManager);\n \n let oneself = this;\n\n initialize();\n\n function initialize(){\n let instText = new fabric.Text(pAttr.text, pAttr);\n\n if(pAttr.width===0 && pAttr.height===0 && pAttr.left===-10000 && pAttr.top===-10000){\n pAttr.width = instText.width;\n pAttr.height = instText.height;\n pAttr.left = pManager.width/2 - pAttr.width/2;\n pAttr.top = pManager.height/2 - pAttr.height/2; \n instText.setOptions({\n ...pAttr,\n objectCaching: false,\n });\n }\n\n oneself.attribute = pAttr;\n oneself.instance = instText;\n\n pManager.sendMessage({\n type : \"updateAttribute\",\n data : pAttr,\n });\n\n pManager.sendMessage({\n type : 'bindEvent',\n data : instText,\n })\n\n pManager.canvas.insertAt(instText, pAttr.index).setActiveObject(instText).requestRenderAll();\n\n }\n }\n}\nDesignTool.Text = Text;\n\nclass Image extends fabricObject{\n constructor(pAttr, pManager){\n super(pAttr, pManager);\n \n let oneself = this;\n\n initialize();\n\n function initialize(){\n let imageDOM = document.createElement('img');\n imageDOM.src = pAttr.url;\n imageDOM.onload = () =>{\n let attr = {\n ...pAttr,\n evented : true,\n selectable : true,\n };\n delete attr.stroke;\n if(attr.width===0 && attr.height===0 && attr.left===-10000 && attr.top===-10000){\n attr.width = imageDOM.width;\n attr.height = imageDOM.height;\n let ratioX = pManager.width*0.75/imageDOM.width,\n ratioY = pManager.height*0.75/imageDOM.height,\n ratio = Math.min(ratioX, ratioY);\n attr.scaleX = ratio;\n attr.scaleY = ratio;\n attr.left = pManager.width/2 - attr.width*ratio/2;\n attr.top = pManager.height/2 - attr.height*ratio/2;\n }\n let instImage = new fabric.Image(imageDOM, attr); \n oneself.attribute = attr;\n oneself.instance = instImage;\n\n pManager.sendMessage({\n type : \"updateAttribute\",\n data : attr,\n });\n\n pManager.sendMessage({\n type : 'bindEvent',\n data : instImage,\n })\n\n pManager.canvas.insertAt(instImage, pAttr.index).setActiveObject(instImage).requestRenderAll();\n\n }\n\n }\n }\n}\n\nDesignTool.Image = Image;\n\nclass Shape extends fabricObject{\n constructor(pAttr, pManager){\n super(pAttr, pManager);\n \n let oneself = this;\n\n initialize();\n\n function initialize(){\n let instShape = null;\n\n if(pAttr.width===0 && pAttr.height===0 && pAttr.radius===0 && pAttr.left===-10000 && pAttr.top===-10000){\n pAttr.width = 50;\n pAttr.height = 50;\n pAttr.radius = 25;\n pAttr.left = pManager.width/2 - pAttr.width/2;\n pAttr.top = pManager.height/2 - pAttr.height/2;\n }\n\n switch(pAttr.type){\n case 'Triangle':\n instShape = new fabric.Triangle(pAttr);\n break;\n case 'Circle':\n instShape = new fabric.Circle(pAttr);\n break;\n case 'Rect':\n instShape = new fabric.Rect(pAttr);\n break;\n case 'Line':\n pAttr.height = 1;\n instShape = new fabric.Rect(pAttr);\n break;\n default:\n }\n \n instShape.setOptions(pAttr);\n\n oneself.attribute = pAttr;\n oneself.instance = instShape;\n\n pManager.sendMessage({\n type : \"updateAttribute\",\n data : pAttr,\n });\n\n pManager.sendMessage({\n type : 'bindEvent',\n data : instShape,\n })\n\n pManager.canvas.insertAt(instShape, pAttr.index).setActiveObject(instShape).requestRenderAll();\n\n }\n }\n}\nDesignTool.Shape = Shape;","import React from \"react\";\nimport { connect } from \"react-redux\";\n\nimport {\n selectedObject,\n releasedObject,\n updateObject\n} from \"../../redux/object/object.actions\";\nimport { designOn } from \"../../redux/observe\";\n\nclass EntityObject extends React.Component {\n state = {\n attribute: null\n };\n\n UNSAFE_componentWillMount() {\n designOn(\"anyChange\", this.updateObject.bind(this));\n }\n\n componentDidMount() {\n // if(!this.state.attribute && (this.props.lastAction==='OBJECT/ADD' || this.props.lastAction==='OBJECT/SET' ) ){\n if (!this.state.attribute) {\n this.props.scene.addObject(this.props.attr);\n this.setState({ attribute: this.props.attr });\n }\n }\n UNSAFE_componentWillReceiveProps(newProp) {\n this.props.scene.addObject(newProp.attr);\n this.setState({ attribute: newProp.attr });\n }\n\n updateObject(action, option) {\n if (option.id === this.props.attr.id && this.state.attribute) {\n if (\n action === \"OBJECT/UPDATE\" ||\n (action === \"OBJECT/DELETE\" && option.kind !== \"Phone\")\n ) {\n this.props.scene.updateObject(option);\n }\n }\n }\n\n render() {\n return null;\n }\n}\n\nconst mapStateToProps = (state, ownProps) => {\n return {\n lastAction: state.lastAction,\n scene: state.sceneManager\n };\n};\n\nconst mapDispatchToProps = (dispatch, ownProps) => {\n return {\n activeObject: (payload) => {\n dispatch(selectedObject(payload));\n },\n releasedObject: (payload) => {\n dispatch(releasedObject(payload));\n },\n updateObject: (payload) => {\n dispatch(updateObject(payload));\n }\n };\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(EntityObject);\n","import React from \"react\";\nimport { connect } from \"react-redux\";\n\nimport { designOn } from \"../../redux/observe\";\nimport {\n setManager,\n configViewport,\n zoom,\n pan,\n toggleToolbar\n} from \"../../redux/drawing-area/drawing-area.actions\";\nimport {\n selectedObject,\n releasedObject,\n updateObject\n} from \"../../redux/object/object.actions\";\n\nimport DesignTool from \"../design-canvas/DesignCanvas\";\nimport EntityObject from \"../design-tools/entityObject\";\n\nimport \"./DrawingArea.css\";\n\nclass DrawingArea extends React.Component {\n UNSAFE_componentWillMount() {\n designOn(\"open\", this.openScene.bind(this));\n }\n\n componentDidMount() {\n let manager = new DesignTool.SceneManager({\n canvas: this.c,\n width: this.props.width,\n height: this.props.height,\n message: this.messageFromScene.bind(this)\n });\n this.props.setManager(manager);\n this.props.configViewport({\n canvasViewport: {\n x: 0,\n y: 0,\n width: this.props.width,\n height: this.props.height\n }\n });\n }\n\n componentDidUpdate() {\n if (\n !!this.props.sceneManager &&\n (this.props.width !== this.props.sceneManager.width ||\n this.props.height !== this.props.sceneManager.height)\n ) {\n this.props.sceneManager.resize(this.props.width, this.props.height);\n this.props.configViewport({\n canvasViewport: {\n x: 0,\n y: 0,\n width: this.props.width,\n height: this.props.height\n }\n });\n }\n }\n\n messageFromScene(pData) {\n let oneself = this;\n switch (pData.type) {\n case \"updateAttribute\":\n this.props.updateObject(pData.data);\n break;\n case \"bindEvent\":\n let fabricObject = pData.data;\n fabricObject.on(\"selected\", function () {\n oneself.props.objects.forEach((obj) => {\n if (obj.id === fabricObject.id) {\n oneself.props.selectedObject(obj);\n }\n });\n });\n\n fabricObject.on(\"deselected\", function () {\n oneself.props.releasedObject();\n });\n\n fabricObject.on(\"rotated\", function () {\n oneself.props.updateObject({\n id: fabricObject.id,\n angle: fabricObject.angle,\n left: fabricObject.left,\n top: fabricObject.top\n });\n });\n\n fabricObject.on(\"moved\", function () {\n oneself.props.updateObject({\n id: fabricObject.id,\n left: fabricObject.left,\n top: fabricObject.top\n });\n });\n\n fabricObject.on(\"scaled\", function () {\n oneself.props.updateObject({\n id: fabricObject.id,\n scaleX: fabricObject.scaleX,\n scaleY: fabricObject.scaleY,\n left: fabricObject.left,\n top: fabricObject.top\n });\n });\n break;\n default:\n }\n }\n\n openScene() {\n if (!!this.props.sceneManager) this.props.sceneManager.clearScene();\n }\n\n createChildren() {\n if (\n !!this.props.sceneManager &&\n (this.props.sceneManager.width !== this.props.width ||\n this.props.sceneManager.height !== this.props.height)\n ) {\n this.props.sceneManager.resize(this.props.width, this.props.height);\n }\n\n const children = [];\n this.props.objects.forEach((object, i) => {\n let child = null;\n child = React.createElement(EntityObject, {\n attr: object,\n key: i\n });\n\n child && children.push(child);\n });\n\n return children;\n }\n\n hideToolbar() {\n // console.log(this.props.sceneManager.canvas.getObjects());\n this.props.toggleToolbar(\"hide\");\n }\n\n render() {\n let chidren = this.createChildren();\n return (\n //
this.hideToolbar()} style = {{ marginTop : this.props.top+'px', position:'absolute' }} >\n this.hideToolbar()}\n style={{\n top: this.props.top + \"px\",\n width: this.props.width + \"px\",\n height: this.props.height + \"px\"\n }}\n >\n (this.c = c)}\n width={this.props.width}\n height={this.props.height}\n />\n {this.props.sceneManager && chidren}\n
\n );\n }\n}\n\nconst mapStateToProps = function mapStateToProps(state) {\n return {\n designState: state.designState,\n sceneManager: state.sceneManager,\n objects: state.objects,\n activeObject: state.activeObject,\n canvas: state.canvas\n };\n};\n\nconst mapDispatchToProps = (dispatch, ownProps) => {\n return {\n configViewport: (payload) => {\n dispatch(configViewport(payload));\n },\n zoom: (payload) => {\n zoom(payload);\n },\n pan: (payload) => {\n pan(payload);\n },\n updateObject: (payload) => {\n dispatch(updateObject(payload));\n },\n selectedObject: (payload) => {\n dispatch(selectedObject(payload));\n },\n releasedObject: (payload) => {\n dispatch(releasedObject(payload));\n },\n setManager: (payload) => {\n dispatch(setManager(payload));\n },\n toggleToolbar: (payload) => {\n dispatch(toggleToolbar(payload));\n }\n };\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(DrawingArea);\n","import React from \"react\";\nimport { connect } from \"react-redux\";\n\nimport { MDBContainer } from \"mdbreact\";\n\nimport \"./DesignPhone.css\";\n\n// import ToolBar from \"../components/ToolBar.js\"\nimport ContentPanel from \"../../components/content-panel/ContentPanel\";\nimport DrawingArea from \"../../components/drawing-area/DrawingArea\";\nimport { configViewport } from \"../../redux/drawing-area/drawing-area.actions\";\nimport { addObject } from \"../../redux/object/object.actions\";\n\nclass DesignPhone extends React.Component {\n state = {\n width: 800,\n height: 800,\n top: 0\n };\n\n componentDidMount() {\n const root = document.getElementById(\"root\");\n root.classList.remove(\"padding-for-sidenav\");\n }\n\n componentWillUnmount() {\n const root = document.getElementById(\"root\");\n root.classList.add(\"padding-for-sidenav\");\n }\n\n UNSAFE_componentWillMount(){\n if(!this.props.designState) this.props.history.push('/');\n let sideBarWidth = this.props.mobile ? 0 : 60+250;\n // let margin = this.props.mobile ? 100 : 100;\n let w = window.innerWidth - sideBarWidth, h = window.innerHeight-64;\n let size = Math.min(w,h);\n let top = this.props.mobile ? 35 : (h-size)/2;\n\n // window.onresize = ()=>{\n // this.setState({\n // width : size,\n // height : size,\n // top : top,\n // });\n // }\n this.setState({\n width : size, height : size,\n top : top,\n });\n\n this.props.addPhoneCase({\n id : Math.floor(Math.random()*10000)+'_'+ new Date().getTime(),\n kind : \"Phone\",\n type : 'image',\n url : this.props.designType.path,\n name : this.props.designType.name,\n });\n}\n\nrender (){\n return (\n \n {/* */}\n \n \n \n )\n}\n}\n\nconst mapStateToProps = (state, ownProps) => {\nreturn {\n canvas : state.canvas,\n designState : state.designState,\n designType : state.designType,\n mobile : state.mobile,\n}\n}\n\nconst mapDispatchToProps = (dispatch, ownProps) => {\nreturn {\n configViewport: (payload) => {\n dispatch(configViewport(payload))\n },\n addPhoneCase : (payload) => {\n dispatch(addObject(payload))\n },\n}\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(DesignPhone);\n","import React from \"react\";\nimport { connect } from \"react-redux\";\n\nimport { MDBContainer } from \"mdbreact\";\n\nimport \"../design-phone/DesignPhone.css\";\n\n// import ToolBar from \"../components/ToolBar.js\"\nimport ContentPanel from \"../../components/content-panel/ContentPanel\";\nimport DrawingArea from \"../../components/drawing-area/DrawingArea\";\nimport { configViewport } from \"../../redux/drawing-area/drawing-area.actions\";\nimport { addObject } from \"../../redux/object/object.actions\";\n\nclass IDCard extends React.Component {\n state = {\n width: 1486,\n height: 1109,\n top: 0\n };\n\n componentDidMount() {\n const root = document.getElementById(\"root\");\n root.classList.remove(\"padding-for-sidenav\");\n }\n\n componentWillUnmount() {\n const root = document.getElementById(\"root\");\n root.classList.add(\"padding-for-sidenav\");\n }\n\n UNSAFE_componentWillMount(){\n if(!this.props.designState) this.props.history.push('/');\n\n let sideBarWidth = this.props.mobile ? 0 : 60+250;\n let margin = this.props.mobile ? 2 : 100; \n let dW = 1486, dH=1109;\n let w = window.innerWidth - sideBarWidth, h = window.innerHeight-64;\n let ratio = Math.min((w-margin)/dW, (h-margin)/dH);\n let top = this.props.mobile ? 35 : (h- ratio*dH)/2;\n \n // let own = this;\n // window.onresize = ()=>{\n // own.setState({\n // width : ratio*dW,\n // height : ratio*dH,\n // top : top,\n // });\n // } \n\n this.setState({\n width : ratio*dW,\n height : ratio*dH,\n top : top,\n });\n\n this.props.addPhoneCase({\n id : Math.floor(Math.random()*10000)+'_'+ new Date().getTime(),\n kind : \"Phone\",\n type : 'image',\n url : this.props.designType.path,\n // url : './assets/images/IDCard/idcard better.png',\n });\n}\n\nrender (){\n return (\n \n {/* */}\n \n \n \n \n \n )\n}\n}\n\nconst mapStateToProps = (state, ownProps) => {\nreturn {\n canvas : state.canvas,\n designState : state.designState,\n designType : state.designType,\n mobile : state.mobile,\n}\n}\n\nconst mapDispatchToProps = (dispatch, ownProps) => {\nreturn {\n configViewport: (payload) => {\n dispatch(configViewport(payload))\n },\n addPhoneCase : (payload) => {\n dispatch(addObject(payload))\n },\n}\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(IDCard);\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport store from \"../../redux/store\";\n\nimport ReactQr from \"react-awesome-qr\";\n\nimport firebase from \"../../utils/firebase/firebase.utils\";\n\nimport MyLogo from \"../../assets/logo5.png\";\n\nexport default {\n generateMultiUserQR: function () {\n var db = firebase.firestore();\n var storageRef = firebase.storage().ref();\n var database = firebase.database();\n\n // const MyCardDirectURL = store.getState().user.currentUser.MyCardDirectURL;\n const userId = store.getState().selectedUser.currentUser.id;\n const shortUrl = store.getState().selectedUser.currentUser.shortUrl;\n\n\n // console.log('eowedwedcewsecdwswcsdcswdcs',userId)\n\n ReactDOM.render(\n 4 ? shortUrl : \"\"\n }\n correctLevel={3}\n size={700}\n dotScale={0.7}\n // MyTapReviewCardURL.length > 4 ? null :\n bgSrc={\n null\n }\n callback={\n (data) =>\n // console.log(data)\n\n db\n .collection(\"users\")\n .doc(`${userId}`)\n .update({\n QrImg: `${data}`\n })\n .then(() => {\n storageRef\n .child(`${userId}, QRCODE.png`)\n .putString(data, \"data_url\");\n })\n .then(() => {\n storageRef\n .child(`${userId}, QRCODE.png`)\n .getDownloadURL()\n .then((url) => {\n database.ref(`designs/ + ${userId}`).update({\n QrImgUrl: url\n })\n });\n })\n\n // storageRef\n // .child(`${this.props.userId}, QRCODE.png`)\n // .putString(data, \"data_url\")\n // .then(function (snapshot) {\n // // alert(\"QR SENT\");\n // })\n }\n />,\n document.getElementById(\"yo\")\n );\n }\n};\n","import store from \"../../redux/store\";\nimport firebase from \"../../utils/firebase/firebase.utils\";\n\nimport RangewaterCardTemplate from \"./imgs/RW3.png\";\n\nexport default {\n renderMultiDirectCardImage: async function () {\n var db = firebase.firestore();\n const QrImg = store.getState().selectedUser.currentUser?.QrImg;\n const reviewCardUploadedLogo = store.getState().selectedUser.currentUser?.reviewCardUploadedLogo;\n const userId = store.getState().selectedUser.currentUser.id;\n\n\n var canvas = document.getElementById(\"canvas1\");\n if (!canvas || !canvas.getContext) {\n return false;\n }\n canvas.width = 2.5*445;\n canvas.height = 2.5*280;\n var ctx = canvas.getContext(\"2d\");\n var img1 = new Image();\n var img2 = new Image();\n var img3 = new Image();\n img1.src = RangewaterCardTemplate;\n img2.src = reviewCardUploadedLogo;\n img3.src = QrImg;\n\n\n await Promise.all([\n new Promise((resolve, reject) => {\n img1.onload = function () {\n ctx.drawImage(img1, 0, 0, 2.5*445, 2.5*280);\n resolve();\n };\n }),\n new Promise((resolve, reject) => {\n img2.onload = function () {\n ctx.drawImage(img2, 2.5*235, 2.5*56, 2.5*172, 2.5*172);\n resolve();\n };\n }),\n new Promise((resolve, reject) => {\n img3.onload = function () {\n ctx.drawImage(img3, 2.5*38, 2.5*53, 2.5*175, 2.5*175);\n resolve();\n };\n })\n ]);\n\n\n \n var fullQuality = canvas.toDataURL();\n\n await db.collection(\"users\")\n .doc(`${userId}`)\n .update({\n reviewCardImage: `${fullQuality}`\n });\n \n\n }\n};\n","import store from \"../../redux/store\";\nimport firebase from \"../../utils/firebase/firebase.utils\";\n\nconst createImage = (url) =>\n new Promise((resolve, reject) => {\n const image = new Image();\n image.addEventListener(\"load\", () => resolve(image));\n image.addEventListener(\"error\", (error) => reject(error));\n image.setAttribute(\"crossOrigin\", \"anonymous\"); // needed to avoid cross-origin issues on CodeSandbox\n image.src = url;\n });\n\nfunction getRadianAngle(degreeValue) {\n return (degreeValue * Math.PI) / 180;\n}\n\n/**\n * This function was adapted from the one in the ReadMe of https://github.com/DominicTobias/react-image-crop\n * @param {File} image - Image File url\n * @param {Object} pixelCrop - pixelCrop Object provided by react-easy-crop\n * @param {number} rotation - optional rotation parameter\n */\nexport async function getCroppedImg(imageSrc, pixelCrop, rotation = 0) {\n const image = await createImage(imageSrc);\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n\n // image.width = image.width / 2;\n // image.height = image.height / 2;\n\n // const safeArea = Math.max(image.width, image.height) * 2\n\n const maxSize = Math.max(image.width, image.height);\n const safeArea = 2 * ((maxSize / 2) * Math.sqrt(2));\n\n // set each dimensions to double largest dimension to allow for a safe area for the\n // image to rotate in without being clipped by canvas context\n canvas.width = safeArea;\n canvas.height = safeArea;\n\n // translate canvas context to a central location on image to allow rotating around the center.\n ctx.translate(safeArea / 2, safeArea / 2);\n ctx.rotate(getRadianAngle(rotation));\n ctx.translate(-safeArea / 2, -safeArea / 2);\n\n ctx.fillStyle = \"white\";\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n\n // draw rotated image and store data.\n ctx.drawImage(\n image,\n safeArea / 2 - image.width * 0.5,\n safeArea / 2 - image.height * 0.5\n );\n const data = ctx.getImageData(0, 0, safeArea, safeArea);\n\n // set canvas width to final desired crop size - this will clear existing context\n canvas.width = pixelCrop.width;\n canvas.height = pixelCrop.height;\n\n // paste generated rotate image with correct offsets for x,y crop values.\n ctx.putImageData(\n data,\n Math.round(0 - safeArea / 2 + image.width * 0.5 - pixelCrop.x),\n Math.round(0 - safeArea / 2 + image.height * 0.5 - pixelCrop.y)\n );\n\n // As Base64 string\n // return canvas.toDataURL('image/jpeg');\n\n const base64Image = canvas.toDataURL(\"image/jpeg\");\n // const baseString = base64Image.substr(base64Image.indexOf(\",\") + 1);\n // localStorage.setItem('customLogo',base64Image)\n\n var userId = store.getState().selectedUser.currentUser.id;\n var db = firebase.firestore();\n db.collection(\"users\")\n .doc(`${userId}`)\n .update({\n reviewCardUploadedLogo: `${base64Image}`,\n })\n .then(function () {\n console.log(\"Document successfully written!\");\n })\n .catch(function (error) {\n console.error(\"Error writing document: \", error);\n });\n\n return base64Image;\n\n // As a blob\n // return new Promise(resolve => {\n // canvas.toBlob(file => {\n // resolve(URL.createObjectURL(file))\n // }, 'image/jpeg')\n // })\n}\n\nexport async function getRotatedImage(imageSrc, rotation = 0) {\n const image = await createImage(imageSrc);\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n\n const orientationChanged =\n rotation === 90 ||\n rotation === -90 ||\n rotation === 270 ||\n rotation === -270;\n if (orientationChanged) {\n canvas.width = image.height;\n canvas.height = image.width;\n } else {\n canvas.width = image.width;\n canvas.height = image.height;\n }\n\n ctx.translate(canvas.width / 2, canvas.height / 2);\n ctx.rotate((rotation * Math.PI) / 180);\n ctx.drawImage(image, -image.width / 2, -image.height / 2);\n\n return new Promise((resolve) => {\n canvas.toBlob((file) => {\n resolve(URL.createObjectURL(file));\n }, \"image/jpeg\");\n });\n}\n","import React, { useState, useCallback } from \"react\";\nimport Cropper from \"react-easy-crop\";\nimport Slider from \"@material-ui/lab/Slider\";\nimport Button from \"@material-ui/core/Button\";\nimport Typography from \"@material-ui/core/Typography\";\nimport { withStyles } from \"@material-ui/core/styles\";\nimport { getOrientation } from \"get-orientation/browser\";\n// import ImgDialog from \"./ImgDialog\";\nimport { getCroppedImg, getRotatedImage } from \"./canvasUtils\";\nimport { styles } from \"./styles\";\nimport imageCompression from \"browser-image-compression\";\n\n\nconst ORIENTATION_TO_ANGLE = {\n \"3\": 180,\n \"6\": 90,\n \"8\": -90,\n};\n\nconst Demo = ({ classes }) => {\n const [imageSrc, setImageSrc] = React.useState(null);\n const [crop, setCrop] = useState({ x: 0, y: 0 });\n const [rotation, setRotation] = useState(0);\n const [zoom, setZoom] = useState(1);\n const [croppedAreaPixels, setCroppedAreaPixels] = useState(null);\n // eslint-disable-next-line \n const [croppedImage, setCroppedImage] = useState(null);\n\n\n const onCropComplete = useCallback((croppedArea, croppedAreaPixels) => {\n setCroppedAreaPixels(croppedAreaPixels);\n }, []);\n\n const showCroppedImage = useCallback(async () => {\n try {\n const croppedImage = await getCroppedImg(\n imageSrc,\n croppedAreaPixels,\n rotation\n );\n console.log(\"donee\", { croppedImage });\n \n \n\n setCroppedImage(croppedImage);\n setImageSrc(null)\n \n\n\n } catch (e) {\n console.error(e);\n }\n\n }, [imageSrc, croppedAreaPixels, rotation]);\n\n // const onClose = useCallback(() => {\n // setCroppedImage(null);\n // }, []);\n\n const onFileChange = async (e) => {\n if (e.target.files && e.target.files.length > 0) {\n const file = e.target.files[0];\n\n // const imageFile = file;\n\n const options = {\n maxSizeMB: 1,\n maxWidthOrHeight: 1920,\n useWebWorker: true,\n };\n try {\n const compressedFile = await imageCompression(file, options);\n\n let imageDataUrl = await readFile(compressedFile);\n\n // apply rotation if needed\n const orientation = await getOrientation(compressedFile);\n const rotation = ORIENTATION_TO_ANGLE[orientation];\n if (rotation) {\n imageDataUrl = await getRotatedImage(imageDataUrl, rotation);\n }\n\n setImageSrc(imageDataUrl);\n } catch (error) {\n console.log(error);\n }\n }\n };\n\n return (\n
\n {imageSrc ? (\n \n
\n \n
\n
\n
\n \n Zoom\n \n setZoom(zoom)}\n />\n
\n
\n \n Rotation\n \n setRotation(rotation)}\n />\n
\n \n Save\n \n
\n {/* */}\n
\n ) : (\n \n )}\n
\n );\n};\n\nfunction readFile(file) {\n return new Promise((resolve) => {\n const reader = new FileReader();\n reader.addEventListener(\"load\", () => resolve(reader.result), false);\n reader.readAsDataURL(file);\n });\n}\n\nconst StyledDemo = withStyles(styles)(Demo);\n\nexport default StyledDemo;\n","export const styles = theme => ({\n cropContainer: {\n position: 'relative',\n width: '100%',\n height: 200,\n background: 'white',\n [theme.breakpoints.up('sm')]: {\n height: 400,\n },\n },\n cropButton: {\n flexShrink: 0,\n marginLeft: 16,\n },\n controls: {\n padding: 16,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'stretch',\n [theme.breakpoints.up('sm')]: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n },\n sliderContainer: {\n display: 'flex',\n flex: '1',\n alignItems: 'center',\n },\n sliderLabel: {\n [theme.breakpoints.down('xs')]: {\n minWidth: 65,\n },\n },\n slider: {\n padding: '22px 0px',\n marginLeft: 16,\n [theme.breakpoints.up('sm')]: {\n flexDirection: 'row',\n alignItems: 'center',\n margin: '0 16px',\n },\n },\n})\n","import React from \"react\";\n\nimport StyledDemo from \"./index\";\n\nimport {\n MDBContainer,\n MDBIcon,\n MDBBtn,\n MDBModal,\n MDBModalBody,\n MDBModalFooter\n} from \"mdbreact\";\n\n\n\n\n\nclass UploadLogo extends React.Component {\n state = {\n modal: false\n };\n\n toggle = () => {\n this.setState({\n modal: !this.state.modal\n });\n };\n\n render() {\n return (\n \n \n Upload Logo\n \n\n \n \n \n\n \n \n \n \n Close\n \n \n \n \n );\n }\n}\n\n\nexport default UploadLogo;\n","import React from \"react\";\nimport { connect } from \"react-redux\";\nimport {\n MDBMedia,\n MDBCard,\n MDBContainer,\n MDBCardBody,\n MDBCardImage,\n MDBCardTitle,\n MDBCardText,\n MDBTooltip,\n MDBCardFooter,\n MDBBtn,\n MDBLink,\n MDBIcon\n} from \"mdbreact\";\n\nimport { nanoid } from \"nanoid\";\nimport firebase from \"../../utils/firebase/firebase.utils\";\n\nimport { defaultRedirect } from \"../../redux/routing/routing.actions\";\nimport { fetchDesigns } from \"../../redux/designImages/designImages.actions\";\n\nimport API2 from \"../../components/generateQr/generateMultiUserQR\";\nimport API3 from \"../../components/renderDirectCardImage/renderMultiDirectCardImage\";\n\nimport UploadLogo from \"../../components/upload-your-logo-multiUser/uploadLogo\";\nimport { CircularProgress, Box } from \"@material-ui/core\";\n\n// Stripe\nimport { ElementsConsumer } from \"@stripe/react-stripe-js\";\n\n//\n\nimport {\n createSession2,\n createStripeCustomer\n} from \"../../utils/firebase/firebase.utils\";\nimport { updateUser } from \"../../redux/user/user.actions\";\n\nimport Splash from \"../splash/splash\";\nimport \"./RMO.styles.scss\";\n\nimport RW1 from \"./assets/images/IDCard/RW1.png\";\nimport RW2 from \"./assets/images/IDCard/RW2.png\";\n\nclass RangeWaterMultiOrder extends React.Component {\n state = {\n MyTapReviewCardURL: \"\",\n longUrlList: \"\",\n loading: false,\n oldLinkId: \"\"\n };\n\n componentDidMount() {\n // this.props.defaultRedirect();\n // this.props.fetchDesigns();\n // console.log('dddddd',this.props.user.id)\n // console.log('bbbbbb',this.props.currentUser)\n }\n\n // Redirect to fulfillment page when applicable\n // componentDidUpdate() {\n // if (\n // this.props.currentUser &&\n // this.props.currentUser.role === \"fulfillment\"\n // ) {\n // this.props.history.push(\"/fulfillment\");\n // }\n // // this.props.fetchDesigns();\n\n // }\n\n onDirectURLChange = (e) => {\n const { name, value } = e.target;\n this.setState({ [name]: value });\n };\n\n // checkDuplicate() {\n // firebase\n // .firestore()\n // .collection(`users/${this.props.userId}/links`)\n // .get()\n // .then((querySnapshot) => {\n // querySnapshot.forEach((doc) => {\n // // console.log(doc.id, \" => \", doc.data());\n // const longUrlList = doc.data().longURL;\n // console.log(\"referferferferfrerfe\", longUrlList);\n // this.setState({longUrlList:longUrlList})\n // });\n // });\n // }\n\n deleteOldShortUrl() {\n firebase\n .firestore()\n .collection(`users/${this.props.userId}/links`)\n .get()\n .then((querySnapshot) => {\n querySnapshot.forEach((doc) => {\n // console.log(doc.id, \" => \", doc.data());\n const linkDocId = doc.id;\n // console.log(\"this is the idddddd\", linkDocId);\n this.setState({ oldLinkId: linkDocId });\n });\n })\n .then(() => {\n firebase\n .firestore()\n .collection(\"users\")\n .doc(this.props.userId)\n .collection(\"links\")\n .doc(this.state.oldLinkId)\n .delete();\n })\n .then(() => {\n this.createShortLink();\n });\n }\n\n createShortLink() {\n var db = firebase.firestore();\n const link = {\n name: \"relink\",\n longURL:\n this.state.MyTapReviewCardURL.includes(\"http://\") ||\n this.state.MyTapReviewCardURL.includes(\"https://\")\n ? this.state.MyTapReviewCardURL\n : `http://${this.state.MyTapReviewCardURL}`,\n createdAt: firebase.firestore.FieldValue.serverTimestamp(),\n shortCode: nanoid(6),\n totalClicks: 0,\n clickDates: []\n };\n\n db.collection(\"users\")\n .doc(`${this.props.userId}`)\n .collection(\"links\")\n .add(link)\n .then(() => {\n db.collection(\"users\")\n .doc(`${this.props.userId}`)\n .update({\n shortUrl: `https://www.mytap.net/rd/${link.shortCode}`\n });\n });\n }\n\n saveMyTapReviewCardURLToDB(e) {\n var db = firebase.firestore();\n db.collection(\"users\").doc(`${this.props.userId}`).update({\n MyTapReviewCardURL: this.state.MyTapReviewCardURL.toString()\n });\n }\n\n generateAndBuy() {\n API2.generateMultiUserQR();\n\n if (this.props.shortUrl) {\n this.deleteOldShortUrl();\n } else {\n this.createShortLink();\n }\n\n setTimeout(() => {\n API3.renderMultiDirectCardImage();\n }, 250);\n }\n\n render() {\n const { currentUser } = this.props.selectedUser;\n\n if (this.state.loading)\n return (\n \n \n \n );\n\n return (\n
\n
\n
\n \n\n \n \n {this.props.reviewCardUploadedLogo ? (\n \n ) : null}\n
\n\n \n \n {!this.props.orderPlaced ? : null}\n \n \n
\n \n \n {/*

Current: {this.props.MyTapReviewCardURL}

*/}\n
\n
\n \n \n {this.props.orderPlaced ? null : (\n
$3-5/month
\n )}\n
\n \n \n \n \n {({ stripe, elements }) => (\n {\n this.setState({ loading: true });\n e.preventDefault();\n this.generateAndBuy();\n if (!currentUser.stripeCustomerId) {\n return await createStripeCustomer(\n currentUser\n ).then(async () => {\n const session = await createSession2(\n \"MyTap Smart Review Card\",\n currentUser.uid\n );\n stripe.redirectToCheckout({\n sessionId: session.data.id\n });\n console.log(\"session\", session);\n });\n } else {\n const session = await createSession2(\n \"MyTap Smart Review Card\",\n currentUser.uid\n );\n stripe.redirectToCheckout({\n sessionId: session.data.id\n });\n console.log(\"session\", session);\n }\n }}\n >\n {!this.props.orderPlaced ? (\n \n \n \n ) : null}\n \n )}\n \n \n
Order!
\n
\n
\n
\n
\n
\n
\n
\n );\n }\n}\n\nconst mapStateToProps = (state, ownProps) => {\n // console.log('dddddd',this.props.user.id)\n // console.log('bbbbbb',this.props.currentUser)\n // console.log('selectedUser',state.selectedUser.currentUser?.uid)\n\n return {\n reviewCardUploadedLogo:\n state.selectedUser.currentUser?.reviewCardUploadedLogo,\n MyTapReviewCardURL: state.selectedUser.currentUser?.MyTapReviewCardURL,\n shortUrl: state.selectedUser.currentUser?.shortUrl,\n orderPlaced: state.selectedUser.currentUser?.orderPlaced,\n selectedUser: state.selectedUser,\n userId: state.selectedUser.currentUser?.uid\n };\n};\n\nconst mapDispatchToProps = (dispatch, ownProps) => {\n return {\n updateUser: (payload) => {\n dispatch(updateUser(payload));\n },\n defaultRedirect: () => {\n dispatch(defaultRedirect());\n },\n fetchDesigns: (payload) => {\n dispatch(fetchDesigns(payload));\n }\n };\n};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(RangeWaterMultiOrder);\n","import React from \"react\";\nimport { connect } from \"react-redux\";\nimport {\n MDBMedia,\n MDBCard,\n MDBContainer,\n MDBCardBody,\n MDBCardImage,\n MDBCardTitle,\n MDBCardText,\n MDBTooltip,\n MDBCardFooter,\n MDBBtn,\n MDBLink,\n MDBIcon\n} from \"mdbreact\";\n\nimport { nanoid } from \"nanoid\";\nimport firebase from \"../../utils/firebase/firebase.utils\";\n\nimport { defaultRedirect } from \"../../redux/routing/routing.actions\";\nimport { fetchDesigns } from \"../../redux/designImages/designImages.actions\";\n\nimport API2 from \"../../components/generateQr/generateMultiUserQR\";\nimport API3 from \"../../components/renderDirectCardImage/renderMultiDirectCardImage\";\n\nimport UploadLogo from \"../../components/upload-your-logo-multiUser/uploadLogo\";\nimport { CircularProgress, Box } from \"@material-ui/core\";\n\n// Stripe\nimport { ElementsConsumer } from \"@stripe/react-stripe-js\";\n\n//\n\nimport {\n createSession,\n createStripeCustomer\n} from \"../../utils/firebase/firebase.utils\";\nimport { updateUser } from \"../../redux/user/user.actions\";\n\nimport Splash from \"../splash/splash\";\nimport \"./RMO.styles.scss\";\n\nimport RW1 from \"./assets/images/IDCard/RW1.png\";\nimport RW2 from \"./assets/images/IDCard/RW2.png\";\nimport cardBackPlaceholder from \"./assets/images/IDCard/mytapQr.png\";\nimport CardBack from \"./assets/images/IDCard/card-back copy.png\";\nimport logoPlaceHolder from \"./assets/images/IDCard/logo-Placeholder.jpg\";\n\n\n\nclass RangewaterAdminOrders extends React.Component {\n state = {\n MyTapReviewCardURL: \"\",\n longUrlList: \"\",\n loading: false,\n oldLinkId: \"\",\n saveBtn: \"SAVE\"\n };\n\n componentDidMount() {\n // this.props.defaultRedirect();\n // this.props.fetchDesigns();\n // console.log('dddddd',this.props.user.id)\n // console.log('bbbbbb',this.props.currentUser)\n }\n\n // Redirect to fulfillment page when applicable\n // componentDidUpdate() {\n // if (\n // this.props.currentUser &&\n // this.props.currentUser.role === \"fulfillment\"\n // ) {\n // this.props.history.push(\"/fulfillment\");\n // }\n // // this.props.fetchDesigns();\n\n // }\n\n onDirectURLChange = (e) => {\n const { name, value } = e.target;\n this.setState({ [name]: value });\n };\n\n // checkDuplicate() {\n // firebase\n // .firestore()\n // .collection(`users/${this.props.userId}/links`)\n // .get()\n // .then((querySnapshot) => {\n // querySnapshot.forEach((doc) => {\n // // console.log(doc.id, \" => \", doc.data());\n // const longUrlList = doc.data().longURL;\n // console.log(\"referferferferfrerfe\", longUrlList);\n // this.setState({longUrlList:longUrlList})\n // });\n // });\n // }\n\n deleteOldShortUrl() {\n firebase\n .firestore()\n .collection(`users/${this.props.userId}/links`)\n .get()\n .then((querySnapshot) => {\n querySnapshot.forEach((doc) => {\n // console.log(doc.id, \" => \", doc.data());\n const linkDocId = doc.id;\n // console.log(\"this is the idddddd\", linkDocId);\n this.setState({ oldLinkId: linkDocId });\n });\n })\n .then(() => {\n firebase\n .firestore()\n .collection(\"users\")\n .doc(this.props.userId)\n .collection(\"links\")\n .doc(this.state.oldLinkId)\n .delete();\n })\n .then(() => {\n this.createShortLink();\n });\n }\n\n createShortLink() {\n var db = firebase.firestore();\n const link = {\n name: \"relink\",\n longURL:\n this.state.MyTapReviewCardURL.includes(\"http://\") ||\n this.state.MyTapReviewCardURL.includes(\"https://\")\n ? this.state.MyTapReviewCardURL\n : `http://${this.state.MyTapReviewCardURL}`,\n createdAt: firebase.firestore.FieldValue.serverTimestamp(),\n shortCode: nanoid(6),\n totalClicks: 0,\n clickDates: []\n };\n\n db.collection(\"users\")\n .doc(`${this.props.userId}`)\n .collection(\"links\")\n .add(link)\n .then(() => {\n db.collection(\"users\")\n .doc(`${this.props.userId}`)\n .update({\n shortUrl: `https://www.mytap.net/rd/${link.shortCode}`\n });\n });\n }\n\n async updateShortLink() {\n var db = firebase.firestore();\n const longCode = this.props.shortUrl;\n const shortCode = longCode.substring(longCode.lastIndexOf(\"/\") + 1);\n const linkDoc = await db.collection(\"links\").doc(shortCode).get();\n const { longURL, linkID, userId } = linkDoc.data();\n // console.log(\"yooooooooooo\", linkDoc.data());\n // console.log('yooooooooooo', longURL)\n // console.log(shortCode);\n\n db.collection(\"links\")\n .doc(shortCode)\n .update({\n longURL:\n this.state.MyTapReviewCardURL.includes(\"http://\") ||\n this.state.MyTapReviewCardURL.includes(\"https://\")\n ? this.state.MyTapReviewCardURL\n : `https://${this.state.MyTapReviewCardURL}`\n })\n .then(() => {\n db.collection(\"users\")\n .doc(userId)\n .collection(\"links\")\n .doc(linkID)\n .update({\n longURL:\n this.state.MyTapReviewCardURL.includes(\"http://\") ||\n this.state.MyTapReviewCardURL.includes(\"https://\")\n ? this.state.MyTapReviewCardURL\n : `https://${this.state.MyTapReviewCardURL}`\n });\n });\n }\n\n saveMyTapReviewCardURLToDB(e) {\n var db = firebase.firestore();\n db.collection(\"users\").doc(`${this.props.userId}`).update({\n MyTapReviewCardURL: this.state.MyTapReviewCardURL.toString()\n });\n this.updateShortLink();\n\n this.setState({ saveBtn: \"SAVED!\" });\n setTimeout(() => {\n this.setState({ saveBtn: \"SAVE\" });\n }, 3000);\n }\n\n generateAndBuy() {\n // var db = firebase.firestore();\n // db.collection(\"users\").doc(`${this.props.userId}`).update({\n // orderPlaced: true\n // });\n\n if (!this.props.MyTapReviewCardURL) {\n this.saveMyTapReviewCardURLToDB();\n }\n\n if (this.props.shortUrl) {\n // this.deleteOldShortUrl();\n // console.log(\"link is\", this.props.shortUrl);\n this.updateShortLink();\n } else {\n this.createShortLink();\n }\n setTimeout(() => {\n API2.generateMultiUserQR();\n }, 1000);\n\n setTimeout(() => {\n API3.renderMultiDirectCardImage();\n }, 3000);\n }\n\n render() {\n const { currentUser } = this.props.selectedUser;\n\n if (this.state.loading)\n return (\n \n \n \n );\n\n return (\n
\n
\n
\n \n\n \n\n\n \n \n\n \n \n\n\n \n \n {!this.props.orderPlaced ? : null}\n \n \n
\n \n \n\n {this.props.orderPlaced ? (\n \n {this.state.saveBtn}\n \n ) : null}\n\n {this.props.orderPlaced ? this.props.shortUrl : null}\n {/*

Current: {this.props.MyTapReviewCardURL}

*/}\n
\n
\n \n \n
$35
\n
\n \n \n \n \n {({ stripe, elements }) => (\n {\n this.setState({ loading: true });\n e.preventDefault();\n this.generateAndBuy();\n if (!currentUser.stripeCustomerId) {\n return await createStripeCustomer(\n currentUser\n ).then(async () => {\n const session = await createSession(\n \"MyTap Review Card\",\n currentUser.uid\n );\n stripe.redirectToCheckout({\n sessionId: session.data.id\n });\n console.log(\"session\", session);\n });\n } else {\n const session = await createSession(\n \"MyTap Review Card\",\n currentUser.uid\n );\n stripe.redirectToCheckout({\n sessionId: session.data.id\n });\n console.log(\"session\", session);\n }\n }}\n >\n \n \n \n\n {/* {!this.props.orderPlaced ? (\n \n \n \n ) : null} */}\n \n )}\n \n \n
Order!
\n
\n
\n
\n
\n
\n
\n
\n );\n }\n}\n\nconst mapStateToProps = (state, ownProps) => {\n // console.log('dddddd',this.props.user.id)\n // console.log('bbbbbb',this.props.currentUser)\n // console.log('selectedUser',state.selectedUser.currentUser?.uid)\n\n return {\n reviewCardUploadedLogo:\n state.selectedUser.currentUser?.reviewCardUploadedLogo,\n MyTapReviewCardURL: state.selectedUser.currentUser?.MyTapReviewCardURL,\n reviewCardImage: state.selectedUser.currentUser?.reviewCardImage,\n QrImg: state.selectedUser.currentUser?.QrImg,\n shortUrl: state.selectedUser.currentUser?.shortUrl,\n orderPlaced: state.selectedUser.currentUser?.orderPlaced,\n selectedUser: state.selectedUser,\n userId: state.selectedUser.currentUser?.uid\n };\n};\n\nconst mapDispatchToProps = (dispatch, ownProps) => {\n return {\n updateUser: (payload) => {\n dispatch(updateUser(payload));\n },\n defaultRedirect: () => {\n dispatch(defaultRedirect());\n },\n fetchDesigns: (payload) => {\n dispatch(fetchDesigns(payload));\n }\n };\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(RangewaterAdminOrders);\n","import store from \"../../redux/store\";\nimport firebase from \"../../utils/firebase/firebase.utils\";\n\nconst createImage = (url) =>\n new Promise((resolve, reject) => {\n const image = new Image();\n image.addEventListener(\"load\", () => resolve(image));\n image.addEventListener(\"error\", (error) => reject(error));\n image.setAttribute(\"crossOrigin\", \"anonymous\"); // needed to avoid cross-origin issues on CodeSandbox\n image.src = url;\n });\n\nfunction getRadianAngle(degreeValue) {\n return (degreeValue * Math.PI) / 180;\n}\n\n/**\n * This function was adapted from the one in the ReadMe of https://github.com/DominicTobias/react-image-crop\n * @param {File} image - Image File url\n * @param {Object} pixelCrop - pixelCrop Object provided by react-easy-crop\n * @param {number} rotation - optional rotation parameter\n */\nexport async function getCroppedImg(imageSrc, pixelCrop, rotation = 0) {\n const image = await createImage(imageSrc);\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n\n // image.width = image.width / 2;\n // image.height = image.height / 2;\n\n // const safeArea = Math.max(image.width, image.height) * 2\n\n const maxSize = Math.max(image.width, image.height);\n const safeArea = 5 * ((maxSize / 2) * Math.sqrt(2));\n\n // set each dimensions to double largest dimension to allow for a safe area for the\n // image to rotate in without being clipped by canvas context\n canvas.width = safeArea;\n canvas.height = safeArea;\n\n // translate canvas context to a central location on image to allow rotating around the center.\n ctx.translate(safeArea / 2, safeArea / 2);\n ctx.rotate(getRadianAngle(rotation));\n ctx.translate(-safeArea / 2, -safeArea / 2);\n\n ctx.fillStyle = \"white\";\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n\n // draw rotated image and store data.\n ctx.drawImage(\n image,\n safeArea / 2 - image.width * 0.5,\n safeArea / 2 - image.height * 0.5\n );\n const data = ctx.getImageData(0, 0, safeArea, safeArea);\n\n // set canvas width to final desired crop size - this will clear existing context\n canvas.width = pixelCrop.width;\n canvas.height = pixelCrop.height;\n\n // paste generated rotate image with correct offsets for x,y crop values.\n ctx.putImageData(\n data,\n Math.round(0 - safeArea / 2 + image.width * 0.5 - pixelCrop.x),\n Math.round(0 - safeArea / 2 + image.height * 0.5 - pixelCrop.y)\n );\n\n // As Base64 string\n // return canvas.toDataURL('image/jpeg');\n\n const base64Image = canvas.toDataURL(\"image/jpeg\");\n // const baseString = base64Image.substr(base64Image.indexOf(\",\") + 1);\n // localStorage.setItem('customLogo',base64Image)\n\n var userId = store.getState().selectedUser.currentUser.id;\n var db = firebase.firestore();\n db.collection(\"users\")\n .doc(`${userId}`)\n .update({\n reviewCardUploadedFrontLogo: `${base64Image}`,\n })\n .then(function () {\n console.log(\"Document successfully written!\");\n })\n .catch(function (error) {\n console.error(\"Error writing document: \", error);\n });\n\n return base64Image;\n\n // As a blob\n // return new Promise(resolve => {\n // canvas.toBlob(file => {\n // resolve(URL.createObjectURL(file))\n // }, 'image/jpeg')\n // })\n}\n\nexport async function getRotatedImage(imageSrc, rotation = 0) {\n const image = await createImage(imageSrc);\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n\n const orientationChanged =\n rotation === 90 ||\n rotation === -90 ||\n rotation === 270 ||\n rotation === -270;\n if (orientationChanged) {\n canvas.width = image.height;\n canvas.height = image.width;\n } else {\n canvas.width = image.width;\n canvas.height = image.height;\n }\n\n ctx.translate(canvas.width / 2, canvas.height / 2);\n ctx.rotate((rotation * Math.PI) / 180);\n ctx.drawImage(image, -image.width / 2, -image.height / 2);\n\n return new Promise((resolve) => {\n canvas.toBlob((file) => {\n resolve(URL.createObjectURL(file));\n }, \"image/jpeg\");\n });\n}\n","import React, { useState, useCallback } from \"react\";\nimport Cropper from \"react-easy-crop\";\nimport Slider from \"@material-ui/lab/Slider\";\nimport Button from \"@material-ui/core/Button\";\nimport Typography from \"@material-ui/core/Typography\";\nimport { withStyles } from \"@material-ui/core/styles\";\nimport { getOrientation } from \"get-orientation/browser\";\n// import ImgDialog from \"./ImgDialog\";\nimport { getCroppedImg, getRotatedImage } from \"./canvasUtils\";\nimport { styles } from \"./styles\";\nimport imageCompression from \"browser-image-compression\";\n\n\nconst ORIENTATION_TO_ANGLE = {\n \"3\": 180,\n \"6\": 90,\n \"8\": -90,\n};\n\nconst Demo = ({ classes }) => {\n const [imageSrc, setImageSrc] = React.useState(null);\n const [crop, setCrop] = useState({ x: 0, y: 0 });\n const [rotation, setRotation] = useState(0);\n const [zoom, setZoom] = useState(1);\n const [croppedAreaPixels, setCroppedAreaPixels] = useState(null);\n // eslint-disable-next-line \n const [croppedImage, setCroppedImage] = useState(null);\n\n\n const onCropComplete = useCallback((croppedArea, croppedAreaPixels) => {\n setCroppedAreaPixels(croppedAreaPixels);\n }, []);\n\n const showCroppedImage = useCallback(async () => {\n try {\n const croppedImage = await getCroppedImg(\n imageSrc,\n croppedAreaPixels,\n rotation\n );\n console.log(\"donee\", { croppedImage });\n \n \n\n setCroppedImage(croppedImage);\n setImageSrc(null)\n \n\n\n } catch (e) {\n console.error(e);\n }\n\n }, [imageSrc, croppedAreaPixels, rotation]);\n\n // const onClose = useCallback(() => {\n // setCroppedImage(null);\n // }, []);\n\n const onFileChange = async (e) => {\n if (e.target.files && e.target.files.length > 0) {\n const file = e.target.files[0];\n\n // const imageFile = file;\n\n const options = {\n maxSizeMB: 1,\n maxWidthOrHeight: 1920,\n useWebWorker: true,\n };\n try {\n const compressedFile = await imageCompression(file, options);\n\n let imageDataUrl = await readFile(compressedFile);\n\n // apply rotation if needed\n const orientation = await getOrientation(compressedFile);\n const rotation = ORIENTATION_TO_ANGLE[orientation];\n if (rotation) {\n imageDataUrl = await getRotatedImage(imageDataUrl, rotation);\n }\n\n setImageSrc(imageDataUrl);\n } catch (error) {\n console.log(error);\n }\n }\n };\n\n return (\n
\n {imageSrc ? (\n \n
\n \n
\n
\n
\n \n Zoom\n \n setZoom(zoom)}\n />\n
\n
\n \n Rotation\n \n setRotation(rotation)}\n />\n
\n \n Save\n \n
\n {/* */}\n
\n ) : (\n \n )}\n
\n );\n};\n\nfunction readFile(file) {\n return new Promise((resolve) => {\n const reader = new FileReader();\n reader.addEventListener(\"load\", () => resolve(reader.result), false);\n reader.readAsDataURL(file);\n });\n}\n\nconst StyledDemo = withStyles(styles)(Demo);\n\nexport default StyledDemo;\n","export const styles = theme => ({\n cropContainer: {\n position: 'relative',\n width: '100%',\n height: 200,\n background: 'white',\n [theme.breakpoints.up('sm')]: {\n height: 400,\n },\n },\n cropButton: {\n flexShrink: 0,\n marginLeft: 16,\n },\n controls: {\n padding: 16,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'stretch',\n [theme.breakpoints.up('sm')]: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n },\n sliderContainer: {\n display: 'flex',\n flex: '1',\n alignItems: 'center',\n },\n sliderLabel: {\n [theme.breakpoints.down('xs')]: {\n minWidth: 65,\n },\n },\n slider: {\n padding: '22px 0px',\n marginLeft: 16,\n [theme.breakpoints.up('sm')]: {\n flexDirection: 'row',\n alignItems: 'center',\n margin: '0 16px',\n },\n },\n})\n","import React from \"react\";\n\nimport StyledDemo from \"./index\";\n\nimport {\n MDBContainer,\n MDBIcon,\n MDBBtn,\n MDBModal,\n MDBModalBody,\n MDBModalFooter\n} from \"mdbreact\";\n\n\n\n\n\nclass UploadLogo extends React.Component {\n state = {\n modal: false\n };\n\n toggle = () => {\n this.setState({\n modal: !this.state.modal\n });\n };\n\n render() {\n return (\n \n \n Upload Logo\n \n\n \n \n \n\n \n \n \n \n Close\n \n \n \n \n );\n }\n}\n\n\nexport default UploadLogo;\n","import React from \"react\";\nimport { connect } from \"react-redux\";\nimport {\n MDBMedia,\n MDBCard,\n MDBContainer,\n MDBCardBody,\n MDBCardImage,\n MDBCardTitle,\n MDBCardText,\n MDBTooltip,\n MDBCardFooter,\n MDBBtn,\n MDBLink,\n MDBIcon\n} from \"mdbreact\";\n\nimport { nanoid } from \"nanoid\";\nimport firebase from \"../../utils/firebase/firebase.utils\";\n\nimport { defaultRedirect } from \"../../redux/routing/routing.actions\";\nimport { fetchDesigns } from \"../../redux/designImages/designImages.actions\";\n\nimport API2 from \"../../components/generateQr/generateMultiUserQR\";\nimport API3 from \"../../components/renderDirectCardImage/renderMultiDirectCardImage\";\n\nimport UploadLogo from \"../../components/upload-your-logo-multiUser/uploadLogo\";\nimport UploadLogoFront from \"../../components/upload-your-logo-front-multiUser/uploadLogo\";\n\nimport { CircularProgress, Box } from \"@material-ui/core\";\n\n// Stripe\nimport { ElementsConsumer } from \"@stripe/react-stripe-js\";\n\n//\n\nimport {\n createSession,\n createStripeCustomer\n} from \"../../utils/firebase/firebase.utils\";\nimport { updateUser } from \"../../redux/user/user.actions\";\n\nimport { Carousel } from \"react-bootstrap\";\nimport Splash from \"../splash/splash\";\nimport \"./RMO.styles.scss\";\n\nimport RW1 from \"./assets/images/IDCard/RW1.png\";\nimport RW2 from \"./assets/images/IDCard/RW2.png\";\nimport cardBackPlaceholder from \"./assets/images/IDCard/mytapQr.png\";\nimport CardBack from \"./assets/images/IDCard/card-back copy.png\";\nimport cardFront from \"./assets/images/IDCard/card-front.png\";\nimport logoPlaceHolder from \"./assets/images/IDCard/logo-Placeholder.jpg\";\n\nclass SugarcoatAdminOrders extends React.Component {\n state = {\n MyTapReviewCardURL: \"\",\n longUrlList: \"\",\n loading: false,\n oldLinkId: \"\",\n saveBtn: \"SAVE\",\n selectedIndex: \"\"\n };\n\n componentDidMount() {\n // this.props.defaultRedirect();\n // this.props.fetchDesigns();\n // console.log('dddddd',this.props.user.id)\n // console.log('bbbbbb',this.props.currentUser)\n }\n\n // Redirect to fulfillment page when applicable\n // componentDidUpdate() {\n // if (\n // this.props.currentUser &&\n // this.props.currentUser.role === \"fulfillment\"\n // ) {\n // this.props.history.push(\"/fulfillment\");\n // }\n // // this.props.fetchDesigns();\n\n // }\n\n onDirectURLChange = (e) => {\n const { name, value } = e.target;\n this.setState({ [name]: value });\n };\n\n handleSelect = (selectedIndex) => {\n this.setState({\n selectedIndex: selectedIndex\n });\n };\n\n // checkDuplicate() {\n // firebase\n // .firestore()\n // .collection(`users/${this.props.userId}/links`)\n // .get()\n // .then((querySnapshot) => {\n // querySnapshot.forEach((doc) => {\n // // console.log(doc.id, \" => \", doc.data());\n // const longUrlList = doc.data().longURL;\n // console.log(\"referferferferfrerfe\", longUrlList);\n // this.setState({longUrlList:longUrlList})\n // });\n // });\n // }\n\n deleteOldShortUrl() {\n firebase\n .firestore()\n .collection(`users/${this.props.userId}/links`)\n .get()\n .then((querySnapshot) => {\n querySnapshot.forEach((doc) => {\n // console.log(doc.id, \" => \", doc.data());\n const linkDocId = doc.id;\n // console.log(\"this is the idddddd\", linkDocId);\n this.setState({ oldLinkId: linkDocId });\n });\n })\n .then(() => {\n firebase\n .firestore()\n .collection(\"users\")\n .doc(this.props.userId)\n .collection(\"links\")\n .doc(this.state.oldLinkId)\n .delete();\n })\n .then(() => {\n this.createShortLink();\n });\n }\n\n createShortLink() {\n var db = firebase.firestore();\n const link = {\n name: \"relink\",\n longURL:\n this.state.MyTapReviewCardURL.includes(\"http://\") ||\n this.state.MyTapReviewCardURL.includes(\"https://\")\n ? this.state.MyTapReviewCardURL\n : `http://${this.state.MyTapReviewCardURL}`,\n createdAt: firebase.firestore.FieldValue.serverTimestamp(),\n shortCode: nanoid(6),\n totalClicks: 0,\n clickDates: []\n };\n\n db.collection(\"users\")\n .doc(`${this.props.userId}`)\n .collection(\"links\")\n .add(link)\n .then(() => {\n db.collection(\"users\")\n .doc(`${this.props.userId}`)\n .update({\n shortUrl: `https://www.mytap.net/rd/${link.shortCode}`\n });\n });\n }\n\n async updateShortLink() {\n var db = firebase.firestore();\n const longCode = this.props.shortUrl;\n const shortCode = longCode.substring(longCode.lastIndexOf(\"/\") + 1);\n const linkDoc = await db.collection(\"links\").doc(shortCode).get();\n const { longURL, linkID, userId } = linkDoc.data();\n // console.log(\"yooooooooooo\", linkDoc.data());\n // console.log('yooooooooooo', longURL)\n // console.log(shortCode);\n\n db.collection(\"links\")\n .doc(shortCode)\n .update({\n longURL:\n this.state.MyTapReviewCardURL.includes(\"http://\") ||\n this.state.MyTapReviewCardURL.includes(\"https://\")\n ? this.state.MyTapReviewCardURL\n : `https://${this.state.MyTapReviewCardURL}`\n })\n .then(() => {\n db.collection(\"users\")\n .doc(userId)\n .collection(\"links\")\n .doc(linkID)\n .update({\n longURL:\n this.state.MyTapReviewCardURL.includes(\"http://\") ||\n this.state.MyTapReviewCardURL.includes(\"https://\")\n ? this.state.MyTapReviewCardURL\n : `https://${this.state.MyTapReviewCardURL}`\n });\n });\n }\n\n saveMyTapReviewCardURLToDB(e) {\n var db = firebase.firestore();\n db.collection(\"users\").doc(`${this.props.userId}`).update({\n MyTapReviewCardURL: this.state.MyTapReviewCardURL.toString()\n });\n this.updateShortLink();\n\n this.setState({ saveBtn: \"SAVED!\" });\n setTimeout(() => {\n this.setState({ saveBtn: \"SAVE\" });\n }, 3000);\n }\n\n generateAndBuy() {\n // var db = firebase.firestore();\n // db.collection(\"users\").doc(`${this.props.userId}`).update({\n // orderPlaced: true\n // });\n\n if (!this.props.MyTapReviewCardURL) {\n this.saveMyTapReviewCardURLToDB();\n }\n\n if (this.props.shortUrl) {\n // this.deleteOldShortUrl();\n // console.log(\"link is\", this.props.shortUrl);\n this.updateShortLink();\n } else {\n this.createShortLink();\n }\n setTimeout(() => {\n API2.generateMultiUserQR();\n }, 1000);\n\n setTimeout(() => {\n API3.renderMultiDirectCardImage();\n }, 3000);\n }\n\n render() {\n const { currentUser } = this.props.selectedUser;\n\n if (this.state.loading)\n return (\n \n \n \n );\n\n return (\n
\n
\n
\n \n\n \n \n\n\n \n\n \n\n \n\n \n\n\n \n\n\n \n \n \n \n \n\n\n \n \n {!this.props.orderPlaced ? \n this.state.selectedIndex === 1? : \n : null}\n \n \n
\n \n \n\n {this.props.orderPlaced ? (\n \n {this.state.saveBtn}\n \n ) : null}\n\n {this.props.orderPlaced ? this.props.shortUrl : null}\n {/*

Current: {this.props.MyTapReviewCardURL}

*/}\n
\n
\n \n \n
$50
\n
\n \n \n \n \n {({ stripe, elements }) => (\n {\n this.setState({ loading: true });\n e.preventDefault();\n this.generateAndBuy();\n if (!currentUser.stripeCustomerId) {\n return await createStripeCustomer(\n currentUser\n ).then(async () => {\n const session = await createSession(\n \"ReviewCard\",\n currentUser.uid\n );\n stripe.redirectToCheckout({\n sessionId: session.data.id\n });\n console.log(\"session\", session);\n });\n } else {\n const session = await createSession(\n \"ReviewCard\",\n currentUser.uid\n );\n stripe.redirectToCheckout({\n sessionId: session.data.id\n });\n console.log(\"session\", session);\n }\n }}\n >\n \n \n \n\n {/* {!this.props.orderPlaced ? (\n \n \n \n ) : null} */}\n \n )}\n \n \n {this.state.MyTapReviewCardURL.length < 4 ||!this.props.reviewCardUploadedLogo || !this.props.reviewCardUploadedFrontLogo ? \n
Must provide both logos and link!
:
Order!
\n }\n \n
\n
\n
\n
\n
\n
\n
\n );\n }\n}\n\nconst mapStateToProps = (state, ownProps) => {\n // console.log('dddddd',this.props.user.id)\n // console.log('bbbbbb',this.props.currentUser)\n // console.log('selectedUser',state.selectedUser.currentUser?.uid)\n\n return {\n reviewCardUploadedLogo:\n state.selectedUser.currentUser?.reviewCardUploadedLogo,\n reviewCardUploadedFrontLogo:state.selectedUser.currentUser?.reviewCardUploadedFrontLogo,\n MyTapReviewCardURL: state.selectedUser.currentUser?.MyTapReviewCardURL,\n reviewCardImage: state.selectedUser.currentUser?.reviewCardImage,\n QrImg: state.selectedUser.currentUser?.QrImg,\n shortUrl: state.selectedUser.currentUser?.shortUrl,\n orderPlaced: state.selectedUser.currentUser?.orderPlaced,\n selectedUser: state.selectedUser,\n userId: state.selectedUser.currentUser?.uid\n };\n};\n\nconst mapDispatchToProps = (dispatch, ownProps) => {\n return {\n updateUser: (payload) => {\n dispatch(updateUser(payload));\n },\n defaultRedirect: () => {\n dispatch(defaultRedirect());\n },\n fetchDesigns: (payload) => {\n dispatch(fetchDesigns(payload));\n }\n };\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(SugarcoatAdminOrders);\n","import React, { useEffect, useState, useRef } from 'react'\nimport { connect,useDispatch } from \"react-redux\";\nimport { setSelectedUser } from \"../../redux/selectedUser/selectedUser.actions\";\nimport { useParams } from \"react-router-dom\"\nimport firebase from \"../../utils/firebase/firebase.utils\"\nimport RangeWaterMultiOrder from '../rangewater-multiOrder/rangewaterMultiOrder'\nimport RangewaterAdminOrders from '../rangewater-admin-orders/rangewaterAdminOrders'\nimport SugarcoatAdminOrders from '../sugarcoat-admin-orders/sugarcoatAdminOrders'\nimport { withRouter } from \"react-router-dom\";\nimport { fetchDesigns } from \"../../redux/designImages/designImages.actions\";\n\nfunction EditEnterpriseUserPage({ explicitUser, ...props }) {\n // console.log(\"EEUP: props: \" + JSON.stringify(explicitUser))\n const { id: userId } = useParams()\n const [user, setUser] = useState(explicitUser)\n const dispatch = useDispatch()\n\n\n let isRendered = useRef(false);\n\n useEffect(() => {\n // console.log(\"EEUP#useEffect\")\n\n isRendered = true;\n firebase.firestore()\n .collection('users')\n .doc(explicitUser?.id || userId).get().then(user => {\n if (isRendered) {\n // console.log(\"EEUP#setUser\",explicitUser)\n setUser({ ...user.data(), id: user.id })\n dispatch(setSelectedUser(explicitUser))\n }\n return null\n }).catch(err => console.log(err));\n return () => {\n isRendered = false;\n }\n }, [userId, explicitUser])\n\n const augmentedProps = { fetchDesigns, user, ...props }\n const FormPageWithRouter = withRouter(RangewaterAdminOrders)\n // console.log(user)\n\n\n return (\n //
\n // { user && }\n // { !user &&

Please wait...

}\n //
\n // \n \n user.creatorId === \"vXEfevg5L4XgUOqxNGB3j8wJURd2\" \n // || \"9Q6Xdwa7R6SaPuqSOFEY1O8PgOH2\" \n ? : \n \n )\n\n}\n\n\n// const mapDispatchToProps = (dispatch) => ({\n// setSelectedUser: (user) => dispatch(setSelectedUser(user))\n// });\n \nexport default EditEnterpriseUserPage\n\n// export default connect(null, mapDispatchToProps)(EditEnterpriseUserPage);\n\n\n","export const setSelectedUser = user => ({\n type: 'SET_SELECTED_USER',\n payload: user\n})\n\n","import React, { useRef, useState, useEffect } from \"react\";\nimport EditEnterpriseUserPage from \"../../pages/enterprise/editEnterpriseUserPage\";\nimport firebase from \"../../utils/firebase/firebase.utils\";\nimport { adminDeleteUser } from \"../../utils/firebase/firebase.utils\";\nimport { BarChart as ChartIcon } from \"@material-ui/icons\";\nimport { Box, Typography } from \"@material-ui/core\";\n\nimport API from \"./graph\";\n\n// import OutsideAlerter from \"../outsideAlerter/outsideAlerter\";\n\nimport \"./userCard.css\";\n\nimport {\n MDBIcon,\n MDBModal,\n MDBModalBody,\n MDBContainer,\n MDBCard,\n MDBInput\n} from \"mdbreact\";\n\nfunction UserCard(props) {\n const [editModal, setEditModal] = useState(false);\n const [editModal2, setEditModal2] = useState(false);\n const [editMenu, setEditMenu] = useState(false);\n const [groupAssignmentMenu, setGroupAssignmentMenu] = useState(false);\n const [ID, setID] = useState(0);\n const [totalClicks, setClicks] = useState(0);\n const [clickDates, setClickDates] = useState([]);\n const [clickTimes, setClickTimes] = useState([]);\n const [linkDocId, setLinkDocId] = useState(0);\n const [search, setSearch] = useState(\"\");\n\n // const handleClick = (e) => {\n // e.preventDefault();\n // console.log('The link was clicked.', e);\n // };\n\n useEffect(() => {\n getClicks();\n // add when mounted\n document.addEventListener(\"mousedown\", handleClick);\n // return function to be called when unmounted\n return () => {\n document.removeEventListener(\"mousedown\", handleClick);\n };\n }, []);\n\n const handleClick = (e) => {\n if (node.current.contains(e.target)) {\n // inside click\n return;\n }\n // outside click\n setTimeout(() => {\n setEditMenu(editMenu);\n }, 200);\n };\n const node = useRef();\n\n const filterChange = (e) => {\n setSearch(e.target.value);\n };\n\n const toggleEditModal = () => {\n setEditModal(!editModal);\n };\n const toggleEditModal2 = () => {\n API.graph(props.user, clickDates, clickTimes);\n setTimeout(() => {\n setEditModal2(!editModal2);\n }, 450);\n };\n const toggleEditMenu = () => {\n setEditMenu(!editMenu);\n };\n\n const deleteUser = () => {\n // var user = firebase.auth().props?.user?.id;\n console.log(\"Deleted:\", props.user.id);\n firebase\n .firestore()\n .collection(\"users\")\n .doc(`${firebase.auth().currentUser.uid}`)\n .update({\n createdUsers: firebase.firestore.FieldValue.arrayRemove(props.user.id)\n });\n //delete all shortLink data\n if (props.user.shortUrl) {\n firebase\n .firestore()\n .collection(\"users\")\n .doc(props.user.id)\n .collection(\"links\")\n .doc(linkDocId)\n .delete();\n }\n\n //delete user data\n adminDeleteUser(props.user.id);\n\n // firebase.firestore().collection(\"users\").doc(props.user.id).delete();\n };\n\n const removeUser = () => {\n let confirmDeleteUser = window.confirm(\n \"Are you sure you want to delete this user?\"\n );\n confirmDeleteUser === true ? deleteUser() : console.log(\"user canceled\");\n };\n\n const order = () => {\n const docRef = firebase.firestore().collection(\"users\").doc(props.user.id);\n setID(ID + 1);\n\n docRef\n .get()\n .then((doc) => {\n if (doc.exists) {\n console.log(\"Document data:\", doc.data());\n const docData = doc.data();\n\n firebase\n .firestore()\n .collection(\"TanyasOrders\")\n .doc(`${props.user.id}-${ID}`)\n .set({ ...docData, dateOrdered: new Date(), id: ID });\n } else {\n // doc.data() will be undefined in this case\n console.log(\"No such document!\");\n }\n })\n .catch((error) => {\n console.log(\"Error getting document:\", error);\n });\n\n // var user = firebase.auth().props?.user?.id;\n console.log(\"order this:\", props.user.id);\n // console.log(\"yo\", docRef);\n\n firebase.firestore().collection(\"users\").doc(props.user.id).update({\n fulfilled: false\n });\n };\n\n const getClicks = () => {\n firebase\n .firestore()\n .collection(`users/${props.user.id}/links`)\n .get()\n .then((querySnapshot) => {\n querySnapshot.forEach((doc) => {\n // console.log(doc.id, \" => \", doc.data());\n const clicks = doc.data().totalClicks;\n const clickDates = doc.data().clickDates;\n const linkDocId = doc.id;\n // console.log(\"this is the idddddd\", linkDocId);\n setLinkDocId(linkDocId);\n setClicks(clicks);\n\n const dates = clickDates.map((date) =>\n new Date(date.seconds * 1000).setHours(0, 0, 0, 0)\n );\n const clickTimes = clickDates.map((date) =>\n new Date(date * 1000).toLocaleTimeString()\n );\n\n setClickDates(dates);\n setClickTimes(clickTimes);\n });\n });\n };\n\n const toggleGroupAssignmentMenu = () => {\n setGroupAssignmentMenu(!groupAssignmentMenu);\n\n setTimeout(() => {\n setEditMenu(editMenu);\n }, 205);\n };\n\n const addToGroup = (group) => {\n const removeGroupFromUser = () => {\n const fieldValue = firebase.firestore.FieldValue;\n firebase\n .firestore()\n .collection(\"users\")\n .doc(props.user.id)\n .update({ group: firebase.firestore.FieldValue.delete() });\n };\n group === null\n ? removeGroupFromUser()\n : firebase\n .firestore()\n .collection(\"users\")\n .doc(props.user.id)\n .update({ group: group });\n };\n\n return (\n \n
\n \n \n {totalClicks}\n \n \n Total Clicks\n \n
\n
\n {props.user.displayName\n ? props.user.displayName\n : `${props.user.formData?.firstName}`}\n
\n {/*
{props.user.email}
*/}\n {/*
\n {props.user.group ? props.user.group : \"\"}\n
*/}\n
\n
\n\n
\n \n \n \n\n \n
\n
\n {props.user.orderPlaced ? \"View\" : \"Order\"}\n
\n
\n Delete\n
\n\n \n \n
    \n {props.groups\n .map((group) => (\n {\n addToGroup(group);\n }}\n key={group}\n >\n {group}\n \n ))\n .filter((group) =>\n group.key.toLowerCase().includes(search.toLowerCase())\n )}\n
\n {\n addToGroup(null);\n }}\n >\n Unassign\n
\n
\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n
\n );\n}\n\nexport default UserCard;\n","import React, { useState, useEffect } from \"react\";\n\nimport { connect } from \"react-redux\";\nimport firebase from \"firebase/app\";\n// import firebase from \"../../utils/firebase/firebase.utils\";\n\nimport { createStructuredSelector } from \"reselect\";\n\nimport { setCurrentUser } from \"../../redux/user/user.actions\";\nimport { selectCurrentUser } from \"../../redux/user/user.selectors\";\nimport { nanoid } from \"nanoid\";\n\n\nimport \"./enterprise.css\";\n\nimport {\n MDBIcon,\n MDBInput,\n MDBContainer,\n MDBCardHeader,\n MDBModal,\n MDBModalHeader,\n MDBModalBody,\n MDBModalFooter,\n MDBCard,\n MDBCardTitle,\n MDBCardText,\n MDBCol,\n MDBCardImage,\n MDBCardBody,\n MDBBtn,\n MDBRow\n} from \"mdbreact\";\n\nimport UserCard from \"../../components/user-card/userCard\";\nimport { getDefaultNormalizer } from \"@testing-library/react\";\n\nconst FieldValue = firebase.firestore.FieldValue;\n\nconst config = {\n apiKey: \"AIzaSyBXoxTmjpnseSqHEXzX3ZEq2FqHgTgPHXM\",\n authDomain: \"mytap-2d6fa.firebaseapp.com\",\n databaseURL: \"https://mytap-2d6fa.firebaseio.com\",\n projectId: \"mytap-2d6fa\",\n storageBucket: \"mytap-2d6fa.appspot.com\",\n messagingSenderId: \"774375704684\",\n appId: \"1:774375704684:web:72d66de58b375c70f13049\",\n measurementId: \"G-Z4HYEYM77K\"\n};\nconst firebaseUserConfig = firebase.initializeApp(config, \"Secondary\");\n\nconst Enterprise = ({ currentUser }) => {\n //Company Name top for current user, if doesn't exist prompt admin to add company name to personal form.\n const [email, setEmail] = useState(`${nanoid(6)}@gmail.com`);\n const [password, setPassword] = useState(\"123456\");\n const [password2, setPassword2] = useState(\"123456\");\n const [displayName, setDisplayName] = useState(\"\");\n const [createdUsers, setCreatedUsers] = useState(null);\n const [newGroup, setNewGroup] = useState(\"\");\n const [userGroups, setUserGroups] = useState(currentUser.groups);\n const [search, setSearch] = useState(\"\");\n\n const [newUserModal, setNewUserModal] = useState(false);\n const [newGroupModal, setNewGroupModal] = useState(false);\n\n useEffect(() => {\n firebase\n .firestore()\n .collection(\"users\")\n .where(\"creatorId\", \"==\", currentUser.id)\n .onSnapshot((snapshot) => {\n setCreatedUsers(\n snapshot.docs.map((user) => {\n const data = user.data();\n data.id = user.id;\n return data;\n })\n );\n });\n }, [currentUser]);\n\n // useEffect(() => {\n // firebase\n // .firestore()\n // .collection(\"users\")\n // .doc(currentUser.id)\n // .update({ groups: userGroups });\n // }, [userGroups]);\n\n const onCreateUser = async (e) => {\n e.preventDefault();\n const nonEmptyFields = { email, password, displayName };\n for (let field of Object.keys(nonEmptyFields)) {\n if (!nonEmptyFields[field] || nonEmptyFields[field].trim().length === 0) {\n alert(`${field} should not be empty`);\n return;\n }\n }\n\n if (password !== password2) {\n alert(\"passwords dont match\");\n return;\n }\n\n try {\n const credentials = await firebaseUserConfig\n .auth()\n .createUserWithEmailAndPassword(email, password);\n firebaseUserConfig.auth().signOut();\n\n const user = await firebase\n .firestore()\n .collection(\"users\")\n .doc(credentials.user.uid)\n .set({\n email,\n creatorId: currentUser.id,\n displayName: displayName,\n uid: credentials.user.uid\n });\n\n // Add the new user id to a list of createdUserIds under currentUsera\n await firebase\n .firestore()\n .collection(\"users\")\n .doc(currentUser.id)\n .update({\n createdUsers: firebase.firestore.FieldValue.arrayUnion(\n credentials.user.uid\n )\n });\n\n setEmail(`${nanoid(6)}@gmail.com`);\n setPassword(\"123456\");\n setPassword2(\"123456\");\n setDisplayName(\"\");\n setNewUserModal(false);\n } catch (e) {\n alert(e.message);\n }\n\n // 4. Look into transactions to make steps 2 and 3 atomic\n };\n\n const filterChange = (e) => {\n setSearch(e.target.value);\n };\n\n const toggleNewUserModal = () => {\n setNewUserModal(!newUserModal);\n console.log(\"trying to\");\n };\n\n const toggleNewGroupModal = () => {\n setNewGroupModal(!newGroupModal);\n };\n\n const onCreateGroup = (e) => {\n e.preventDefault();\n if (currentUser.group && userGroups.includes(newGroup.toUpperCase().trim())) {\n alert(\"Group already exists!\");\n } else {\n // setUserGroups((userGroups) => [...userGroups, newGroup.toUpperCase().trim()]);\n\n firebase\n .firestore()\n .collection(\"users\")\n .doc(currentUser.id)\n .update({\n groups: firebase.firestore.FieldValue.arrayUnion(\n newGroup.toUpperCase().trim()\n )\n });\n }\n\n // addGroupToAdmin()\n\n setNewGroup(\"\");\n setNewGroupModal(false);\n // debugger\n };\n const addGroupToAdmin = () => {\n console.log(\"updating group to db\");\n // firebase.firestore().collection('users').doc(currentUser.id).update({ groups : userGroups})\n // updates admin doc add group key update array of groups\n };\n const assignNewGroup = (event) => {\n console.log(\"assigning new group\", event.target);\n };\n\n const getAssignedGroupMembers = (group) => {\n // console.log(\"returning members\", group);\n const assignedGroupMembers = createdUsers?.filter(\n (user) => user.group === group\n );\n return (\n
\n {assignedGroupMembers &&\n assignedGroupMembers.map((user) => {\n return (\n \n );\n })}\n
\n );\n };\n const deleteGroupFromDb = (group) => {\n console.log(\"removing group\", group);\n\n firebase\n .firestore()\n .collection(\"users\")\n .where(\"group\", \"==\", group)\n .onSnapshot((snapshot) => {\n snapshot.docs.map((user) => {\n console.log(\"User is \", user.data());\n firebase\n .firestore()\n .collection(\"users\")\n .doc(user.data().uid)\n .update({ group: firebase.firestore.FieldValue.delete() });\n });\n });\n\n firebase\n .firestore()\n .collection(\"users\")\n .doc(`${currentUser.id}`)\n .update({\n groups: firebase.firestore.FieldValue.arrayRemove(group)\n });\n };\n const removeGroup = (group) => {\n let confirmRemoveGroup = window.confirm(\n \"Are you sure you want to delete this group?\"\n );\n confirmRemoveGroup === true\n ? deleteGroupFromDb(group)\n : console.log(\"user canceled\");\n };\n\n const addGroupToUser = () => {\n // updates user doc add group key and assign string\n };\n //Fetch all current users where formData company = admin formData company, display in table, develop UI to allow admin to assign.\n //add button so admin can add user\n return (\n \n \n \n   Add New Property\n \n \n \n Add New Property\n \n \n
\n
\n setNewGroup(e.target.value)}\n value={newGroup}\n />\n
\n
\n
\n \n \n Close\n \n onCreateGroup(e)}\n >\n ADD Property\n \n \n
\n\n \n  Add New Card Type\n \n\n \n \n Add New Card Type\n \n \n
\n
\n {/* setEmail(e.target.value)}\n value={email}\n />\n setPassword(e.target.value)}\n value={password}\n />\n setPassword2(e.target.value)}\n value={password2}\n /> */}\n setDisplayName(e.target.value)}\n value={displayName}\n />\n
\n
\n
\n \n \n Close\n \n onCreateUser(e)}\n >\n ADD CARD Type\n \n \n
\n
\n\n \n \n \n\n \n \n {currentUser.groups &&\n currentUser.groups\n .sort()\n .map((group) => {\n return (\n \n \n \n {group}\n {\n removeGroup(group);\n }}\n icon=\"times\"\n />\n \n {getAssignedGroupMembers(group)}\n \n \n );\n })\n .filter((group) =>\n group.key.toLowerCase().includes(search.toLowerCase())\n )}\n \n \n\n \n Unassigned Users\n\n {!createdUsers &&

Fetching...

}\n \n {createdUsers &&\n createdUsers.map((user) => {\n if (user.group) {\n return null;\n }\n return (\n \n );\n })}\n \n
\n
\n );\n};\n\nconst mapStateToProps = createStructuredSelector({\n currentUser: selectCurrentUser\n});\nconst mapDispatchToProps = (dispatch) => ({\n setCurrentUser: (user) => {\n return dispatch(setCurrentUser(user));\n }\n});\n\nconst NoUserAdminNoRender = function ({ currentUser }) {\n if (currentUser && currentUser.isEnterprise) {\n return ;\n }\n return null;\n};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(NoUserAdminNoRender);\n\n// export default Enterprise;\n","import React from \"react\";\n\nconst Sales = () => {\n return
I'm the salesman page
;\n};\n\nexport default Sales;\n","import React, { useState, useEffect } from \"react\";\nimport { getSalesAdminData, getSalesAdminPromoCodes, getStripePaymentIntentData } from \"../../utils/firebase/firebase.utils\";\nimport { connect } from \"react-redux\";\nimport { createStructuredSelector } from \"reselect\";\n\nimport { setCurrentUser } from \"../../redux/user/user.actions\";\nimport { selectCurrentUser } from \"../../redux/user/user.selectors\";\n\n\nimport {\n MDBInput,\n MDBIcon\n } from \"mdbreact\";\n\nimport CustomButton from \"../../components/custom-button/customButton\";\n\n\nimport {\n createNewPromoCode\n} from \"../../utils/firebase/firebase.utils\";\n\nimport firebase from \"firebase/app\";\n\nconst SalesAdmin = ({currentUser}) => {\n console.log(\"Calling functional component\")\n \n const [salesAdminData, setSalesAdminData] = useState([]);\n const [stripePromoCodes, setStripePromoCodes] = useState([]);\n const [redemptionsPerProductPerCode, setRedemptionsPerProductPerCode] = useState({})\n\n const [newPromoCode, setNewPromoCode] = useState(\"\");\n \n useEffect(() => {\n // console.log(\"useEffect! (did current user change?: \" + JSON.stringify(currentUser))\n saleAdminInit();\n getStripePromoCodes();\n }, [currentUser]);\n \n useEffect(() => {\n console.log(\"useEffect! (did stripe promo codes change?: \" + JSON.stringify(stripePromoCodes.length))\n getRedemptions()\n }, [stripePromoCodes])\n\n \n const getRedemptions = async () => {\n if(!stripePromoCodes.length) return\n\n const temporaryStructure = {}\n\n const promises = stripePromoCodes.map(promoCode => {\n //ToDo : query by all promo code ids\n return firebase.database().ref('orders').orderByChild('promo').equalTo(promoCode.id).once(\"value\" , snapshot => {\n const orders = snapshot.val()\n let parsedOrders;\n\n if (orders) { \n parsedOrders = Object.values(orders)\n parsedOrders.forEach(function(doc) {\n let orderData = doc\n if (!temporaryStructure[orderData.item]) {\n temporaryStructure[orderData.item] = {}\n }\n const name = stripePromoCodes.find(x => x.id === orderData.promo).code\n const parentCode = stripePromoCodes.find(x => x.id === orderData.promo).coupon.id\n\n temporaryStructure[orderData.item][name] = (temporaryStructure[orderData.item][name] || 0) + 1\n temporaryStructure[orderData.item][parentCode] = (temporaryStructure[orderData.item][parentCode] || 0) + 1\n })\n }\n })\n \n // let db = firebase.firestore()\n // return db.collection(\"orders\").where(\"promo\", \"==\", promoCode.id)\n // .get()\n // .then(function(querySnapshot) {\n // querySnapshot.forEach(function(doc) {\n // let orderData = doc.data()\n // if (!temporaryStructure[orderData.item]) {\n // temporaryStructure[orderData.item] = {}\n // }\n // const name = stripePromoCodes.find(x => x.id === orderData.promo).code\n // const parentCode = stripePromoCodes.find(x => x.id === orderData.promo).coupon.id\n\n // temporaryStructure[orderData.item][name] = (temporaryStructure[orderData.item][name] || 0) + 1\n // temporaryStructure[orderData.item][parentCode] = (temporaryStructure[orderData.item][parentCode] || 0) + 1\n // console.log(\"state of tempStructure\", temporaryStructure)\n\n\n // });\n // })\n // .catch(function(error) {\n // console.log(\"Error getting documents: \", error);\n // })\n })\n await Promise.all(promises)\n \n setRedemptionsPerProductPerCode(temporaryStructure)\n console.log(\"We've got state\", temporaryStructure)\n }\n\n const saleAdminInit = async () => {\n console.log(\"Loading data\")\n await getSalesAdminData().then((response) => { \n //debugger\n let stuff = response.data.data.filter(coupon => currentUser.coupons && currentUser.coupons.indexOf(coupon.id) > -1);\n setSalesAdminData(stuff);\n })\n }\n const getStripePromoCodes = async () => {\n await getSalesAdminPromoCodes().then((response) => {\n const values = response.data.data.filter(promo => currentUser.coupons && currentUser.coupons.indexOf(promo.coupon.id) > -1)\n // if (salesAdminData.length && !values.length) { debugger}\n setStripePromoCodes(values);\n //getStripePromoCodeData(response.data.data.filter(promo => currentUser.coupons && currentUser.coupons.indexOf(promo.coupon.id) > -1));\n })\n }\n // function call to stripe to get current coupons object\n // reduce coupon number of redemptions\n // take current redemptions to display dollar amount\n /* Card = $40 - $8 20%\n Discount = $32\n Sales Rep = $3.20 10%\n Travis Admin = $.064 2% of $3.20\n\n Case = $60 - $12 %20\n Discount = $48 \n Sales Rep = $4.80 10% commission\n Admin = .097 2% of $4.80\n */\n // console.log(\"sales data\", data)\n const onSubmit = async (e) => {\n e.preventDefault();\n let newCodePayload ={\n code: newPromoCode,\n coupon: salesAdminData[0].id,\n }\n console.log('click event', newCodePayload)\n try {\n await createNewPromoCode(newCodePayload)\n getStripePromoCodes()\n setNewPromoCode(\"\")\n } catch (e) {\n alert(`An error occurred creating the promo code: ${JSON.stringify(e)}`)\n }\n }\n \n return
\n

Sales Admin

\n {currentUser.displayName}\n\n

Admin data

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {salesAdminData.map(salesManager => {\n // console.log(\"Getting away with shit\", redemptionsPerProductPerCode)\n return (\n \n \n \n \n \n \n \n \n \n )\n })}\n \n
\n Sales Manager Code\n \n Card Redemptions\n \n Card Earnings\n \n Case Redemptions\n \n Case Earnings\n \n Total Redemptions\n \n Total Earnings\n
\n {salesManager.id}\n \n {redemptionsPerProductPerCode['MyCard']?.[salesManager.id] || 0}\n \n $ {((redemptionsPerProductPerCode['MyCard']?.[salesManager.id] || 0) * .064 ).toFixed(2)}\n \n {redemptionsPerProductPerCode['MyCase']?.[salesManager.id] || 0}\n \n $ {((redemptionsPerProductPerCode['MyCase']?.[salesManager.id] || 0) * .097).toFixed(2)}\n \n {(redemptionsPerProductPerCode['MyCase']?.[salesManager.id] || 0) + (redemptionsPerProductPerCode['MyCard']?.[salesManager.id] || 0)}\n \n $ {(((redemptionsPerProductPerCode['MyCase']?.[salesManager.id] || 0) * .097) + ((redemptionsPerProductPerCode['MyCard']?.[salesManager.id] || 0) * .064 )).toFixed(2)}\n
\n

Promo Codes

\n
\n
\n
\n
\n setNewPromoCode(e.target.value)}\n value={newPromoCode}\n />\n
\n\n
\n
\n \n onSubmit(e)}>\n  Add New Code\n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {stripePromoCodes.map(code => {\n return (\n \n \n \n \n \n \n \n \n \n )\n })} \n \n
\n Promo Code / Sales Person\n \n Card Redemptions\n \n Card Earnings\n \n Case Redemptions\n \n Case Earnings\n \n Total Redemptions\n \n Total Earnings\n
\n {code.code}\n \n {redemptionsPerProductPerCode['MyCard']?.[code.code] || 0}\n \n $ {((redemptionsPerProductPerCode['MyCard']?.[code.code] || 0) * 3.20).toFixed(2)}\n \n {redemptionsPerProductPerCode['MyCase']?.[code.code] || 0}\n \n $ {((redemptionsPerProductPerCode['MyCase']?.[code.code] || 0 ) * 4.80).toFixed(2) || 0}\n \n {(redemptionsPerProductPerCode['MyCase']?.[code.code] || 0 ) + (redemptionsPerProductPerCode['MyCard']?.[code.code] || 0)}\n \n $ {(((redemptionsPerProductPerCode['MyCase']?.[code.code] || 0) * 4.80) + ((redemptionsPerProductPerCode['MyCard']?.[code.code] || 0) * 3.20)).toFixed(2)}\n
\n\n
;\n};\n\nconst mapStateToProps = createStructuredSelector({\n currentUser: selectCurrentUser,\n});\nconst mapDispatchToProps = (dispatch) => ({\n setCurrentUser: (user) => {\n return dispatch(setCurrentUser(user))\n }\n});\n\nconst NoUserCouponsNoRender = function ({currentUser}) {\n\n if (currentUser && currentUser.coupons) {\n return \n }\n return null\n}\n\nexport default connect(mapStateToProps, mapDispatchToProps)(NoUserCouponsNoRender);\n","import React from \"react\";\n\nconst Admin = () => {\n return
I'm the admin page
;\n};\n\nexport default Admin;\n","import React from \"react\";\nimport axios from \"axios\";\nimport {\n MDBRow,\n MDBCol,\n MDBCard,\n MDBCardBody,\n MDBIcon,\n MDBBtn,\n MDBInput,\n} from \"mdbreact\";\n\n\nclass ContactUs extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n name: \"\",\n email: \"\",\n phone: \"\",\n company: \"\",\n message: \"\",\n };\n }\n\n onChange = (e) => {\n const { name, value } = e.target;\n this.setState({ [name]: value });\n };\n\n\n handleSubmit(e){\n e.preventDefault();\n\n // SendMail(this.state)\n\n axios({\n method: \"POST\", \n url:\"https://us-central1-mytap-2d6fa.cloudfunctions.net/sendMail?dest=sales@mytap.net\", \n data: this.state\n }).then((response)=>{\n if (response.data === 'Sended'){\n alert(\"Message Sent.\"); \n this.resetForm()\n }else {\n alert(\"Message failed to send.\")\n }\n })\n }\n\n resetForm() {\n this.setState({\n name: \"\",\n email: \"\",\n phone: \"\",\n company: \"\",\n message: \"\",\n });\n }\n\n render() {\n return (\n
\n
\n \n \n \n \n

\n \n Write to us:\n

\n \n \n
\n \n
\n
\n \n
\n \n
\n
\n
\n \n \n
\n \n
\n
\n \n
\n \n
\n
\n
\n \n \n
\n \n \n \n \n\n
\n
\n
\n
\n
\n \n \n

CONTACT

\n
    \n
  • \n

    \n \n sales@mytap.net\n

    \n \n
  • \n
\n
\n
\n
\n
\n
\n
\n );\n }\n\n\n}\n\nexport default ContactUs;\n","import React from \"react\";\n\nimport \"./DeviceCompatibility.styles.scss\";\n\nconst DeviceCompatibility = () => {\n return (\n
\n

MyTap Compatible Devices

\n

\n Check the list below to see if your device is compatible with MyTap's\n NFC technology! If not, don't worry -- all phones can read our QR codes.\n

\n
\n
\n
\n

Apple (iPhone)

\n
    \n
  • iPhone 11 Pro Max
  • \n
  • iPhone 11 Pro
  • \n
  • iPhone 11
  • \n
  • iPhone XS Max
  • \n
  • iPhone XS
  • \n
  • iPhone XR
  • \n
  • iPhone SE (2020)
  • \n
  • iPhone X (with IOS 14)
  • \n
  • iPhone 8 (with IOS 14)
  • \n
  • iPhone 7 (with IOS 14)
  • \n
\n
\n
\n

Samsung Galaxy S

\n
    \n
  • Galaxy S20, S20+, S20 Ultra
  • \n
  • Galaxy S10, S10+, S10e
  • \n
  • Galaxy S9, S9+
  • \n
  • Galaxy S8, S8+
  • \n
  • Galaxy S7, S7 Edge
  • \n
  • Galaxy S6, S6 Edge
  • \n
  • Galaxy S5, S5 Mini, S5 Neo
  • \n
\n
\n
\n

Samsung Galaxy Note

\n
    \n
  • Note 10, Note 10+, Note 10+ 5G
  • \n
  • Note 9
  • \n
  • Note 8
  • \n
\n
\n
\n

HTC

\n

\n Most HTC phones between 2015-2019 will be compatible\n

\n
    \n
  • U19e, U12+, U12 Life
  • \n
  • Desire 12, Desire 12s (2017 model not compatible)
  • \n
  • U11, Life, +
  • \n
  • Exodus 1
  • \n
\n
\n
\n
\n
\n

Google

\n
    \n
  • Pixel 4
  • \n
  • Pixel 4 XL
  • \n
  • Pixel 3
  • \n
  • Pixel 3 XL
  • \n
  • Pixel 3a
  • \n
  • Pixel 3a XL
  • \n
  • Pixel 2
  • \n
  • Pixel 2 XL
  • \n
  • Pixel
  • \n
  • Pixel XL
  • \n
  • Nexus 5X
  • \n
  • Nexus 6P
  • \n
  • Nexus 6
  • \n
\n
\n
\n

Huawei

\n
    \n
  • P30, P30 Pro, P30 Lite
  • \n
  • P20, P20 Pro, P20 Lite
  • \n
  • P10, P10 Plus, P10 Lite
  • \n
\n
\n
\n

OnePlus

\n
    \n
  • 7, 7 Pro, 7 Pro 5G
  • \n
  • 6, 6T
  • \n
  • 5, 5T
  • \n
  • 3, 3T
  • \n
  • One
  • \n
\n
\n
\n
\n
\n

Samsung Galaxy A

\n
    \n
  • 2019 models: A20e, A40, A50, A70
  • \n
  • 2018 models: A6, A7, A8, A9
  • \n
  • 2017 models: A3, A5
  • \n
  • 2016 models: A3, A5
  • \n
\n
\n
\n

Samsung Galaxy J

\n
    \n
  • 2018 models: J4+, J6, J5, J3
  • \n
\n
\n
\n

LG

\n
    \n
  • Q9
  • \n
  • One
  • \n
  • G8, G8s ThinQ
  • \n
  • G7, G7 ThinQ
  • \n
  • V50, V40
  • \n
  • V30, V35
  • \n
\n
\n
\n
\n
\n );\n};\n\nexport default DeviceCompatibility;\n","import firebase from \"../../utils/firebase/firebase.utils\";\n\nexport const fetchOrders = () => async (dispatch) => {\n await firebase.database().ref('orders').once('value', snapshot => {\n const orders = snapshot.val()\n const parsedOrders = Object.values(orders)\n\n dispatch({\n type: \"FETCH_ORDERS\",\n payload: parsedOrders\n });\n});\n};\n\n\n// export const fetchOrders = () => async (dispatch) => {\n// var query = await firebase.database().ref(\"orders\").orderByKey()\n// query.once(\"value\")\n// .then(function (snapshot) {\n// snapshot.forEach(function (childSnapshot) {\n\n// var orders = childSnapshot.val();\n\n// // var childData = childSnapshot.val();\n// dispatch({\n// type: \"FETCH_ORDERS\",\n// payload: orders\n// });\n// return true;\n// });\n// });\n\n// };\n\n// import firebase from \"../../utils/firebase/firebase.utils\";\n\n// export const fetchOrders = () => async (dispatch) => {\n// const snapshot = await firebase.firestore().collection(\"orders\").get();\n\n// dispatch({\n// type: \"FETCH_ORDERS\",\n// payload: snapshot.docs.map((doc) => doc.data())\n// });\n// };\n","import React from \"react\";\nimport firebase from \"../../utils/firebase/firebase.utils\";\nimport { connect } from \"react-redux\";\n\nimport axios from \"axios\";\nimport { copyImageToClipboard } from 'copy-image-clipboard'\n\nimport { fetchOrders } from \"../../redux/fulfillment/fulfillment.actions\";\n\nimport \"./Fulfillment.styles.scss\";\n\nimport Gallary from \"./assets/GalleryMyTapCardLogo.png\"\nimport RW from \"./assets/RW1.png\"\nimport Five from \"./assets/fivestar.png\"\n\n\n\nclass Fulfillment extends React.Component {\n state = {\n allOrders: []\n };\n\n componentDidMount() {\n this.props.fetchOrders();\n }\n componentDidUpdate() {\n // this.props.fetchOrders();\n }\n // checkOrder(order) {\n // this.props.fetchOrders();\n // var database = firebase.database();\n // database\n // .ref(`orders/ + ${order.stripeCheckoutSessionId}/fulfilled`)\n // .once(\"value\", async (snapshot) => {\n // console.log(\"thisshiitttt\", snapshot.val());\n // return await snapshot.val();\n // });\n // }\n\n renderUnfulfilledOrders() {\n var database = firebase.database();\n return this.props.orders\n .filter((order) => !order.fulfilled)\n .map((order) => {\n return (\n
\n
\n
  • Product: {order.item}
  • \n
  • Quantity: {order.quantity}
  • \n {/* {order.card.length > 10 ? (\n \n ) : null}\n {order.phone.length > 10 ? (\n \n ) : null}\n {order.QrImg.length > 10 ? (\n \n ) : null} */}\n
    \n\n
    \n

    {order.recipientName}

    \n

    {order.shippingAddress.line1}

    \n

    {order.shippingAddress.line2}

    \n

    {`${order.shippingAddress.city}, ${order.shippingAddress.state} ${order.shippingAddress.postal_code}`}

    \n

    {order.shippingAddress.country}

    \n
    \n\n {/* {order.cardUrl ? (\n

    {order.cardUrl}

    \n ) : null} */}\n\n \n database\n .ref(`orders/ + ${order.stripeCheckoutSessionId}/fulfilled`)\n .once(\"value\", async (snapshot) => {\n console.log(\"thisshiitttt\", snapshot.val());\n // return await snapshot.val();\n if (snapshot.val() !== \"In-Process\") {\n database\n .ref(`orders/ + ${order.stripeCheckoutSessionId}`)\n .update({\n fulfilled: \"In-Process\",\n fulfilledBy: `${this.props.currentUser} is making the order`\n })\n .then(() => {\n this.props.fetchOrders();\n });\n } else {\n this.props.fetchOrders();\n }\n })\n\n // {\n // if(this.checkOrder(order) !== \"In-Process\" ){\n // database\n // .ref(`orders/ + ${order.stripeCheckoutSessionId}`)\n // .update({\n // fulfilled: \"In-Process\",\n // fulfilledBy: `${this.props.currentUser} is making the order`\n // })\n // .then(() => {\n // this.props.fetchOrders();\n // })\n // }\n // }\n\n // order.fulfilled === \"In-Process\"\n // ? null\n // : database\n // .ref(`orders/ + ${order.stripeCheckoutSessionId}`)\n // .update({\n // fulfilled: \"In-Process\",\n // fulfilledBy: `${this.props.currentUser} is making the order`\n // })\n // .then(() => {\n // this.props.fetchOrders();\n // })\n }\n >\n MAKE ORDER\n \n\n
    \n
  • \n Order ID: {order.stripeCheckoutSessionId}\n
  • \n
  • UID: {order.uid}
  • \n
  • \n Customer Email: {order.customerEmail}\n
  • \n
    \n
    \n );\n });\n }\n\n renderInProcessOrders() {\n var database = firebase.database();\n return this.props.orders\n .filter(\n (order) =>\n order.fulfilled === \"In-Process\" &&\n order.fulfilledBy === `${this.props.currentUser} is making the order`\n )\n .map((order) => {\n const date = new Date(order.createdAt).toLocaleString();\n return (\n
    \n
    \n\n {order.item.includes(\"Review\") ? (\n {copyImageToClipboard(order.reviewCardImage)}}\n src={`${order.reviewCardImage}`}\n alt=\"Back\"\n style={{ width: \"100px\" }}\n >\n ): null}\n\n {order.item.includes(\"Review\") &&\n order.customerEmail !== 'marmenta@galleryresidential.com' &&\n order.customerEmail !== 'thaughton@liverangewater.com'\n ? \n {copyImageToClipboard(Five)}}\n src={`${Five}`}\n alt=\"front\"\n style={{ width: \"100px\" }}\n >\n : null}\n\n {order.customerEmail === 'marmenta@galleryresidential.com' ? (\n {copyImageToClipboard(Gallary)}}\n src={`${Gallary}`}\n alt=\"front\"\n style={{ width: \"100px\" }}\n >\n ) : order.customerEmail === 'thaughton@liverangewater.com' ?\n {copyImageToClipboard(RW)}}\n src={`${RW}`}\n alt=\"front\"\n style={{ width: \"100px\" }}\n >\n : null}\n\n {order.item.includes(\"Review\") && order.reviewCardUploadedFrontLogo && order.reviewCardUploadedFrontLogo.length > 10 ? (\n {copyImageToClipboard(order.reviewCardUploadedFrontLogo)}}\n src={`${order.reviewCardUploadedFrontLogo}`}\n alt=\"Front\"\n style={{ width: \"100px\" }}\n >\n ) : null}\n\n {!order.item.includes(\"Classic\") && order.card && order.card.length > 10 ? (\n {copyImageToClipboard(order.card)}}\n src={`${order.card}`}\n alt=\"\"\n style={{ width: \"100px\" }}\n >\n ) : null}\n\n {order.phone && order.phone.length > 10 ? (\n \n ) : null}\n {/* {order.QrImg && order.QrImg.length > 10 ? (\n \n ) : null} */}\n\n {order.item.includes(\"+ QR\") &&\n order.customQrImg &&\n order.customQrImg.length > 10 ? (\n {copyImageToClipboard(order.customQrImg)}}\n src={`${order.customQrImg}`}\n alt=\"\"\n style={{ width: \"100px\" }}\n >) \n : order.item.includes(\"Review\") && order.customGoogleQrImg && order.customGoogleQrImg.length > 10 ?\n {copyImageToClipboard(order.customGoogleQrImg)}}\n src={`${order.customGoogleQrImg}`}\n alt=\"\"\n style={{ width: \"100px\" }}\n >\n : order.item.includes(\"Review\") && order.GoogleQrImg && order.GoogleQrImg.length > 10 ?\n {copyImageToClipboard(order.GoogleQrImg)}}\n src={`${order.GoogleQrImg}`}\n alt=\"\"\n style={{ width: \"100px\" }}\n > \n : order.QrImg && order.QrImg.length > 10 ? (\n {copyImageToClipboard(order.QrImg)}}\n src={`${order.QrImg}`}\n alt=\"\"\n style={{ width: \"100px\" }}\n >\n ) : null}\n
    \n
    \n

    {order.recipientName}

    \n

    {order.shippingAddress.line1}

    \n

    {order.shippingAddress.line2}

    \n

    {`${order.shippingAddress.city}, ${order.shippingAddress.state} ${order.shippingAddress.postal_code}`}

    \n

    {order.shippingAddress.country}

    \n
    \n {/* {order.cardUrl ? (\n

    {order.cardUrl}

    \n ) : null} */}\n MyTapReviewCardURL:\n {order.MyTapReviewCardURL ? (\n

    {navigator.clipboard.writeText(order.MyTapReviewCardURL)}}\n style={{ fontSize: \"12px\" }}> \n {order.MyTapReviewCardURL}

    \n ) : null}\n shortUrl:\n {order.shortUrl ? (\n

    {navigator.clipboard.writeText(order.shortUrl)}}\n style={{ fontSize: \"12px\" }}> {order.shortUrl}

    \n ) : null}\n MyCardDirectURL:\n {order.MyCardDirectURL ? (\n

    {order.MyCardDirectURL}

    \n ) : null}\n directLinks Url:\n {order.directLinksUrl ? (\n

    {order.directLinksUrl}

    \n ) : null}\n Shipping Label Url:\n {order.label ? (\n {order.trackerCode} \n ) : null}\n \n \n database\n .ref(`orders/ + ${order.stripeCheckoutSessionId}`)\n .update({\n fulfilled: false,\n fulfilledBy: \"\"\n })\n .then(() => {\n this.props.fetchOrders();\n })\n }\n >\n UNPROCESS ORDER\n \n \n database\n .ref(`orders/ + ${order.stripeCheckoutSessionId}`)\n .update({\n fulfilled: true,\n fulfilledBy: this.props.currentUser\n })\n .then(() => {\n this.props.fetchOrders();\n axios({\n method: \"POST\",\n url: `https://us-central1-mytap-2d6fa.cloudfunctions.net/sendStatusMail?dest=${order.customerEmail}`,\n data: {\n customerName: order.recipientName,\n customerEmail: order.customerEmail,\n message:\n `TRACKING INFO HERE:\n ${order.trackerCode}\n \n `,\n customerAddress: ` \n

    ${order.shippingAddress.line1}

    \n

    ${\n order.shippingAddress.line2\n ? order.shippingAddress.line2\n : \"\"\n }

    \n

    ${order.shippingAddress.city}, ${\n order.shippingAddress.state\n } ${order.shippingAddress.postal_code}

    \n

    ${order.shippingAddress.country}

    `,\n orderId: order.stripeCheckoutSessionId\n }\n }).then((response) => {\n if (response.data === \"Sended\") {\n console.log(\"Message Sent.\");\n } else {\n console.log(\"Message failed to send.\");\n }\n });\n })\n }\n >\n FULFILL ORDER\n \n
    \n
  • Item: {order.item}
  • \n
  • Quantity: {order.quantity}
  • \n
  • \n Order ID: {order.stripeCheckoutSessionId}\n
  • \n
  • UID: {order.uid}
  • \n
  • \n Customer Email: {order.customerEmail}\n
  • \n
  • \n Fulfilled by: {order.fulfilledBy}\n
  • \n
  • Date: {date}
  • \n
    \n
    \n );\n });\n }\n \n\n renderfulfilledOrders() {\n return this.props.orders\n .filter((order) => order.fulfilled === true && order.createdAt )\n .sort((a, b) => new Date(b.createdAt) - new Date(a.createdAt))\n .map((order) => {\n // const db = firebase.firestore();\n const date = new Date(order.createdAt).toLocaleString();\n return (\n
    \n

    {order.recipientName}

    \n

    {order.shippingAddress.line1}

    \n

    {order.shippingAddress.line2}

    \n

    {`${order.shippingAddress.city}, ${order.shippingAddress.state} ${order.shippingAddress.postal_code}`}

    \n

    {order.shippingAddress.country}

    \n {/*

    Fulfilled Date: {order.fulfilledDate}

    */}\n\n {/* \n \n }\n >\n UNFULFILL ORDER\n */}\n\n
    \n
  • Item: {order.item}
  • \n
  • Quantity: {order.quantity}
  • \n
  • \n Order ID: {order.stripeCheckoutSessionId}\n
  • \n
  • UID: {order.uid}
  • \n
  • \n Customer Email: {order.customerEmail}\n
  • \n
  • \n Fulfilled by: {order.fulfilledBy}\n
  • \n
  • Date: {date}
  • \n
    \n
    \n );\n })\n }\n\n renderOldfulfilledOrders() {\n return this.props.orders\n .filter((order) => order.fulfilled === true)\n .map((order) => {\n // const db = firebase.firestore();\n const date = new Date(order.createdAt).toLocaleString();\n return (\n
    \n

    {order.recipientName}

    \n

    {order.shippingAddress.line1}

    \n

    {order.shippingAddress.line2}

    \n

    {`${order.shippingAddress.city}, ${order.shippingAddress.state} ${order.shippingAddress.postal_code}`}

    \n

    {order.shippingAddress.country}

    \n {/*

    Fulfilled Date: {order.fulfilledDate}

    */}\n\n {/* \n \n }\n >\n UNFULFILL ORDER\n */}\n\n
    \n
  • Item: {order.item}
  • \n
  • Quantity: {order.quantity}
  • \n
  • \n Order ID: {order.stripeCheckoutSessionId}\n
  • \n
  • UID: {order.uid}
  • \n
  • \n Customer Email: {order.customerEmail}\n
  • \n
  • \n Fulfilled by: {order.fulfilledBy}\n
  • \n
  • Date: {date}
  • \n
    \n
    \n );\n })\n }\n\n render() {\n // console.log(this.props.orders);\n return (\n
    \n

    FULFILLMENT

    \n
    \n
    \n

    Unfulfilled

    \n {this.renderUnfulfilledOrders()}\n
    \n
    \n

    In-Progress

    \n {this.renderInProcessOrders().length > 0 ? (\n this.renderInProcessOrders()\n ) : (\n
    \n )}\n

    Fulfilled

    \n \n\n {this.renderfulfilledOrders()}\n\n {this.renderOldfulfilledOrders()}\n
    \n
    \n
    \n );\n }\n}\n\nconst mapStateToProps = ({ user, fulfillment }) => ({\n currentUser: user?.currentUser?.displayName,\n orders: fulfillment\n});\n\nconst mapDispatchToProps = (dispatch, ownProps) => {\n return {\n fetchOrders: (payload) => {\n dispatch(fetchOrders(payload));\n }\n };\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Fulfillment);\n","import React from \"react\";\nimport { useEffect, useState } from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport firebase from \"../../utils/firebase/firebase.utils\";\nimport { CircularProgress, Box, Typography } from \"@material-ui/core\";\nimport profile from \"../../pages/profile/profile\";\n\n\nconst LinkRedirect = () => {\n const { shortCode } = useParams();\n const [loading, setLoading] = useState(true);\n // const [clickDates, setClickDates] = useState([]);\n\n //read array of timeststamps from db,\n //set to local array\n //?dispatch to redux?\n //write local array back to db\n\n // const addClickDates = async () => {\n // var db = firebase.firestore();\n // const linkDoc = await db.collection(\"links\").doc(shortCode).get();\n // const { longURL, linkID, userId } = linkDoc.data();\n // db.collection(`users/${userId}/links`)\n // .get()\n // .then((querySnapshot) => {\n // querySnapshot.forEach((doc) => {\n // // console.log(doc.id, \" => \", doc.data());\n // const clickDates = doc.data();\n // // const linkDocId = doc.id;\n // // console.log(\"this is the idddddd\", linkDocId);\n // setClickDates(clickDates);\n // console.log(\"this is the clickDates\", clickDates);\n // // setClickDates(currentArray => [...currentArray, clickDates]);\n \n // });\n // });\n // };\n\n // fetch('https://ipapi.co/json/')\n // .then(response => response.json())\n // .then(data => console.log(data));\n\n\n // useEffect(() => {\n // var db = firebase.firestore();\n // const fetchLinkDoc = async () => {\n // if (shortCode.length !== 6) return setLoading(false);\n // const linkDoc = await db.collection(\"links\").doc(shortCode).get();\n // if (!linkDoc.exists) return setLoading(false);\n // const { longURL, linkID, userId } = linkDoc.data();\n // if (linkDoc.exists && !localStorage.getItem(`${linkID}`)) {\n // await db\n // .collection(\"users\")\n // .doc(userId)\n // .collection(\"links\")\n // .doc(linkID)\n // .update({\n // totalClicks: firebase.firestore.FieldValue.increment(1),\n // clickDates: firebase.firestore.FieldValue.arrayUnion(new Date())\n // });\n // window.location.href = longURL;\n // localStorage.setItem(`${linkID}`,longURL)\n // } \n // else if(linkDoc.exists && localStorage.getItem(`${linkID}`)){\n\n // window.location.href = longURL;\n // }\n // else {\n // setLoading(false);\n // }\n // };\n // fetchLinkDoc();\n // }, []);\n\n useEffect(() => {\n var db = firebase.firestore();\n const fetchLinkDoc = async () => {\n if (shortCode.length !== 6) return setLoading(false);\n const linkDoc = await db.collection(\"links\").doc(shortCode).get();\n if (!linkDoc.exists) return setLoading(false);\n\n const { longURL, linkID, userId } = linkDoc.data();\n const currentProfile = await db.collection(\"users\")\n .doc(userId)\n .collection(\"links\")\n .doc(linkID)\n .get();\n\n const {profile} = currentProfile.data()\n \n if (!profile || ![1, 2, 3, 4].includes(parseInt(profile))) {\n\n console.error('Invalid or no profile selected');\n return setLoading(false);\n }\n \n console.log(profile);\n const totalClicks = profile == \"1\" ? `totalClicks` :`totalClicks${profile}`;\n const clickDates = profile == \"1\" ? `clickDates` :`clickDates${profile}`;\n \n \n if (linkDoc.exists && !localStorage.getItem(`${linkID}`)) {\n await db\n .collection(\"users\")\n .doc(userId)\n .collection(\"links\")\n .doc(linkID)\n .update({\n [totalClicks]: firebase.firestore.FieldValue.increment(1),\n [clickDates]: firebase.firestore.FieldValue.arrayUnion(new Date())\n });\n \n window.location.href = longURL;\n localStorage.setItem(`${linkID}`, longURL);\n } \n else if (linkDoc.exists && localStorage.getItem(`${linkID}`)) {\n window.location.href = longURL;\n }\n else {\n setLoading(false);\n }\n };\n \n fetchLinkDoc();\n }, []);\n\n if (loading)\n return (\n \n \n Powered by MYTAP\n \n );\n else\n return (\n \n Link is invalid\n \n );\n};\n\nexport default LinkRedirect;\n","import store from \"../../redux/store\";\nimport firebase from \"../../utils/firebase/firebase.utils\";\n\nimport RangewaterCardTemplate from \"./imgs/RW3.png\";\n\nexport default {\n renderDirectCardImage: async function () {\n var db = firebase.firestore();\n const GoogleQrImg = store.getState().user.currentUser?.GoogleQrImg;\n const reviewCardUploadedLogo = store.getState().user.currentUser?.reviewCardUploadedLogo;\n const userId = store.getState().user.currentUser.id;\n\n\n // var canvas = document.getElementById(\"canvas1\");\n // if (!canvas || !canvas.getContext) {\n // return false;\n // }\n // canvas.width = 2.5*445;\n // canvas.height = 2.5*280;\n // var ctx = canvas.getContext(\"2d\");\n // var img1 = new Image();\n // var img2 = new Image();\n // var img3 = new Image();\n // img1.src = RangewaterCardTemplate;\n // img2.src = reviewCardUploadedLogo;\n // img3.src = QrImg;\n // img1.onload = function () {\n // ctx.drawImage(img1, 0, 0, 2.5*445, 2.5*280);\n // };\n // img2.onload = function () {\n // ctx.drawImage(img2, 2.5*235, 2.5*56, 2.5*172, 2.5*172);\n // };\n // img3.onload = function () {\n // ctx.drawImage(img3, 2.5*38, 2.5*53, 2.5*175, 2.5*175);\n // };\n\n\n // setTimeout(() => {\n // var fullQuality = canvas.toDataURL();\n\n // db.collection(\"users\")\n // .doc(`${userId}`)\n // .update({\n // reviewCardImage: `${fullQuality}`\n // });\n // }, 1000);\n\n\n var canvas = document.getElementById(\"canvas1\");\n if (!canvas || !canvas.getContext) {\n return false;\n }\n canvas.width = 2.5*445;\n canvas.height = 2.5*280;\n var ctx = canvas.getContext(\"2d\");\n var img1 = new Image();\n var img2 = new Image();\n var img3 = new Image();\n img1.src = RangewaterCardTemplate;\n img2.src = reviewCardUploadedLogo;\n img3.src = GoogleQrImg;\n\n\n await Promise.all([\n new Promise((resolve, reject) => {\n img1.onload = function () {\n ctx.drawImage(img1, 0, 0, 2.5*445, 2.5*280);\n resolve();\n };\n }),\n new Promise((resolve, reject) => {\n img2.onload = function () {\n ctx.drawImage(img2, 2.5*235, 2.5*56, 2.5*172, 2.5*172);\n resolve();\n };\n }),\n new Promise((resolve, reject) => {\n img3.onload = function () {\n ctx.drawImage(img3, 2.5*38, 2.5*53, 2.5*175, 2.5*175);\n resolve();\n };\n })\n ]);\n\n\n \n var fullQuality = canvas.toDataURL();\n\n await db.collection(\"users\")\n .doc(`${userId}`)\n .update({\n reviewCardImage: `${fullQuality}`\n });\n\n }\n};\n","import React from \"react\";\nimport { connect } from \"react-redux\";\nimport { MDBMedia, MDBBtn } from \"mdbreact\";\n\nimport { nanoid } from \"nanoid\";\nimport firebase from \"../../utils/firebase/firebase.utils\";\n\nimport { defaultRedirect } from \"../../redux/routing/routing.actions\";\nimport { fetchDesigns } from \"../../redux/designImages/designImages.actions\";\n\nimport API2 from \"../../components/generateQr/generateGoogleQr\";\nimport API3 from \"../../components/renderDirectCardImage/renderDirectCardImage\";\n\nimport UploadLogo from \"../../components/upload-your-logo/uploadLogo\";\nimport { CircularProgress, Box } from \"@material-ui/core\";\n\n// Stripe\nimport { ElementsConsumer } from \"@stripe/react-stripe-js\";\n\n//\n\nimport {\n createSession,\n createStripeCustomer\n} from \"../../utils/firebase/firebase.utils\";\nimport { updateUser } from \"../../redux/user/user.actions\";\n\nimport Splash from \"../splash/splash\";\n\nimport RW1 from \"./assets/images/IDCard/RW1.png\";\nimport RW2 from \"./assets/images/IDCard/RW2.png\";\n\nclass RangeWaterOrder extends React.Component {\n state = {\n MyTapReviewCardURL: \"\",\n loading: false\n };\n\n componentDidMount() {\n this.props.defaultRedirect();\n this.props.fetchDesigns();\n }\n\n // Redirect to fulfillment page when applicable\n componentDidUpdate() {\n if (\n this.props.currentUser &&\n this.props.currentUser.role === \"fulfillment\"\n ) {\n this.props.history.push(\"/fulfillment\");\n }\n // this.props.fetchDesigns();\n }\n\n onDirectURLChange = (e) => {\n const { name, value } = e.target;\n this.setState({ [name]: value });\n };\n\n createShortLink() {\n var db = firebase.firestore();\n const link = {\n name: \"relink\",\n longURL:\n this.state.MyTapReviewCardURL.includes(\"http://\") ||\n this.state.MyTapReviewCardURL.includes(\"https://\")\n ? this.state.MyTapReviewCardURL\n : `http://${this.state.MyTapReviewCardURL}`,\n createdAt: firebase.firestore.FieldValue.serverTimestamp(),\n shortCode: nanoid(6),\n totalClicks: 0,\n clickDates:[]\n };\n\n db.collection(\"users\")\n .doc(`${this.props.userId}`)\n .collection(\"links\")\n .add(link)\n .then(() => {\n db.collection(\"users\")\n .doc(`${this.props.userId}`)\n .update({\n shortUrl: `https://www.mytap.net/rd/${link.shortCode}`\n });\n });\n }\n\n saveMyTapReviewCardURLToDB(e) {\n var db = firebase.firestore();\n db.collection(\"users\").doc(`${this.props.userId}`).update({\n MyTapReviewCardURL: this.state.MyTapReviewCardURL.toString()\n })\n }\n\n generateAndBuy() {\n API2.generateQR();\n // await this.createShortLink();\n setTimeout(() => {\n API3.renderDirectCardImage();\n }, 250);\n }\n\n render() {\n const { currentUser } = this.props.user;\n\n if (!currentUser) {\n return ;\n }\n\n if (this.state.loading)\n return (\n \n \n \n );\n\n return (\n
    \n
    \n

    MyTap Review Card

    \n
    \n\n
    \n
    \n {/*

    MyTap Review Card

    */}\n \n\n \n \n {this.props.reviewCardUploadedLogo ? (\n \n ) : null}\n
    \n\n \n {({ stripe, elements }) => (\n {\n this.setState({ loading: true });\n e.preventDefault();\n this.generateAndBuy();\n if (!currentUser.stripeCustomerId) {\n return await createStripeCustomer(currentUser).then(\n async () => {\n const session = await createSession(\n \"MyTap Review Card\",\n currentUser.uid\n );\n stripe.redirectToCheckout({\n sessionId: session.data.id\n });\n console.log(\"session\", session);\n }\n );\n } else {\n const session = await createSession(\n \"MyTap Review Card\",\n currentUser.uid\n );\n stripe.redirectToCheckout({\n sessionId: session.data.id\n });\n console.log(\"session\", session);\n }\n }}\n >\n \n\n
    \n \n \n
    \n\n \n Buy\n \n \n )}\n
    \n\n
    $35
    \n
    \n
    \n \n );\n }\n}\n\nconst mapStateToProps = (state, ownProps) => {\n // console.log('dddddd',)\n return {\n user: state.user,\n email: state.email,\n currentUser: state.user?.currentUser,\n userId: state.user.currentUser?.id,\n MyCardDirectURL: state.user.currentUser?.MyCardDirectURL,\n reviewCardUploadedLogo: state.user.currentUser?.reviewCardUploadedLogo,\n formData: state.user.currentUser?.formData,\n QrImg: state.user.currentUser?.QrImg\n };\n};\n\nconst mapDispatchToProps = (dispatch, ownProps) => {\n return {\n updateUser: (payload) => {\n dispatch(updateUser(payload));\n },\n defaultRedirect: () => {\n dispatch(defaultRedirect());\n },\n fetchDesigns: (payload) => {\n dispatch(fetchDesigns(payload));\n }\n };\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(RangeWaterOrder);\n","import React from \"react\";\nimport { connect } from \"react-redux\";\nimport { MDBMedia, MDBBtn, MDBIcon, MDBCardFooter, MDBTooltip } from \"mdbreact\";\n\nimport { nanoid } from \"nanoid\";\nimport firebase from \"../../utils/firebase/firebase.utils\";\n\nimport { defaultRedirect } from \"../../redux/routing/routing.actions\";\nimport { fetchDesigns } from \"../../redux/designImages/designImages.actions\";\n\nimport API2 from \"../../components/generateQr/generateGoogleQr\";\nimport API3 from \"../../components/renderDirectCardImage/renderDirectCardImage\";\n\nimport UploadLogo from \"../../components/upload-your-logo/uploadLogo\";\nimport { CircularProgress, Box } from \"@material-ui/core\";\n\n// Stripe\nimport { ElementsConsumer } from \"@stripe/react-stripe-js\";\n\n//\n\nimport {\n createSession,\n createStripeCustomer\n} from \"../../utils/firebase/firebase.utils\";\nimport { updateUser } from \"../../redux/user/user.actions\";\n\nimport Splash from \"../splash/splash\";\n\nimport LogoFront from \"./assets/images/IDCard/GalleryMyTapCardLogo.png\";\nimport RW2 from \"./assets/images/IDCard/RW2.png\";\n\nclass GalleryResidential extends React.Component {\n state = {\n MyTapReviewCardURL: \"\",\n loading: false\n };\n\n componentDidMount() {\n this.props.defaultRedirect();\n this.props.fetchDesigns();\n }\n\n // Redirect to fulfillment page when applicable\n componentDidUpdate() {\n if (\n this.props.currentUser &&\n this.props.currentUser.role === \"fulfillment\"\n ) {\n this.props.history.push(\"/fulfillment\");\n }\n // this.props.fetchDesigns();\n }\n\n onDirectURLChange = (e) => {\n const { name, value } = e.target;\n this.setState({ [name]: value });\n };\n\n createShortLink() {\n var db = firebase.firestore();\n const link = {\n name: \"relink\",\n longURL:\n this.state.MyTapReviewCardURL.includes(\"http://\") ||\n this.state.MyTapReviewCardURL.includes(\"https://\")\n ? this.state.MyTapReviewCardURL\n : `http://${this.state.MyTapReviewCardURL}`,\n createdAt: firebase.firestore.FieldValue.serverTimestamp(),\n shortCode: nanoid(6),\n totalClicks: 0,\n clickDates:[]\n };\n\n db.collection(\"users\")\n .doc(`${this.props.userId}`)\n .collection(\"links\")\n .add(link)\n .then(() => {\n db.collection(\"users\")\n .doc(`${this.props.userId}`)\n .update({\n shortUrl: `https://www.mytap.net/rd/${link.shortCode}`\n });\n });\n }\n\n saveMyTapReviewCardURLToDB(e) {\n var db = firebase.firestore();\n db.collection(\"users\").doc(`${this.props.userId}`).update({\n MyTapReviewCardURL: this.state.MyTapReviewCardURL.toString()\n })\n }\n\n generateAndBuy() {\n API2.generateQR();\n // await this.createShortLink();\n setTimeout(() => {\n API3.renderDirectCardImage();\n }, 250);\n }\n\n render() {\n const { currentUser } = this.props.user;\n\n if (!currentUser) {\n return ;\n }\n\n if (this.state.loading)\n return (\n \n \n \n );\n\n return (\n
    \n
    \n
    \n \n\n \n \n {this.props.reviewCardUploadedLogo ? (\n \n ) : null}\n
    \n\n \n \n
    \n \n \n
    \n\n \n
    $35
    \n
    \n \n \n \n\n \n {({ stripe, elements }) => (\n {\n this.setState({ loading: true });\n e.preventDefault();\n this.generateAndBuy();\n if (!currentUser.stripeCustomerId) {\n return await createStripeCustomer(currentUser).then(\n async () => {\n const session = await createSession(\n \"MyTap Review Card\",\n currentUser.uid\n );\n stripe.redirectToCheckout({\n sessionId: session.data.id\n });\n console.log(\"session\", session);\n }\n );\n } else {\n const session = await createSession(\n \"MyTap Review Card\",\n currentUser.uid\n );\n stripe.redirectToCheckout({\n sessionId: session.data.id\n });\n console.log(\"session\", session);\n }\n }}\n >\n \n \n \n \n \n )}\n \n \n
    Order!
    \n
    \n
    \n
    \n\n \n
    \n
    \n \n );\n }\n}\n\nconst mapStateToProps = (state, ownProps) => {\n // console.log('dddddd',)\n return {\n user: state.user,\n email: state.email,\n currentUser: state.user?.currentUser,\n userId: state.user.currentUser?.id,\n MyCardDirectURL: state.user.currentUser?.MyCardDirectURL,\n reviewCardUploadedLogo: state.user.currentUser?.reviewCardUploadedLogo,\n formData: state.user.currentUser?.formData,\n QrImg: state.user.currentUser?.QrImg\n };\n};\n\nconst mapDispatchToProps = (dispatch, ownProps) => {\n return {\n updateUser: (payload) => {\n dispatch(updateUser(payload));\n },\n defaultRedirect: () => {\n dispatch(defaultRedirect());\n },\n fetchDesigns: (payload) => {\n dispatch(fetchDesigns(payload));\n }\n };\n};\n\nexport default connect(mapStateToProps, mapDispatchToProps)(GalleryResidential);\n","import React from \"react\";\nimport { connect } from \"react-redux\";\nimport { MDBMedia, MDBBtn } from \"mdbreact\";\n\nimport firebase from \"../../utils/firebase/firebase.utils\";\nimport { nanoid } from \"nanoid\";\n\nimport { defaultRedirect } from \"../../redux/routing/routing.actions\";\nimport { fetchDesigns } from \"../../redux/designImages/designImages.actions\";\n\nimport API2 from \"../../components/generateQr/generateGoogleQr\";\nimport API3 from \"../../components/renderDirectCardImage/renderDirectCardImage\";\nimport { CircularProgress, Box } from \"@material-ui/core\";\n\n// import UploadLogo from \"../../components/upload-your-logo/uploadLogo\";\n\n// Stripe\nimport { ElementsConsumer } from \"@stripe/react-stripe-js\";\n\n//\n\nimport {\n createSession,\n createStripeCustomer\n} from \"../../utils/firebase/firebase.utils\";\nimport { updateUser } from \"../../redux/user/user.actions\";\n\nimport Splash from \"../splash/splash\";\n\nimport CR from \"./assets/images/IDCard/CR.png\";\nimport CR2 from \"./assets/images/IDCard/CR2.png\";\n\nclass ColumbiaResidentialOrder extends React.Component {\n state = {\n MyTapReviewCardURL: \"\",\n loading: false\n };\n\n componentDidMount() {\n this.props.defaultRedirect();\n this.props.fetchDesigns();\n }\n\n // Redirect to fulfillment page when applicable\n componentDidUpdate() {\n if (\n this.props.currentUser &&\n this.props.currentUser.role === \"fulfillment\"\n ) {\n this.props.history.push(\"/fulfillment\");\n }\n // this.props.fetchDesigns();\n }\n\n onDirectURLChange = (e) => {\n const { name, value } = e.target;\n this.setState({ [name]: value });\n };\n\n createShortLink() {\n var db = firebase.firestore();\n const link = {\n name: \"relink\",\n longURL:\n this.state.MyTapReviewCardURL.includes(\"http://\") ||\n this.state.MyTapReviewCardURL.includes(\"https://\")\n ? this.state.MyTapReviewCardURL\n : `http://${this.state.MyTapReviewCardURL}`,\n createdAt: firebase.firestore.FieldValue.serverTimestamp(),\n shortCode: nanoid(6),\n totalClicks: 0,\n clickDates:[]\n };\n\n db.collection(\"users\")\n .doc(`${this.props.userId}`)\n .collection(\"links\")\n .add(link)\n .then(() => {\n db.collection(\"users\")\n .doc(`${this.props.userId}`)\n .update({\n shortUrl: `https://www.mytap.net/rd/${link.shortCode}`\n });\n });\n }\n\n saveMyTapReviewCardURLToDB(e) {\n var db = firebase.firestore();\n db.collection(\"users\").doc(`${this.props.userId}`).update({\n MyTapReviewCardURL: this.state.MyTapReviewCardURL.toString()\n })\n }\n\n generateAndBuy() {\n API2.generateQR();\n setTimeout(() => {\n API3.renderDirectCardImage();\n }, 250);\n }\n\n render() {\n const { currentUser } = this.props.user;\n\n if (!currentUser) {\n return ;\n }\n\n if (this.state.loading)\n return (\n \n \n \n );\n\n return (\n
    \n
    \n

    MyTap Review Card

    \n
    \n\n
    \n
    \n {/*

    MyTap Review Card

    */}\n \n\n \n \n
    \n\n \n {({ stripe, elements }) => (\n {\n this.setState({ loading: true });\n e.preventDefault();\n this.generateAndBuy();\n if (!currentUser.stripeCustomerId) {\n return await createStripeCustomer(currentUser).then(\n async () => {\n const session = await createSession(\n \"MyTap Review Card\",\n currentUser.uid\n );\n stripe.redirectToCheckout({\n sessionId: session.data.id\n });\n console.log(\"session\", session);\n }\n );\n } else {\n const session = await createSession(\n \"MyTap Review Card\",\n currentUser.uid\n );\n stripe.redirectToCheckout({\n sessionId: session.data.id\n });\n console.log(\"session\", session);\n }\n }}\n >\n
    \n \n \n
    \n\n \n Buy\n \n \n )}\n
    \n\n
    $35
    \n
    \n
    \n \n );\n }\n}\n\nconst mapStateToProps = (state, ownProps) => {\n // console.log('dddddd',)\n return {\n user: state.user,\n email: state.email,\n currentUser: state.user?.currentUser,\n userId: state.user.currentUser?.id,\n MyCardDirectURL: state.user.currentUser?.MyCardDirectURL,\n reviewCardUploadedLogo: state.user.currentUser?.reviewCardUploadedLogo,\n formData: state.user.currentUser?.formData,\n QrImg: state.user.currentUser?.QrImg\n };\n};\n\nconst mapDispatchToProps = (dispatch, ownProps) => {\n return {\n updateUser: (payload) => {\n dispatch(updateUser(payload));\n },\n defaultRedirect: () => {\n dispatch(defaultRedirect());\n },\n fetchDesigns: (payload) => {\n dispatch(fetchDesigns(payload));\n }\n };\n};\n\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(ColumbiaResidentialOrder);\n","import React, { lazy, Suspense } from \"react\";\nimport {\n BrowserRouter as Router,\n Route,\n Switch,\n Redirect\n} from \"react-router-dom\";\nimport { connect } from \"react-redux\";\nimport { createStructuredSelector } from \"reselect\";\n\nimport { setCurrentUser } from \"./redux/user/user.actions\";\nimport { selectCurrentUser } from \"./redux/user/user.selectors\";\nimport { selectRedirectRoute } from \"./redux/routing/routing.selectors\";\n\nimport ScrollToTop from \"./components/scrollToTop/ScrollToTop\";\n\nimport Register from \"./pages/sign-up/signUp\";\nimport Login from \"./pages/sign-in/signIn\";\nimport PasswordReset from \"./pages/passwordReset/passwordReset\";\nimport FormPage from \"./pages/contact-form/contact-form\";\nimport Shop from \"./pages/shop/Shop\";\nimport Nav from \"./components/nav/Nav\";\n\nimport SplashPage from \"./pages/splash/splash\";\nimport Dashboard from \"./pages/dashboard/Dashboard\";\nimport DesignPhone from \"./pages/design-phone/DesignPhone\";\nimport DesignCard from \"./pages/design-card/DesignCard\";\nimport Enterprise from \"./pages/enterprise/enterprise\";\nimport Sales from \"./pages/sales/sales\";\nimport SalesAdmin from \"./pages/sales-admin/sales-admin\";\nimport Admin from \"./pages/admin/admin\";\nimport ContactUs from \"./pages/contact-us/ContactUs\";\nimport DeviceCompatibility from \"./pages/device-compatibility/DeviceCompatibility\";\nimport Fulfillment from \"./pages/fulfillment/Fulfillment\";\nimport LinkRedirect from \"./components/LinkRedirect/\";\nimport RangeWaterOrder from \"./pages/rangewater-order/rangewaterOrder\";\nimport GalleryResidential from \"./pages/gallery-residential-order/galleryResidential\";\nimport RangeWaterMultiOrder from \"./pages/rangewater-multiOrder/rangewaterMultiOrder\";\nimport ColumbiaResidentialOrder from \"./pages/columbia-residential-order/columbiaResidential\";\n\n\nimport {\n auth,\n createUserProfileDocument\n} from \"./utils/firebase/firebase.utils\";\n\nimport \"./App.css\";\n\nconst Landing = lazy(() => import(\"./pages/landing/Landing\"));\n\nclass App extends React.Component {\n unsubscribeFromAuth = null;\n\n componentDidMount() {\n const { setCurrentUser } = this.props;\n\n this.unsubscribeFromAuth = auth.onAuthStateChanged(async (userAuth) => {\n if (userAuth) {\n const userRef = await createUserProfileDocument(userAuth);\n\n userRef.onSnapshot((snapShot) => {\n setCurrentUser({\n id: snapShot.id,\n ...snapShot.data()\n });\n });\n }\n setCurrentUser(userAuth);\n });\n }\n\n componentWillUnmount() {\n this.unsubscribeFromAuth();\n }\n\n render() {\n // console.log(this.props.currentUser.role)\n return (\n \n \n \n\n \n {\n // If currentUser is exactly equal to false, render Splash page\n // currentUser is false until Firebase determines auth state\n if (this.props.currentUser === false) {\n return ;\n }\n\n // Now, if Firebase has determined no user is logged in, currentUser is null\n return this.props.currentUser ? (\n \n ) : (\n }>\n \n \n );\n }}\n />\n\n {\n // If currentUser is exactly equal to false, render Splash page\n // currentUser is false until Firebase determines auth state\n if (this.props.currentUser === false) {\n return ;\n }\n\n // Now, if Firebase has determined no user is logged in, currentUser is null\n return this.props.currentUser ? (\n \n ) : (\n }>\n \n \n );\n }}\n />\n\n {\n // If currentUser is exactly equal to false, render Splash page\n // currentUser is false until Firebase determines auth state\n if (this.props.currentUser === false) {\n return ;\n }\n\n // Now, if Firebase has determined no user is logged in, currentUser is null\n return this.props.currentUser ? (\n \n ) : (\n }>\n \n \n );\n }}\n />\n\n \n this.props.currentUser ? (\n \n ) : (\n \n )\n }\n />\n \n this.props.currentUser ? (\n \n ) : (\n \n )\n }\n />\n\n \n this.props.currentUser ? (\n \n ) : (\n \n )\n }\n />\n\n \n this.props.currentUser ? : \n }\n />\n\n \n this.props.currentUser ? : \n }\n />\n\n \n this.props.currentUser.role === \"fulfillment\" ? (\n \n ) : (\n \n )\n }\n />\n\n \n this.props.currentUser.email === \"rangewater@gmail.com\" ? (\n \n ) : (\n \n )\n }\n />\n\n \n this.props.currentUser.email === \"marmenta@galleryresidential.com\" ? (\n \n ) : (\n \n )\n }\n />\n\n \n this.props.currentUser.email === \"ksarvis@columbiares.com\" ? (\n \n ) : (\n \n )\n }\n />\n\n \n this.props.currentUser.isEnterprise ? (\n \n ) : (\n \n )\n }\n />\n\n \n \n \n\n \n \n \n {/* */}\n \n \n \n \n \n \n );\n }\n}\n\n// currentUser is false before Firebase fetches data\n// currentUser is null if Firebase determines no user is logged in\nconst mapStateToProps = createStructuredSelector({\n currentUser: selectCurrentUser,\n redirectRoute: selectRedirectRoute\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n setCurrentUser: (user) => dispatch(setCurrentUser(user))\n});\nexport default connect(mapStateToProps, mapDispatchToProps)(App);\n","// This optional code is used to register a service worker.\n// register() is not called by default.\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 subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\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.0/8 are 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 function register(config) {\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.href);\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/facebook/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 // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\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 // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.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, config);\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\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport \"./index.css\";\nimport App from \"./App\";\nimport * as serviceWorker from \"./serviceWorker\";\nimport \"@fortawesome/fontawesome-free/css/all.min.css\";\nimport \"bootstrap-css-only/css/bootstrap.min.css\";\nimport \"mdbreact/dist/css/mdb.css\";\nimport \"bootstrap/dist/css/bootstrap.min.css\";\nimport store from \"./redux/store\";\nimport { Provider } from \"react-redux\";\nimport { loadStripe } from \"@stripe/stripe-js\";\nimport { Elements } from \"@stripe/react-stripe-js\";\n\nconst STRIPE_PUBLISHABLE_KEY = 'pk_live_51HXSqEAeW9tgiIdvHKYVpjVZgEItnNV7F4hqnlT5N5FooLT4yPksbuhgDTnq89nXMGyUQYomJ1DiqVXeDZRiQEtj00UvQu2QXV';\n\n// const STRIPE_PUBLISHABLE_KEY = \"pk_test_51HXSqEAeW9tgiIdvMxn5b7RBuaFv1aHjTy10mVjgxV1H91EtGZfbDKbc4q7u1OEeCddlrkS5XV7AxPkG0JK4fwzi00B4ub7Fz6\";\nconst stripePromise = loadStripe(STRIPE_PUBLISHABLE_KEY);\n\nReactDOM.render(\n \n \n \n \n ,\n document.getElementById(\"root\")\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n","module.exports = __webpack_public_path__ + \"static/media/logo5.c485b949.png\";","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport store from \"../../redux/store\";\n\nimport ReactQr from \"react-awesome-qr\";\n\nimport firebase from \"../../utils/firebase/firebase.utils\";\n\nimport MyLogo from \"../../assets/logo5.png\";\n\nexport default {\n generateQR: function () {\n var db = firebase.firestore();\n var storageRef = firebase.storage().ref();\n var database = firebase.database();\n\n const MyCardDirectURL = store.getState().user.currentUser.MyCardDirectURL;\n const directLinksUrl = store.getState().user.currentUser.directLinksUrl;\n const MyTapReviewCardURL =\n store.getState().user.currentUser.MyTapReviewCardURL;\n const userId = store.getState().user.currentUser.id;\n const shortUrl = store.getState().user.currentUser.shortUrl;\n // const isPremium = store.getState().user.currentUser.premium;\n\n\n // console.log('eowedwedcewsecdwswcsdcswdcs',userId)\n\n ReactDOM.render(\n 4 ? null :\n bgSrc={MyLogo}\n callback={\n (data) =>\n // console.log(data)\n\n db\n .collection(\"users\")\n .doc(`${userId}`)\n .update({\n QrImg: `${data}`\n })\n .then(() => {\n storageRef\n .child(`${userId}, QRCODE.png`)\n .putString(data, \"data_url\");\n })\n .then(() => {\n storageRef\n .child(`${userId}, QRCODE.png`)\n .getDownloadURL()\n .then((url) => {\n database.ref(`designs/ + ${userId}`).update({\n QrImgUrl: url\n })\n });\n })\n\n // storageRef\n // .child(`${this.props.userId}, QRCODE.png`)\n // .putString(data, \"data_url\")\n // .then(function (snapshot) {\n // // alert(\"QR SENT\");\n // })\n }\n />,\n document.getElementById(\"yo\")\n );\n }\n};\n","const INITIAL_STATE = {\n // currentUser: null,\n};\n\nconst userReducer = (state = INITIAL_STATE, action) => {\n switch (action.type) {\n case \"SET_CURRENT_USER\":\n return {\n ...state,\n currentUser: action.payload\n };\n\n case \"SAVE_USER_CARD\":\n return {\n ...state,\n user: { ...state.user, card: action.payload }\n };\n default:\n return state;\n }\n};\n\nexport default userReducer;\n","// You might be wondering: why do we need a routing reducer?\n// In the landing page, the user can log in a few different ways.\n// A couple of those ways are pretty straighforward.\n// BUT, if the user clicks the log in link under the card, we want to redirect them to the card design page.\n// Same idea for the log in link under the phone.\n// Clicking on those buttons will set the proper redirect route in this reducer.\n// We then access that route in App.js, where our routing logic lives.\n\nconst routingReducer = (state = \"/contact-info\", action) => {\n switch (action.type) {\n case \"SET_REDIRECT\":\n return action.payload;\n case \"DEFAULT_REDIRECT\":\n return \"/contact-info\";\n default:\n return state;\n }\n};\n\nexport default routingReducer;\n","const fulfillmentReducer = (state = [], action) => {\n switch (action.type) {\n case \"FETCH_ORDERS\":\n return [...action.payload];\n default:\n return state;\n }\n};\n\nexport default fulfillmentReducer;\n","const designImagesReducer = (state = [], action) => {\n switch (action.type) {\n case \"FETCH_DESIGNS\":\n return [...action.payload];\n default:\n return state;\n }\n};\n\nexport default designImagesReducer;\n","// const selectedUserReducer = (state = [], action) => {\n// switch (action.type) {\n// case \"SET_SELECTED_USER\":\n// return [...action.payload];\n// default:\n// return state;\n// }\n// };\n\n// export default selectedUserReducer;\n\n\nconst INITIAL_STATE = {};\n\nconst selectedUserReducer = (state = INITIAL_STATE, action) => {\n switch (action.type) {\n case \"SET_SELECTED_USER\":\n return {\n ...state,\n currentUser: action.payload\n };\n default:\n return state;\n }\n};\n\nexport default selectedUserReducer;","let Point = { x: 0, y: 0 };\nlet Bound = {\n x: 0,\n y: 0,\n width: 800,\n height: 800\n};\n\nconst CANVAS_INITIAL_STATE = {\n canvasViewport: Bound,\n pan: Point,\n zoom: 1\n};\n\nexport const canvasReducer = (state = CANVAS_INITIAL_STATE, action) => {\n switch (action.type) {\n case \"CANVAS/CONFIG_VIEWPORT\":\n return { ...state, ...action.payload };\n default:\n return state;\n }\n};\n\nexport const designReducer = (state = false, action) => {\n switch (action.type) {\n case \"CANVAS/DESIGNING\":\n return action.payload;\n default:\n return state;\n }\n};\n\nconst DESIGN_TYPE_INITIAL_STATE = {\n type: \"\",\n path: \"\",\n name : \"\",\n phoneCase: null\n};\n\nexport const designTypeReducer = (\n state = DESIGN_TYPE_INITIAL_STATE,\n action\n) => {\n switch (action.type) {\n case \"CANVAS/DESIGNTYPE\":\n return action.payload;\n default:\n return state;\n }\n};\n\nexport const toolbarReducer = (state = \"hide\", action) => {\n switch (action.type) {\n case \"TOOLBAR/TOGGLE\":\n return action.payload;\n default:\n return state;\n }\n};\n\nexport const managerReducer = (state = null, action) => {\n switch (action.type) {\n case \"CANVAS/MANAGER\":\n return action.payload;\n default:\n return state;\n }\n};\n","const ACTIVE_OBJECT_INITAL_STATE = {\n //general\n index: -1,\n id: \"\",\n kind: \"\",\n type: \"\",\n top: -10000,\n left: -10000,\n width: 0,\n height: 0,\n angle: 0,\n scaleX: 1,\n scaleY: 1,\n originX: \"left\",\n originY: \"top\",\n\n // for shape\n radius: 0,\n\n // for image\n url: \"\",\n\n // for text\n text: \"\",\n textAlign: \"center\",\n fontFamily: \"\",\n fontSize: 25,\n fontStyle: \"normal\",\n fontWeight: \"normal\",\n underline: false,\n fill: \"#000\",\n stroke: \"#F00\",\n strokeWidth: 0.2,\n padding: 0\n};\nexport const objectReducer = (state = [], action) => {\n switch (action.type) {\n case \"OBJECT/ADD\":\n let oldL = state.length,\n addingObj = { ...ACTIVE_OBJECT_INITAL_STATE, ...action.payload };\n addingObj.index = oldL - 1;\n return [].concat(state, addingObj);\n case \"OBJECT/SEQUENCE\":\n let { sourceIdx, targetIdx } = action.payload;\n let clone = state.slice();\n clone.splice(\n targetIdx < 0 ? clone.length + targetIdx : targetIdx,\n 0,\n clone.splice(sourceIdx, 1)[0]\n );\n clone.forEach((obj, i) => {\n obj.index = i;\n });\n return clone;\n\n case \"OBJECT/UPDATE\":\n let _id1 = action.payload.id;\n return state.map((object) => {\n return object.id === _id1 ? { ...object, ...action.payload } : object;\n });\n\n case \"OBJECT/DELETE\":\n let _id2 = action.payload.id;\n let leaveObjects = state.filter(function (object) {\n return object.id !== _id2;\n });\n leaveObjects.map((obj, i) => {\n return (obj.index = i);\n });\n return leaveObjects;\n case \"OBJECT/SET\":\n return action.payload;\n\n default:\n return state;\n }\n};\n\nexport const activeObjectReducer = (\n state = ACTIVE_OBJECT_INITAL_STATE,\n action\n) => {\n switch (action.type) {\n case \"OBJECT/SELECTED\":\n return { ...ACTIVE_OBJECT_INITAL_STATE, ...action.payload };\n case \"OBJECT/RELEASED\":\n return { ...ACTIVE_OBJECT_INITAL_STATE };\n case \"OBJECT/UPDATE\":\n return { ...state, ...action.payload };\n default:\n return state;\n }\n};\n","function isMobile(){\n if( navigator.userAgent.match(/Android/i)\n || navigator.userAgent.match(/webOS/i)\n || navigator.userAgent.match(/iPhone/i)\n // || navigator.userAgent.match(/iPad/i)\n // || navigator.userAgent.match(/iPod/i)\n || navigator.userAgent.match(/BlackBerry/i)\n || navigator.userAgent.match(/Windows Phone/i)\n ){\n return true;\n }\n else {\n return false;\n } \n}\n\nexport const mobileReducer = (state = isMobile(), action) => {\n return state;\n}\n\n","import { combineReducers } from \"redux\";\n\nimport userReducer from \"./user/user.reducer\";\nimport routingReducer from \"./routing/routing.reducer\";\nimport fulfillmentReducer from \"./fulfillment/fulfillment.reducer\";\nimport designImagesReducer from \"./designImages/designImages.reducer\";\nimport selectedUserReducer from \"./selectedUser/selectedUser.reducer\";\nimport {\n canvasReducer,\n designReducer,\n designTypeReducer,\n managerReducer,\n toolbarReducer\n} from \"./drawing-area/drawing-area.reducers\";\nimport { objectReducer, activeObjectReducer } from \"./object/object.reducers\";\nimport { mobileReducer } from \"./mobile/mobile.reducer\";\n\nconst lastActionTracker = (state = \"@@INIT\", action) => {\n if (action) {\n return action.type;\n }\n\n return state;\n};\n\nexport default combineReducers({\n user: userReducer,\n routing: routingReducer,\n designState: designReducer,\n designType: designTypeReducer,\n stateToolbar: toolbarReducer,\n mobile: mobileReducer,\n sceneManager: managerReducer,\n canvas: canvasReducer,\n objects: objectReducer,\n activeObject: activeObjectReducer,\n lastAction: lastActionTracker,\n fulfillment: fulfillmentReducer,\n designImages: designImagesReducer,\n selectedUser:selectedUserReducer\n});\n","\nimport { createStore, applyMiddleware, compose } from \"redux\";\nimport thunk from \"redux-thunk\";\nimport rootReducer from \"./root-reducer\";\n\nconst initialState = {};\n\nconst middleware = [thunk];\n\nconst store = createStore(\n rootReducer,\n initialState,\n compose(\n applyMiddleware(...middleware),\n (window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ &&\n window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__()) ||\n compose\n )\n);\n\nexport default store;","import store from \"../../redux/store\";\nimport firebase from \"../../utils/firebase/firebase.utils\";\nimport React from \"react\";\n\n// const { saveAs, encodeBase64 } = require('@progress/kendo-file-saver');\n\nexport default {\n updateProfile: function () {\n var userId = store.getState().user.currentUser.id;\n var cardUrl = store.getState().user.currentUser.cardUrl\n var displayName = store.getState().user.currentUser.displayName\n\n \n const profileState = JSON.parse(store.getState().user.currentUser?.profile);\n const formDataKey = profileState === 1 ? `formData` : `formData${profileState}`;\n const croppedImgKey = profileState === 1 ? `croppedImg` :`croppedImg${profileState}`;\n const formData = JSON.parse(store.getState().user.currentUser[formDataKey]);\n const croppedImg = store.getState().user.currentUser[croppedImgKey];\n\n \n\n // const profileState = JSON.parse(store.getState().user.currentUser?.profile);\n // const formData = profileState == \"1\" ? JSON.parse(store.getState().user.currentUser.formData) : profileState == \"2\" ? JSON.parse(store.getState().user.currentUser.formData2): profileState == \"3\" ? JSON.parse(store.getState().user.currentUser.formData3):JSON.parse(store.getState().user.currentUser.formData);\n // const croppedImg = profileState == \"1\" ? store.getState().user.currentUser.croppedImg : profileState == \"2\" ? store.getState().user.currentUser.croppedImg2 : profileState == \"3\" ? store.getState().user.currentUser.croppedImg3 : store.getState().user.currentUser.croppedImg;\n // const stringImg = store.getState().user.currentUser.stringImg\n // console.log('thisistheidddddddd',profileState)\n\n\n var firstName = formData.firstName;\n var lastName = formData.lastName;\n var company = formData.company;\n var title = formData.title;\n var cellPhone = formData.cellPhone;\n var workPhone = formData.workPhone;\n var homePhone = formData.homePhone;\n var persEmail = formData.persEmail;\n var workEmail = formData.workEmail;\n var link = formData.link;\n var workLink = formData.workLink;\n var homeStreet = formData.homeStreet;\n var homeCity = formData.homeCity;\n var homeState = formData.homeState;\n var homeZip = formData.homeZip;\n var workStreet = formData.workStreet;\n var workCity = formData.workCity;\n var workState = formData.workState;\n var workZip = formData.workZip;\n var birthday = formData.birthday;\n var socialType1 = formData.socialType1.toLowerCase().trim();\n var socialUserName1 = formData.socialUserName1;\n var socialLink1 = formData.socialLink1;\n var socialType2 = formData.socialType2.toLowerCase().trim();\n var socialUserName2 = formData.socialUserName2;\n var socialLink2 = formData.socialLink2;\n var socialType3 = formData.socialType3.toLowerCase().trim();\n var socialUserName3 = formData.socialUserName3;\n var socialLink3 = formData.socialLink3;\n var socialType4 = formData.socialType4.toLowerCase().trim();\n var socialUserName4 = formData.socialUserName4;\n var socialLink4 = formData.socialLink4;\n var socialType5 = formData.socialType5.toLowerCase().trim();\n var socialUserName5 = formData.socialUserName5;\n var socialLink5 = formData.socialLink5;\n var socialType6 = formData.socialType6.toLowerCase().trim();\n var socialUserName6 = formData.socialUserName6;\n var socialLink6 = formData.socialLink6;\n var image = croppedImg;\n var message = formData.message;\n var imgLink = formData.imgLink;\n var youtubeLink = formData.youtubeLink;\n var html = formData.html;\n const withHttp = url => !/^https?:\\/\\//i.test(url) ? `https://${url}` : url;\n\n const toHtml = `\n \n \n \n \n ${displayName}\n \n \n \n \n \n \n \n \n \n \n \n \n \n
    \n
    \n
    \n
    \n
    \n ${ image ? ` `:``}\n
    \n
    \n

    ${firstName} ${lastName}

    \n

    ${company}

    \n

    ${title}

    \n ${ homeCity || workCity ? `

    \n ${homeCity || workCity}, ${homeState || workState}\n

    `:`

    `}\n
    \n ${ cellPhone ? `
  • \n ${cellPhone}\n
  • `:`
  • `}\n ${ workPhone ? `
  • \n ${workPhone}\n
  • `:`
  • `}\n ${ homePhone ? `
  • \n ${homePhone}\n
  • `:`
  • `}\n ${ persEmail ? `
  • \n ${persEmail}\n
  • `:`
  • `}\n ${ workEmail ? `
  • \n ${workEmail}\n
  • `:`
  • `}\n ${ link ? `
  • \n ${link}\n
  • `:`
  • `}\n ${ workLink ? `
  • \n ${workLink}\n
  • `:`
  • `}\n
    \n \n \n add\n ADD CONTACT\n \n
    \n
      \n ${ socialLink1 ? `\n \n `:``}\n ${ socialLink2 ? `\n \n `:``}\n ${ socialLink3 ? `\n \n `:``}\n ${ socialLink4 ? `\n \n `:``}\n ${ socialLink5 ? `\n \n `:``}\n ${ socialLink6 ? `\n \n `:``}\n
    \n\n ${message|| imgLink || youtubeLink || html ? `
    \n \n ${message ? `

    ${message}

    ` :''}\n \n ${imgLink ? ``:''}\n \n ${youtubeLink ? `\n
    \n \n
    \n `: ''}\n \n ${html ? `
    ${html}
    ` : ''}\n \n
    `: ''}\n\n
    \n
    \n
    \n
    \n \n \n \n \n `;\n\n var storageRef = firebase.storage().ref();\n var db = firebase.firestore();\n\n\n const encodedString = 'data:text/html;base64,' + new Buffer(toHtml).toString(\"base64\");\n // console.log('dfdfdfdfddfdfddfd',encodedString)\n storageRef\n .child(`${userId}.html`)\n .putString(encodedString,'data_url')\n .then((snapshot) => {\n // console.log(snapshot)\n storageRef\n .child(`${userId}.html`)\n .getDownloadURL()\n .then((url) => {\n db.collection(\"users\")\n .doc(`${userId}`)\n .update({\n landingUrl: `${url}`\n })\n })\n });\n\n\n }\n};\n","module.exports = __webpack_public_path__ + \"static/media/RW3.79971607.png\";","module.exports = __webpack_public_path__ + \"static/media/card-back.4b23bfa0.png\";","import vCard from 'mycardedit';\nimport store from '../../redux/store';\n// import firebase from \"../../utils/firebase/firebase.utils\";\n\n// const { saveAs, encodeBase64 } = require('@progress/kendo-file-saver');\n\nexport default {\n generateCard: function () {\n // var userId = store.getState().user.currentUser.id;\n // const profileState = JSON.parse(store.getState().user.currentUser.profile);\n // const formData = profileState == \"1\" ? JSON.parse(store.getState().user.currentUser.formData) : profileState == \"2\" ? JSON.parse(store.getState().user.currentUser.formData2): profileState == \"3\" ? JSON.parse(store.getState().user.currentUser.formData3):JSON.parse(store.getState().user.currentUser.formData);\n // const croppedImg = profileState == \"1\" ? store.getState().user.currentUser.croppedImg : profileState == \"2\" ? store.getState().user.currentUser.croppedImg2 : profileState == \"3\" ? store.getState().user.currentUser.croppedImg3 : store.getState().user.currentUser.croppedImg;\n \n\n const profileState = JSON.parse(store.getState().user.currentUser?.profile);\n const formDataKey = profileState === 1 ? `formData` : `formData${profileState}`;\n const croppedImgKey = profileState === 1 ? `croppedImg` :`croppedImg${profileState}`;\n const formData = JSON.parse(store.getState().user.currentUser[formDataKey]);\n const croppedImg = store.getState().user.currentUser[croppedImgKey];\n\n // const stringImg = store.getState().user.currentUser.stringImg\n\n\n\n var firstName = formData.firstName;\n var lastName = formData.lastName;\n var company = formData.company;\n var title = formData.title;\n var cellPhone = formData.cellPhone;\n var workPhone = formData.workPhone;\n var homePhone = formData.homePhone;\n var persEmail = formData.persEmail;\n var workEmail = formData.workEmail;\n var link = formData.link;\n var workLink = formData.workLink;\n var homeStreet = formData.homeStreet;\n var homeCity = formData.homeCity;\n var homeState = formData.homeState;\n var homeZip = formData.homeZip;\n var workStreet = formData.workStreet;\n var workCity = formData.workCity;\n var workState = formData.workState;\n var workZip = formData.workZip;\n var birthday = formData.birthday;\n var socialType1 = formData.socialType1;\n var socialUserName1 = formData.socialUserName1;\n var socialLink1 = formData.socialLink1;\n var socialType2 = formData.socialType2;\n var socialUserName2 = formData.socialUserName2;\n var socialLink2 = formData.socialLink2;\n var socialType3 = formData.socialType3;\n var socialUserName3 = formData.socialUserName3;\n var socialLink3 = formData.socialLink3;\n var socialType4 = formData.socialType4;\n var socialUserName4 = formData.socialUserName4;\n var socialLink4 = formData.socialLink4;\n var socialType5 = formData.socialType5;\n var socialUserName5 = formData.socialUserName5;\n var socialLink5 = formData.socialLink5;\n var socialType6 = formData.socialType6;\n var socialUserName6 = formData.socialUserName6;\n var socialLink6 = formData.socialLink6;\n // var image = croppedImg.substr(croppedImg.indexOf(\",\") + 1)\n var contact = vCard();\n\n //set properties\n contact.firstName = firstName;\n contact.lastName = lastName;\n contact.organization = company;\n contact.title = title;\n contact.cellPhone = cellPhone;\n contact.workPhone = workPhone;\n contact.homePhone = homePhone;\n contact.email = persEmail;\n contact.workEmail = workEmail;\n contact.url = link;\n contact.workUrl = workLink;\n // contact.homeAddress.label = homeStreet.value > 0 ? 'Home Address':null;\n function HomeStreet() {\n contact.homeAddress.label = homeStreet;\n }\n if (homeStreet) {\n HomeStreet();\n }\n\n contact.homeAddress.street = homeStreet;\n contact.homeAddress.city = homeCity;\n contact.homeAddress.stateProvince = homeState;\n contact.homeAddress.postalCode = homeZip;\n // contact.workAddress.label = workStreet.value > 0 ? 'Work Address':null;\n function WorkStreet() {\n contact.workAddress.label = workStreet;\n }\n if (workStreet) {\n WorkStreet();\n }\n\n contact.workAddress.street = workStreet;\n contact.workAddress.city = workCity;\n contact.workAddress.stateProvince = workState;\n contact.workAddress.postalCode = workZip;\n contact.birthday = new Date(birthday);\n\n const withHttp = url => !/^https?:\\/\\//i.test(url) ? `https://${url}` : url;\n\n\n function Social1() {\n contact.socialUrls[socialType1.replace(/\\s+/g, '')] = {\n userName: socialUserName1,\n url: withHttp(socialLink1)\n };\n }\n\n if (socialType1) {\n Social1();\n }\n\n function Social2() {\n contact.socialUrls[socialType2.replace(/\\s+/g, '')] = {\n userName: socialUserName2,\n url: withHttp(socialLink2)\n };\n }\n\n if (socialType2) {\n Social2();\n }\n\n function Social3() {\n contact.socialUrls[socialType3.replace(/\\s+/g, '')] = {\n userName: socialUserName3,\n url: withHttp(socialLink3)\n };\n }\n\n if (socialType3) {\n Social3();\n }\n\n function Social4() {\n contact.socialUrls[socialType4.replace(/\\s+/g, '')] = {\n userName: socialUserName4,\n url: withHttp(socialLink4)\n };\n }\n\n if (socialType4) {\n Social4();\n }\n\n function Social5() {\n contact.socialUrls[socialType5.replace(/\\s+/g, '')] = {\n userName: socialUserName5,\n url: withHttp(socialLink5)\n };\n }\n\n if (socialType5) {\n Social5();\n }\n\n function Social6() {\n contact.socialUrls[socialType6.replace(/\\s+/g, '')] = {\n userName: socialUserName6,\n url: withHttp(socialLink6)\n };\n }\n\n if (socialType6) {\n Social6();\n }\n\n function Image() {\n contact.photo.embedFromString(\n croppedImg.substr(croppedImg.indexOf(',') + 1),\n 'image/png'\n );\n }\n\n if (croppedImg) {\n Image();\n }\n\n // contact.socialUrls[socialType2] = {};\n // contact.socialUrls[socialType2].userName = socialUserName2;\n // contact.socialUrls[socialType2].url = socialLink2;\n\n // contact.homeFax = '312-555-1616';\n // contact.workFax = '312-555-1717';\n // contact.homeAddress.countryRegion = 'United States of America';\n // contact.workAddress.countryRegion = 'United States of America';\n // contact.note = 'Notes on Eric';\n\n contact.version = '3.0';\n\n //get as formatted string\n var user = contact.getFormattedString();\n // console.log(user);\n\n // store.dispatch((saveUserCard(user,(userId))))\n localStorage.setItem('vCard', user);\n\n //send to vcard to firebase if needed\n\n // var db = firebase.firestore();\n // db.collection(\"users\")\n // .doc(`${localStorage.getItem(\"userId\")}`)\n // .update({\n // vCard: `${user}`,\n // })\n // .then(function () {\n // console.log(\"Document successfully written!\");\n // })\n // .catch(function (error) {\n // console.error(\"Error writing document: \", error);\n // });\n\n //save to file\n\n // const dataURI = 'data:text/vcard;base64,' + encodeBase64(user);\n // saveAs(dataURI, 'user.vcf');\n }\n};\n","module.exports = \"data:image/jpeg;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/GalleryMyTapCardLogo.d68fde63.png\";","module.exports = __webpack_public_path__ + \"static/media/RW1.22c8713b.png\";","module.exports = __webpack_public_path__ + \"static/media/fivestar.6f5680a2.png\";","import React from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { MDBModal, MDBModalBody, MDBModalHeader, MDBIcon } from \"mdbreact\";\nimport GoogleButton from \"react-google-button\";\nimport { Link } from \"react-router-dom\";\nimport { signInWithGoogle } from \"../../../utils/firebase/firebase.utils\";\nimport { signInWithFacebook } from \"../../../utils/firebase/firebase.utils\";\n\nimport \"./LoginModal.styles.scss\";\n\nconst LoginModal = ({ toggleModal, isOpen }) => {\n return ReactDOM.createPortal(\n \n \n Log In to Get Started!\n \n \n {\" \"}\n
    \n {/* \n   Register\n */}\n\n \n   Log In\n \n\n \n\n \n       Sign in with Facebook\n \n\n
    \n\n
    \n Forgot Your Password?\n
    \n
    \n
    \n
    ,\n document.getElementById(\"login-modal\")\n );\n};\n\nexport default LoginModal;\n","export const setCurrentUser = user => ({\n type: 'SET_CURRENT_USER',\n payload: user\n})\n\nexport const updateUser = formData => ({\n type: 'UPDATE_USER',\n payload: formData\n})\n\nexport const saveUserCard = formData => ({\n type: 'SAVE_USER_CARD',\n payload: formData\n})","import firebase from \"../../utils/firebase/firebase.utils\";\n// import store from \"../../redux/store\";\n\n// setTimeout(() => {\n// var userId = store.getState().user.currentUser.uid;\n\n// console.log(\"sdsdsd\", userId);\n// }, 3000);\n\nfirebase.auth().onAuthStateChanged((user) => {\n if (user) {\n localStorage.setItem(\"uid\", user.uid);\n } else {\n // No user is signed in.\n }\n});\n\nexport const fetchDesigns = () => async (dispatch) => {\n await firebase\n .database()\n .ref(`designs/ + ${localStorage.getItem(\"uid\")}`)\n .once(\"value\", (snapshot) => {\n const designs = snapshot.val();\n const parsedOrders = Object.values({ designs });\n\n dispatch({\n type: \"FETCH_DESIGNS\",\n payload: parsedOrders\n });\n });\n};\n","import firebase from \"firebase/app\";\nimport \"firebase/firestore\";\nimport \"firebase/auth\";\nimport \"firebase/storage\";\nimport \"firebase/database\";\nimport \"firebase/functions\";\nrequire(\"dotenv\").config();\n\n// const key = process.env.API_KEY;\n\nconst config = {\n apiKey: \"AIzaSyBXoxTmjpnseSqHEXzX3ZEq2FqHgTgPHXM\",\n authDomain: \"mytap-2d6fa.firebaseapp.com\",\n databaseURL: \"https://mytap-2d6fa.firebaseio.com\",\n projectId: \"mytap-2d6fa\",\n storageBucket: \"mytap-2d6fa.appspot.com\",\n messagingSenderId: \"774375704684\",\n appId: \"1:774375704684:web:72d66de58b375c70f13049\",\n measurementId: \"G-Z4HYEYM77K\",\n};\n\nexport const createUserProfileDocument = async (userAuth, additionalData) => {\n if (!userAuth) return;\n const userRef = firestore.doc(`users/${userAuth.uid}`);\n const snapShot = await userRef.get();\n if (!snapShot.exists) {\n const { displayName, email } = userAuth;\n const createdAt = new Date();\n\n try {\n await userRef.set({\n displayName,\n email,\n createdAt,\n ...additionalData,\n });\n } catch (error) {\n console.log('error creating user', error.message)\n }\n }\n return userRef\n};\n\nfirebase.initializeApp(config);\n\nexport const auth = firebase.auth();\nexport const firestore = firebase.firestore();\nexport const storage = firebase.storage();\nexport const database = firebase.database();\nexport const functions = firebase.functions();\n\nexport const provider = new firebase.auth.GoogleAuthProvider();\nprovider.setCustomParameters({ prompt: \"select_account\" });\nexport const signInWithGoogle = () => auth.signInWithPopup(provider);\n\nexport const provider2 = new firebase.auth.FacebookAuthProvider();\nprovider2.setCustomParameters({ prompt: \"select_account\" });\nexport const signInWithFacebook = () => auth.signInWithPopup(provider2);\n\nconst firebaseCreateOrder = functions.httpsCallable('createOrder');\nconst firebaseUpdatePaymentMethod = functions.httpsCallable('updatePaymentMethod');\nconst firebaseCreateSession = functions.httpsCallable('createSession');\nconst firebaseCreateSession2 = functions.httpsCallable('createSession2');\nconst firebaseCreateStripeCustomer = functions.httpsCallable('createStripeCustomer')\nconst firebaseGetSalesData = functions.httpsCallable('getSalesAdminData')\nconst firebaseGetStripePromoCodes = functions.httpsCallable('getSalesAdminPromoCodes')\nconst firebaseCreateNewPromoCode = functions.httpsCallable('setNewPromoCode')\nconst firebaseGetStripePaymentIntentData = functions.httpsCallable('getPaymentIntentData')\nconst firebaseDeleteUser = functions.httpsCallable('adminDeleteUser');\n\n\nexport const updatePaymentMethod = async (paymentMethod) => {\n return await firebaseUpdatePaymentMethod({ paymentMethod });\n};\n\nexport const createOrder = async (productType) => {\n return await firebaseCreateOrder({\n productType,\n });\n}\n\nexport const createSession = async (productType,currentUser) => {\n return await firebaseCreateSession({\n successUrl: \"https://www.mytap.net/contact-info\",\n cancelUrl: \"https://www.mytap.net/shop\",\n productType,\n currentUser\n });\n}\n\nexport const createSession2 = async (productType,currentUser) => {\n return await firebaseCreateSession2({\n successUrl: \"https://www.mytap.net/contact-info\",\n cancelUrl: \"https://www.mytap.net/shop\",\n productType,\n currentUser\n });\n}\n\nexport const createStripeCustomer = async (currentUser) => {\n return await firebaseCreateStripeCustomer({\n currentUser\n })\n}\n\nexport const getStripePaymentIntentData = async () => {\n return await firebaseGetStripePaymentIntentData()\n}\n\nexport const getSalesAdminData = async () => {\n return await firebaseGetSalesData()\n}\n\nexport const getSalesAdminPromoCodes = async () => {\n return await firebaseGetStripePromoCodes()\n}\n\nexport const createNewPromoCode = async (data) => {\n return await firebaseCreateNewPromoCode(data)\n}\n\nexport const adminDeleteUser = async (id) => {\n return await firebaseDeleteUser({\n id\n })\n}\n\n// export const provider = new firebase.auth.FacebookAuthProvider();\n// provider.setCustomParameters({ 'display': 'popup' });\n// export const signInWithFacebook = () => auth.signInWithPopup(provider);\n\n// export { storage, firebase as default}\nexport default firebase;\n","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport {\n MDBContainer,\n MDBRow,\n MDBCol,\n MDBInput,\n MDBBtn,\n MDBIcon,\n MDBCardBody,\n MDBInputGroup,\n MDBModal,\n MDBModalBody,\n MDBModalHeader\n} from \"mdbreact\";\nimport Accordion from \"react-bootstrap/Accordion\";\nimport { BarChart as ChartIcon } from \"@material-ui/icons\";\nimport { Typography, Box } from \"@material-ui/core\";\n\nimport { Card } from \"react-bootstrap\";\nimport firebase from \"../../utils/firebase/firebase.utils\";\nimport { Link, withRouter } from \"react-router-dom\";\nimport { nanoid } from \"nanoid\";\n\nimport { updateUser } from \"../../redux/user/user.actions\";\nimport { fetchDesigns } from \"../../redux/designImages/designImages.actions\";\n\nimport \"./contact-form.css\";\n\nimport StyledDemo from \"../../components/images/index\";\n\nimport API2 from \"../../components/generateQr/generateQR\";\nimport API from \"../../components/generate-card/contact\";\nimport LANDING from \"../../pages/profile/profile\";\nimport GRAPHAPI from \"./graph\";\n// import { saveAs, encodeBase64 } from \"@progress/kendo-file-saver\";\n\nimport ReactQr from \"react-awesome-qr\";\nimport MyLogo from \"../../assets/logo5.png\";\nimport RangeWater from \"../../assets/rangewater.png\";\nimport Placeholder from \"./assets/images/placeholder.jpeg\"\n\nclass FormPage extends Component {\n state = {\n modal: false,\n modal2: false,\n firstName: \"\",\n lastName: \"\",\n company: \"\",\n title: \"\",\n cellPhone: \"\",\n workPhone: \"\",\n homePhone: \"\",\n persEmail: \"\",\n workEmail: \"\",\n link: \"\",\n workLink: \"\",\n homeStreet: \"\",\n homeCity: \"\",\n homeState: \"\",\n homeZip: \"\",\n workStreet: \"\",\n workCity: \"\",\n workState: \"\",\n workZip: \"\",\n birthday: \"\",\n socialType1: \"\",\n socialUserName1: \"\",\n socialLink1: \"\",\n socialType2: \"\",\n socialUserName2: \"\",\n socialLink2: \"\",\n socialType3: \"\",\n socialUserName3: \"\",\n socialLink3: \"\",\n socialType4: \"\",\n socialUserName4: \"\",\n socialLink4: \"\",\n socialType5: \"\",\n socialUserName5: \"\",\n socialLink5: \"\",\n socialType6: \"\",\n socialUserName6: \"\",\n socialLink6: \"\",\n cardHasUrl: false,\n message: \"\",\n imgLink: \"\",\n youtubeLink: \"\",\n html: \"\",\n directLink:`https://firebasestorage.googleapis.com/v0/b/mytap-2d6fa.appspot.com/o/${this.props.userId}.html?alt=media&token=f9996a6f-9ccc-4469-aa6a-64ddd296cbce`,\n customDirectLink: \"\",\n generateQrLink: \"\",\n profile: \"1\",\n inputFocus: false,\n totalClicks: \"\",\n clickDates: [],\n clickTimes: [],\n modal3: false,\n saveBtn: \"PREVIEW!\"\n };\n\n // Redirect to fulfillment page when applicable\n componentDidUpdate() {\n if (this.props.currentUser.role === \"fulfillment\") {\n this.props.history.push(\"/fulfillment\");\n }\n if (this.props.currentUser.email === \"rangewater@gmail.com\") {\n this.props.history.push(\"/rangewater-order\");\n }\n if (this.props.currentUser.email === \"marmenta@galleryresidential.com\") {\n this.props.history.push(\"/gallery-residential\");\n }\n if (this.props.currentUser.email === \"ksarvis@columbiares.com\") {\n this.props.history.push(\"/columbia-residential-order\");\n }\n if (this.props.currentUser.isEnterprise) {\n this.props.history.push(\"/enterprise\");\n }\n }\n\n componentDidMount() {\n this.props.fetchDesigns();\n\n setTimeout(() => {\n this.getClicks();\n }, 1000);\n \n setTimeout(() => {\n if (this.props.formData) {\n const { profile, formData, formData2, formData3,formData4 } = this.props;\n let parsedFormData;\n \n switch (profile) {\n case '1':\n parsedFormData = JSON.parse(formData);\n break;\n case '2':\n parsedFormData = JSON.parse(formData2);\n break;\n case '3':\n parsedFormData = JSON.parse(formData3);\n break;\n case '4':\n parsedFormData = JSON.parse(formData4);\n break;\n default:\n parsedFormData = JSON.parse(formData);\n break;\n }\n // const formData = this.props.profile === '1' ? JSON.parse(this.props.formData): this.props.profile === '2' ? JSON.parse(this.props.formData2): this.props.profile === '3'? JSON.parse(this.props.formData3): JSON.parse(this.props.formData);\n this.setState({\n firstName: parsedFormData.firstName,\n lastName: parsedFormData.lastName,\n company: parsedFormData.company,\n title: parsedFormData.title,\n cellPhone: parsedFormData.cellPhone,\n workPhone: parsedFormData.workPhone,\n homePhone: parsedFormData.homePhone,\n persEmail: parsedFormData.persEmail,\n workEmail: parsedFormData.workEmail,\n link: parsedFormData.link,\n workLink: parsedFormData.workLink,\n homeStreet: parsedFormData.homeStreet,\n homeCity: parsedFormData.homeCity,\n homeState: parsedFormData.homeState,\n homeZip: parsedFormData.homeZip,\n workStreet: parsedFormData.workStreet,\n workCity: parsedFormData.workCity,\n workState: parsedFormData.workState,\n workZip: parsedFormData.workZip,\n birthday: parsedFormData.birthday,\n socialType1: parsedFormData.socialType1,\n socialUserName1: parsedFormData.socialUserName1,\n socialLink1: parsedFormData.socialLink1,\n socialType2: parsedFormData.socialType2,\n socialUserName2: parsedFormData.socialUserName2,\n socialLink2: parsedFormData.socialLink2,\n socialType3: parsedFormData.socialType3,\n socialUserName3: parsedFormData.socialUserName3,\n socialLink3: parsedFormData.socialLink3,\n socialType4: parsedFormData.socialType4,\n socialUserName4: parsedFormData.socialUserName4,\n socialLink4: parsedFormData.socialLink4,\n socialType5: parsedFormData.socialType5,\n socialUserName5: parsedFormData.socialUserName5,\n socialLink5: parsedFormData.socialLink5,\n socialType6: parsedFormData.socialType6,\n socialUserName6: parsedFormData.socialUserName6,\n socialLink6: parsedFormData.socialLink6,\n html: parsedFormData.html,\n imgLink: parsedFormData.imgLink,\n youtubeLink: parsedFormData.youtubeLink,\n message: parsedFormData.message,\n directLink: parsedFormData.directLink,\n customDirectLink: parsedFormData.customDirectLink,\n generateQrLink: parsedFormData.generateQrLink,\n profile: parsedFormData.profile\n\n });\n } else {\n this.setState({\n firstName: \"\",\n lastName: \"\",\n company: \"\",\n title: \"\",\n cellPhone: \"\",\n workPhone: \"\",\n homePhone: \"\",\n persEmail: \"\",\n workEmail: \"\",\n link: \"\",\n workLink: \"\",\n homeStreet: \"\",\n homeCity: \"\",\n homeState: \"\",\n homeZip: \"\",\n workStreet: \"\",\n workCity: \"\",\n workState: \"\",\n workZip: \"\",\n birthday: \"\",\n socialType1: \"\",\n socialUserName1: \"\",\n socialLink1: \"\",\n socialType2: \"\",\n socialUserName2: \"\",\n socialLink2: \"\",\n socialType3: \"\",\n socialUserName3: \"\",\n socialLink3: \"\",\n socialType4: \"\",\n socialUserName4: \"\",\n socialLink4: \"\",\n socialType5: \"\",\n socialUserName5: \"\",\n socialLink5: \"\",\n socialType6: \"\",\n socialUserName6: \"\",\n socialLink6: \"\",\n message: \"\",\n imgLink: \"\",\n youtubeLink: \"\",\n html: \"\",\n directLink: `https://firebasestorage.googleapis.com/v0/b/mytap-2d6fa.appspot.com/o/${this.props.userId}.html?alt=media&token=f9996a6f-9ccc-4469-aa6a-64ddd296cbce`,\n customDirectLink: \"\",\n generateQrLink: \"\",\n profile: \"1\"\n });\n }\n if (this.props.currentUser && !this.props.formData2) {\n var db = firebase.firestore();\n db.collection(\"users\")\n .doc(`${this.props.userId}`)\n .update({\n formData: `${JSON.stringify(this.state)}`,\n formData2: `${JSON.stringify(this.state)}`,\n formData3: `${JSON.stringify(this.state)}`,\n formData4: `${JSON.stringify(this.state)}`,\n\n profile: '1',\n uid: `${this.props.userId}`\n })\n .then(() => {\n this.setState({directLink: `https://firebasestorage.googleapis.com/v0/b/mytap-2d6fa.appspot.com/o/${this.props.userId}.html?alt=media&token=f9996a6f-9ccc-4469-aa6a-64ddd296cbce`})\n this.setState({ \n totalClicks: 0,\n profile:1 \n });\n \n console.log(\"Document successfully written!\");\n\n API.generateCard();\n\n var storageRef = firebase.storage().ref();\n\n const encodedString = new Buffer(\n localStorage.getItem(\"vCard\")\n ).toString(\"base64\");\n storageRef\n .child(`${this.props.userId}.vcf`)\n .putString(encodedString, \"base64\")\n .then((snapshot) => {\n // alert(\"Sent to MyTap Card\");\n LANDING.updateProfile();\n // this.directLink();\n\n storageRef\n .child(`${this.props.userId}.vcf`)\n .getDownloadURL()\n .then((url) => {\n db.collection(\"users\")\n .doc(`${this.props.userId}`)\n .update({\n cardUrl: `${url}`\n })\n .then(() => {\n console.log(\"QrUrl successfully written!\");\n // this.setURL();\n if (!this.props.shortUrl) {\n setTimeout(() => {\n this.createShortLink();\n }, 1000);\n }\n setTimeout(() => {\n API2.generateQR();\n }, 1500);\n })\n .catch(function (error) {\n console.error(\"Error writing document: \", error);\n });\n });\n });\n })\n .catch(function (error) {\n console.error(\"Error writing document: \", error);\n });\n }\n }, 1000);\n }\n\n createShortLink() {\n var db = firebase.firestore();\n const link = {\n name: \"relink\",\n longURL:\n this.props.landingUrl.includes(\"http://\") ||\n this.props.landingUrl.includes(\"https://\")\n ? this.props.landingUrl\n : `http://${this.props.landingUrl}`,\n createdAt: firebase.firestore.FieldValue.serverTimestamp(),\n shortCode: nanoid(6),\n totalClicks: 0,\n clickDates: [],\n profile: 1\n };\n\n db.collection(\"users\")\n .doc(`${this.props.userId}`)\n .collection(\"links\")\n .add(link)\n .then(() => {\n db.collection(\"users\")\n .doc(`${this.props.userId}`)\n .update({\n shortUrl: `https://www.mytap.net/rd/${link.shortCode}`\n });\n });\n }\n\n toggle = () => {\n this.setState({\n modal: !this.state.modal\n });\n };\n\n toggle2 = () => {\n this.setState({\n modal2: !this.state.modal2\n });\n };\n\n toggle3 = () => {\n GRAPHAPI.graph(this.state.clickDates, this.state.clickTimes);\n setTimeout(() => {\n this.setState({\n modal3: !this.state.modal3\n });\n }, 450);\n };\n\n inputFocusHandler = (e) => {\n this.setState({\n inputFocus: !this.state.inputFocus\n });\n this.handleSubmit(e)\n };\n\n setURL = () => {\n this.setState({\n cardHasUrl: true\n });\n };\n\n onChange = (e) => {\n const { name, value } = e.target;\n this.setState({ [name]: value });\n this.updateShortLink()\n // this.handleSubmit(e)\n };\n\n resetName = (e) => {\n this.setState({\n birthday: \"\"\n });\n this.handleSubmit(e)\n };\n\n preview = () => {\n \n const formattedURL = url => {\n if (url.includes(\"http://\") || url.includes(\"https://\")) {\n return url;\n } else {\n return `https://${url}`;\n }\n };\n\n const longURL = this.state.directLink === \"1\" ? \n formattedURL(this.state.customDirectLink) : formattedURL(this.state.directLink);\n\n if (this.state.directLink.split('?')[0] === this.props.landingUrl.split('?')[0]){\n this.toggle2()\n }\n else{\n window.open(longURL,'_blank')\n }\n \n };\n\n\n directChangeHandler(event) {\n // alert(event.target.value)\n this.setState({ directLink: event.target.value });\n this.updateShortLink()\n }\n\n async updateShortLink() {\n const db = firebase.firestore();\n const longCode = this.props.shortUrl;\n const shortCode = longCode.substring(longCode.lastIndexOf(\"/\") + 1);\n const linkDoc = await db.collection(\"links\").doc(shortCode).get();\n const { linkID, userId } = linkDoc.data();\n\n const formattedURL = url => {\n if (url.includes(\"http://\") || url.includes(\"https://\")) {\n return url;\n } else {\n return `https://${url}`;\n }\n };\n\n const longURL = this.state.directLink === \"1\" ? \n formattedURL(this.state.customDirectLink) : formattedURL(this.state.directLink);\n\n db.collection(\"links\").doc(shortCode).update({ longURL })\n .then(() => {\n db.collection(\"users\").doc(userId).collection(\"links\").doc(linkID).update({ longURL });\n });\n}\n\n\n getClicks() {\n firebase\n .firestore()\n .collection(`users/${this.props.userId}/links`)\n .get()\n .then((querySnapshot) => {\n querySnapshot.forEach((doc) => {\n // console.log(doc.id, \" => \", doc.data());\n const { profile } = this.props\n const Clicks = profile === \"1\" ? `totalClicks` :`totalClicks${profile}`;\n const Dates = profile === \"1\" ? `clickDates` :`clickDates${profile}`;\n\n if (doc.data()[Dates]){\n const clicks = doc.data()[Clicks];\n const clickDates = doc.data()[Dates];\n this.setState({ totalClicks: clicks });\n \n const dates = clickDates.map((date) =>\n new Date(date.seconds * 1000).setHours(0, 0, 0, 0)\n );\n const clickTimes = clickDates.map((date) =>\n new Date(date * 1000).toLocaleTimeString()\n );\n this.setState({ clickDates: dates });\n this.setState({ clickTimes: clickTimes });\n }\n else{\n this.setState({ totalClicks: 0 });\n }\n \n\n });\n });\n }\n\n stateChangeHandler() {\n if (this.props.formData) {\n const { profile, formData, formData2, formData3,formData4 } = this.props;\n let parsedFormData;\n \n switch (profile) {\n case '1':\n parsedFormData = JSON.parse(formData);\n break;\n case '2':\n parsedFormData = JSON.parse(formData2);\n break;\n case '3':\n parsedFormData = JSON.parse(formData3);\n break;\n case '4':\n parsedFormData = JSON.parse(formData4);\n break;\n default:\n parsedFormData = JSON.parse(formData);\n break;\n }\n this.setState({\n firstName: parsedFormData.firstName,\n lastName: parsedFormData.lastName,\n company: parsedFormData.company,\n title: parsedFormData.title,\n cellPhone: parsedFormData.cellPhone,\n workPhone: parsedFormData.workPhone,\n homePhone: parsedFormData.homePhone,\n persEmail: parsedFormData.persEmail,\n workEmail: parsedFormData.workEmail,\n link: parsedFormData.link,\n workLink: parsedFormData.workLink,\n homeStreet: parsedFormData.homeStreet,\n homeCity: parsedFormData.homeCity,\n homeState: parsedFormData.homeState,\n homeZip: parsedFormData.homeZip,\n workStreet: parsedFormData.workStreet,\n workCity: parsedFormData.workCity,\n workState: parsedFormData.workState,\n workZip: parsedFormData.workZip,\n birthday: parsedFormData.birthday,\n socialType1: parsedFormData.socialType1,\n socialUserName1: parsedFormData.socialUserName1,\n socialLink1: parsedFormData.socialLink1,\n socialType2: parsedFormData.socialType2,\n socialUserName2: parsedFormData.socialUserName2,\n socialLink2: parsedFormData.socialLink2,\n socialType3: parsedFormData.socialType3,\n socialUserName3: parsedFormData.socialUserName3,\n socialLink3: parsedFormData.socialLink3,\n socialType4: parsedFormData.socialType4,\n socialUserName4: parsedFormData.socialUserName4,\n socialLink4: parsedFormData.socialLink4,\n socialType5: parsedFormData.socialType5,\n socialUserName5: parsedFormData.socialUserName5,\n socialLink5: parsedFormData.socialLink5,\n socialType6: parsedFormData.socialType6,\n socialUserName6: parsedFormData.socialUserName6,\n socialLink6: parsedFormData.socialLink6,\n html: parsedFormData.html,\n imgLink: parsedFormData.imgLink,\n youtubeLink: parsedFormData.youtubeLink,\n message: parsedFormData.message,\n directLink: parsedFormData.directLink,\n customDirectLink: parsedFormData.customDirectLink,\n generateQrLink: parsedFormData.generateQrLink,\n\n });\n }\n }\n\n async updateLinksProfile() {\n var db = firebase.firestore();\n const longCode = this.props.shortUrl\n const shortCode = longCode.substring(longCode.lastIndexOf(\"/\") + 1);\n const linkDoc = await db.collection(\"links\").doc(shortCode).get();\n const { linkID } = linkDoc.data();\n db.collection(\"users\")\n .doc(`${this.props.userId}`)\n .collection(\"links\")\n .doc(linkID)\n .update({\n profile: this.props.profile,\n })\n }\n\n\n profileChangeHandler(event) {\n var db = firebase.firestore();\n this.setState({ profile: event.target.value });\n db.collection(\"users\")\n .doc(`${this.props.userId}`)\n .update({\n profile: event.target.value,\n })\n .then(()=>{\n this.updateLinksProfile()\n })\n .then(() => {\n this.stateChangeHandler()\n })\n .then(()=>{\n this.handleSubmit(event)\n this.updateShortLink()\n })\n .then(()=>{\n this.getClicks()\n })\n }\n\n handleSubmit = async (e) => {\n e.preventDefault();\n \n if (!this.props.shortUrl) {\n this.createShortLink();\n setTimeout(() => {\n API2.generateQR();\n }, 1000);\n }\n \n const db = firebase.firestore();\n const { profile} = this.props;\n const formDataKey = profile === \"1\" ? `formData` :`formData${profile}`;\n try {\n await db.collection(\"users\").doc(this.props.userId).update({\n [formDataKey]: JSON.stringify(this.state),\n uid: this.props.userId\n });\n \n console.log(\"Document successfully written!\");\n \n API.generateCard();\n \n const storageRef = firebase.storage().ref();\n const encodedString = Buffer.from(localStorage.getItem(\"vCard\")).toString(\"base64\");\n await storageRef.child(`${this.props.userId}.vcf`).putString(encodedString, \"base64\");\n \n LANDING.updateProfile();\n // this.directLink();\n \n if (!this.props.QrImg) {\n API2.generateQR();\n }\n \n // alert(\"Sent to MyTap Card\");\n this.setState({ saveBtn: \"SAVED!\" });\n setTimeout(() => {\n this.setState({ saveBtn: \"PREVIEW!\" });\n }, 3000);\n \n } catch (error) {\n console.error(\"Error writing document: \", error);\n }\n };\n\n\n render() {\n if (!this.props.formData) {\n return
    .
    ; \n }\n const { profile} = this.props;\n const croppedImgKey = profile === \"1\" ? `croppedImg` :`croppedImg${profile}`;\n \n const parsedFormData = JSON.parse(this.props.formData);\n const parsedFormData2 = this.props.formData2 ? JSON.parse(this.props.formData2): ''\n const parsedFormData3 = this.props.formData3 ? JSON.parse(this.props.formData3): ''\n const parsedFormData4 = this.props.formData4 ? JSON.parse(this.props.formData4): ''\n\n var db = firebase.firestore();\n // var storageRef = firebase.storage().ref();\n return (\n \n \n \n \n
    \n \n \n\n \n\n \n\n \n\n\n \n
    \n
    \n \n {/* */}\n \n
    \n \n \n \n
    \n \n\n \n {/* MODAL */}\n \n \n \n \n \n \n \n
    \n\n \n
    \n
    \n \n \n Landing Page (default)\n \n \n\n \n\n {this.state.socialType1 ? (\n \n ) : null}\n\n {this.state.socialType2 ? (\n \n ) : null}\n\n {this.state.socialType3 ? (\n \n ) : null}\n\n {this.state.socialType4 ? (\n \n ) : null}\n\n {this.state.socialType5 ? (\n \n ) : null}\n\n {this.state.socialType6 ? (\n \n ) : null}\n\n \n \n
    \n \n\n\n \n \n {this.state.totalClicks}\n \n \n Total Clicks\n \n \n \n \n \n \n
    \n {this.state.directLink === \"1\" ? (\n \n ) : null}\n\n\n\n\n\n \n
    \n \n \n \n NAME\n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n PHONE NUMBERS\n \n \n \n \n \n \n \n \n \n \n\n \n \n \n EMAIL ADDRESSES\n \n \n \n \n \n \n \n \n \n\n \n \n \n WEBSITE LINKS\n \n \n \n \n \n \n \n \n \n\n \n \n \n ADDRESSES\n \n \n \n
    HOME ADDRESS\n \n \n \n \n
    WORK ADDRESS\n \n \n \n \n
    \n
    \n
    \n
    \n\n \n \n \n BIRTHDAY\n \n \n \n \n \n Clear\n \n \n \n \n \n\n \n \n \n SOCIAL MEDIA LINKS\n \n \n \n \n TYPE\n DISPLAY NAME\n LINK\n \n\n \n \n \n \n \n }\n />\n \n \n \n \n \n }\n />\n \n \n \n \n \n }\n />\n \n \n \n \n \n }\n />\n \n \n \n \n \n }\n />\n \n \n \n \n \n }\n />\n \n \n \n \n\n {/* {this.props.currentUser.generator === true ? (\n \n \n \n SPOTLIGHT\n \n \n \n \n \n \n
    \n \n
    \n
    \n
    \n
    \n ) : null} */}\n\n {/* \n \n \n DIRECT LINK\n \n \n \n \n \n Contact Card (default)\n \n\n \n\n {this.state.socialType1 ? (\n \n ) : null}\n\n {this.state.socialType2 ? (\n \n ) : null}\n\n {this.state.socialType3 ? (\n \n ) : null}\n\n {this.state.socialType4 ? (\n \n ) : null}\n\n {this.state.socialType5 ? (\n \n ) : null}\n\n {this.state.socialType6 ? (\n \n ) : null}\n\n \n \n\n {this.state.directLink === \"1\" ? (\n \n ) : null}\n \n \n \n */}\n\n {this.props.currentUser.generator === true ? (\n \n \n \n GENERATE QR\n \n \n \n {this.state.inputFocus === true ? (\n \n ) : (\n \n )}\n \n \n \n \n \n ) : null}\n
    \n
    \n \n\n {/* \n {this.state.saveBtn}\n */}\n\n \n\n \n {this.state.saveBtn}\n \n \n\n \n \n \n \n \n \n
    \n\n \n \n
    \n
    \n \n
    \n
    \n );\n }\n}\n\n\nconst mapStateToProps = ({ user }) => ({\n // user.currentUser && {\n googleUserId: user?.currentUser?.uid,\n croppedImg: user?.currentUser?.croppedImg,\n croppedImg2: user?.currentUser?.croppedImg2,\n croppedImg3: user?.currentUser?.croppedImg3,\n croppedImg4: user?.currentUser?.croppedImg4,\n formData: user?.currentUser?.formData,\n formData2: user?.currentUser?.formData2,\n formData3: user?.currentUser?.formData3,\n formData4: user?.currentUser?.formData4,\n profile: user?.currentUser?.profile,\n userId: user?.currentUser?.id,\n QrImg: user?.currentUser?.QrImg,\n cardUrl: user?.currentUser?.cardUrl,\n landingUrl: user?.currentUser?.landingUrl,\n directLinksUrl: user?.currentUser?.directLinksUrl,\n premium: user?.currentUser?.premium,\n shortUrl: user?.currentUser?.shortUrl,\n currentUser: user?.currentUser,\n MyCardDirectURL: user?.currentUser?.MyCardDirectURL\n});\n// };\n\nexport default withRouter(\n connect(mapStateToProps, {\n updateUser,\n fetchDesigns\n })(FormPage)\n);\n","import firebase from \"../../utils/firebase/firebase.utils\";\nimport store from \"../../redux/store\";\n\nexport default {\n graph: function (clickDates,clickTimes) {\n\n var userId = store.getState().user.currentUser.id;\n\n const toHtml = `\n \n \n \n \n \n chart\n \n \n \n
    \n
    \n \n Start:\n \n End:\n \n \n \n
    \n
    \n \n \n \n \n \n \n \n\n `;\n\n var storageRef = firebase.storage().ref();\n var db = firebase.firestore();\n\n const encodedString =\n \"data:text/html;base64,\" + new Buffer(toHtml).toString(\"base64\");\n storageRef\n .child(`${userId}-graph.html`)\n .putString(encodedString, \"data_url\")\n .then((snapshot) => {\n storageRef\n .child(`${userId}-graph.html`)\n .getDownloadURL()\n .then((url) => {\n db.collection(\"users\")\n .doc(`${userId}`)\n .update({\n graphUrl: `${url}`\n });\n });\n });\n }\n};\n","module.exports = __webpack_public_path__ + \"static/media/placeholder.7bf80d68.jpeg\";","module.exports = __webpack_public_path__ + \"static/media/card-back.60280132.png\";","module.exports = __webpack_public_path__ + \"static/media/card-back.06f90d02.png\";","module.exports = __webpack_public_path__ + \"static/media/card-back copy.60280132.png\";","module.exports = __webpack_public_path__ + \"static/media/fivestar.6f5680a2.png\";","module.exports = __webpack_public_path__ + \"static/media/mytapQr.209f5f88.png\";","module.exports = __webpack_public_path__ + \"static/media/card-back.06f90d02.png\";","module.exports = __webpack_public_path__ + \"static/media/customcard.09ebf19c.png\";","module.exports = __webpack_public_path__ + \"static/media/customcardyours.d753aa44.png\";","module.exports = __webpack_public_path__ + \"static/media/RW1.22c8713b.png\";","module.exports = __webpack_public_path__ + \"static/media/RW2.69cb833f.png\";","module.exports = __webpack_public_path__ + \"static/media/mytapQr.209f5f88.png\";","module.exports = __webpack_public_path__ + \"static/media/card-back copy.063ef4ce.png\";","module.exports = \"data:image/jpeg;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/mytapQr.209f5f88.png\";","module.exports = __webpack_public_path__ + \"static/media/card-back copy.063ef4ce.png\";","module.exports = __webpack_public_path__ + \"static/media/card-front.75bac498.png\";","import firebase from \"../../utils/firebase/firebase.utils\";\n\nexport default {\n graph: function (user,clickDates,clickTimes) {\n\n const toHtml = `\n \n \n \n \n \n chart\n \n \n \n
    \n
    \n \n Start:\n \n End:\n \n \n \n
    \n
    \n \n \n \n \n \n \n \n\n `;\n\n var storageRef = firebase.storage().ref();\n var db = firebase.firestore();\n\n const encodedString =\n \"data:text/html;base64,\" + new Buffer(toHtml).toString(\"base64\");\n storageRef\n .child(`${user.id}-graph.html`)\n .putString(encodedString, \"data_url\")\n .then((snapshot) => {\n storageRef\n .child(`${user.id}-graph.html`)\n .getDownloadURL()\n .then((url) => {\n db.collection(\"users\")\n .doc(`${user.id}`)\n .update({\n graphUrl: `${url}`\n });\n });\n });\n }\n};\n","module.exports = __webpack_public_path__ + \"static/media/RW1.22c8713b.png\";","module.exports = __webpack_public_path__ + \"static/media/RW2.69cb833f.png\";","module.exports = __webpack_public_path__ + \"static/media/GalleryMyTapCardLogo.d68fde63.png\";","module.exports = __webpack_public_path__ + \"static/media/RW2.69cb833f.png\";","module.exports = __webpack_public_path__ + \"static/media/CR.fc8e0382.png\";","module.exports = __webpack_public_path__ + \"static/media/CR2.28228f1c.png\";","import store from \"../../redux/store\";\nimport firebase from \"../../utils/firebase/firebase.utils\";\n\nconst createImage = (url) =>\n new Promise((resolve, reject) => {\n const image = new Image();\n image.addEventListener(\"load\", () => resolve(image));\n image.addEventListener(\"error\", (error) => reject(error));\n image.setAttribute(\"crossOrigin\", \"anonymous\"); // needed to avoid cross-origin issues on CodeSandbox\n image.src = url;\n });\n\nfunction getRadianAngle(degreeValue) {\n return (degreeValue * Math.PI) / 180;\n}\n\n/**\n * This function was adapted from the one in the ReadMe of https://github.com/DominicTobias/react-image-crop\n * @param {File} image - Image File url\n * @param {Object} pixelCrop - pixelCrop Object provided by react-easy-crop\n * @param {number} rotation - optional rotation parameter\n */\nexport async function getCroppedImg(imageSrc, pixelCrop, rotation = 0) {\n const image = await createImage(imageSrc);\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n\n // image.width = image.width / 2;\n // image.height = image.height / 2;\n\n // const safeArea = Math.max(image.width, image.height) * 2\n\n const maxSize = Math.max(image.width, image.height);\n const safeArea = 2 * ((maxSize / 2) * Math.sqrt(2));\n\n // set each dimensions to double largest dimension to allow for a safe area for the\n // image to rotate in without being clipped by canvas context\n canvas.width = safeArea;\n canvas.height = safeArea;\n\n // translate canvas context to a central location on image to allow rotating around the center.\n ctx.translate(safeArea / 2, safeArea / 2);\n ctx.rotate(getRadianAngle(rotation));\n ctx.translate(-safeArea / 2, -safeArea / 2);\n\n ctx.fillStyle = \"white\";\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n\n // draw rotated image and store data.\n ctx.drawImage(\n image,\n safeArea / 2 - image.width * 0.5,\n safeArea / 2 - image.height * 0.5\n );\n const data = ctx.getImageData(0, 0, safeArea, safeArea);\n\n // set canvas width to final desired crop size - this will clear existing context\n canvas.width = pixelCrop.width;\n canvas.height = pixelCrop.height;\n\n // paste generated rotate image with correct offsets for x,y crop values.\n ctx.putImageData(\n data,\n Math.round(0 - safeArea / 2 + image.width * 0.5 - pixelCrop.x),\n Math.round(0 - safeArea / 2 + image.height * 0.5 - pixelCrop.y)\n );\n\n // As Base64 string\n // return canvas.toDataURL('image/jpeg');\n\n const base64Image = canvas.toDataURL(\"image/jpeg\");\n // const baseString = base64Image.substr(base64Image.indexOf(\",\") + 1);\n\n const profileState = store.getState().user.currentUser.profile\n const croppedImgKey = profileState === \"1\" ? `croppedImg` :`croppedImg${profileState}`;\n\n var userId = store.getState().user.currentUser.id;\n var db = firebase.firestore();\n\n db.collection(\"users\")\n .doc(`${userId}`)\n .update({\n [croppedImgKey]: `${base64Image}`,\n })\n .then(function () {\n console.log(\"Document successfully written!\");\n })\n .catch(function (error) {\n console.error(\"Error writing document: \", error);\n })\n\n// profileState == \"1\" ? \n// db.collection(\"users\")\n// .doc(`${userId}`)\n// .update({\n// croppedImg: `${base64Image}`,\n// })\n// .then(function () {\n// console.log(\"Document successfully written!\");\n// })\n// .catch(function (error) {\n// console.error(\"Error writing document: \", error);\n// })\n\n// :\n// profileState == \"2\" ? \n\n// db.collection(\"users\")\n// .doc(`${userId}`)\n// .update({\n// croppedImg2: `${base64Image}`,\n// })\n// .then(function () {\n// console.log(\"Document successfully written!\");\n// })\n// .catch(function (error) {\n// console.error(\"Error writing document: \", error);\n// })\n\n\n// :\n// profileState == \"3\" ?\n// db.collection(\"users\")\n// .doc(`${userId}`)\n// .update({\n// croppedImg3: `${base64Image}`,\n// })\n// .then(function () {\n// console.log(\"Document successfully written!\");\n// })\n// .catch(function (error) {\n// console.error(\"Error writing document: \", error);\n// })\n\n// :\n// db.collection(\"users\")\n// .doc(`${userId}`)\n// .update({\n// croppedImg: `${base64Image}`,\n// })\n// .then(function () {\n// console.log(\"Document successfully written!\");\n// })\n// .catch(function (error) {\n// console.error(\"Error writing document: \", error);\n// })\n\n return base64Image;\n\n // As a blob\n // return new Promise(resolve => {\n // canvas.toBlob(file => {\n // resolve(URL.createObjectURL(file))\n // }, 'image/jpeg')\n // })\n}\n\nexport async function getRotatedImage(imageSrc, rotation = 0) {\n const image = await createImage(imageSrc);\n const canvas = document.createElement(\"canvas\");\n const ctx = canvas.getContext(\"2d\");\n\n const orientationChanged =\n rotation === 90 ||\n rotation === -90 ||\n rotation === 270 ||\n rotation === -270;\n if (orientationChanged) {\n canvas.width = image.height;\n canvas.height = image.width;\n } else {\n canvas.width = image.width;\n canvas.height = image.height;\n }\n\n ctx.translate(canvas.width / 2, canvas.height / 2);\n ctx.rotate((rotation * Math.PI) / 180);\n ctx.drawImage(image, -image.width / 2, -image.height / 2);\n\n return new Promise((resolve) => {\n canvas.toBlob((file) => {\n resolve(URL.createObjectURL(file));\n }, \"image/jpeg\");\n });\n}\n","export const styles = theme => ({\n cropContainer: {\n position: 'relative',\n width: '100%',\n height: 200,\n background: 'white',\n [theme.breakpoints.up('sm')]: {\n height: 400,\n },\n },\n cropButton: {\n flexShrink: 0,\n marginLeft: 16,\n },\n controls: {\n padding: 16,\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'stretch',\n [theme.breakpoints.up('sm')]: {\n flexDirection: 'row',\n alignItems: 'center',\n },\n },\n sliderContainer: {\n display: 'flex',\n flex: '1',\n alignItems: 'center',\n },\n sliderLabel: {\n [theme.breakpoints.down('xs')]: {\n minWidth: 65,\n },\n },\n slider: {\n padding: '22px 0px',\n marginLeft: 16,\n [theme.breakpoints.up('sm')]: {\n flexDirection: 'row',\n alignItems: 'center',\n margin: '0 16px',\n },\n },\n})\n","import React, { useState, useCallback } from \"react\";\nimport Cropper from \"react-easy-crop\";\nimport Slider from \"@material-ui/lab/Slider\";\nimport Button from \"@material-ui/core/Button\";\nimport Typography from \"@material-ui/core/Typography\";\nimport { withStyles } from \"@material-ui/core/styles\";\nimport { getOrientation } from \"get-orientation/browser\";\n// import ImgDialog from \"./ImgDialog\";\nimport { getCroppedImg, getRotatedImage } from \"./canvasUtils\";\nimport { styles } from \"./styles\";\nimport imageCompression from \"browser-image-compression\";\n\n\nconst ORIENTATION_TO_ANGLE = {\n \"3\": 180,\n \"6\": 90,\n \"8\": -90,\n};\n\nconst Demo = ({ classes }) => {\n const [imageSrc, setImageSrc] = React.useState(null);\n const [crop, setCrop] = useState({ x: 0, y: 0 });\n const [rotation, setRotation] = useState(0);\n const [zoom, setZoom] = useState(1);\n const [croppedAreaPixels, setCroppedAreaPixels] = useState(null);\n // eslint-disable-next-line \n const [croppedImage, setCroppedImage] = useState(null);\n\n\n const onCropComplete = useCallback((croppedArea, croppedAreaPixels) => {\n setCroppedAreaPixels(croppedAreaPixels);\n }, []);\n\n const showCroppedImage = useCallback(async () => {\n try {\n const croppedImage = await getCroppedImg(\n imageSrc,\n croppedAreaPixels,\n rotation\n );\n console.log(\"donee\", { croppedImage });\n \n // window.location.reload(false);\n \n\n setCroppedImage(croppedImage);\n setImageSrc(null)\n\n\n } catch (e) {\n console.error(e);\n }\n\n }, [imageSrc, croppedAreaPixels, rotation]);\n\n // const onClose = useCallback(() => {\n // setCroppedImage(null);\n // }, []);\n\n const onFileChange = async (e) => {\n if (e.target.files && e.target.files.length > 0) {\n const file = e.target.files[0];\n\n // const imageFile = file;\n\n const options = {\n maxSizeMB: 1,\n maxWidthOrHeight: 1920,\n useWebWorker: true,\n };\n try {\n const compressedFile = await imageCompression(file, options);\n\n let imageDataUrl = await readFile(compressedFile);\n\n // apply rotation if needed\n const orientation = await getOrientation(compressedFile);\n const rotation = ORIENTATION_TO_ANGLE[orientation];\n if (rotation) {\n imageDataUrl = await getRotatedImage(imageDataUrl, rotation);\n }\n\n setImageSrc(imageDataUrl);\n } catch (error) {\n console.log(error);\n }\n }\n };\n\n return (\n
    \n {imageSrc ? (\n \n
    \n \n
    \n
    \n
    \n \n Zoom\n \n setZoom(zoom)}\n />\n
    \n
    \n \n Rotation\n \n setRotation(rotation)}\n />\n
    \n \n Save\n \n
    \n {/* */}\n
    \n ) : (\n \n )}\n
    \n );\n};\n\nfunction readFile(file) {\n return new Promise((resolve) => {\n const reader = new FileReader();\n reader.addEventListener(\"load\", () => resolve(reader.result), false);\n reader.readAsDataURL(file);\n });\n}\n\nconst StyledDemo = withStyles(styles)(Demo);\n\nexport default StyledDemo;\n","module.exports = __webpack_public_path__ + \"static/media/rangewater.8ef0739d.png\";","module.exports = __webpack_public_path__ + \"static/media/mytapcard.825df48d.png\";","module.exports = __webpack_public_path__ + \"static/media/mytap_white__transparent.b0ec70b2.png\";","export const setRedirect = (route) => {\n return {\n type: \"SET_REDIRECT\",\n payload: route\n };\n};\n\nexport const defaultRedirect = () => {\n return {\n type: \"DEFAULT_REDIRECT\"\n };\n};\n","module.exports = __webpack_public_path__ + \"static/media/RW1.22c8713b.png\";","module.exports = __webpack_public_path__ + \"static/media/RW2.69cb833f.png\";","module.exports = __webpack_public_path__ + \"static/media/RW1.22c8713b.png\";","module.exports = __webpack_public_path__ + \"static/media/RW2.69cb833f.png\";"],"sourceRoot":""}