{"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":""}