{"version":3,"file":"js/participant_apply-56b22d17602ba37dda3d.js","mappings":"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","sources":["webpack://user-interviews/./app/javascript/researcher/project_prop_types.js","webpack://user-interviews/./app/javascript/common/google_map/google_map.jsx","webpack://user-interviews/./app/javascript/common/google_map/google_map.module.scss?ec12","webpack://user-interviews/./app/javascript/participant/apply/location_detail.jsx","webpack://user-interviews/./app/javascript/researcher/project_interview_info/in_person_interview_info.jsx","webpack://user-interviews/./app/javascript/researcher/project_interview_info/phone_interview_info.tsx","webpack://user-interviews/./app/javascript/researcher/project_interview_info/device_requirements_details.tsx","webpack://user-interviews/./app/javascript/researcher/project_interview_info/project_interview_info.jsx","webpack://user-interviews/./app/javascript/packs/participant_apply.js","webpack://user-interviews/./app/javascript/researcher/project_constants.js","webpack://user-interviews/./app/javascript/participant/apply/technical_requirements.jsx"],"sourcesContent":["import * as propTypes from 'lib/prop_types';\n\nimport { Types } from 'lib/generated_constants/projects';\nimport { studyLengthPropType } from 'lib/prop_types/projects/details';\n\n/*\nNOTE: As we built out new Serializers, we should be putting props into `lib/prop_types`\n */\n\nexport const compensationInfoPropType = propTypes.shape({\n amount: propTypes.oneOfType([propTypes.number, propTypes.string]),\n compensationType: propTypes.string,\n compensationTypeId: propTypes.number,\n});\n\nexport const demographicRulePropShape = propTypes.shape({\n displayName: propTypes.string.isRequired,\n id: propTypes.string.isRequired,\n isIgnore: propTypes.bool,\n optionId: propTypes.string,\n optionIds: propTypes.arrayOf(propTypes.string),\n options: propTypes.arrayOf(\n propTypes.shape({\n displayName: propTypes.string.isRequired,\n id: propTypes.string.isRequired,\n isDefault: propTypes.bool.isRequired,\n }),\n ),\n optionSelectionType: propTypes.number.isRequired,\n range_end: propTypes.string,\n range_start: propTypes.string,\n uuid: propTypes.string,\n});\n\nexport const inPersonInterviewInfoShape = {\n parkingIsAvailable: propTypes.bool,\n parkingAdditionalInfo: propTypes.string,\n};\n\nexport const onlineInterviewInfoShape = {\n deviceRequirements: propTypes.array.isRequired,\n deviceRequirementsOptions: propTypes.array.isRequired,\n deviceSentence: propTypes.string,\n};\n\nexport const phoneInterviewInfoShape = {\n researcherWillCall: propTypes.bool,\n};\n\nexport const interviewInfoPropType = propTypes.shape({\n ...inPersonInterviewInfoShape,\n ...onlineInterviewInfoShape,\n ...phoneInterviewInfoShape,\n});\n\nexport const projectCustomEmailFieldPropType = propTypes.shape({\n example: propTypes.string,\n name: propTypes.string.isRequired,\n notes: propTypes.object,\n required: propTypes.bool.isRequired,\n tag: propTypes.string.isRequired,\n type: propTypes.string,\n value: propTypes.string,\n});\n\nexport const projectCustomEmailPropType = propTypes.shape({\n content: propTypes.string,\n defaultCopy: propTypes.string.isRequired,\n errors: propTypes.objectOf(propTypes.string),\n fields: propTypes.arrayOf(projectCustomEmailFieldPropType).isRequired,\n fromAddress: propTypes.string,\n fromName: propTypes.string,\n id: propTypes.oneOfType([propTypes.number, propTypes.string]),\n projectId: propTypes.number,\n subject: propTypes.string,\n type: propTypes.string.isRequired,\n});\n\nexport const projectRangePropType = propTypes.shape({\n endDate: propTypes.string,\n endTime: propTypes.string,\n numScheduled: propTypes.number,\n numSlots: propTypes.number,\n startDate: propTypes.string,\n startTime: propTypes.string,\n uuid: propTypes.string.isRequired,\n});\n\nexport const projectPropType = propTypes.shape({\n accountId: propTypes.number,\n compensationInfo: compensationInfoPropType,\n customEmails: propTypes.arrayOf(projectCustomEmailPropType),\n demographicRules: propTypes.arrayOf(demographicRulePropShape),\n errors: propTypes.objectOf(propTypes.string).isRequired,\n id: propTypes.number,\n interviewInfo: interviewInfoPropType,\n publicTitle: propTypes.string,\n ranges: propTypes.arrayOf(projectRangePropType).isRequired,\n studyLength: studyLengthPropType,\n studyTypeId: propTypes.number,\n targetProfessionals: propTypes.bool,\n type: propTypes.oneOf(Object.values(Types)).isRequired,\n useEmailTheme: propTypes.bool.isRequired,\n});\n","import React from 'react';\nimport * as propTypes from 'lib/prop_types';\n\nimport GoogleMapReact from 'google-map-react';\nimport { ENV } from 'lib/react_on_rails/env';\n\n// eslint-disable-next-line local-rules/css_modules\nimport * as styles from './google_map.module.scss';\n\nfunction GoogleMap({\n center,\n className = styles.DefaultWrapper,\n withMarker = false,\n}) {\n return (\n <div className={className}>\n <GoogleMapReact\n bootstrapURLKeys={{ key: ENV?.GOOGLE_BROWSER_API_KEY }}\n defaultCenter={center}\n defaultZoom={12}\n >\n {withMarker && (\n // GoogleMapReact reads lat and lng props here to place the marker\n <div className={styles.Marker} lat={center.lat} lng={center.lng} />\n )}\n </GoogleMapReact>\n </div>\n );\n}\n\nGoogleMap.propTypes = {\n center: propTypes.shape({\n lat: propTypes.number,\n lng: propTypes.number,\n }).isRequired,\n className: propTypes.string,\n withMarker: propTypes.bool,\n};\n\nexport { GoogleMap };\n","// extracted by mini-css-extract-plugin\nvar _1 = \"S67iUaNHSmJWDPfb1WM7\";\nvar _2 = \"F0iLCwXE77JY2VAzyV_t\";\nvar _3 = \"zsefrlAVIcLG85WtaxVa\";\nvar _4 = \"Pxrp2lhrBVYXg1bAWXL_\";\nvar _5 = \"Pu5vBWNO3jlwQpKWaLBW\";\nvar _6 = \"gxtB1m2YuTDPhKm36UOY\";\nvar _7 = \"ZKFmc42k8HAHWqvUHrAi\";\nvar _8 = \"hVXMpXBPZXqML__fuF9_\";\nvar _9 = \"dJtLEdBOGMayt_vAZePh\";\nvar _a = \"ZxTi1zZA6jEbU8FaKZGS\";\nvar _b = \"mRjADq8qv64vy_U08p5b\";\nvar _c = \"kRPSLMEMTMWDPpJDTifg\";\nvar _d = \"glWwItEeWCTb7lXpCcy8\";\nvar _e = \"N4zNjR1ZIyj7_e8VqPRt\";\nvar _f = \"JGVOc1rvHHlRocxHUWXO\";\nvar _10 = \"K8z78TItYUpt7i3bmJuP\";\nvar _11 = \"U5iakprFL5DZVY5eDeqD\";\nvar _12 = \"uXGUMR4NHi0ErYD8EG0J\";\nexport { _1 as \"ApplySuccessCard__detail__date\", _2 as \"BillingInfoCard__column\", _3 as \"CopyToClipboard\", _4 as \"DataConsentNotice__content__preview__body\", _5 as \"DefaultWrapper\", _6 as \"Marker\", _7 as \"MessageList__message__timestamp\", _8 as \"ParticipantProfile__participant-details__attribute-value\", _9 as \"ProjectCustomEmailSets\", _a as \"ProjectListItem__status-date\", _b as \"ProjectListing__detail\", _c as \"ProjectListing__details\", _d as \"TeamMemberInviterForm__section__invite-via-link\", _e as \"UnmoderatedTask__deadline\", _f as \"btn-link--neutral\", _10 as \"btn-outline-secondary\", _11 as \"participant-dashboard__project__info__status__string\", _12 as \"schedule-project-participant-page__time-slots\" }\n","import React, { Component } from 'react';\nimport * as propTypes from 'lib/prop_types';\n\nimport { GoogleMap } from 'common/google_map';\n\nimport { ProjectLocationDetails } from 'lib/generated_constants/project_location_details';\n\nexport default class LocationDetail extends Component {\n static propTypes = {\n address: propTypes.string,\n location: propTypes.shape({\n latitude: propTypes.number,\n longitude: propTypes.number,\n name: propTypes.string,\n }).isRequired,\n locationDetail: propTypes.string.isRequired,\n showLabel: propTypes.bool,\n };\n\n static defaultProps = {\n showLabel: true,\n };\n\n get showMap() {\n const { latitude, longitude } = this.props.location;\n\n return latitude && longitude;\n }\n\n get mapCenter() {\n const { latitude, longitude } = this.props.location;\n\n return { lat: latitude, lng: longitude };\n }\n\n renderInPerson() {\n return (\n <>\n <p>\n The study will be conducted at the researcher's location in{' '}\n {this.props.location.name}.\n </p>\n\n {this.showMap && <GoogleMap center={this.mapCenter} withMarker />}\n\n {this.props.address && (\n <p className=\"LocationDetail__address\">{this.props.address}</p>\n )}\n </>\n );\n }\n\n renderContent() {\n switch (this.props.locationDetail) {\n case ProjectLocationDetails.researcherLocation:\n return this.renderInPerson();\n case ProjectLocationDetails.participantWork:\n return <p>This study will be conducted at your workplace.</p>;\n case ProjectLocationDetails.participantHome:\n return <p>This study will be conducted at your home.</p>;\n case ProjectLocationDetails.toBeDetermined:\n return (\n <p>\n If you are accepted for the study, you will hear from the researcher\n about where the study will be conducted.\n </p>\n );\n default:\n return null;\n }\n }\n\n render() {\n return (\n // TODO RS-2398: While this component is rendered in an ERB template and the,\n // styles are affecting direct children, it has to remain a fragment as the\n // class has to be applied to the element wrapping this component.\n <>\n {this.props.showLabel && <dt>Location details</dt>}\n\n <dd>{this.renderContent()}</dd>\n </>\n );\n }\n}\n","import React, { Component } from 'react';\nimport * as propTypes from 'lib/prop_types';\n\nimport { ProjectLocationDetails } from 'lib/generated_constants/project_location_details';\n\nimport { inPersonInterviewInfoShape } from '../project_prop_types';\n\nexport default class InPersonInterviewInfo extends Component {\n static propTypes = {\n interviewInfo: propTypes.shape(inPersonInterviewInfoShape).isRequired,\n };\n\n get parkingAdditionalInfo() {\n return this.props.interviewInfo.parkingAdditionalInfo || '';\n }\n\n get hasParkingAdditionalInfo() {\n return !!this.parkingAdditionalInfo;\n }\n\n get parkingIsAvailable() {\n return this.props.interviewInfo.parkingIsAvailable || false;\n }\n\n renderParkingDetails() {\n return <div>Details: {this.parkingAdditionalInfo}</div>;\n }\n\n renderParkingIsAvailable() {\n return this.parkingIsAvailable\n ? 'Yes, there is parking available to participants.'\n : 'No, parking is not available to participants.';\n }\n\n render() {\n if (\n this.props.interviewInfo.locationDetail !==\n ProjectLocationDetails.researcherLocation\n ) {\n return null;\n }\n\n return (\n <>\n <dt>Parking provided</dt>\n <dd>\n <p>{this.renderParkingIsAvailable()}</p>\n\n {this.parkingIsAvailable && this.hasParkingAdditionalInfo && (\n <p>{this.renderParkingDetails()}</p>\n )}\n </dd>\n </>\n );\n }\n}\n","import React from 'react';\n\ntype PhoneInterviewInfoProps = {\n researcherWillCall: boolean;\n};\n\nexport function PhoneInterviewInfo({\n researcherWillCall,\n}: PhoneInterviewInfoProps) {\n const callDetails = researcherWillCall\n ? 'Researcher will call participant.'\n : 'Participant will dial in.';\n\n return (\n <dl>\n <dt>Call details</dt>\n <dd>{callDetails}</dd>\n </dl>\n );\n}\n","import React from 'react';\n\nimport { Heading } from '@user-interviews/ui-design-system';\n\ntype DeviceRequirementsDetailsProps = {\n deviceRequirements: number[];\n deviceSentence: string;\n};\n\nexport function DeviceRequirementsDetails({\n deviceRequirements,\n deviceSentence,\n}: DeviceRequirementsDetailsProps) {\n if (!deviceRequirements.length) return null;\n\n const formattedDeviceSentence = (deviceSentence.match(/[^.]+./gi) || []).map(\n (elem) => <div key={`${elem}`}>{elem}</div>,\n );\n\n return (\n <dl>\n <dt>\n <Heading level={2} size=\"xl\">\n Device requirements\n </Heading>\n </dt>\n <dd>{formattedDeviceSentence}</dd>\n </dl>\n );\n}\n","import React, { Component } from 'react';\nimport * as propTypes from 'lib/prop_types';\n\nimport * as ProjectConstants from '../project_constants';\n\nimport InPersonInterviewInfo from './in_person_interview_info';\nimport { PhoneInterviewInfo } from './phone_interview_info';\nimport { DeviceRequirementsDetails } from './device_requirements_details';\n\nexport default class ProjectInterviewInfo extends Component {\n static propTypes = {\n interviewInfo: propTypes.object.isRequired,\n interviewTypeId: propTypes.number.isRequired,\n };\n\n renderInterviewTypeComponent() {\n switch (this.props.interviewTypeId) {\n case ProjectConstants.INTERVIEW_TYPE_IN_PERSON.id:\n return <InPersonInterviewInfo {...this.props} />;\n case ProjectConstants.INTERVIEW_TYPE_PHONE.id:\n return (\n <PhoneInterviewInfo\n researcherWillCall={this.props.interviewInfo.researcherWillCall}\n />\n );\n default:\n return null;\n }\n }\n\n render() {\n return (\n <>\n {this.renderInterviewTypeComponent()}\n\n <DeviceRequirementsDetails\n deviceRequirements={this.props.interviewInfo.deviceRequirements}\n deviceSentence={this.props.interviewInfo.deviceSentence}\n />\n </>\n );\n }\n}\n","import { registerComponent } from 'lib/react_on_rails';\nimport LocationDetail from 'participant/apply/location_detail';\nimport TechnicalRequirements from 'participant/apply/technical_requirements';\nimport ProjectInterviewInfo from 'researcher/project_interview_info/project_interview_info';\n\n// eslint-disable-next-line local-rules/css_modules\nimport 'participant/apply/apply.scss';\n\nregisterComponent('LocationDetail', LocationDetail);\nregisterComponent('ProjectInterviewInfo', ProjectInterviewInfo);\nregisterComponent('TechnicalRequirements', TechnicalRequirements);\n","// TODO: TDW-SUNSET\n\n// TODO Replace with the BobEnum-generated constants\nexport const INTERVIEW_TYPE_IN_PERSON = { id: 1, displayName: 'In-person' };\nexport const INTERVIEW_TYPE_PHONE = { id: 2, displayName: 'Over the phone' };\nexport const INTERVIEW_TYPE_ONLINE = { id: 4, displayName: 'Online' };\n\nexport const STUDY_TYPE_MULTI_DAY = {\n id: 3,\n displayName: 'Multi Day Study',\n displayNoun: 'multi day study',\n};\n\nexport const STUDY_TYPE_UNMODERATED_TASK = {\n id: 4,\n displayName: 'Unmoderated Task',\n displayNoun: 'unmoderated task',\n};\n","import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport {\n faBan,\n faCircle,\n faDesktop,\n faPhone,\n faWindow,\n faLaptop,\n} from 'lib/font_awesome/regular';\n\nimport * as propTypes from 'lib/prop_types';\n\n// eslint-disable-next-line local-rules/css_modules\nimport './technical_requirements.scss';\n\nfunction TechnicalRequirements({\n browser,\n device,\n forbidden,\n phone,\n recording,\n os,\n}) {\n return (\n <>\n {phone && (\n <div className=\"TechnicalRequirements__tech-detail-item\">\n <FontAwesomeIcon className=\"icon-left\" icon={faPhone} />\n {phone}\n </div>\n )}\n {device && (\n <div className=\"TechnicalRequirements__tech-detail-item\">\n <FontAwesomeIcon className=\"icon-left\" icon={faDesktop} />\n {device}\n </div>\n )}\n {os && (\n <div className=\"TechnicalRequirements__tech-detail-item\">\n <FontAwesomeIcon className=\"icon-left\" icon={faLaptop} />\n {os}\n </div>\n )}\n {browser && (\n <div className=\"TechnicalRequirements__tech-detail-item\">\n <FontAwesomeIcon className=\"icon-left\" icon={faWindow} />\n {browser}\n </div>\n )}\n {recording && (\n <div className=\"TechnicalRequirements__tech-detail-item\">\n <FontAwesomeIcon className=\"icon-left\" icon={faCircle} />\n {recording}\n </div>\n )}\n {forbidden && (\n <div className=\"TechnicalRequirements__tech-detail-item\">\n <FontAwesomeIcon className=\"icon-left\" icon={faBan} />\n {forbidden}\n </div>\n )}\n </>\n );\n}\n\nTechnicalRequirements.propTypes = {\n browser: propTypes.string,\n device: propTypes.string,\n forbidden: propTypes.string,\n os: propTypes.string,\n phone: propTypes.string,\n recording: propTypes.string,\n};\n\nexport default TechnicalRequirements;\n"],"names":["compensationInfoPropType","propTypes","amount","compensationType","compensationTypeId","demographicRulePropShape","displayName","isRequired","id","isIgnore","optionId","optionIds","options","isDefault","optionSelectionType","range_end","range_start","uuid","inPersonInterviewInfoShape","parkingIsAvailable","parkingAdditionalInfo","onlineInterviewInfoShape","deviceRequirements","deviceRequirementsOptions","deviceSentence","phoneInterviewInfoShape","researcherWillCall","interviewInfoPropType","_objectSpread","projectCustomEmailFieldPropType","example","name","notes","required","tag","type","value","projectCustomEmailPropType","content","defaultCopy","errors","fields","fromAddress","fromName","projectId","subject","projectRangePropType","endDate","endTime","numScheduled","numSlots","startDate","startTime","accountId","compensationInfo","customEmails","demographicRules","interviewInfo","publicTitle","ranges","studyLength","studyLengthPropType","studyTypeId","targetProfessionals","Object","values","Types","useEmailTheme","GoogleMap","center","className","withMarker","React","GoogleMapReact","bootstrapURLKeys","key","ENV","GOOGLE_BROWSER_API_KEY","defaultCenter","defaultZoom","lat","lng","LocationDetail","Component","showMap","_this$props$location","this","props","location","latitude","longitude","mapCenter","_this$props$location2","renderInPerson","address","renderContent","locationDetail","ProjectLocationDetails","researcherLocation","participantWork","participantHome","toBeDetermined","render","showLabel","defaultProps","InPersonInterviewInfo","hasParkingAdditionalInfo","renderParkingDetails","renderParkingIsAvailable","PhoneInterviewInfo","callDetails","DeviceRequirementsDetails","length","formattedDeviceSentence","match","map","elem","Heading","level","size","ProjectInterviewInfo","renderInterviewTypeComponent","interviewTypeId","ProjectConstants","registerComponent","TechnicalRequirements","INTERVIEW_TYPE_IN_PERSON","INTERVIEW_TYPE_PHONE","INTERVIEW_TYPE_ONLINE","STUDY_TYPE_MULTI_DAY","displayNoun","STUDY_TYPE_UNMODERATED_TASK","browser","device","forbidden","phone","recording","os","FontAwesomeIcon","icon","faPhone","faDesktop","faLaptop","faWindow","faCircle","faBan"],"sourceRoot":""}