{"version":3,"sources":["webpack:///./gql/mutation/activate-profile.js","webpack:///./gql/mutation/edit-user-preferences.js","webpack:///./gql/mutation/edit-cover-photo.js","webpack:///./gql/mutation/upload-cover-photo.js","webpack:///./screens/settings/state.js","webpack:///./gql/mutation/deactivate-profile.js","webpack:///./gql/query/network-identity-status.js","webpack:///./gql/mutation/edit-user-slug.js","webpack:///./gql/query/location.js","webpack:///./gql/query/preference.js","webpack:///./gql/query/privacy.js","webpack:///./gql/query/cover-photo.js","webpack:///./gql/query/personal-message.js","webpack:///./gql/mutation/remove-cover-photo.js","webpack:///./screens/shared/amount-utils.js","webpack:///./screens/shared/components/glamorous-link.js","webpack:///./screens/shared/components/lazy-load-image.js","webpack:///./screens/shared/components/profile-view.js","webpack:///./screens/shared/components/share-with-friends.js","webpack:///./screens/shared/components/svg-logo.js","webpack:///./utils/client.js","webpack:///./utils/constants.js","webpack:///./utils/image-utils.js","webpack:///./utils/loader.js"],"names":["activateProfile","editProfileSettings","editCoverPhotoDetails","uploadCoverPhoto","SettingsState","pan","deltaPan","isDragging","isReviewPage","userHasCoverPhoto","clientData","userHasProfilePicture","imagePreviewUrl","isImageDataUrl","filename","shouldLoadPayPalMe","slugDetails","imageRef","personalMessageValue","setState","profile","personalizationSettings","coverPhotoUrl","welcomeNote","toggle","this","state","paypalmeSlugName","slugName","addLoader","client","request","accountUpgradeOrSwitchOnOrOff","isProfileStatusActive","profilePhotoUrl","userInfo","deactivateProfile","privacySettings","emailSearchEnabled","phoneSearchEnabled","removeLoader","enrollUserToNetworkIdentity","op","path","value","variables","editUserSettings","profileToggle","networkIdentityStatus","newUsername","newSlug","editUserSlug","canEditUsername","displayAddress","location","userPayPalMeDetails","transactionType","type","undefined","coverPhotoVerticalPan","Boolean","editCoverPhoto","Math","abs","toString","file","slug","saveToProfile","uploadedCoverPhotoUrl","coverPhotoEdit","newCoverPhotoUrl","newCoverPhotoVerticalPan","updateCoverPhotoStatus","fileSelectEvent","onSuccess","fileReader","FileReader","onload","onLoadEvent","url","target","result","options","mimeType","normalizeImage","normalizedUrl","userImagePreviewUrl","name","files","readAsDataURL","Container","griffinMetadata","griffinNumberHandler","griffinNumber","createHandler","getAmountFieldInfo","cldr","main","localityKey","currencies","numbers","currencySymbolMap","Object","keys","reduce","map","code","symbol","currencyDecimal","decimal","getFormattedValue","amount","currencyCode","formatCurrency","normalizeNumber","currency","CURRENCY_FORMAT_SYMBOLISOCURRENCY","parts","find","p","numberString","Number","toCanonicalNumber","getFormattedAmount","split","lastThree","slice","includes","isCommaDecimal","otherNumbers","decimalGroup","join","ConditionalLink","props","to","propTypes","PropTypes","string","glamorousLink","glamorous","rootEl","displayName","forwardProps","Lazy","loaded","imageURL","cacheImage","Image","src","payload","render","Component","LazyImageTag","div","opacity","transition","backgroundSize","width","height","backgroundImage","LazyImage","css","containerStyles","PureComponent","overflow","backgroundColor","boxShadow","LazyLoader","Div","l10n","getContent","ProfileReviewStyling","margin","textAlign","myProfilePage","padding","position","top","ProfileReviewInnerChild","display","MoreInfoAboutUserStyling","color","fontSize","lineHeight","paddingBottom","textTransform","WelcomeNoteStyling","overflowWrap","wordWrap","isCoverUploadPage","shouldShowMoreMessage","WebkitLineClamp","WebkitBoxOrient","maxHeight","NameAndSlugDetailLocation","marginBottom","paddingTop","NameAndSlugDetailMessage","showAmountInput","personalMessagePaddingBottomStyling","NextButtonStyling","ShowMoreDiv","fontWeight","cursor","SVGStyling","SVG","AmountField","args","amountUtils","assign","onChange","React","ProfileView","amountValue","initialAmount","amountCurrencyCode","initialCurrencyCode","isShowMore","style","borderTop","slugInfo","givenName","shouldShowMoreAboutUser","welcomeNoteLength","length","recipientSlugPage","onClick","moreInfo","svgString","svgImages","arrowDown","arrowUp","borderBottom","handleShowMoreClick","showDottedLines","isUserLoggedIn","generateUrlLoggedInState","generateUrlLoggedOutState","trackLink","isUserInHomepageTreatment","flow","locality","locale","country","queryString","queryify","String","flowType","formattedAmount","host","isDev","isStage","window","origin","isProd","sendRoute","onboardDataRegularSignUp","JSON","stringify","intent","redirect_url","encodeURIComponent","sendMoneyText","guestQueryString","env","recipientIdType","recipientId","onboardDataGuest","signUpRequest","method","onboardData","isUserInGuestTreatment","isCreateFlow","transitionName","transitionEnterTimeout","transitionLeaveTimeout","borderRadius","backgroundPosition","backgroundRepeat","role","aria-level","_unescape","marginTop","handleAmountChange","data-pagename","data-pagename2","href","generateSendMoneyUrl","moreAboutUser","rel","toLowerCase","onReportClick","obj","qs","key","push","l10nSettings","isMobile","test","navigator","userAgent","ShareTitle","grey700","ShareYourLinkStyling","SVGParent","span","marginRight","transform","SpanText","left","TooltipCopied","isProfileReview","bottom","right","content","borderLeft","borderRight","marginLeft","trackShareLinks","linkName","ShareYourLink","isCopied","e","preventDefault","sharing","shareURLByFacebook","twitterShareLink","shareByTwitter","shareByWhatsApp","shareURLByMessenger","setTimeout","showCopyText","strong","as","lang","text","onCopy","copyToClipboard","background","border","ref","input","_ref","readOnly","className","tabIndex","onKeyPress","click","clipBoard","handleFBClick","facebook","handleMessengerClick","messenger","handleTwitterClick","twitter","isMarketkingFlow","paddingLeft","handleWhatsappClick","whatsapp","workaroundScoreBot","dangerProps","__html","GraphQLClient","requestURI","credentials","mode","headers","csrf","DEFAULT_PROFILE_PHOTO","COVER_PHOTO_URLS","GREEN","RASTER","VECTOR","BLUE","PURPLE","RED","YELLOW","SETTINGS_EDIT_NAME_INSTRUMENTATION","EDIT_USERNAME","PROFILE_EDIT_NAME_INSTRUMENTATION","PAGE_GROUP","PAGE_NAME","IMPRESSION","BACK","CLOSE","ON_FOCUS","TYPING","SELECT_USERNAME_SUGGESTION","SAVE_USERNAME","PROFILE_SLUG_INSTRUMENTATION","SEND","REQUEST","REPORT","EDIT_PROFILE_INSTRUMENTATION","EDIT_BACKGROUND","EDIT_PHOTO","SHARE","EDIT_LOCATION","EDIT_ABOUT","EDIT_PROFILE_STATUS","EDIT_EMAIL_STATUS","EDIT_PHONE_STATUS","TERMS_AND_CONDITIONS","ABOUT_INSTRUMENTATION","FOCUS","TYPING_START","SAVE","LOCATION_INSTRUMENTATION","CITY","STATE","NOT_SHOW","TURN_OFF_CONFIRMATION_INSTRUMENTATION","CONFIRM","CANCEL","EVENT_TYPE","CLICK","INSTRUMENTATION_MAPPING","settings","close","username","back","about","confirm","ILLUSTRATIONS","WARNING","COVER_PHOTO_URL_MAPPINGS","dataUrl","toWidth","toHeight","normalizeImageSize","callback","img","document","createElement","changed","canvas","ctx","getContext","resizeWidth","resizeHeight","floor","EXIF","getData","exifdata","Orientation","swapCanvasDimensions","drawImage","toDataURL","getDisplayCoverPhotoUrl","isPreDefinedCoverPhoto","values","forEach","SPINNER_ID","overlayedElement","getElementById","removeProperty","elementWithSpinner","setProperty"],"mappings":"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","file":"ppme-grab~ppme-settings~ppme-slug.bundle.js","sourcesContent":["export const activateProfile = `\n mutation ActivateProfile ($slugName: String!) {\n activateProfile (slug: $slugName) {\n isSuccess\n isProfileStatusActive\n privacySettings {\n emailSearchEnabled\n phoneSearchEnabled\n }\n }\n}`\n","export const editProfileSettings = `\n mutation EditProfileSettings ($editUserSettings: [PatchOptions]!, $slugName: String!) {\n editProfileSettings (editSlugDetails: $editUserSettings, slug: $slugName) {\n isSuccess\n isProfileStatusActive\n userInfo {\n displayAddress\n }\n privacySettings {\n emailSearchEnabled\n phoneSearchEnabled\n location\n }\n personalizationSettings {\n welcomeNote\n }\n }\n }\n`\n","export const editCoverPhotoDetails = `\n mutation EditProfileSettings ($editCoverPhoto: [PatchOptions]!, $slugName: String!) {\n editProfileSettings (editSlugDetails: $editCoverPhoto, slug: $slugName) {\n isSuccess\n personalizationSettings {\n coverPhotoUrl\n coverPhotoVerticalPan\n }\n }\n }\n`\n","export const uploadCoverPhoto = `\n mutation UploadCoverPhoto ($filename: String!, $file: String!, $slug: String!, $saveToProfile: Boolean) {\n uploadCoverPhoto(filename: $filename, file: $file, slug: $slug, saveToProfile: $saveToProfile) {\n uploadedCoverPhotoUrl\n }\n}\n`\n","import { Container } from 'unstated'\nimport clientData from 'utils/client-data'\nimport _ from 'lodash'\nimport { activateProfile } from 'gql/mutation/activate-profile'\nimport { deactivateProfile } from 'gql/mutation/deactivate-profile'\nimport { editProfileSettings } from 'gql/mutation/edit-user-preferences'\nimport { editCoverPhotoDetails } from 'gql/mutation/edit-cover-photo'\nimport { removeCoverPhoto } from 'gql/mutation/remove-cover-photo'\nimport { locationQuery } from 'gql/query/location'\nimport { privacyQuery } from 'gql/query/privacy'\nimport { uploadCoverPhoto } from 'gql/mutation/upload-cover-photo'\nimport { editUserSlug } from 'gql/mutation/edit-user-slug'\nimport { personalMessageQuery } from 'gql/query/personal-message'\nimport { networkIdentityStatusQuery } from 'gql/query/network-identity-status'\nimport { coverPhotoQuery } from 'gql/query/cover-photo'\nimport { preferencesQuery } from 'gql/query/preference'\nimport { client } from 'utils/client'\nimport { addLoader, removeLoader } from 'utils/loader'\nimport { normalizeImage } from 'utils/image-utils'\n\nclass SettingsState extends Container {\n state = {\n pan: '50',\n deltaPan: '0',\n isDragging: false,\n isReviewPage: true,\n userHasCoverPhoto: !!_.get(\n clientData,\n 'slugDetails.userPayPalMeDetails.personalizationSettings.coverPhotoUrl',\n '',\n ),\n userHasProfilePicture:\n _.get(clientData, 'slugDetails.userInfo.profilePhotoUrl') !==\n 'https://www.paypalobjects.com/digitalassets/c/consumer/paypalme/networkidentity/profile_man.svg',\n imagePreviewUrl: _.get(\n clientData,\n 'slugDetails.userPayPalMeDetails.personalizationSettings.coverPhotoUrl',\n '',\n ),\n isImageDataUrl: false,\n filename: '',\n shouldLoadPayPalMe: false,\n slugDetails: _.get(clientData, 'slugDetails.userPayPalMeDetails', {}),\n imageRef: {},\n personalMessageValue: _.get(\n clientData,\n 'slugDetails.userPayPalMeDetails.personalizationSettings.welcomeNote',\n '',\n ),\n }\n\n getSlugDetails = slugDetails => {\n this.setState({\n slugDetails,\n })\n }\n\n updateProfile = profile => {\n this.setState({\n slugDetails: profile,\n userHasCoverPhoto: !!profile.personalizationSettings.coverPhotoUrl,\n personalMessageValue: profile.personalizationSettings.welcomeNote,\n imagePreviewUrl: profile.personalizationSettings.coverPhotoUrl,\n })\n }\n\n async accountUpgradeOrSwitchOnOrOff(toggle) {\n const { slugDetails: { paypalmeSlugName = '' } = {} } = this.state\n const slugName = {\n slugName: paypalmeSlugName,\n }\n\n addLoader()\n await client.request(toggle, slugName)\n }\n\n async profileToggle(toggle) {\n await this.accountUpgradeOrSwitchOnOrOff(toggle)\n this.setState({\n slugDetails: {\n ...this.state.slugDetails,\n isProfileStatusActive: !this.state.slugDetails.isProfileStatusActive,\n },\n })\n }\n\n updateProfilePhoto(profilePhotoUrl) {\n this.setState({\n slugDetails: {\n ...this.state.slugDetails,\n userInfo: {\n ...this.state.slugDetails.userInfo,\n profilePhotoUrl,\n },\n },\n })\n }\n\n async turnOff() {\n addLoader()\n\n const {\n deactivateProfile: {\n isProfileStatusActive = false,\n privacySettings: {\n emailSearchEnabled = false,\n phoneSearchEnabled = false,\n } = {},\n } = {},\n } = await client.request(deactivateProfile, {\n slugName: this.state.slugDetails.paypalmeSlugName,\n })\n\n this.setState({\n slugDetails: {\n ...this.state.slugDetails,\n isProfileStatusActive,\n privacySettings: {\n ...this.state.slugDetails.privacySettings,\n emailSearchEnabled,\n phoneSearchEnabled,\n },\n },\n })\n\n removeLoader()\n }\n\n async turnOn() {\n addLoader()\n\n const {\n activateProfile: {\n isProfileStatusActive = false,\n privacySettings: {\n emailSearchEnabled = false,\n phoneSearchEnabled = false,\n } = {},\n } = {},\n } = await client.request(activateProfile, {\n slugName: this.state.slugDetails.paypalmeSlugName,\n })\n\n this.setState({\n slugDetails: {\n ...this.state.slugDetails,\n isProfileStatusActive,\n privacySettings: {\n ...this.state.slugDetails.privacySettings,\n emailSearchEnabled,\n phoneSearchEnabled,\n },\n },\n })\n\n removeLoader()\n }\n\n async upgradeAccount() {\n const enrollUserToNetworkIdentity = [\n {\n op: 'replace',\n path: '/network_identity_status',\n value: 'OPTED_IN',\n },\n ]\n\n const { slugDetails: { paypalmeSlugName = '' } = {} } = this.state\n const variables = {\n editUserSettings: enrollUserToNetworkIdentity,\n slugName: paypalmeSlugName,\n }\n\n addLoader()\n\n await client.request(editProfileSettings, variables)\n\n // TODO: should we do this?\n if (!this.state.slugDetails.isProfileStatusActive) {\n await this.profileToggle(activateProfile)\n }\n\n await client.request(networkIdentityStatusQuery)\n removeLoader()\n\n this.setState({\n slugDetails: {\n ...this.state.slugDetails,\n isProfileStatusActive: true,\n networkIdentityStatus: 'OPTED_IN',\n },\n })\n }\n\n async editUsername(newUsername) {\n addLoader()\n\n try {\n const {\n editUserSlug: { newSlug = '', canEditUsername = true } = {},\n } = await client.request(editUserSlug, {\n newSlug: newUsername,\n })\n\n this.setState({\n slugDetails: {\n ...this.state.slugDetails,\n paypalmeSlugName: newSlug,\n canEditUsername,\n },\n })\n\n removeLoader()\n } catch (e) {\n removeLoader()\n\n throw e\n }\n }\n\n async editLocation(value) {\n addLoader()\n\n try {\n const {\n editProfileSettings: {\n userInfo: { displayAddress = '' } = {},\n privacySettings: { location = [] } = {},\n } = {},\n } = await client.request(editProfileSettings, {\n editUserSettings: {\n op: 'replace',\n path: '/privacy_settings/location',\n value,\n },\n slugName: this.state.slugDetails.paypalmeSlugName,\n })\n\n this.setState({\n slugDetails: {\n ...this.state.slugDetails,\n userInfo: {\n ...this.state.slugDetails.userInfo,\n displayAddress,\n },\n privacySettings: {\n ...this.state.slugDetails.privacySettings,\n location,\n },\n },\n })\n\n removeLoader()\n } catch (e) {\n removeLoader()\n\n throw e\n }\n }\n\n // TODO remove after 100% profiles ramp\n async editLocationPreference(variables) {\n addLoader()\n await client.request(editProfileSettings, variables)\n\n const {\n userPayPalMeDetails: {\n userInfo: { displayAddress },\n privacySettings: { location = [] } = {},\n } = {},\n } = await client.request(locationQuery)\n removeLoader()\n\n this.setState({\n slugDetails: {\n ...this.state.slugDetails,\n userInfo: {\n ...this.state.slugDetails.userInfo,\n displayAddress,\n },\n privacySettings: {\n ...this.state.slugDetails.privacySettings,\n location,\n },\n },\n })\n }\n\n async editUserPreferenceSettings(variables) {\n addLoader()\n await client.request(editProfileSettings, variables)\n\n const {\n userPayPalMeDetails: {\n personalizationSettings: { transactionType = 'PERSONAL' } = {},\n } = {},\n } = await client.request(preferencesQuery)\n removeLoader()\n\n this.setState({\n slugDetails: {\n ...this.state.slugDetails,\n personalizationSettings: {\n ...this.state.slugDetails.personalizationSettings,\n transactionType,\n },\n },\n })\n }\n\n async editPrivacySettings(type, value) {\n addLoader()\n\n try {\n const {\n editProfileSettings: {\n isProfileStatusActive = false,\n privacySettings: {\n emailSearchEnabled = false,\n phoneSearchEnabled = false,\n } = {},\n } = {},\n } = await client.request(editProfileSettings, {\n editUserSettings: [\n {\n op: 'replace',\n path: `/privacy_settings/${type}_search_enabled`,\n value,\n },\n ],\n slugName: this.state.slugDetails.paypalmeSlugName,\n })\n\n this.setState({\n slugDetails: {\n ...this.state.slugDetails,\n isProfileStatusActive,\n privacySettings: {\n ...this.state.slugDetails.privacySettings,\n emailSearchEnabled,\n phoneSearchEnabled,\n },\n },\n })\n\n removeLoader()\n } catch (e) {\n removeLoader()\n\n throw e\n }\n }\n\n // TODO remove once profiles is 100% ramped\n async editUserPrivacySettings(variables) {\n addLoader()\n await client.request(editProfileSettings, variables)\n const {\n userPayPalMeDetails: {\n privacySettings: {\n emailSearchEnabled = false,\n phoneSearchEnabled = false,\n } = {},\n } = {},\n } = await client.request(privacyQuery)\n removeLoader()\n this.setState({\n slugDetails: {\n ...this.state.slugDetails,\n privacySettings: {\n ...this.state.slugDetails.privacySettings,\n emailSearchEnabled,\n phoneSearchEnabled,\n },\n },\n })\n\n return undefined\n }\n\n async updateCoverPhotoStatus() {\n const {\n userPayPalMeDetails: {\n personalizationSettings: {\n coverPhotoUrl = '',\n coverPhotoVerticalPan = '50',\n } = {},\n } = {},\n } = await client.request(coverPhotoQuery)\n\n this.setState({\n userHasCoverPhoto: Boolean(coverPhotoUrl),\n slugDetails: {\n ...this.state.slugDetails,\n userInfo: {\n ...this.state.slugDetails.userInfo,\n },\n personalizationSettings: {\n ...this.state.slugDetails.personalizationSettings,\n coverPhotoUrl,\n coverPhotoVerticalPan,\n },\n },\n })\n }\n\n async updateCover() {\n const {\n pan = '50',\n filename = '',\n imagePreviewUrl = '',\n isImageDataUrl = false,\n slugDetails: {\n paypalmeSlugName = '',\n personalizationSettings: {\n coverPhotoUrl = '',\n coverPhotoVerticalPan = '50',\n } = {},\n } = {},\n } = this.state\n\n let editCoverPhoto = []\n\n addLoader()\n\n /**\n * if the user has not changed their photo\n * if pan has changed update the pan\n * else no updates are necessary\n * else the user has changed their photo\n * if changed to a predefined image update both photo and pan\n * else upload the photo and update the pan\n */\n if (coverPhotoUrl === imagePreviewUrl) {\n if (coverPhotoVerticalPan === pan) {\n removeLoader()\n\n return undefined\n } else {\n editCoverPhoto = [\n {\n op: 'replace',\n path: '/personalization_settings/cover_photo_vertical_pan',\n value: Math.abs(pan).toString(),\n },\n ]\n }\n } else {\n if (isImageDataUrl) {\n const variables = {\n filename,\n file: imagePreviewUrl,\n slug: paypalmeSlugName,\n saveToProfile: false,\n }\n\n // upload the new photo but do not save to profile yet\n const {\n uploadCoverPhoto: { uploadedCoverPhotoUrl } = {},\n } = await client.request(uploadCoverPhoto, variables)\n\n editCoverPhoto = [\n {\n op: 'replace',\n path: '/personalization_settings/cover_photo_url',\n value: uploadedCoverPhotoUrl,\n },\n {\n op: 'replace',\n path: '/personalization_settings/cover_photo_vertical_pan',\n value: Math.abs(pan).toString(),\n },\n ]\n } else {\n editCoverPhoto = [\n {\n op: 'replace',\n path: '/personalization_settings/cover_photo_url',\n value: imagePreviewUrl,\n },\n {\n op: 'replace',\n path: '/personalization_settings/cover_photo_vertical_pan',\n value: Math.abs(pan).toString(),\n },\n ]\n }\n }\n\n const coverPhotoEdit = {\n editCoverPhoto,\n slugName: paypalmeSlugName,\n }\n\n const {\n editProfileSettings: {\n personalizationSettings: {\n coverPhotoUrl: newCoverPhotoUrl = '',\n coverPhotoVerticalPan: newCoverPhotoVerticalPan = '50',\n } = {},\n } = {},\n } = await client.request(editCoverPhotoDetails, coverPhotoEdit)\n\n this.setState({\n userHasCoverPhoto: Boolean(newCoverPhotoUrl),\n slugDetails: {\n ...this.state.slugDetails,\n personalizationSettings: {\n ...this.state.slugDetails.personalizationSettings,\n coverPhotoUrl: newCoverPhotoUrl,\n coverPhotoVerticalPan: newCoverPhotoVerticalPan,\n },\n },\n })\n\n removeLoader()\n\n return undefined\n }\n\n async uploadCoverPhotoPreference({\n imagePreviewUrl,\n filename,\n pan,\n slugDetails,\n }) {\n const {\n slugDetails: {\n personalizationSettings: {\n coverPhotoUrl = '',\n coverPhotoVerticalPan = '50',\n } = {},\n } = {},\n } = this.state\n\n let editCoverPhoto = []\n\n addLoader()\n\n /**\n * if user hasn't changed either cover photo url or pan then don't call any api\n * and just return back to settings page (this use case will only happen during edit photo)\n * second case is when user has changed or added the photo then update both pan and image\n * third case is when only pan is updated but not photo then just update the pan\n */\n if (coverPhotoUrl === imagePreviewUrl && coverPhotoVerticalPan === pan) {\n removeLoader()\n return undefined\n } else if (coverPhotoUrl !== imagePreviewUrl) {\n const variables = {\n filename,\n file: imagePreviewUrl,\n slug: slugDetails.paypalmeSlugName,\n }\n\n // upload the new photo\n await client.request(uploadCoverPhoto, variables)\n\n editCoverPhoto = [\n {\n op: 'replace',\n path: '/personalization_settings/cover_photo_vertical_pan',\n value: Math.abs(pan).toString(),\n },\n ]\n } else if (\n coverPhotoUrl === imagePreviewUrl &&\n coverPhotoVerticalPan !== pan\n ) {\n editCoverPhoto = [\n {\n op: 'replace',\n path: '/personalization_settings/cover_photo_vertical_pan',\n value: Math.abs(pan).toString(),\n },\n ]\n }\n\n const { slugDetails: { paypalmeSlugName = '' } = {} } = this.state\n const coverPhotoEdit = {\n editCoverPhoto,\n slugName: paypalmeSlugName,\n }\n\n await client.request(editCoverPhotoDetails, coverPhotoEdit)\n\n await this.updateCoverPhotoStatus()\n\n removeLoader()\n\n // make flow happy!\n return undefined\n }\n\n pan = (pan, deltaPan = '0', isDragging = false) => {\n this.setState({ pan, deltaPan, isDragging })\n }\n\n reviewPage = isReviewPage => {\n this.setState({\n isReviewPage,\n })\n }\n\n userImagePreviewUrl = (imagePreviewUrl, filename, isImageDataUrl = false) => {\n this.setState({\n imagePreviewUrl,\n filename,\n isImageDataUrl,\n })\n }\n\n imageReference = imageRef => {\n this.setState({\n imageRef,\n })\n }\n\n personalMessage(personalMessageValue) {\n this.setState({\n personalMessageValue,\n })\n }\n\n async editAbout(value) {\n addLoader()\n\n try {\n const {\n editProfileSettings: {\n personalizationSettings: { welcomeNote = '' } = {},\n } = {},\n } = await client.request(editProfileSettings, {\n editUserSettings: [\n {\n op: 'replace',\n path: '/personalization_settings/welcome_note',\n value: value,\n },\n ],\n slugName: this.state.slugDetails.paypalmeSlugName,\n })\n\n this.setState({\n personalMessageValue: welcomeNote,\n slugDetails: {\n ...this.state.slugDetails,\n personalizationSettings: {\n ...this.state.slugDetails.personalizationSettings,\n welcomeNote,\n },\n },\n })\n\n removeLoader()\n } catch (e) {\n removeLoader()\n\n throw e\n }\n }\n\n async editPersonalMessage() {\n const {\n slugDetails: {\n personalizationSettings: { welcomeNote: currentWelcomeNote = '' } = {},\n } = {},\n } = this.state\n\n if (currentWelcomeNote === this.state.personalMessageValue) {\n return undefined\n }\n\n const editUserSettings = [\n {\n op: 'replace',\n path: '/personalization_settings/welcome_note',\n value: this.state.personalMessageValue || '',\n },\n ]\n\n const { slugDetails: { paypalmeSlugName = '' } = {} } = this.state\n const variables = {\n editUserSettings,\n slugName: paypalmeSlugName,\n }\n\n addLoader()\n\n await client.request(editProfileSettings, variables)\n\n const {\n userPayPalMeDetails: {\n personalizationSettings: { welcomeNote = '' } = {},\n } = {},\n } = await client.request(personalMessageQuery)\n removeLoader()\n\n this.setState({\n slugDetails: {\n ...this.state.slugDetails,\n userInfo: {\n ...this.state.slugDetails.userInfo,\n },\n personalizationSettings: {\n ...this.state.slugDetails.personalizationSettings,\n welcomeNote,\n },\n },\n })\n\n return undefined\n }\n\n async removeCoverPhoto() {\n addLoader()\n\n const { slugDetails: { paypalmeSlugName = '' } = {} } = this.state\n\n await client.request(removeCoverPhoto, { slugName: paypalmeSlugName })\n\n await this.updateCoverPhotoStatus()\n\n removeLoader()\n }\n\n loadImage(fileSelectEvent, onSuccess) {\n addLoader()\n let fileReader = new FileReader()\n let file\n fileReader.onload = onLoadEvent => {\n let url = onLoadEvent.target.result\n let options = { mimeType: file.type }\n\n // options.normalizeImageSize = true\n normalizeImage(url, 1600, 1600, options, normalizedUrl => {\n this.userImagePreviewUrl(normalizedUrl, file && file.name, true)\n removeLoader()\n\n if (onSuccess) {\n onSuccess()\n }\n })\n }\n\n file = fileSelectEvent.target.files[0]\n\n if (file) {\n fileReader.readAsDataURL(file)\n }\n }\n}\n\nexport default SettingsState\n","export const deactivateProfile = `\n mutation DeactivateProfile ($slugName: String!) {\n deactivateProfile (slug: $slugName) {\n isSuccess\n isProfileStatusActive\n privacySettings {\n emailSearchEnabled\n phoneSearchEnabled\n }\n }\n}`\n","export const networkIdentityStatusQuery = `\n query {\n userPayPalMeDetails {\n isProfileStatusActive\n networkIdentityStatus\n }\n }\n`\n","export const editUserSlug = `\n mutation EditUserSlug ($newSlug: String!) {\n editUserSlug (newSlug: $newSlug) {\n isSuccess\n newSlug\n canEditUsername\n }\n }\n`\n","export const locationQuery = `\n query {\n userPayPalMeDetails {\n userInfo {\n displayAddress\n }\n privacySettings {\n location\n }\n }\n }\n`\n","export const preferencesQuery = `\n query {\n userPayPalMeDetails {\n personalizationSettings {\n transactionType\n }\n }\n }\n`\n","export const privacyQuery = `\n query {\n userPayPalMeDetails {\n privacySettings {\n emailSearchEnabled\n phoneSearchEnabled\n }\n }\n }\n`\n","export const coverPhotoQuery = `\n query {\n userPayPalMeDetails {\n personalizationSettings {\n coverPhotoUrl\n coverPhotoVerticalPan\n }\n }\n }\n`\n","export const personalMessageQuery = `\n query {\n userPayPalMeDetails {\n personalizationSettings {\n welcomeNote\n }\n }\n }\n`\n","export const removeCoverPhoto = `\n mutation RemoveCoverPhoto($slugName: String!) {\n removeCoverPhoto(slug: $slugName) {\n isSuccess\n }\n}`\n","// @flow\n\nimport clientData from 'utils/client-data'\nimport griffinNumber from 'griffin-paypal/number'\n\nconst { griffinMetadata } = clientData\nconst griffinNumberHandler = griffinNumber.createHandler(griffinMetadata)\n\nfunction getAmountFieldInfo(): {\n currencySymbolMap: CurrencySymbolMap,\n currencyDecimal: CurrencyDecimal,\n} {\n const {\n numbers: { currencies },\n numbers,\n } = griffinMetadata.cldr.main[griffinMetadata.localityKey]\n\n const currencySymbolMap = Object.keys(currencies).reduce((map, code) => {\n map[code] = currencies[code].symbol\n return map\n }, {})\n const { decimal: currencyDecimal } = numbers['symbols-numberSystem-latn']\n return { currencySymbolMap, currencyDecimal }\n}\n\nfunction getFormattedValue({\n amount = '0',\n currencyCode = 'USD',\n}: {\n amount: string,\n currencyCode: string,\n}): string {\n const parts = griffinNumberHandler.formatCurrency(\n {\n value: normalizeNumber(amount),\n currency: currencyCode,\n },\n griffinNumberHandler.CURRENCY_FORMAT_SYMBOLISOCURRENCY.parts(),\n )\n return parts.find(p => p.type === 'value').value\n}\n\nfunction normalizeNumber(numberString: string): number {\n return Number(toCanonicalNumber(numberString))\n}\n\n// this is the amount that our APIs expect (a cononicle)\nfunction getFormattedAmount({\n amount = '0',\n currencyCode = 'USD',\n}: {\n amount: string,\n currencyCode: string,\n}): string {\n const formattedAmount = griffinNumberHandler.formatCurrency({\n value: normalizeNumber(amount),\n currency: currencyCode,\n })\n\n return formattedAmount\n}\n\nfunction toCanonicalNumber(numberString) {\n const [otherNumbers, decimalGroup = '0'] = numberString.split(\n isCommaDecimal(numberString) ? ',' : '.',\n )\n return `${otherNumbers.split(/[.,]/).join('')}.${decimalGroup}`\n}\n\n// This determines whether the decimal of the string is using comma-notation\n// based on whether one of the following is true:\n// 1. The last three characters in the string includes `,` (12,34)\n// 2. The last three characters in the string does NOT include `.`,\n// but the rest of the number DOES include `.` (123.456)\nfunction isCommaDecimal(numberString) {\n const lastThree = numberString.slice(-3)\n return (\n lastThree.includes(',') ||\n (!lastThree.includes('.') && numberString.includes('.'))\n )\n}\n\nexport {\n toCanonicalNumber,\n getFormattedValue,\n getAmountFieldInfo,\n normalizeNumber,\n getFormattedAmount,\n}\n","// @flow\n/* eslint consumerweb/require-pagename:0 */\n// This allows us to make styled React components that can\n// either use or based on whether they\n// provide a `to` prop.\nimport PropTypes from 'prop-types'\n\nimport React from 'react'\nimport { Link } from 'react-router-dom'\nimport glamorous from 'glamorous'\n\n// this creates a glamorousComponentFactory\n// for the react-router Link component\n// with all the configuration needed\nfunction ConditionalLink(props) {\n if (props.to) {\n return \n }\n return \n}\nConditionalLink.propTypes = {\n to: PropTypes.string,\n}\n\nconst glamorousLink = glamorous(ConditionalLink, {\n rootEl: 'a',\n displayName: 'glamorous(RouterLink)',\n forwardProps: [\n 'to',\n 'query',\n 'hash',\n 'state',\n 'activeClassName',\n 'activeStyle',\n 'onlyActiveOnIndex',\n ],\n})\n\nexport { glamorousLink }\n","// @flow\n\nimport React, { PureComponent, Component } from 'react'\nimport glamorous from 'glamorous'\n\ntype LazyProps = {\n imageURL: string,\n render: ({ loaded: boolean, imageURL: string }) => React$Element,\n}\n\ntype LazyState = {\n loaded: boolean,\n}\n\nexport class Lazy extends Component {\n state = {\n loaded: false,\n }\n\n componentDidMount() {\n if (!this.state.loaded) {\n if (this.props.imageURL) {\n const cacheImage = new Image()\n cacheImage.onload = () => {\n this.setState({\n loaded: true,\n })\n }\n cacheImage.src = this.props.imageURL\n }\n }\n }\n\n render() {\n const payload = { loaded: this.state.loaded, imageURL: this.props.imageURL }\n return this.props.render(payload)\n }\n}\n\nconst LazyImageTag = glamorous.div(\n {\n opacity: 0,\n transition: 'opacity 0.3s',\n backgroundSize: 'cover',\n },\n ({ loaded, imageURL }) =>\n loaded\n ? {\n width: '100%',\n height: '100%',\n backgroundImage: `url('${imageURL}')`,\n opacity: 1,\n }\n : null,\n)\n\ntype LazyImageProps = {\n imageURL: string,\n loaded: boolean,\n containerStyles?: {},\n}\n\nclass LazyImage extends PureComponent {\n render() {\n return (\n \n )\n }\n}\n\ntype LazyLoaderProps = {\n imageURL: string,\n containerStyles?: {},\n}\n\nconst containerStyles = {\n overflow: 'hidden',\n backgroundColor: 'white',\n width: 100,\n height: 100,\n boxShadow: '8px 14px 38px rgba(39,44,49,.06), 1px 3px 8px rgba(39,44,49,.03)',\n}\n\nexport default class LazyLoader extends Component {\n static defaultProps = {\n containerStyles: {},\n }\n\n render() {\n return (\n {\n if (!imageURL) {\n return null\n }\n return (\n \n \n \n )\n }}\n />\n )\n }\n}\n","// @flow\n\nimport React, { Component, Fragment } from 'react'\nimport glamorous from 'glamorous'\nimport ReactCSSTransitionGroup from 'react-transition-group/CSSTransitionGroup'\nimport getContent from 'pp-react-l10n'\nimport PPAmountField from 'pp-amount-field/basic/v3'\nimport clientData from 'utils/client-data'\nimport LazyLoader from 'components/lazy-load-image'\nimport ShareYourLink from 'components/share-with-friends'\nimport { glamorousLink } from 'components/glamorous-link'\nimport * as amountUtils from '../amount-utils'\nimport _ from 'lodash'\nimport _unescape from 'lodash/unescape'\nimport { svgImages } from 'components/index'\nimport SVG from 'components/svg-logo'\nimport { trackLink } from 'lib/analytics'\n\nconst l10n = getContent('pages/shared')\nconst DURATION = 300\n\nconst ProfileReviewStyling = glamorous.div(props => ({\n backgroundColor: props.backgroundColor ? props.backgroundColor : '#f4f6f9',\n margin: '0 auto',\n textAlign: 'center',\n boxShadow: !props.myProfilePage\n ? '0 2px 2px 0 rgba(139, 139, 139, 0.5)'\n : null,\n padding: props.userHasCoverPhoto ? '0' : '36px 0 31px 0',\n position: 'relative',\n top: props.userHasCoverPhoto ? '-45px' : 'auto',\n}))\n\nconst ProfileReviewInnerChild = glamorous.div(props => ({\n position: 'relative',\n top: props.userHasCoverPhoto ? '-45px' : 'auto',\n display: 'inline',\n}))\n\nconst MoreInfoAboutUserStyling = glamorous.div({\n color: '#6c7378',\n fontSize: '13px',\n lineHeight: '1.38',\n width: '85%',\n display: 'inline-block',\n paddingBottom: '6px',\n textTransform: 'uppercase',\n})\n\nconst WelcomeNoteStyling = glamorous.div(\n {\n fontSize: '15px',\n lineHeight: '1.6',\n color: '#2c2e2f',\n textAlign: 'center',\n width: '95%',\n margin: '0 auto',\n overflowWrap: 'break-word',\n wordWrap: 'break-word',\n position: 'relative',\n },\n ({ isReviewPage, isCoverUploadPage, shouldShowMoreMessage }) =>\n (isReviewPage || isCoverUploadPage) && !shouldShowMoreMessage\n ? {\n overflow: 'hidden',\n display: '-webkit-box',\n WebkitLineClamp: 2,\n WebkitBoxOrient: 'vertical',\n maxHeight: '71px',\n }\n : null,\n)\n\nconst NameAndSlugDetailLocation = glamorous.div({\n marginBottom: '4px',\n paddingTop: 12,\n paddingBottom: 6,\n margin: 0,\n fontSize: 20,\n color: '#2c2e2f',\n})\n\nconst NameAndSlugDetailMessage = glamorous.div(props => ({\n paddingBottom: props.showAmountInput\n ? 0\n : props.personalMessagePaddingBottomStyling,\n fontSize: 15,\n color: '#2c2e2f',\n}))\n\nconst NextButtonStyling = glamorousLink(\n {\n marginBottom: 40,\n width: '70% !important',\n '@media (min-width: 540px) and (max-width: 690px)': {\n width: '50% !important',\n },\n },\n 'vx_btn vx_btn-block',\n)\n\nconst ShowMoreDiv = glamorous.div(props => ({\n color: '#0070ba',\n fontSize: 14,\n fontWeight: 500,\n lineHeight: 1.43,\n cursor: 'pointer',\n padding: '8.5px 0 0 0',\n display: props.shouldShowMoreMessage ? 'none' : 'inline-block',\n}))\n\nconst SVGStyling = glamorous(SVG, {\n forwardProps: ['svgString'],\n rootEl: 'span',\n})({\n padding: '0 5px',\n cursor: 'pointer',\n})\n\ntype AmountFieldProps = {\n onChange: (value: string, currencyCode: string) => void,\n currencyCode: string,\n value: string,\n}\n\nclass AmountField extends React.Component {\n currencySymbolMap: CurrencySymbolMap\n currencyDecimal: CurrencyDecimal\n constructor(...args) {\n super(...args)\n const {\n currencySymbolMap,\n currencyDecimal,\n } = amountUtils.getAmountFieldInfo()\n Object.assign(this, {\n currencySymbolMap,\n currencyDecimal,\n })\n }\n getFormattedValue = amount => {\n return amountUtils.getFormattedValue({\n amount,\n currencyCode: this.props.currencyCode,\n })\n }\n render() {\n const { currencyCode, value } = this.props\n return (\n \n )\n }\n}\n\ntype ProfileViewProps = {\n slugInfo: { slugDetails: SlugDetails },\n initialAmount?: string,\n initialCurrencyCode?: string,\n isReviewPage?: boolean,\n userHasCoverPhoto: boolean,\n backgroundColor?: string,\n showAmountInput?: boolean,\n myProfilePage?: boolean,\n isCoverUploadPage?: boolean,\n isUserLoggedIn?: boolean,\n isUserInGuestTreatment?: boolean,\n isUserInHomepageTreatment?: boolean,\n isCreateFlow?: boolean,\n personalMessagePaddingBottomStyling: number,\n recipientSlugPage?: boolean,\n isDev: boolean,\n isProd: boolean,\n isStage: boolean,\n}\n\ntype ProfileViewState = {\n amountValue: string,\n amountCurrencyCode: string,\n userHasProfilePicture: boolean,\n shouldShowMoreMessage: boolean,\n}\n\nclass ProfileView extends Component {\n static defaultProps = {\n isUserLoggedIn: clientData.isUserLoggedIn,\n isUserInGuestTreatment: clientData.isUserInGuestTreatment,\n isUserInHomepageTreatment: clientData.isUserInHomepageTreatment,\n isStage: clientData.isStage,\n isDev: clientData.isDev,\n isProd: clientData.isProd,\n }\n\n state = {\n amountValue: this.props.initialAmount,\n amountCurrencyCode: this.props.initialCurrencyCode,\n userHasProfilePicture:\n _.get(this, 'props.slugInfo.slugDetails.userInfo.profilePhotoUrl', '') !==\n 'https://www.paypalobjects.com/digitalassets/c/consumer/paypalme/networkidentity/profile_man.svg',\n shouldShowMoreMessage: false,\n isShowMore: true,\n }\n\n handleAmountChange = (amountValue: string, amountCurrencyCode: string) => {\n this.setState({ amountValue, amountCurrencyCode })\n }\n\n showDottedLines = () => {\n return (\n \n {this.props.myProfilePage ? (\n \n ) : null}\n \n )\n }\n\n handleShowMoreClick = () => {\n this.setState({\n shouldShowMoreMessage: true,\n })\n }\n\n moreInfo = () => {\n this.setState(state => ({ isShowMore: !state.isShowMore }))\n }\n\n moreAboutUser = () => {\n let {\n slugInfo: {\n slugDetails: {\n userInfo: { givenName = '', displayAddress = '' } = {},\n personalizationSettings: { welcomeNote = '' } = {},\n } = {},\n },\n isCoverUploadPage = false,\n isReviewPage = false,\n } = this.props\n\n const shouldShowMoreAboutUser =\n Boolean(displayAddress) || Boolean(welcomeNote)\n\n let welcomeNoteLength = welcomeNote && welcomeNote.length\n\n return (\n \n {shouldShowMoreAboutUser ? (\n \n {!isReviewPage && !isCoverUploadPage && (\n \n {l10n('label.moreabout')} {givenName}\n {this.props.recipientSlugPage && (\n \n )}\n \n )}\n {this.state.isShowMore ? (\n \n \n {displayAddress}\n \n \n {welcomeNote}\n \n {(this.props.isReviewPage || this.props.isCoverUploadPage) &&\n welcomeNoteLength > 50 && (\n \n {l10n('label.showmore')}\n \n )}\n \n ) : (\n \n )}\n \n ) : (\n this.showDottedLines()\n )}\n \n )\n }\n\n generateUrlLoggedOutState() {\n const {\n slugInfo: {\n slugDetails: {\n paypalmeSlugName = '',\n userInfo: { displayName = '' } = {},\n personalizationSettings: { transactionType = '' } = {},\n } = {},\n },\n isUserInHomepageTreatment = false,\n } = this.props\n\n const { amountValue = '0', amountCurrencyCode } = this.state\n const flow = transactionType === 'PERSONAL' ? 'send' : 'buy'\n const {\n locality: { locale, country },\n } = clientData\n\n const queryString = queryify({\n profile: paypalmeSlugName,\n currencyCode: amountCurrencyCode,\n amount: String(amountUtils.normalizeNumber(amountValue)),\n 'locale.x': locale,\n 'country.x': country,\n flowType: flow,\n })\n\n // if logged out get onboarding data...\n // ${window.location.origin}\n const formattedAmount = amountUtils.getFormattedAmount({\n amount: this.state.amountValue,\n currencyCode: this.state.amountCurrencyCode,\n })\n\n let host = 'https://www.paypal.com'\n if (this.props.isDev) {\n host = 'https://localhost.paypal.com'\n }\n\n if (this.props.isStage) {\n host = window.location.origin\n }\n\n if (this.props.isProd) {\n host = 'https://www.paypal.com'\n }\n\n const sendRoute = isUserInHomepageTreatment ? 'homepage' : flow\n const onboardDataRegularSignUp = JSON.stringify({\n 'country.x': country,\n 'locale.x': locale,\n intent: 'paypalme',\n redirect_url: `${host}/myaccount/transfer/${sendRoute}/external/ppme?${encodeURIComponent(\n queryString,\n )}`,\n sendMoneyText: encodeURIComponent(\n `${l10n('msg.send')} ${displayName} ${formattedAmount}`,\n ),\n })\n\n const guestQueryString = queryify({\n env: 'ppme',\n recipientIdType: 'ppme',\n recipientId: paypalmeSlugName,\n currencyCode: amountCurrencyCode,\n amount: String(amountUtils.normalizeNumber(amountValue)),\n 'locale.x': locale,\n 'country.x': country,\n flowType: flow,\n })\n\n const onboardDataGuest = JSON.stringify({\n signUpRequest: {\n method: 'get',\n url: `${encodeURIComponent(\n `${host}/myaccount/transfer/guestLogin/paypalme?${guestQueryString}`,\n )}`,\n },\n })\n\n const onboardData = this.props.isUserInGuestTreatment\n ? `expId=ppme&onboardData=${encodeURIComponent(onboardDataGuest)}`\n : `onboardData=${encodeURIComponent(onboardDataRegularSignUp)}`\n\n return `${host}/signin?returnUri=${host}/myaccount/transfer/${sendRoute}/external/ppme?${encodeURIComponent(\n queryString,\n )}&${onboardData}`\n }\n\n generateUrlLoggedInState() {\n const {\n slugInfo: {\n slugDetails: {\n paypalmeSlugName = '',\n personalizationSettings: { transactionType = '' } = {},\n } = {},\n },\n isUserInHomepageTreatment = false,\n } = this.props\n const flow = transactionType === 'PERSONAL' ? 'send' : 'buy'\n const { amountValue, amountCurrencyCode } = this.state\n const {\n locality: { locale, country },\n } = clientData\n\n const queryString = queryify({\n profile: paypalmeSlugName,\n currencyCode: amountCurrencyCode,\n amount: String(amountUtils.normalizeNumber(amountValue)),\n 'locale.x': locale,\n 'country.x': country,\n flowType: flow,\n })\n\n let host = 'https://www.paypal.com'\n if (this.props.isDev) {\n host = 'https://localhost.paypal.com'\n }\n\n if (this.props.isStage) {\n host = window.location.origin\n }\n\n if (this.props.isProd) {\n host = 'https://www.paypal.com'\n }\n\n const sendRoute = isUserInHomepageTreatment ? 'homepage' : flow\n return `${host}/myaccount/transfer/${sendRoute}/external/ppme?${queryString}`\n }\n\n generateSendMoneyUrl = () => {\n return this.props.isUserLoggedIn\n ? this.generateUrlLoggedInState()\n : this.generateUrlLoggedOutState()\n }\n\n onReportClick = () => {\n trackLink(\n 'report_ppme_pressed',\n 'main:ppme:recipientprofile',\n 'main:ppme:recipientprofile:::',\n 'link',\n )\n }\n\n render() {\n const {\n slugInfo: {\n slugDetails: {\n paypalmeSlugName = '',\n userInfo: {\n displayName = '',\n profilePhotoUrl = '',\n displayAddress = '',\n } = {},\n personalizationSettings: { welcomeNote = '' } = {},\n } = {},\n },\n showAmountInput = false,\n } = this.props\n const { amountValue, amountCurrencyCode } = this.state\n const { locality: { locale, country = 'US' } = {} } = clientData\n const shouldShowMoreAboutUser =\n Boolean(displayAddress) || Boolean(welcomeNote)\n\n const personalMessagePaddingBottomStyling =\n this.props.isCreateFlow ||\n (!shouldShowMoreAboutUser && !this.props.myProfilePage)\n ? 0\n : 24\n\n return (\n \n \n \n \n \n \n \n {_unescape(displayName)}\n \n \n {l10n('ppmeUrl', { slug: paypalmeSlugName })}\n \n {showAmountInput && (\n \n \n \n \n \n {l10n('button.next')}\n \n \n )}\n\n {!this.props.isCreateFlow && this.moreAboutUser()}\n\n {this.props.myProfilePage && (\n \n )}\n \n \n {this.props.recipientSlugPage && (\n \n {l10n('button.report')}\n \n )}\n \n )\n }\n}\n\nfunction queryify(obj: { [key: string]: string }) {\n return Object.keys(obj)\n .reduce((qs, key) => {\n qs.push(`${key}=${encodeURIComponent(obj[key])}`)\n return qs\n }, [])\n .join('&')\n}\n\nexport default ProfileView\n","// @flow\n\nimport React, { Fragment } from 'react'\nimport glamorous from 'glamorous'\nimport { css } from 'glamor'\nimport getContent from 'pp-react-l10n'\nimport { BodyText, grey700 } from '@paypalcorp/pp-react'\n\nimport { svgImages } from 'components/index'\nimport sharing from 'consumerweb-sharing'\nimport CopyToClipboard from 'react-copy-to-clipboard'\nimport { CSSTransitionGroup } from 'react-transition-group'\nimport SVG from 'components/svg-logo'\nimport { trackLink } from 'lib/analytics'\n\nconst l10n = getContent('pages/shared')\nconst l10nSettings = getContent('pages/settings')\nconst isMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(\n navigator.userAgent,\n)\n\ntype Props = {\n slugInfo: { slugDetails: SlugDetails },\n showCopyText?: boolean,\n isMarketkingFlow?: boolean,\n isProfileReview?: Boolean,\n locale?: string,\n}\n\nconst ShareTitle = glamorous.div({ color: grey700 })\nconst ShareYourLinkStyling = glamorous.div({\n color: '#6c7378',\n fontSize: '13px',\n lineHeight: '1.38',\n width: '80%',\n display: 'inline-block',\n textTransform: 'uppercase',\n marginTop: 22,\n padding: 0,\n})\n\nconst SVGParent = glamorous.span({\n display: 'inline-block',\n width: '60px',\n marginRight: '20px',\n cursor: 'pointer',\n transition: 'all .2s ease-in-out',\n ':hover': {\n transform: 'scale(1.1)',\n },\n '@media (max-width: 880px)': {\n transform: 'scale(0.95)',\n marginRight: '10px',\n },\n '@media (max-width: 320px)': {\n transform: 'scale(0.9)',\n marginRight: 0,\n },\n})\n\nconst SVGStyling = glamorous(SVG, {\n forwardProps: ['svgString'],\n rootEl: 'span',\n})({\n padding: '0 20px',\n '@media (max-width: 320px)': {\n padding: 0,\n },\n})\n\nconst SpanText = glamorous.span({\n display: 'inline-table',\n fontSize: '13px',\n color: '#ababab',\n position: 'relative',\n left: '10px',\n '@media (max-width: 320px)': {\n left: 0,\n },\n})\n\nconst TooltipCopied = glamorous.span(({ isProfileReview = false }) => ({\n padding: isProfileReview ? '0.25rem 0.5rem' : '4px',\n position: 'absolute',\n bottom: isProfileReview ? '-2.75rem' : '0',\n ...(!isProfileReview && { top: '10px' }),\n ...(isProfileReview && { fontWeight: 500 }),\n ...(isProfileReview ? { left: '0.5rem' } : { right: '75px' }),\n backgroundColor: '#e1e7eb',\n color: 'black',\n ...(!isProfileReview && { width: '66px' }),\n ...(!isProfileReview && { borderRadius: '2px' }),\n ...(!isProfileReview && { height: '30px' }),\n ':before': {\n content: '\"\"',\n position: 'absolute',\n width: 0,\n height: 0,\n borderLeft: '6px solid transparent',\n borderRight: '6px solid transparent',\n marginLeft: '5px',\n borderBottom: '6px solid #e1e7eb',\n top: '-6px',\n },\n\n '&.tooltip-enter': {\n opacity: 0.01,\n },\n\n '&.tooltip-enter.tooltip-enter-active': {\n opacity: '1',\n transition: 'opacity 300ms ease-in',\n },\n\n '&.tooltip-leave.tooltip-leave-active': {\n opacity: 0.01,\n transition: 'opacity 300ms ease-in',\n },\n}))\n\nconst trackShareLinks = linkName =>\n trackLink(linkName, 'main:ppme:profile', 'main:ppme:profile:::', 'link')\n\ntype State = {\n isCopied: boolean,\n}\n\nclass ShareYourLink extends React.Component {\n _ref: ?HTMLElement = null\n\n static defaultProps = {\n isProfileReview: false,\n }\n\n state = {\n isCopied: false,\n }\n handleFBClick = (e: SyntheticEvent) => {\n e.preventDefault()\n\n trackShareLinks('facebook')\n\n const {\n slugInfo: { slugDetails: { paypalmeSlugName = '' } = {} } = {},\n } = this.props\n sharing.shareURLByFacebook(\n `https://paypal.me/${paypalmeSlugName}?locale.x=${this.props.locale}`,\n 575,\n 400,\n )\n }\n\n handleTwitterClick = (e: SyntheticEvent) => {\n e.preventDefault()\n\n trackShareLinks('twitter')\n\n const {\n slugInfo: { slugDetails: { paypalmeSlugName = '' } = {} } = {},\n } = this.props\n const twitterShareLink = `${l10n(\n 'share.twitter',\n )} https://paypal.me/${encodeURIComponent(paypalmeSlugName)}?locale.x=${\n this.props.locale\n }`\n sharing.shareByTwitter(twitterShareLink, 575, 400)\n }\n\n handleWhatsappClick = (e: SyntheticEvent) => {\n e.preventDefault()\n\n trackShareLinks('whatsapp')\n\n const {\n slugInfo: { slugDetails: { paypalmeSlugName = '' } = {} } = {},\n } = this.props\n sharing.shareByWhatsApp(\n `https://paypal.me/${encodeURIComponent(paypalmeSlugName)}?locale.x=${\n this.props.locale\n }`,\n 575,\n 400,\n )\n }\n\n handleMessengerClick = (e: SyntheticEvent) => {\n e.preventDefault()\n\n trackShareLinks('messenger')\n\n const {\n slugInfo: { slugDetails: { paypalmeSlugName = '' } = {} } = {},\n } = this.props\n sharing.shareURLByMessenger(\n `https://paypal.me/${encodeURIComponent(paypalmeSlugName)}?locale.x=${\n this.props.locale\n }`,\n '1624118454533304',\n window.location.href,\n )\n }\n\n copyToClipboard() {\n trackShareLinks('copylink')\n\n this.setState({ isCopied: true })\n setTimeout(() => {\n this.setState({ isCopied: false })\n }, 1000)\n }\n\n render() {\n const {\n slugInfo: { slugDetails: { paypalmeSlugName = '' } = {} } = {},\n } = this.props\n\n return (\n \n {!this.props.showCopyText &&\n (this.props.isProfileReview ? (\n \n {l10n('header.share')}\n \n ) : (\n \n {l10n('header.shareyourlink')}\n \n ))}\n\n {this.props.showCopyText && (\n \n {\n this.copyToClipboard()\n }}\n >\n \n (this._ref = input)}\n value={`paypal.me/${paypalmeSlugName}`}\n readOnly={true}\n />\n \n {l10n('button.copy')}\n \n \n {this.state.isCopied && (\n \n {l10n('msg.copied')}\n \n )}\n \n \n \n \n )}\n\n \n {!this.props.showCopyText && (\n {\n this.copyToClipboard()\n }}\n tabIndex=\"0\"\n role=\"button\"\n >\n \n e.key === 'Enter' && this._ref && this._ref.click()\n }\n ref={input => (this._ref = input)}\n >\n \n \n {l10nSettings('share.copy')}\n \n \n \n )}\n \n \n \n {l10nSettings('share.facebook')}\n \n \n \n \n \n {l10nSettings('share.messenger')}\n \n \n \n \n \n {l10nSettings('share.twitter')}\n \n \n {this.props.isMarketkingFlow && isMobile && (\n \n \n \n {l10nSettings('share.whatsapp')}\n \n \n )}\n \n \n {this.state.isCopied && !this.props.showCopyText && (\n \n {l10n('msg.copied')}\n \n )}\n \n \n )\n }\n}\n\nexport default ShareYourLink\n","// @flow\n\nimport React from 'react'\n\ntype Props = {\n svgString: string,\n props: {},\n}\n\n/**\n * SRE bot's throws an error for dangerouslySetInnerHTML. This is a workaround for\n * legitimate use cases\n */\nconst workaroundScoreBot = ['dangerously', 'Set', 'Inner', 'HTML'].join('')\nexport default function SVG({ svgString, ...props }: Props) {\n const dangerProps = { [workaroundScoreBot]: { __html: svgString } }\n return \n}\n","// @flow\n\nimport { GraphQLClient } from 'graphql-request'\nimport clientData from './client-data'\n\ntype Client = {|\n request: (query: string, variables?: {}) => Promise<*>,\n|}\n\nconst client: Client = new GraphQLClient(\n `${window.location.origin}${clientData.requestURI}/v1/graphql`,\n {\n credentials: 'include',\n mode: 'cors',\n headers: {\n 'x-csrf-token': clientData.csrf,\n },\n },\n)\n\nexport { client }\n\nexport type { Client }\n","export const DEFAULT_PROFILE_PHOTO =\n 'https://www.paypalobjects.com/digitalassets/c/consumer/paypalme/networkidentity/profile_man.svg'\n\nexport const COVER_PHOTO_URLS = {\n GREEN: {\n RASTER: 'https://www.paypalobjects.com/profiles/cover/green.jpg',\n VECTOR: 'https://www.paypalobjects.com/profiles/cover/green.svg',\n },\n BLUE: {\n RASTER: 'https://www.paypalobjects.com/profiles/cover/blue.jpg',\n VECTOR: 'https://www.paypalobjects.com/profiles/cover/blue.svg',\n },\n PURPLE: {\n RASTER: 'https://www.paypalobjects.com/profiles/cover/purple.jpg',\n VECTOR: 'https://www.paypalobjects.com/profiles/cover/purple.svg',\n },\n RED: {\n RASTER: 'https://www.paypalobjects.com/profiles/cover/red.jpg',\n VECTOR: 'https://www.paypalobjects.com/profiles/cover/red.svg',\n },\n YELLOW: {\n RASTER: 'https://www.paypalobjects.com/profiles/cover/yellow.jpg',\n VECTOR: 'https://www.paypalobjects.com/profiles/cover/yellow.svg',\n },\n}\n\nexport const SETTINGS_EDIT_NAME_INSTRUMENTATION = {\n EDIT_USERNAME: 'edit_username',\n}\nexport const PROFILE_EDIT_NAME_INSTRUMENTATION = {\n PAGE_GROUP: 'main:ppmeusername',\n PAGE_NAME: 'main:ppmeusername:::change',\n IMPRESSION: 'p2p_edit_username_screen_shown',\n BACK: 'p2p_edit_username_back_pressed',\n CLOSE: 'p2p_edit_username_close_pressed',\n ON_FOCUS: 'p2p_edit_username_field_pressed',\n TYPING: 'p2p_edit_username_typing_started',\n SELECT_USERNAME_SUGGESTION: 'p2p_edit_username_suggestion_pressed',\n SAVE_USERNAME: 'p2p_edit_username_save_pressed',\n}\n\nexport const MY_PROFILE_INSTRUMENTATION = {\n IMPRESSION: 'p2p_myprofile_screen_shown',\n EDIT_PROFILE: 'p2p_myprofile_edit_pressed',\n BACK: 'p2p_myprofile_back_pressed',\n SHARE: 'p2p_myprofile_share_pressed',\n}\nexport const PROFILE_SLUG_INSTRUMENTATION = {\n PAGE_GROUP: 'main:ppme:recipientprofile',\n PAGE_NAME: 'main:ppme:recipientprofile:::',\n IMPRESSION: 'p2p_profile_screen_shown',\n SEND: 'p2p_profile_send_pressed',\n REQUEST: 'p2p_profile_request_pressed',\n REPORT: 'p2p_profile_report_pressed',\n}\n\nexport const EDIT_PROFILE_INSTRUMENTATION = {\n PAGE_GROUP: 'main:ppme:settings',\n PAGE_NAME: 'main:ppme:settings:::',\n IMPRESSION: 'p2p_edit_profile_screen_shown',\n EDIT_BACKGROUND: 'p2p_edit_profile_background_pressed',\n EDIT_PHOTO: 'p2p_edit_profile_photo_pressed',\n SHARE: 'p2p_edit_profile_share_pressed',\n EDIT_USERNAME: 'p2p_edit_profile_username_pressed',\n EDIT_LOCATION: 'p2p_edit_profile_location_pressed',\n EDIT_ABOUT: 'p2p_edit_profile_about_pressed',\n EDIT_PROFILE_STATUS: 'p2p_edit_profile_status_toggle_pressed',\n EDIT_EMAIL_STATUS: 'p2p_edit_profile_email_toggle_pressed',\n EDIT_PHONE_STATUS: 'p2p_edit_profile_phone_toggle_pressed',\n TERMS_AND_CONDITIONS: 'p2p_edit_profile_terms_pressed',\n}\n\nexport const ABOUT_INSTRUMENTATION = {\n PAGE_GROUP: 'main:ppme:about',\n PAGE_NAME: 'main:ppme:about:::change',\n IMPRESSION: 'p2p_edit_about_screen_shown',\n BACK: 'p2p_edit_about_back_pressed',\n CLOSE: 'p2p_edit_about_close_pressed',\n FOCUS: 'p2p_edit_about_field_pressed',\n TYPING_START: 'p2p_edit_about_typing_started',\n SAVE: 'p2p_edit_about_save_pressed',\n}\n\nexport const LOCATION_INSTRUMENTATION = {\n PAGE_GROUP: 'main:ppme:location',\n PAGE_NAME: 'main:ppme:location:::change',\n IMPRESSION: 'p2p_edit_location_screen_shown',\n BACK: 'p2p_edit_location_back_pressed',\n CLOSE: 'p2p_edit_location_close_pressed',\n CITY: 'p2p_edit_location_city_pressed',\n STATE: 'p2p_edit_location_state_pressed',\n NOT_SHOW: 'p2p_edit_location_dont_show_pressed',\n SAVE: 'p2p_edit_location_save_pressed',\n}\n\nexport const TURN_OFF_CONFIRMATION_INSTRUMENTATION = {\n PAGE_GROUP: 'main:ppme:hide:confirm',\n PAGE_NAME: 'main:ppme:hide:confirm',\n IMPRESSION: 'p2p_hide_profile_confirmation_screen_shown',\n BACK: 'p2p_hide_profile_confirmation_back_pressed',\n CLOSE: 'p2p_hide_profile_confirmation_close_pressed',\n CONFIRM: 'p2p_hide_profile_confirmation_turnoff_pressed',\n CANCEL: 'p2p_hide_profile_confirmation_cancel_pressed',\n}\n\nexport const EVENT_TYPE = {\n CLICK: 'cl',\n IMPRESSION: 'im',\n}\n\nexport const INSTRUMENTATION_MAPPING = {\n settings: {\n close: EDIT_PROFILE_INSTRUMENTATION.CLOSE,\n },\n username: {\n back: PROFILE_EDIT_NAME_INSTRUMENTATION.BACK,\n close: PROFILE_EDIT_NAME_INSTRUMENTATION.CLOSE,\n },\n about: {\n back: ABOUT_INSTRUMENTATION.BACK,\n close: ABOUT_INSTRUMENTATION.CLOSE,\n },\n location: {\n back: LOCATION_INSTRUMENTATION.BACK,\n close: LOCATION_INSTRUMENTATION.CLOSE,\n },\n confirm: {\n back: TURN_OFF_CONFIRMATION_INSTRUMENTATION.BACK,\n close: TURN_OFF_CONFIRMATION_INSTRUMENTATION.CLOSE,\n },\n}\n\nexport const ILLUSTRATIONS = {\n WARNING:\n 'https://www.paypalobjects.com/paypal-ui/illustrations/svg/warning.svg',\n}\n","// @flow\n\nimport EXIF from 'exif-js'\n\nimport { COVER_PHOTO_URLS } from 'utils/constants'\n\nconst COVER_PHOTO_URL_MAPPINGS = {}\nObject.values(COVER_PHOTO_URLS).forEach(({ RASTER, VECTOR }) => {\n COVER_PHOTO_URL_MAPPINGS[RASTER] = VECTOR\n})\n\ntype EXIFHTMLImageElement = HTMLImageElement & {\n exifdata?: {\n Orientation: number,\n },\n}\n\n//options are:\n//normalizeImageSize - decrease image size to fit in toWidth and toHeight\nexport function normalizeImage(\n dataUrl: string,\n toWidth: number,\n toHeight: number,\n {\n normalizeImageSize = false,\n mimeType = 'image/jpeg',\n }: { normalizeImageSize?: boolean, mimeType?: string } = {},\n callback: string => void,\n) {\n const img: EXIFHTMLImageElement = document.createElement('img')\n img.onload = () => {\n const canvas = document.createElement('canvas')\n const ctx = canvas.getContext('2d')\n let changed\n let resizeWidth = img.width\n let resizeHeight = img.height\n\n // PNGs weigh too much\n if (mimeType === 'image/png') {\n mimeType = 'image/jpeg'\n }\n\n if (normalizeImageSize) {\n if (resizeWidth > toWidth) {\n resizeHeight *= toWidth / resizeWidth\n resizeWidth = toWidth\n changed = true\n }\n\n if (resizeHeight > toHeight) {\n resizeWidth *= toHeight / resizeHeight\n resizeHeight = toHeight\n changed = true\n }\n\n if (changed) {\n resizeWidth = Math.floor(resizeWidth)\n resizeHeight = Math.floor(resizeHeight)\n canvas.width = resizeWidth\n canvas.height = resizeHeight\n }\n }\n\n EXIF.getData(img, () => {\n if (img.exifdata && img.exifdata.Orientation) {\n if (!changed) {\n canvas.width = resizeWidth = img.width\n canvas.height = resizeHeight = img.height\n }\n\n // in exif orientations 5,6,7,8 the image width and height flips, so we need to flip\n // the canvas dimensions as well\n if (img.exifdata.Orientation >= 5 && img.exifdata.Orientation <= 8) {\n const swapCanvasDimensions = canvas.height\n\n canvas.height = canvas.width\n canvas.width = swapCanvasDimensions\n }\n\n switch (img.exifdata.Orientation) {\n case 2:\n ctx.transform(-1, 0, 0, 1, resizeWidth, 0)\n break\n case 3:\n ctx.transform(-1, 0, 0, -1, resizeWidth, resizeHeight)\n break\n case 4:\n ctx.transform(1, 0, 0, -1, 0, resizeHeight)\n break\n case 5:\n ctx.transform(0, 1, 1, 0, 0, 0)\n break\n case 6:\n ctx.transform(0, 1, -1, 0, resizeHeight, 0)\n break\n case 7:\n ctx.transform(0, -1, -1, 0, resizeHeight, resizeWidth)\n break\n case 8:\n ctx.transform(0, -1, 1, 0, 0, resizeWidth)\n break\n default:\n ctx.transform(1, 0, 0, 1, 0, 0)\n }\n ctx.drawImage(img, 0, 0, resizeWidth, resizeHeight)\n return callback(canvas.toDataURL(mimeType))\n } else if (changed) {\n ctx.drawImage(img, 0, 0, resizeWidth, resizeHeight)\n return callback(canvas.toDataURL(mimeType))\n }\n return callback(dataUrl)\n })\n }\n\n // the animation acts wonky if we don't add the animation here\n // we wait for 800ms once the image is selected, and do the transition as required\n setTimeout(() => {\n img.src = dataUrl\n }, 800)\n}\n\n/**\n * Get cover photo URL for display purposes based on the cover URL returned from\n * paypalmeserv. In some cases the URL can be mapped to an SVG (for cover photos\n * that were selected from the pre-defined list), otherwise return the regular URL\n */\nexport function getDisplayCoverPhotoUrl(url: string) {\n if (COVER_PHOTO_URL_MAPPINGS[url]) {\n return COVER_PHOTO_URL_MAPPINGS[url]\n } else {\n return url\n }\n}\n\nexport function isPreDefinedCoverPhoto(url: string) {\n if (COVER_PHOTO_URL_MAPPINGS[url]) {\n return true\n } else {\n return false\n }\n}\n","// @flow\n\nexport const SPINNER_ID = 'core-white-overpanel-spinner'\n\nexport const addLoader = function() {\n const overlayedElement = document.getElementById(SPINNER_ID)\n\n if (overlayedElement) {\n overlayedElement.style.removeProperty('display')\n }\n}\n\nexport const removeLoader = function() {\n const elementWithSpinner = document.getElementById(SPINNER_ID)\n\n if (elementWithSpinner) {\n elementWithSpinner.style.setProperty('display', 'none')\n }\n}\n"],"sourceRoot":""}