{"version":3,"file":"js/1862-392c0c2006923c48c71c.chunk.js","mappings":"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","sources":["webpack://halo/./app/client/src/hooks/useIsVisible.ts","webpack://halo/./app/client/src/requests/requestForStartupProposals.ts","webpack://halo/./app/client/src/requests/requestForStartups.ts","webpack://halo/./app/client/src/components/modals/NotifyModal.tsx","webpack://halo/./app/client/src/views/RequestForStartupPage/DataPoints.tsx","webpack://halo/./app/client/src/utils/requestForStartupUtils.ts","webpack://halo/./app/client/src/views/RequestForStartupPage/RfsCta.tsx","webpack://halo/./app/client/src/views/RequestForStartupPage/RequestForStartupPage.tsx","webpack://halo/./app/client/src/views/RequestForStartupPage/Sidebar.tsx","webpack://halo/./app/client/src/views/RequestForStartupPage/Status.tsx"],"sourcesContent":["import { RefObject, useEffect, useMemo, useState } from \"react\";\n\nexport default function useIsVisible(ref: RefObject<HTMLElement>) {\n  const [isIntersecting, setIsIntersecting] = useState(false);\n\n  const observer = useMemo(\n    () => new IntersectionObserver(([entry]) => setIsIntersecting(entry.isIntersecting)),\n    [ref]\n  );\n\n  useEffect(() => {\n    if (!ref.current) return;\n    observer.observe(ref.current);\n    return () => observer.disconnect();\n  }, [ref]);\n\n  return isIntersecting;\n}\n","import { RequestForStartupProposalDraft } from \"@tsTypes/request_for_startup_proposals/draft\";\nimport { RequestForStartupProposalShowResponse } from \"@tsTypes/request_for_startup_proposals/show\";\nimport api from \"./request\";\n\nexport const getRfsProposal = async (\n  proposalSlug: string\n): Promise<RequestForStartupProposalShowResponse> => {\n  const response = await api.get(`/request_for_startup_proposals/${proposalSlug}`);\n  return response.data;\n};\n\nexport const getRfsProposalForProposalForm = async (\n  proposalSlug: string\n): Promise<RequestForStartupProposalDraft> => {\n  const response = await api.get(\n    `/request_for_startup_proposals/${proposalSlug}?for_proposal_form=true`\n  );\n  return response.data.proposal;\n};\n\nexport const updateRfsProposal = async (\n  proposalId: number,\n  proposal: RequestForStartupProposalDraft\n): Promise<RequestForStartupProposalDraft> => {\n  const response = await api.put(`/request_for_startup_proposals/${proposalId}`, {\n    proposal,\n  });\n  return response.data.proposal;\n};\n\nexport const getDraftRfsProposal = async (\n  requestSlug: string\n): Promise<RequestForStartupProposalDraft | null> => {\n  const response = await api.get(`/request_for_startup_proposals/draft/${requestSlug}`);\n  return response.data.proposal ?? null;\n};\n\nexport const saveDraftRfsProposal = async (\n  requestSlug: string,\n  proposal: RequestForStartupProposalDraft\n): Promise<RequestForStartupProposalDraft> => {\n  const response = await api.post(`/request_for_startup_proposals/draft/${requestSlug}`, {\n    proposal,\n  });\n  return response.data.proposal;\n};\n","import { request_for_startups_path } from \"@routes/routes\";\nimport { CommercialApplicationPageRequestForStartupsResponse } from \"@tsTypes/index\";\nimport { RequestForStartupIndexResponse } from \"@tsTypes/request_for_startups\";\nimport { RequestForStartupMarketplaceFilterOptionsResponse } from \"@tsTypes/request_for_startups/marketplace_filter_options\";\nimport { RequestForStartupsShowResponse } from \"@tsTypes/request_for_startups/show\";\nimport api from \"./request\";\n\nexport const getMarketplaceRequestForStartups = async ({\n  searchFilter,\n  commercialApplicationsFilter,\n}: {\n  searchFilter: string;\n  commercialApplicationsFilter: string[];\n}): Promise<RequestForStartupIndexResponse> => {\n  const response = await api.get(\"/request_for_startups\", {\n    params: {\n      options: {\n        search_filter: searchFilter,\n        commercial_applications_filter: commercialApplicationsFilter,\n      },\n    },\n  });\n  return response.data.requests;\n};\n\nexport const getMarketplaceRequestForStartupsFilterOptions =\n  async (): Promise<RequestForStartupMarketplaceFilterOptionsResponse> => {\n    const response = await api.get(\"/request_for_startup_marketplace_filter_options\");\n    return response.data;\n  };\n\nexport const getCommercialApplicationPageRequestForStartups = async (\n  commercialApplicationId: number,\n  pageNum: number\n): Promise<CommercialApplicationPageRequestForStartupsResponse> => {\n  const response = await api.get(request_for_startups_path(), {\n    params: {\n      commercial_application_id: commercialApplicationId,\n      page_num: pageNum,\n    },\n  });\n\n  return response.data;\n};\n\nexport const getRequestForStartup = async (\n  slug: string\n): Promise<RequestForStartupsShowResponse> => {\n  const response = await api.get(`/request_for_startups/${slug}`);\n  if (response.data.redirect) {\n    window.location.href = response.data.redirect;\n  }\n  return response.data.request;\n};\n","import { BlankModal, Icon } from \"@components/library\";\nimport Button from \"@components/library/Buttons/Button\";\nimport { BlankModalProps } from \"@components/library/ModalBases/BlankModal\";\nimport { COLORS, FONTS } from \"@constants\";\nimport useFollowRequest from \"@hooks/useFollowRequest\";\nimport { RequestForStartupsShowResponse } from \"@tsTypes/request_for_startups/show\";\nimport dayjs from \"dayjs\";\nimport styled from \"styled-components\";\n\ninterface Props extends BlankModalProps {\n  request: RequestForStartupsShowResponse;\n}\n\nconst NotifyModal = ({ request, isOpen, onClose }: Props) => {\n  const { handleFollowRequest, isUserFollowing } = useFollowRequest(\n    request.id,\n    true /* shouldSkipFollowOnRedirect */\n  );\n\n  return (\n    <BlankModal onClose={onClose} isOpen={isOpen} width=\"540px\" backgroundMode=\"blur\">\n      <ModalContent data-testid=\"notify-modal\">\n        <Icon name=\"Notification Filled\" margin=\"10px auto 0\" />\n        <Header>Stay in the loop</Header>\n        <SubHeader>\n          {request.requestable.launch_date && !request.requestable.unknown_launch_date\n            ? `Thanks for your interest in ${\n                request.title\n              }. Get notified when applications open on ${dayjs(\n                request.requestable.launch_date\n              ).format(\"MMM D, YYYY\")}.`\n            : `Thanks for your interest in ${request.title}. Get notified when applications open.`}\n        </SubHeader>\n        {isUserFollowing ? (\n          <SuccessText data-testid=\"notify-success-text\">\n            <Icon name=\"Success\" color={COLORS.GREEN} size=\"sm\" />\n            You&apos;ll be notified.\n          </SuccessText>\n        ) : (\n          <Button\n            width=\"100%\"\n            iconName=\"Bell\"\n            onClick={handleFollowRequest}\n            data-testid=\"notify-me-button\"\n          >\n            Notify me\n          </Button>\n        )}\n      </ModalContent>\n    </BlankModal>\n  );\n};\n\nexport default NotifyModal;\n\nconst ModalContent = styled.div`\n  text-align: center;\n  justify-content: center;\n  margin: auto;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  padding: 60px 93px;\n  width: 100%;\n  height: 100%;\n`;\nconst Header = styled.h3`\n  color: ${COLORS.BLACK};\n  ${FONTS.HEADING_3_SEMIBOLD};\n  margin: 4px 0px 0px 0px;\n`;\nconst SubHeader = styled.h6`\n  width: 355px;\n  color: ${COLORS.NEUTRAL_500};\n  ${FONTS.REGULAR_2}\n`;\nconst SuccessText = styled.div`\n  display: flex;\n  align-items: center;\n  gap: 4px;\n  height: 42px;\n  color: ${COLORS.GREEN};\n  ${FONTS.REGULAR_2}\n`;\n","import Icon, { IconName } from \"@components/library/Icon/Icon\";\nimport { COLORS, FONTS, WINDOW_DIMENSIONS } from \"@constants\";\nimport i18n from \"@locales\";\nimport { RootState } from \"@redux/store\";\nimport { RequestForStartupsShowResponse } from \"@tsTypes/request_for_startups/show\";\nimport { t } from \"@utils/i18n\";\nimport { ReactElement } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport styled from \"styled-components\";\n\ninterface Props {\n  request: RequestForStartupsShowResponse;\n}\n\ntype DataPoint = {\n  key: string;\n  iconName: IconName;\n  content: string | ReactElement | null;\n};\n\nconst i18nPrefix = \"pages.request_for_startups_page.data_points\";\n\nexport default function DataPoints({ request }: Props) {\n  const isMobile = useSelector((state: RootState) => state.window.isMobile);\n\n  const dataPoints: DataPoint[] = [];\n\n  if (request.requestable.participation_type) {\n    dataPoints.push({\n      key: \"participation_type\",\n      iconName: \"Location\",\n      content: t([i18nPrefix, \"participation_type\", request.requestable.participation_type]),\n    });\n  }\n\n  if (request.requestable.max_accepted) {\n    dataPoints.push({\n      key: \"max_accepted\",\n      iconName: \"Organization\",\n      content: t([i18nPrefix, \"max_accepted\"], { count: request.requestable.max_accepted }),\n    });\n  }\n\n  if (request.requestable.duration_in_weeks) {\n    let i18nKey = \"duration.weeks\";\n    let count = request.requestable.duration_in_weeks;\n\n    if (request.requestable.duration_in_weeks % 4 === 0) {\n      i18nKey = \"duration.months\";\n      count = request.requestable.duration_in_weeks / 4;\n    }\n\n    dataPoints.push({\n      key: \"duration\",\n      iconName: \"History\",\n      content: t([i18nPrefix, i18nKey], { count }),\n    });\n  }\n\n  if (typeof request.requestable.funding_amount_usd === \"number\") {\n    let content = \"\";\n\n    if (request.requestable.funding_amount_usd === 0) {\n      content = t([i18nPrefix, \"no_funding\"]);\n    } else {\n      content = t([i18nPrefix, \"funding\"], {\n        count: i18n.numberToCurrency(request.requestable.funding_amount_usd, { precision: 0 }),\n      });\n    }\n\n    dataPoints.push({ key: \"funding\", iconName: \"Funding\", content });\n  }\n\n  if (request.requestable.alumni_count) {\n    dataPoints.push({\n      key: \"alumni\",\n      iconName: \"Organization\",\n      content: t([i18nPrefix, \"alumni\"], { count: request.requestable.alumni_count }),\n    });\n  }\n\n  if (request.requestable.equity_percentage) {\n    dataPoints.push({\n      key: \"equity\",\n      iconName: \"Funding\",\n      content: t([i18nPrefix, \"equity\"], { equity: request.requestable.equity_percentage }),\n    });\n  }\n\n  const miscDataPoints: DataPoint[] = [\n    { key: \"misc_time\", iconName: \"History\", content: request.requestable.misc_time },\n    { key: \"misc_building\", iconName: \"Organization\", content: request.requestable.misc_building },\n    { key: \"misc_person\", iconName: \"Employees\", content: request.requestable.misc_person },\n    { key: \"misc_rocket\", iconName: \"Accelerator\", content: request.requestable.misc_rocket },\n    { key: \"misc_dollar\", iconName: \"Funding\", content: request.requestable.misc_dollar },\n  ];\n\n  miscDataPoints.forEach(({ key, iconName, content }) => {\n    if (content) {\n      dataPoints.push({ key, iconName, content });\n    }\n  });\n\n  return (\n    <Container count={dataPoints.length}>\n      {dataPoints.map(({ key, iconName, content }) => (\n        <DataPoint key={\"dataPoint-\" + key}>\n          <Icon\n            name={iconName}\n            size=\"md\"\n            color={isMobile ? COLORS.NEUTRAL_400 : COLORS.BLUE_LIGHT_600}\n          />\n          {content}\n        </DataPoint>\n      ))}\n    </Container>\n  );\n}\n\nconst Container = styled.div`\n  display: flex;\n  align-items: center;\n  margin: 40px 0;\n  gap: 96px;\n\n  ${WINDOW_DIMENSIONS.TABLET_MEDIA_QUERY} {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    grid-gap: 12px;\n  }\n\n  ${WINDOW_DIMENSIONS.MOBILE_MEDIA_QUERY} {\n    grid-template-columns: 1fr;\n    border: 1px solid ${COLORS.NEUTRAL_200};\n    border-radius: 8px;\n    padding: 16px;\n  }\n`;\n\nconst DataPoint = styled.div`\n  display: flex;\n  align-items: center;\n  gap: 6px;\n  color: ${COLORS.BLUE_900};\n  ${FONTS.MEDIUM_2}\n\n  ${WINDOW_DIMENSIONS.MOBILE_MEDIA_QUERY} {\n    color: ${COLORS.BLACK};\n  }\n`;\n","export const rfsSubmitUrl = (slug: string) => `/submit/request_for_startup/${slug}`;\n","import { Button, Icon } from \"@components/library\";\nimport RefineRecommendations from \"@components/RequestPageComponents/RefineRecommendations\";\nimport { COLORS, FEATURE_FLAGS, FONTS, STYLES, WINDOW_DIMENSIONS } from \"@constants\";\nimport useFollowRequest from \"@hooks/useFollowRequest\";\nimport { toggleLoginModal } from \"@redux/actions/profileActions\";\nimport { RootState } from \"@redux/store\";\nimport { getDraftRfsProposal } from \"@requests/requestForStartupProposals\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport { SegmentEventName } from \"@tsTypes/__generated__/enums\";\nimport { RequestForStartupsShowResponse } from \"@tsTypes/request_for_startups/show\";\nimport { LaunchableRequestStatus } from \"@tsTypes/requests\";\nimport { UserRole } from \"@tsTypes/users\";\nimport { track } from \"@utils/appUtils\";\nimport { setPrevUrlCookie } from \"@utils/authUtils\";\nimport { t } from \"@utils/i18n\";\nimport { rfsSubmitUrl } from \"@utils/requestForStartupUtils\";\nimport { getLaunchableRequestStatus } from \"@utils/requestUtils\";\nimport { ReactNode } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useHistory } from \"react-router-dom\";\nimport styled from \"styled-components\";\nimport Status from \"./Status\";\n\ninterface Props {\n  request: RequestForStartupsShowResponse;\n  onShare: () => void;\n}\n\nexport default function Cta({ request, onShare }: Props) {\n  const currentUser = useSelector((state: RootState) => state.profiles.currentUser);\n  const history = useHistory();\n  const dispatch = useDispatch();\n\n  const { data: draft } = useQuery({\n    queryKey: [\"requestForStartupDraft\", request.slug],\n    queryFn: () => getDraftRfsProposal(request.slug),\n    enabled: Boolean(request.slug) && currentUser.role === UserRole.SCIENTIST,\n  });\n  const hasDraft = Boolean(draft);\n\n  const status = getLaunchableRequestStatus(request as any);\n  const canApply =\n    currentUser.role !== UserRole.UNIVERSITY_ADMIN &&\n    (status === LaunchableRequestStatus.ACTIVE || status === LaunchableRequestStatus.IN_EXTENSION);\n\n  const handleSubmitClick = () => {\n    track(SegmentEventName.Click, {\n      ui_component: \"Request for Startup Page - Submit internal button\",\n      request_slug: request.slug,\n      is_logged_in: Boolean(currentUser.id),\n    });\n    const submitUrl = rfsSubmitUrl(request.slug);\n    if (currentUser.id) {\n      history.push(submitUrl);\n    } else {\n      setPrevUrlCookie(submitUrl);\n      dispatch(toggleLoginModal({ open: true }));\n    }\n  };\n\n  const handleShareClick = () => {\n    track(SegmentEventName.Click, {\n      ui_component: \"Request for Startup Page - Share button\",\n      request_slug: request.slug,\n      is_logged_in: Boolean(currentUser.id),\n    });\n    if (currentUser.id) {\n      onShare();\n    } else {\n      setPrevUrlCookie(window.location.pathname);\n      dispatch(toggleLoginModal({ open: true }));\n    }\n  };\n\n  const { handleFollowRequest, isUserFollowing } = useFollowRequest(request.id);\n\n  const handleNotify = () => {\n    track(SegmentEventName.Click, {\n      ui_component: \"Request for Startup Page - Notify button\",\n      request_slug: request.slug,\n    });\n\n    handleFollowRequest();\n  };\n\n  let text = t(\"pages.request_for_startups_page.cta.text.share\");\n  const buttons: ReactNode[] = [\n    <Button\n      key=\"cta-share-button\"\n      iconName=\"Share\"\n      width=\"100%\"\n      onClick={handleShareClick}\n      variant={\n        canApply ||\n        status === LaunchableRequestStatus.COMING_SOON ||\n        status === LaunchableRequestStatus.CLOSED\n          ? \"secondary\"\n          : \"primary\"\n      }\n    >\n      {t(\"pages.request_for_startups_page.cta.button.share\")}\n    </Button>,\n  ];\n\n  if (status === LaunchableRequestStatus.COMING_SOON || status === LaunchableRequestStatus.CLOSED) {\n    text = t(\"pages.request_for_startups_page.cta.text.coming_soon\");\n    buttons.unshift(\n      isUserFollowing ? (\n        <FollowingConfirmation>\n          <Icon color={COLORS.GREEN} margin=\"0 4px 0 0\" name=\"Success\" />\n          You&apos;ll be notified\n        </FollowingConfirmation>\n      ) : (\n        <Button\n          key=\"cta-notify-button\"\n          iconName=\"Bell\"\n          iconPosition=\"left\"\n          margin=\"0 0 10px\"\n          width=\"100%\"\n          onClick={handleNotify}\n        >\n          {t(\"pages.request_for_startups_page.cta.button.coming_soon\")}\n        </Button>\n      )\n    );\n  } else if (request.requestable.external_url) {\n    text = t(\"pages.request_for_startups_page.cta.text.external\");\n    buttons.unshift(\n      <a href={request.requestable.external_url} target=\"_blank\" rel=\"noreferrer\">\n        <Button\n          key=\"cta-submit-button\"\n          iconName=\"Open in a new tab\"\n          iconPosition=\"right\"\n          margin=\"0 0 10px\"\n          width=\"100%\"\n          onClick={() => {\n            track(SegmentEventName.Click, {\n              ui_component: \"Request for Startup Page - Submit external button\",\n              request_slug: request.slug,\n            });\n          }}\n        >\n          {t(\"pages.request_for_startups_page.cta.button.external\")}\n        </Button>\n      </a>\n    );\n  } else if (canApply) {\n    text = t(\"pages.request_for_startups_page.cta.text.submit\");\n    buttons.unshift(\n      <Button\n        key=\"cta-submit-button\"\n        iconName={hasDraft ? \"Attention\" : \"Easy Apply\"}\n        margin=\"0 0 10px\"\n        width=\"100%\"\n        onClick={handleSubmitClick}\n        disabled={currentUser.role === UserRole.SPONSOR}\n      >\n        {t([\"pages.request_for_startups_page.cta.button\", hasDraft ? \"continue\" : \"submit\"])}\n      </Button>\n    );\n  }\n\n  return (\n    <Container>\n      <TopContainer $showBorder={FEATURE_FLAGS.RELEVANT_NOT_RELEVANT_BUTTONS}>\n        {text}\n        <StatusContainer>\n          <Status request={request as any} iconPosition=\"left\" />\n        </StatusContainer>\n        {buttons}\n      </TopContainer>\n      {FEATURE_FLAGS.RELEVANT_NOT_RELEVANT_BUTTONS && (\n        <RefineRecommendations\n          request={request}\n          isComplete={status === LaunchableRequestStatus.CLOSED}\n        />\n      )}\n    </Container>\n  );\n}\n\nconst Container = styled.div`\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n\n  min-width: 313px;\n  width: 100%;\n\n  border-radius: 8px;\n  border: 1px solid ${COLORS.NEUTRAL_250};\n  box-shadow: ${STYLES.SHADOW_B};\n\n  ${FONTS.HEADING_4_SEMIBOLD}\n\n  ${WINDOW_DIMENSIONS.TABLET_LANDSCAPE_MEDIA_QUERY} {\n    margin-top: 40px;\n  }\n`;\n\nconst TopContainer = styled.div<{ $showBorder: boolean }>`\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n\n  width: 100%;\n  padding: 40px 32px 24px;\n\n  ${({ $showBorder }) => $showBorder && `border-bottom: 1px solid ${COLORS.NEUTRAL_250};`}\n`;\n\nconst StatusContainer = styled.div`\n  margin: 18px 0;\n`;\nconst FollowingConfirmation = styled.div`\n  display: flex;\n  align-items: center;\n  height: 42px;\n  color: ${COLORS.GREEN};\n  ${FONTS.MEDIUM_2};\n  margin: 0 auto 10px;\n`;\n","import InviteModal from \"@components/InviteModal\";\nimport RequestDiscussion from \"@components/RequestDiscussion/RequestDiscussion\";\nimport RequestFAQs from \"@components/RequestFAQs\";\nimport { RequestPageBanner } from \"@components/RequestPageComponents\";\nimport TRLs from \"@components/TRLs\";\nimport toast from \"@components/Toast\";\nimport { Icon, PageContainer, Tag, TagTooltip, TextLink, Tooltip } from \"@components/library\";\nimport NotifyModal from \"@components/modals/NotifyModal\";\nimport { COLORS, FONTS, WINDOW_DIMENSIONS } from \"@constants\";\nimport { RootState } from \"@redux/store\";\nimport { getRequestForStartup } from \"@requests/requestForStartups\";\nimport { marketplacePath } from \"@routes/utils\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport { SegmentEventName } from \"@tsTypes/__generated__/enums\";\nimport { LaunchableRequestStatus } from \"@tsTypes/requests\";\nimport { getArrayFromRubyRange, track } from \"@utils/appUtils\";\nimport { t } from \"@utils/i18n\";\nimport { getLaunchableRequestStatus } from \"@utils/requestUtils\";\nimport { toastErrorHandler } from \"@utils/requests\";\nimport { renderMarkdownText, renderMarkdownTextWithDangerousHTML } from \"@utils/textUtils\";\nimport { useEffect, useLayoutEffect, useRef, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { useHistory, useParams } from \"react-router-dom\";\nimport { Loader } from \"semantic-ui-react\";\nimport { MAX_KEYWORD_DISPLAY_COUNT } from \"src/constants/requests\";\nimport styled from \"styled-components\";\nimport AboutCompany from \"../../components/RequestPageComponents/AboutCompany\";\nimport Benefits from \"../RFPPage/Benefits\";\nimport { TRLsContainer, TrlTagContent } from \"../RFPPage/RfpPage\";\nimport DataPoints from \"./DataPoints\";\nimport Cta from \"./RfsCta\";\nimport Sidebar from \"./Sidebar\";\n\nexport default function RequestForStartupPage() {\n  const [isShareModalOpen, setIsShareModalOpen] = useState(false);\n  const [isCommenting, setIsCommenting] = useState(false);\n\n  const currentUser = useSelector((state: RootState) => state.profiles.currentUser);\n  const isTabletLandscape = useSelector((state: RootState) => state.window.isTabletLandscape);\n  const { slug } = useParams();\n  const history = useHistory();\n\n  const { data: request, isLoading } = useQuery(\n    [\"getRequestForStartup\", slug],\n    () => getRequestForStartup(slug),\n    {\n      enabled: Boolean(slug),\n      onError: toastErrorHandler,\n    }\n  );\n\n  useEffect(() => {\n    if (!request) return;\n\n    document.title = `${request.title} | Startup Program | Halo`;\n  }, [request]);\n\n  const backgroundRef = useRef<HTMLDivElement>(null);\n  const lookingForRef = useRef<HTMLDivElement>(null);\n  const benefitsRef = useRef<HTMLDivElement>(null);\n  const whoWeAreRef = useRef<HTMLDivElement>(null);\n  const qaRef = useRef<HTMLDivElement>(null);\n\n  useEffect(() => {\n    if (!request?.id) {\n      return;\n    }\n\n    track(SegmentEventName.View, {\n      request_id: request.id,\n      requestable: {\n        requestable_id: request.id,\n        requestable_type: request.requestable_type,\n      },\n      react_component: \"RequestForStartupPage\",\n    });\n  }, [request?.id]);\n\n  useLayoutEffect(() => {\n    let animationFrameId: number;\n\n    const checkAndScroll = () => {\n      if (window.location.hash === \"#qa\" && qaRef.current) {\n        qaRef.current.scrollIntoView({ behavior: \"smooth\" });\n      } else {\n        animationFrameId = requestAnimationFrame(checkAndScroll);\n      }\n    };\n\n    checkAndScroll();\n\n    return () => {\n      if (animationFrameId) {\n        cancelAnimationFrame(animationFrameId);\n      }\n    };\n  }, [qaRef]);\n\n  if (isLoading || !request) {\n    return <Loader inline=\"centered\" />;\n  }\n\n  const trlRange = request.requestable.trl_range\n    ? getArrayFromRubyRange(request.requestable.trl_range)\n    : null;\n\n  return (\n    <>\n      <InviteModal\n        open={isShareModalOpen}\n        requestId={request.id}\n        closeModal={() => setIsShareModalOpen(false)}\n        trackAndToastHandler={() => toast.success(\"Startup program shared\")}\n        inviteMessage=\"\"\n        inviteUrl=\"/notifications/share_rfp\"\n        modalHeader={`Share this opportunity with ${\n          currentUser.role === 2 ? \"faculty\" : \"colleagues\"\n        }`}\n        modalSubheader={`Your ${\n          currentUser.role === 2 ? \"faculty\" : \"colleague(s)\"\n        } will receive an email with a link to this opportunity`}\n        inviteSubject={`${currentUser.first_name} ${currentUser.last_name} shared a funding opportunity with you.`}\n        typeOfInvite=\"shareRFP\"\n      />\n      <NotifyModal\n        isOpen={\n          getLaunchableRequestStatus(request as any) === LaunchableRequestStatus.COMING_SOON &&\n          !request.requestable.accessible_before_launch_date\n        }\n        onClose={() => history.push(marketplacePath(\"startup_programs\"))}\n        request={request}\n      />\n      <PageContainer hasPaddingTop={false} maxWidth=\"1680px\">\n        <Breadcrumb>\n          <TextLink to={marketplacePath(\"startup_programs\")} font={FONTS.MEDIUM_2}>\n            <Icon name=\"Chevron Left\" margin=\"0 0 0 -8px\" />\n            {t(\"pages.request_for_startups_page.breadcrumb\")}\n          </TextLink>\n        </Breadcrumb>\n        <BannerContainer>\n          <RequestPageBanner request={request} />\n        </BannerContainer>\n        {isTabletLandscape && <Cta request={request} onShare={() => setIsShareModalOpen(true)} />}\n        <DataPoints request={request} />\n        <Columns>\n          <Left>\n            <Sidebar\n              backgroundRef={backgroundRef}\n              lookingForRef={lookingForRef}\n              benefitsRef={benefitsRef}\n              whoWeAreRef={whoWeAreRef}\n              qaRef={qaRef}\n            />\n          </Left>\n          <Center>\n            <Summary>{request.requestable.summary}</Summary>\n            <Section ref={backgroundRef} withNewlines>\n              <Heading>{t(\"pages.request_for_startups_page.headings.background\")}</Heading>\n              {renderMarkdownTextWithDangerousHTML(request.requestable.background)}\n            </Section>\n            <Section ref={lookingForRef}>\n              <Heading>{t(\"pages.request_for_startups_page.headings.looking_for\")}</Heading>\n              <div>\n                <Subheading>\n                  {t(\"pages.request_for_startups_page.looking_for.subheading\")}\n                </Subheading>\n                <ListHeading>\n                  {t(\"pages.request_for_startups_page.looking_for.list_heading\")}\n                </ListHeading>\n                {renderMarkdownText(request.requestable.solutions_of_interest)}\n              </div>\n              <div>\n                <Subheading first>\n                  {t(\"pages.request_for_startups_page.headings.eligible_country_codes.heading\")}\n                </Subheading>\n                {request.requestable.eligible_country_names &&\n                request.requestable.eligible_country_names.length > 1 ? (\n                  <>\n                    <div style={{ marginBottom: \"5px\" }}>\n                      {t(\n                        \"pages.request_for_startups_page.headings.eligible_country_codes.list_heading\"\n                      )}\n                    </div>\n                    <PlainList>\n                      {request.requestable.eligible_country_names.map((country) => (\n                        <li key={country}>{country}</li>\n                      ))}\n                    </PlainList>\n                  </>\n                ) : (\n                  <PlainList>\n                    <li>\n                      {t(\"pages.request_for_startups_page.headings.eligible_country_codes.body\", {\n                        locations: request.requestable.eligible_country_names?.length\n                          ? request.requestable.eligible_country_names.join(\", \")\n                          : t(\n                              \"pages.request_for_startups_page.headings.eligible_country_codes.all\"\n                            ),\n                      })}\n                    </li>\n                  </PlainList>\n                )}\n              </div>\n              {Boolean(request.requestable.eligible_startup_stages?.length) && (\n                <div>\n                  <Subheading>\n                    {t(\"pages.request_for_startups_page.headings.eligible_startup_stages.heading\")}\n                  </Subheading>\n                  <div style={{ marginBottom: \"5px\" }}>\n                    {t(\n                      \"pages.request_for_startups_page.headings.eligible_startup_stages.list_heading\"\n                    )}\n                  </div>\n                  <PlainList>\n                    {request.requestable.eligible_startup_stages!.map((stage) => (\n                      <li key={`stage-${stage}`}>{stage}</li>\n                    ))}\n                  </PlainList>\n                </div>\n              )}\n              {trlRange ? (\n                <TRLsContainer>\n                  <Subheading>{t(\"pages.request_for_startups_page.trl.heading\")}</Subheading>\n                  <ListHeading style={{ margin: \"-15px 0 10px\" }}>\n                    {t(\"pages.request_for_startups_page.trl.list_heading\")}\n                  </ListHeading>\n                  <Tag\n                    content={\n                      <TrlTagContent>\n                        {trlRange[0] === trlRange[1]\n                          ? `Level ${trlRange[0]}`\n                          : `Levels ${trlRange[0]}-${trlRange[1]}`}\n                        <Tooltip\n                          content={t(\"pages.request_for_startups_page.trl.tooltip\")}\n                          tooltipWidth=\"410px\"\n                        >\n                          <Icon name=\"Info\" size=\"xs\" color={COLORS.NEUTRAL_400} />\n                        </Tooltip>\n                      </TrlTagContent>\n                    }\n                    size=\"md\"\n                    margin=\"-10px 0 10px 0\"\n                  />\n                  <TRLs trlRange={trlRange} />\n                </TRLsContainer>\n              ) : null}\n            </Section>\n            <span ref={benefitsRef}>\n              <Benefits\n                partnershipModels={[]}\n                fundingBenefits={request.funding_benefits}\n                nonMonetaryBenefits={request.non_monetary_benefits}\n                withMarginTop={false}\n              />\n            </span>\n            <span ref={whoWeAreRef}>\n              <AboutCompany\n                withMarginTop={false}\n                request={request}\n                customText={request.requestable.who_we_are ?? undefined}\n                lineHeight=\"1.7\"\n              />\n            </span>\n            <div ref={qaRef}>\n              <RequestDiscussion\n                request={request}\n                isCommenting={isCommenting}\n                setIsCommenting={setIsCommenting}\n                setIsShareModalOpen={setIsShareModalOpen}\n              />\n            </div>\n          </Center>\n          <Right>\n            {!isTabletLandscape && (\n              <Cta request={request} onShare={() => setIsShareModalOpen(true)} />\n            )}\n            {request.requestable.display_location && (\n              <div>\n                <h3>{t(\"pages.request_for_startups_page.headings.locations\")}</h3>\n                <p>{request.requestable.display_location}</p>\n              </div>\n            )}\n            {request.areas_of_expertise.length > 0 && (\n              <div>\n                <h3>Relevant Keywords</h3>\n                <AreasOfExpertise>\n                  {request.areas_of_expertise.slice(0, MAX_KEYWORD_DISPLAY_COUNT).map((area) => (\n                    <Tag key={area} content={area} size=\"sm\" theme=\"neutral\" />\n                  ))}\n                  {request.areas_of_expertise.length > MAX_KEYWORD_DISPLAY_COUNT && (\n                    <TagTooltip\n                      tags={request.areas_of_expertise\n                        .slice(MAX_KEYWORD_DISPLAY_COUNT)\n                        .map((area) => (\n                          <Tag key={area} content={area} size=\"sm\" theme=\"neutral\" />\n                        ))}\n                    >\n                      <Tag\n                        content={`${\n                          request.areas_of_expertise.length - MAX_KEYWORD_DISPLAY_COUNT\n                        } more`}\n                        size=\"sm\"\n                        theme=\"neutral\"\n                      />\n                    </TagTooltip>\n                  )}\n                </AreasOfExpertise>\n              </div>\n            )}\n            {/* Custom FAQs for Bayer Co-Lab Cambridge RFS */}\n            {request.slug === \"co-lab-cambridge\" && <RequestFAQs request={request as any} />}\n          </Right>\n        </Columns>\n      </PageContainer>\n    </>\n  );\n}\n\n// Exported styles are also used in RequestForExpertsPage\nexport const Breadcrumb = styled.div`\n  margin-top: 24px;\n`;\n\nexport const Columns = styled.div`\n  display: flex;\n  flex-direction: row;\n  gap: 20px;\n\n  ${WINDOW_DIMENSIONS.TABLET_LANDSCAPE_MEDIA_QUERY} {\n    flex-direction: column-reverse;\n  }\n`;\n\nexport const Left = styled.div`\n  flex: 0 0 196px;\n\n  ${WINDOW_DIMENSIONS.TABLET_LANDSCAPE_MEDIA_QUERY} {\n    display: none;\n  }\n`;\n\nexport const Center = styled.div`\n  flex: 1;\n\n  display: flex;\n  flex-direction: column;\n  gap: 64px;\n\n  padding-right: 46px;\n\n  ${WINDOW_DIMENSIONS.TABLET_LANDSCAPE_MEDIA_QUERY} {\n    padding-right: 0;\n  }\n`;\n\nexport const Right = styled.div`\n  flex: 0 0 303px;\n\n  display: flex;\n  flex-direction: column;\n  gap: 56px;\n\n  h3 {\n    ${FONTS.HEADING_5_SEMIBOLD}\n  }\n\n  p {\n    ${FONTS.MEDIUM_2}\n  }\n\n  ${WINDOW_DIMENSIONS.TABLET_LANDSCAPE_MEDIA_QUERY} {\n    flex: none;\n    flex-direction: column-reverse;\n    gap: 40px;\n    width: 100%;\n    margin-bottom: 40px;\n  }\n`;\n\nexport const Summary = styled.h2`\n  margin: 0;\n  ${FONTS.HEADING_3_REGULAR}\n`;\n\nexport const Section = styled.section`\n  display: flex;\n  flex-direction: column;\n  gap: 24px;\n\n  margin: 0;\n  ${({ withNewlines }) => withNewlines && \"white-space: pre-line;\"}\n  ${FONTS.REGULAR_1}\n\n  ul {\n    padding-left: 4px;\n    white-space: normal; // negates the \"white-space: pre-line;\" effect above for lists\n  }\n`;\n\nexport const Heading = styled.h1`\n  margin: 0;\n  ${FONTS.HEADING_4_SEMIBOLD}\n`;\n\nexport const Subheading = styled.div`\n  display: flex;\n  align-items: center;\n  flex-wrap: nowrap;\n  margin: ${({ first }) => (first ? \"4px\" : \"20px\")} 0 8px;\n  ${FONTS.SEMIBOLD_1}\n`;\n\nexport const ListHeading = styled.span`\n  margin-bottom: -16px;\n`;\n\nexport const PlainList = styled.ul`\n  padding-left: 22px !important;\n  margin: 0 !important;\n`;\n\nconst AreasOfExpertise = styled.div`\n  display: flex;\n  flex-wrap: wrap;\n  line-height: 1;\n  & > div {\n    margin-top: 8px;\n  }\n`;\nconst BannerContainer = styled.div`\n  margin-top: 16px;\n`;\n","import { COLORS, FONTS } from \"@constants\";\nimport useIsVisible from \"@hooks/useIsVisible\";\nimport { SegmentEventName } from \"@tsTypes/__generated__/enums\";\nimport { track } from \"@utils/appUtils\";\nimport { t } from \"@utils/i18n\";\nimport { RefObject, useEffect, useState } from \"react\";\nimport styled from \"styled-components\";\n\ninterface Props {\n  backgroundRef: RefObject<HTMLElement>;\n  lookingForRef: RefObject<HTMLElement>;\n  benefitsRef: RefObject<HTMLElement>;\n  whoWeAreRef: RefObject<HTMLElement>;\n  qaRef: RefObject<HTMLElement>;\n}\n\nenum Section {\n  BACKGROUND = \"background\",\n  LOOKING_FOR = \"looking-for\",\n  BENEFITS = \"benefits\",\n  WHO_WE_ARE = \"who-we-are\",\n  QA = \"qa\",\n}\n\nexport default function Sidebar({\n  backgroundRef,\n  lookingForRef,\n  benefitsRef,\n  whoWeAreRef,\n  qaRef,\n}: Props) {\n  const [focusedKey, setFocusedKey] = useState<Section | null>(null);\n\n  const isBackgroundVisible = useIsVisible(backgroundRef);\n  const isLookingForVisible = useIsVisible(lookingForRef);\n  const isBenefitsVisible = useIsVisible(benefitsRef);\n  const isWhoWeAreVisible = useIsVisible(whoWeAreRef);\n  const isQaVisible = useIsVisible(qaRef);\n\n  useEffect(() => {\n    if (isBackgroundVisible) return setFocusedKey(Section.BACKGROUND);\n    if (isLookingForVisible) return setFocusedKey(Section.LOOKING_FOR);\n    if (isBenefitsVisible) return setFocusedKey(Section.BENEFITS);\n    if (isWhoWeAreVisible) return setFocusedKey(Section.WHO_WE_ARE);\n    if (isQaVisible) return setFocusedKey(Section.QA);\n    setFocusedKey(null);\n  }, [isBackgroundVisible, isLookingForVisible, isBenefitsVisible, isWhoWeAreVisible, isQaVisible]);\n\n  const links = [\n    {\n      key: Section.BACKGROUND,\n      ref: backgroundRef,\n      title: t(\"pages.request_for_startups_page.headings.background\"),\n    },\n    {\n      key: Section.LOOKING_FOR,\n      ref: lookingForRef,\n      title: t(\"pages.request_for_startups_page.headings.looking_for\"),\n    },\n    {\n      key: Section.BENEFITS,\n      ref: benefitsRef,\n      title: t(\"pages.request_for_startups_page.headings.offer\"),\n    },\n    {\n      key: Section.WHO_WE_ARE,\n      ref: whoWeAreRef,\n      title: t(\"pages.request_for_startups_page.headings.who_we_are\"),\n    },\n    {\n      key: Section.QA,\n      ref: qaRef,\n      title: t(\"pages.request_for_startups_page.headings.q_a\"),\n    },\n  ];\n  return (\n    <List>\n      {links.map(({ key, ref, title }) => (\n        <Item\n          key={key}\n          isFocused={key === focusedKey}\n          onClick={() => {\n            track(SegmentEventName.Click, {\n              ui_component: \"Request for Startup Page - Sidebar\",\n              key,\n            });\n            setFocusedKey(key);\n            setTimeout(() => setFocusedKey(key), 300);\n            ref.current?.scrollIntoView({ behavior: \"smooth\" });\n          }}\n        >\n          {title}\n        </Item>\n      ))}\n    </List>\n  );\n}\n\nexport const List = styled.ul`\n  position: sticky;\n  top: 50px;\n\n  width: 100%;\n  padding: 0;\n\n  list-style-type: none;\n  ${FONTS.MEDIUM_2}\n\n  li {\n    padding: 8px;\n  }\n\n  li:not(:last-child) {\n    border-bottom: 1px solid ${COLORS.NEUTRAL_200};\n  }\n`;\n\nexport const Item = styled.li`\n  color: ${({ isFocused }) => (isFocused ? COLORS.HALO_BLUE : COLORS.BLACK)};\n\n  &:hover,\n  &:active,\n  &:focus {\n    color: ${COLORS.BLACK};\n    text-decoration: none;\n    outline: none;\n  }\n\n  &:hover {\n    cursor: pointer;\n    color: ${COLORS.BLUE_900};\n  }\n`;\n","import { Icon } from \"@components/library\";\nimport { IconName } from \"@components/library/Icon/Icon\";\nimport { COLORS, FONTS, WINDOW_DIMENSIONS } from \"@constants\";\nimport { LaunchableRequestStatus } from \"@tsTypes/requests\";\nimport { formatDateToEastern } from \"@utils/dateUtils\";\nimport { t } from \"@utils/i18n\";\nimport { LaunchableRequest, getLaunchableRequestStatus } from \"@utils/requestUtils\";\nimport styled from \"styled-components\";\n\ninterface Props {\n  request: LaunchableRequest;\n  iconPosition?: \"left\" | \"right\";\n  hasUnknownLaunchDate?: boolean;\n  useCompactText?: boolean;\n}\n\nexport default function Status({\n  request,\n  iconPosition = \"left\",\n  hasUnknownLaunchDate = false,\n  useCompactText = false,\n}: Props) {\n  const status = getLaunchableRequestStatus(request);\n\n  let text = \"\";\n  let color = \"\";\n  let background = \"\";\n  let iconName: IconName;\n\n  switch (status) {\n    case LaunchableRequestStatus.ACTIVE:\n      if (request.requestable.deadline) {\n        text = t(\"pages.request_for_startups_page.status.active\", {\n          date: formatDateToEastern(\n            request.requestable.deadline,\n            \"MMM D\" +\n              (new Date(request.requestable.deadline).getFullYear() !== new Date().getFullYear()\n                ? \", yyyy\"\n                : \"\")\n          ),\n        });\n      } else {\n        text = t(\"pages.request_for_startups_page.status.open\");\n      }\n      color = COLORS.GREEN_800;\n      background = COLORS.GREEN_200;\n      iconName = \"Accelerator\";\n      break;\n    case LaunchableRequestStatus.COMING_SOON:\n      text = hasUnknownLaunchDate\n        ? \"Coming soon\"\n        : t(\"pages.request_for_startups_page.status.coming_soon\", {\n            date: formatDateToEastern(\n              request.requestable.launch_date!,\n              \"MMM D\" +\n                (new Date(request.requestable.launch_date!).getFullYear() !==\n                new Date().getFullYear()\n                  ? \", yyyy\"\n                  : \"\")\n            ),\n          });\n      color = COLORS.ORANGE;\n      background = COLORS.ORANGE_300;\n      iconName = \"Accelerator Complete\";\n      break;\n    default:\n      // Handle no date case\n      if (!request.requestable.deadline && !request.requestable.launch_date) {\n        if (request.enabled) {\n          text = \"Applications open\";\n          color = COLORS.GREEN_800;\n          background = COLORS.GREEN_200;\n          iconName = \"Accelerator\";\n        } else {\n          // Unknown status\n          text = \"\";\n        }\n      } else {\n        text = t(\"pages.request_for_startups_page.status.closed\");\n        color = COLORS.NEUTRAL_500;\n        background = COLORS.NEUTRAL_250;\n        iconName = \"Accelerator Complete\";\n      }\n  }\n\n  \n  let statusText = text;\n  if (useCompactText) {\n    if (statusText.toLowerCase().includes(\"applications closed\")) {\n      statusText = \"Closed\";\n    } else if (statusText.toLowerCase().includes(\"applications open\")) {\n      statusText = \"Open\";\n    }\n  }\n\n  return (\n    <Container iconPosition={iconPosition} color={color}>\n      {Number(iconName?.length) > 0 && (\n        <IconContainer background={background}>\n          <Icon name={iconName} size=\"sm\" color={color} />\n        </IconContainer>\n      )}\n      {statusText}\n    </Container>\n  );\n}\n\nconst Container = styled.div`\n  display: flex;\n  flex-direction: ${({ iconPosition }) => (iconPosition === \"left\" ? \"row\" : \"row-reverse\")};\n  align-items: center;\n  gap: 8px;\n  color: ${({ color }) => color};\n  ${FONTS.SEMIBOLD_3}\n  white-space: nowrap;\n  @media (max-width: ${WINDOW_DIMENSIONS.MOBILE_MEDIA_QUERY}px) {\n    text-align: left;\n    float: left;\n  }\n\n`;\n\nconst IconContainer = styled.div`\n  display: flex;\n  justify-content: center;\n  align-items: center;\n\n  width: 26px;\n  height: 26px;\n\n  border-radius: 100%;\n  background: ${({ background }) => background};\n`;\n"],"names":["useIsVisible","ref","_useState2","_slicedToArray","useState","isIntersecting","setIsIntersecting","observer","useMemo","IntersectionObserver","entry","useEffect","current","observe","disconnect","getRfsProposal","async","api","get","proposalSlug","data","getRfsProposalForProposalForm","proposal","updateRfsProposal","proposalId","put","getDraftRfsProposal","requestSlug","saveDraftRfsProposal","post","getMarketplaceRequestForStartups","searchFilter","commercialApplicationsFilter","params","options","search_filter","commercial_applications_filter","requests","getMarketplaceRequestForStartupsFilterOptions","getCommercialApplicationPageRequestForStartups","commercialApplicationId","pageNum","request_for_startups_path","commercial_application_id","page_num","getRequestForStartup","response","slug","redirect","window","location","href","request","NotifyModal","isOpen","onClose","_useFollowRequest","useFollowRequest","id","handleFollowRequest","isUserFollowing","_jsx","BlankModal","width","backgroundMode","children","_jsxs","ModalContent","Icon","name","margin","Header","SubHeader","requestable","launch_date","unknown_launch_date","title","dayjs","format","SuccessText","color","COLORS","GREEN","size","Button","iconName","onClick","styled","div","h3","BLACK","FONTS","HEADING_3_SEMIBOLD","h6","NEUTRAL_500","REGULAR_2","i18nPrefix","DataPoints","isMobile","useSelector","state","dataPoints","participation_type","push","key","content","t","max_accepted","count","duration_in_weeks","i18nKey","funding_amount_usd","i18n","numberToCurrency","precision","alumni_count","equity_percentage","equity","misc_time","misc_building","misc_person","misc_rocket","misc_dollar","forEach","Container","length","map","DataPoint","NEUTRAL_400","BLUE_LIGHT_600","WINDOW_DIMENSIONS","TABLET_MEDIA_QUERY","MOBILE_MEDIA_QUERY","NEUTRAL_200","BLUE_900","MEDIUM_2","rfsSubmitUrl","Cta","onShare","currentUser","profiles","history","useHistory","dispatch","useDispatch","draft","useQuery","queryKey","queryFn","enabled","Boolean","role","UserRole","SCIENTIST","hasDraft","status","getLaunchableRequestStatus","canApply","UNIVERSITY_ADMIN","LaunchableRequestStatus","ACTIVE","IN_EXTENSION","handleSubmitClick","track","SegmentEventName","Click","ui_component","request_slug","is_logged_in","submitUrl","setPrevUrlCookie","toggleLoginModal","open","handleNotify","text","buttons","handleShareClick","pathname","variant","COMING_SOON","CLOSED","unshift","FollowingConfirmation","iconPosition","external_url","target","rel","disabled","SPONSOR","TopContainer","$showBorder","FEATURE_FLAGS","RELEVANT_NOT_RELEVANT_BUTTONS","StatusContainer","Status","RefineRecommendations","isComplete","NEUTRAL_250","STYLES","SHADOW_B","HEADING_4_SEMIBOLD","TABLET_LANDSCAPE_MEDIA_QUERY","RequestForStartupPage","isShareModalOpen","setIsShareModalOpen","_useState4","isCommenting","setIsCommenting","isTabletLandscape","useParams","_useQuery","onError","toastErrorHandler","isLoading","document","backgroundRef","useRef","lookingForRef","benefitsRef","whoWeAreRef","qaRef","View","request_id","requestable_id","requestable_type","react_component","useLayoutEffect","animationFrameId","checkAndScroll","hash","scrollIntoView","behavior","requestAnimationFrame","cancelAnimationFrame","Loader","inline","trlRange","trl_range","getArrayFromRubyRange","_Fragment","InviteModal","requestId","closeModal","trackAndToastHandler","toast","success","inviteMessage","inviteUrl","modalHeader","modalSubheader","inviteSubject","first_name","last_name","typeOfInvite","accessible_before_launch_date","marketplacePath","PageContainer","hasPaddingTop","maxWidth","Breadcrumb","TextLink","to","font","BannerContainer","RequestPageBanner","Columns","Left","Sidebar","Center","Summary","summary","Section","withNewlines","Heading","renderMarkdownTextWithDangerousHTML","background","Subheading","ListHeading","renderMarkdownText","solutions_of_interest","first","eligible_country_names","style","marginBottom","PlainList","country","locations","join","eligible_startup_stages","stage","TRLsContainer","Tag","TrlTagContent","Tooltip","tooltipWidth","TRLs","Benefits","partnershipModels","fundingBenefits","funding_benefits","nonMonetaryBenefits","non_monetary_benefits","withMarginTop","AboutCompany","customText","who_we_are","undefined","lineHeight","RequestDiscussion","Right","display_location","areas_of_expertise","AreasOfExpertise","slice","MAX_KEYWORD_DISPLAY_COUNT","area","theme","TagTooltip","tags","RequestFAQs","HEADING_5_SEMIBOLD","h2","HEADING_3_REGULAR","section","REGULAR_1","h1","SEMIBOLD_1","span","ul","focusedKey","setFocusedKey","isBackgroundVisible","isLookingForVisible","isBenefitsVisible","isWhoWeAreVisible","isQaVisible","BACKGROUND","LOOKING_FOR","BENEFITS","WHO_WE_ARE","QA","links","List","Item","isFocused","setTimeout","li","HALO_BLUE","hasUnknownLaunchDate","useCompactText","deadline","date","formatDateToEastern","Date","getFullYear","GREEN_800","GREEN_200","ORANGE","ORANGE_300","statusText","toLowerCase","includes","Number","IconContainer","SEMIBOLD_3"],"sourceRoot":""}