{"version":3,"file":"js/7099-32694f154e59801812bb.chunk.js","mappings":"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","sources":["webpack://halo/./app/client/src/components/Cards/RequestForStartupCardWide.tsx","webpack://halo/./app/client/src/components/library/EmptyState/EmptyState.tsx","webpack://halo/./app/client/src/hooks/useIsVisible.ts","webpack://halo/./app/client/src/requests/requestForStartups.ts","webpack://halo/./app/client/src/components/modals/SuggestedNetworksModal.tsx","webpack://halo/./app/client/src/hooks/usePageNumParam.ts","webpack://halo/./app/client/src/views/Marketplace/FindPartnersFilters.tsx","webpack://halo/./app/client/src/views/Marketplace/FindPartners.tsx","webpack://halo/./app/client/src/views/Marketplace/StartupProgramsFilters.tsx","webpack://halo/./app/client/src/views/Marketplace/StartupPrograms.tsx","webpack://halo/./app/client/src/views/Marketplace/Marketplace.tsx","webpack://halo/./app/client/src/views/RequestForStartupPage/Status.tsx"],"sourcesContent":["import { Button, Icon } from \"@components/library\";\nimport { COLORS, FONTS } from \"@constants\";\nimport useFollowRequest from \"@hooks/useFollowRequest\";\nimport { RootState } from \"@redux/store\";\nimport { SegmentEventName } from \"@tsTypes/__generated__/enums\";\nimport BaseCardWide from \"./BaseCardWide\";\n// @ts-ignore\nimport { CompanyVerificationStatus } from \"@tsTypes/companies.js.erb\";\nimport { RequestForStartupForCard } from \"@tsTypes/request_for_startups\";\nimport { LaunchableRequestStatus } from \"@tsTypes/requests\";\nimport { track } from \"@utils/appUtils\";\nimport { getLaunchableRequestStatus, requestPageUrlPath } from \"@utils/requestUtils\";\nimport { useSelector } from \"react-redux\";\nimport Status from \"src/views/RequestForStartupPage/Status\";\nimport styled from \"styled-components\";\nimport { WINDOW_DIMENSIONS } from \"@constants\";\n\ninterface Props {\n request: RequestForStartupForCard;\n}\n\nexport default function RequestForStartupCardWide({ request }: Props) {\n const currentUser = useSelector((state: RootState) => state.profiles.currentUser);\n const windowWidth = useSelector((state: RootState) => state.window.width);\n const isCompactLayout = windowWidth <= WINDOW_DIMENSIONS.TABLET_LANDSCAPE;\n\n const { handleFollowRequest, isUserFollowing } = useFollowRequest(request.id);\n\n const handleNotify = (e) => {\n e.preventDefault();\n\n if (request.requestable.has_page) {\n track(SegmentEventName.Click, {\n ui_component: \"Notify Me Button\",\n react_component: \"RequestForStartupCardWide\",\n request_slug: request.slug,\n });\n } else {\n track(SegmentEventName.Click, {\n ui_component: \"Notify Me Button - Offsite\",\n react_component: \"RequestForStartupCardWide\",\n logged_in: Boolean(currentUser.id),\n });\n }\n\n handleFollowRequest();\n };\n\n const { has_page, external_url, parent_program } = request.requestable;\n\n const status = getLaunchableRequestStatus(request as any);\n\n let button = (\n <Button\n size=\"sm\"\n type=\"button\"\n variant=\"primary\"\n to={requestPageUrlPath(request)}\n iconName=\"Easy Apply\"\n iconPosition=\"left\"\n onClick={() =>\n track(SegmentEventName.Click, {\n ui_component: \"Easy Apply Button\",\n react_component: \"RequestForStartupCardWide\",\n request_slug: request.slug,\n is_external_link: !request.requestable.has_page,\n })\n }\n >\n Easy apply\n </Button>\n );\n if (external_url || !has_page) {\n button = (\n <Button\n size=\"sm\"\n type=\"button\"\n variant=\"primary\"\n to={has_page ? requestPageUrlPath(request) : external_url!}\n isExternalLink={!has_page}\n openInNewTab={!has_page}\n iconName={!has_page ? \"Open in a new tab\" : undefined}\n onClick={() =>\n track(SegmentEventName.Click, {\n ui_component: \"Learn More Button\",\n react_component: \"RequestForStartupCardWide\",\n request_slug: request.slug,\n is_external_link: !request.requestable.has_page,\n })\n }\n >\n Learn more\n </Button>\n );\n }\n if (\n status === LaunchableRequestStatus.COMING_SOON ||\n (status === LaunchableRequestStatus.CLOSED && request.requestable.deadline) ||\n status === LaunchableRequestStatus.IN_EXTENSION\n ) {\n if (isUserFollowing) {\n button = (\n <OptedIn>\n <Icon name=\"Success\" color={COLORS.GREEN} size=\"sm\" />\n You'll be notified\n </OptedIn>\n );\n } else {\n button = (\n <Button size=\"sm\" type=\"button\" variant=\"primary\" iconName=\"Bell\" onClick={handleNotify}>\n Notify me\n </Button>\n );\n }\n }\n\n return (\n <span\n onClick={() =>\n track(SegmentEventName.Click, {\n ui_component: \"Request for Startup Card\",\n request_slug: request.slug,\n })\n }\n >\n <BaseCardWide\n to={has_page ? requestPageUrlPath(request) : external_url!}\n isExternalLink={!has_page}\n openInNewTab={!has_page}\n title={`${parent_program ? `${parent_program}: ` : \"\"}${request.title}`}\n subtitle={\n <SubtitleWrapper>\n <SubtitleText>\n {\"private_alias\" in request.company\n ? request.company.private_alias\n : request.company.company_name}\n </SubtitleText>\n {request.company.verification_status === CompanyVerificationStatus.VERIFIED && (\n <StyledIcon name=\"Verified\" size=\"sm\" color={COLORS.HALO_BLUE} />\n )}\n </SubtitleWrapper>\n }\n imageUrl={\"avatar\" in request.company ? request.company.avatar.url : null}\n cornerContent={\n <Status\n request={request as any}\n iconPosition=\"right\"\n hasUnknownLaunchDate={request.requestable.unknown_launch_date}\n useCompactText={windowWidth <= WINDOW_DIMENSIONS.TABLET}\n />\n }\n tags={request.areas_of_expertise}\n buttons={button}\n />\n </span>\n );\n}\n\nconst OptedIn = styled.div`\n display: flex;\n align-items: center;\n gap: 4px;\n height: 36px;\n color: ${COLORS.GREEN};\n ${FONTS.REGULAR_2}\n`;\n\nconst SubtitleWrapper = styled.div`\n display: inline-flex;\n flex-wrap: nowrap;\n align-items: center;\n gap: 4px;\n`;\n\nconst SubtitleText = styled.span`\n width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n white-space: normal;\n -webkit-box-orient: vertical;\n -webkit-line-clamp: 1;\n padding-right: .5rem;\n`;\n\nconst StyledIcon = styled(Icon)`\n flex-shrink: 0;\n`;\n","import { COLORS, FONTS } from \"@constants\";\nimport emptyStateImg from \"@images/empty_state.png\";\nimport { ReactElement } from \"react\";\nimport styled from \"styled-components\";\n\ninterface Props {\n imgSrc?: string;\n text?: string | ReactElement;\n textAlign?: string;\n button?: ReactElement | null;\n orientation?: \"vertical\" | \"horizontal\";\n withBackground?: boolean;\n size?: \"sm\" | \"lg\";\n height?: string;\n margin?: string;\n}\n\nexport default function EmptyState({\n imgSrc = emptyStateImg,\n size = \"lg\",\n text,\n textAlign,\n button = null,\n orientation = \"vertical\",\n withBackground = false,\n height,\n margin,\n}: Props) {\n return (\n <Container withBackground={withBackground} margin={margin} height={height}>\n <Content orientation={orientation} textAlign={textAlign}>\n {imgSrc && (\n <Image\n src={imgSrc}\n alt={imgSrc === emptyStateImg ? \"Pen and paper\" : \"Empty state image\"}\n size={size}\n />\n )}\n {(text || button) && (\n <div>\n {text}\n {button}\n </div>\n )}\n </Content>\n </Container>\n );\n}\n\nconst Container = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n height: ${({ height }) => (height ? height : \"100%\")};\n width: 100%;\n ${({ margin }) => margin && `margin: ${margin}`};\n padding: 30px;\n ${({ withBackground }) => withBackground && `background: ${COLORS.BLUE_LIGHT_100}`};\n border-radius: 12px;\n color: ${COLORS.NEUTRAL_500};\n ${FONTS.REGULAR_2};\n`;\nconst Content = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n gap: 16px;\n ${({ orientation, textAlign }) =>\n orientation === \"vertical\"\n ? `\n flex-direction: column;\n max-width: 320px;\n text-align: ${textAlign ?? \"center\"};\n `\n : `\n max-width: 600px;\n text-align: ${textAlign ?? \"left\"};\n `};\n`;\nconst Image = styled.img`\n width: ${({ size }) => (size === \"lg\" ? \"290px\" : \"150px\")};\n`;\n","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 { 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 { useEffect, useState } from \"react\";\nimport styled from \"styled-components\";\n\nimport { BlankModal, Button, Icon } from \"@components/library\";\nimport { BlankModalProps } from \"@components/library/ModalBases/BlankModal\";\nimport { COLORS, FONTS } from \"@constants\";\nimport { CompanyAsJson, getCompanyFollowSuggestions } from \"@requests/companies\";\nimport { requestToJoinCompanyNetwork } from \"@requests/companyNetworkScientists\";\nimport { SegmentEventName, SegmentEventObject } from \"@tsTypes/__generated__/enums\";\nimport { track } from \"@utils/appUtils\";\n\nconst SuggestedNetworksModal = ({ isOpen, onClose }: BlankModalProps) => {\n if (!isOpen) return null;\n\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [companies, setCompanies] = useState<CompanyAsJson[]>([]);\n const [followedCompanyIds, setFollowedCompanyIds] = useState({});\n\n useEffect(() => {\n (async () => {\n setCompanies(await getCompanyFollowSuggestions());\n })();\n }, []);\n\n const handleRequest = async (companyId: number) => {\n setIsSubmitting(true);\n try {\n await requestToJoinCompanyNetwork(companyId);\n setFollowedCompanyIds({\n ...followedCompanyIds,\n [companyId]: true,\n });\n track(SegmentEventName.Follow, {\n object: SegmentEventObject.Company,\n company_id: companyId,\n ui_component: \"Suggested Follows Modal\",\n });\n } catch (err) {\n console.error(err);\n } finally {\n setIsSubmitting(false);\n }\n };\n\n return (\n <BlankModal\n width=\"600px\"\n hideCloseButton\n isOpen={isOpen}\n onClose={onClose}\n closeOnDimmerClick={false}\n >\n <HeaderTextContainer>\n <HeaderText>Learn about new opportunities from our industry partners</HeaderText>\n </HeaderTextContainer>\n <HeaderDivider />\n <CompaniesContainer>\n {companies.map((company) => (\n <div key={company.id}>\n <Company>\n <CompanyImageContainer>\n <img alt={company.company_name ?? \"\"} src={company.logo.url ?? \"\"} />\n </CompanyImageContainer>\n {followedCompanyIds[company.id] ? (\n <Requested>\n <Icon name=\"Success\" color={COLORS.GREEN} size=\"md\" />\n Requested\n </Requested>\n ) : (\n <Button\n size=\"sm\"\n iconName=\"Followers\"\n iconPosition=\"right\"\n onClick={() => handleRequest(company.id)}\n disabled={isSubmitting}\n >\n Join network\n </Button>\n )}\n </Company>\n </div>\n ))}\n </CompaniesContainer>\n <HeaderDivider />\n <BottomContainer>\n <button type=\"button\" data-testid=\"go-to-opportunities-button\" onClick={onClose}>\n Go to opportunities ->\n </button>\n </BottomContainer>\n </BlankModal>\n );\n};\n\nconst HeaderTextContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n padding: 20px 20px;\n`;\n\nconst HeaderText = styled.div`\n ${FONTS.HEADING_5_SEMIBOLD}\n color: ${COLORS.BLACK};\n width: 350px;\n text-align: center;\n`;\n\nconst CompaniesContainer = styled.div`\n height: 370px;\n display: flex;\n flex-direction: column;\n align-items: center;\n overflow-y: scroll;\n padding-top: 20px;\n & > div {\n width: 100%;\n display: flex;\n justify-content: center;\n }\n`;\n\nconst Company = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n width: 360px;\n height: 100px;\n margin-bottom: 16px;\n`;\n\nconst CompanyImageContainer = styled.div`\n width: 150px;\n display: flex;\n justify-content: center;\n & > img {\n width: 100%;\n }\n`;\n\nconst Requested = styled.div`\n display: flex;\n gap: 6px;\n align-items: center;\n color: ${COLORS.GREEN};\n ${FONTS.MEDIUM_2}\n`;\n\nconst HeaderDivider = styled.hr`\n margin: 0;\n border-color: ${COLORS.NEUTRAL_300};\n`;\n\nconst BottomContainer = styled.div`\n padding: 16px;\n width: 100%;\n display: flex;\n justify-content: center;\n\n & button {\n background: none;\n border: none;\n padding: 0;\n cursor: pointer;\n outline: inherit;\n\n color: ${COLORS.HALO_BLUE};\n\n display: flex;\n align-items: center;\n text-decoration: none;\n cursor: pointer;\n\n &:hover {\n color: ${COLORS.BLUE_600};\n }\n }\n`;\n\nexport default SuggestedNetworksModal;\n","import { useHistory } from \"react-router-dom\";\nimport { useSearchParams } from \"./router\";\n\nexport const PAGE_PARAM = \"page\";\n\nexport function usePageNumParam(): [number, (newPageNum: number) => void] {\n const [searchParams] = useSearchParams();\n const history = useHistory();\n\n const pageNum = parseInt(searchParams.get(PAGE_PARAM) ?? \"1\");\n\n const setPageNum = (newPageNum: number) => {\n searchParams.set(PAGE_PARAM, newPageNum.toString());\n history.push({ search: searchParams.toString() });\n };\n\n return [pageNum, setPageNum];\n}\n","import { Checkbox, MultiSelectDropdown } from \"@components/library\";\nimport { DropdownOption } from \"@components/library/Dropdowns/DropdownOption\";\nimport { useSearchParams } from \"@hooks/router\";\nimport { useIsMount } from \"@hooks/useIsMount\";\nimport { getOptionFromValue } from \"@utils/dropdownUtils\";\nimport { Dispatch, SetStateAction, useEffect } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport {\n CheckboxContainer,\n FilterContainer,\n FilterSection,\n ResetFiltersButton,\n} from \"./sharedFilterStyles\";\n\ninterface Props {\n keywordOptions: DropdownOption[];\n keywordsFilter: DropdownOption[];\n setKeywordsFilter: Dispatch<SetStateAction<DropdownOption[]>>;\n withActiveRfpsFilter: boolean;\n setWithActiveRfpsFilter: Dispatch<SetStateAction<boolean>>;\n withActiveOpenCallsFilter: boolean;\n setWithActiveOpenCallsFilter: Dispatch<SetStateAction<boolean>>;\n withActiveRfsFilter: boolean;\n setWithActiveRfsFilter: Dispatch<SetStateAction<boolean>>;\n}\n\nconst KEYWORDS_FILTER_PARAM = \"keywords\";\nconst WITH_ACTIVE_RFPS_FILTER_PARAM = \"with_active_rfps\";\nconst WITH_ACTIVE_OPEN_CALLS_FILTER_PARAM = \"with_active_open_calls\";\nconst WITH_ACTIVE_RFS_FILTER_PARAM = \"with_active_rfs\";\n\nexport default function FindPartnersFilters({\n keywordOptions,\n keywordsFilter,\n setKeywordsFilter,\n withActiveRfpsFilter,\n setWithActiveRfpsFilter,\n withActiveOpenCallsFilter,\n setWithActiveOpenCallsFilter,\n withActiveRfsFilter,\n setWithActiveRfsFilter,\n}: Props) {\n const [searchParams] = useSearchParams();\n const history = useHistory();\n const isMount = useIsMount();\n\n useEffect(() => {\n if (isMount) {\n if (searchParams.has(KEYWORDS_FILTER_PARAM)) {\n const keywords = searchParams.get(KEYWORDS_FILTER_PARAM)!.split(\";\");\n setKeywordsFilter(keywords.map((keyword) => getOptionFromValue(keyword) as DropdownOption));\n }\n setWithActiveRfpsFilter(searchParams.get(WITH_ACTIVE_RFPS_FILTER_PARAM) === \"true\");\n setWithActiveOpenCallsFilter(\n searchParams.get(WITH_ACTIVE_OPEN_CALLS_FILTER_PARAM) === \"true\"\n );\n setWithActiveRfsFilter(searchParams.get(WITH_ACTIVE_RFS_FILTER_PARAM) === \"true\");\n return;\n }\n\n if (keywordsFilter.length)\n searchParams.set(\n KEYWORDS_FILTER_PARAM,\n keywordsFilter.map((keyword) => keyword.value).join(\";\")\n );\n else searchParams.delete(KEYWORDS_FILTER_PARAM);\n if (withActiveRfpsFilter) searchParams.set(WITH_ACTIVE_RFPS_FILTER_PARAM, \"true\");\n else searchParams.delete(WITH_ACTIVE_RFPS_FILTER_PARAM);\n if (withActiveOpenCallsFilter) searchParams.set(WITH_ACTIVE_OPEN_CALLS_FILTER_PARAM, \"true\");\n else searchParams.delete(WITH_ACTIVE_OPEN_CALLS_FILTER_PARAM);\n if (withActiveRfsFilter) searchParams.set(WITH_ACTIVE_RFS_FILTER_PARAM, \"true\");\n else searchParams.delete(WITH_ACTIVE_RFS_FILTER_PARAM);\n\n history.replace({ search: searchParams.toString() });\n }, [keywordsFilter, withActiveRfpsFilter, withActiveOpenCallsFilter, withActiveRfsFilter]);\n\n const handleClearFilters = () => {\n setKeywordsFilter([]);\n setWithActiveRfpsFilter(false);\n setWithActiveOpenCallsFilter(false);\n setWithActiveRfsFilter(false);\n };\n\n return (\n <FilterContainer>\n <FilterSection label=\"Areas of Expertise\" labelMargin=\"0 0 8px\">\n <MultiSelectDropdown\n placeholder=\"All\"\n withSearchIcon\n onChange={(e) => setKeywordsFilter(e)}\n value={keywordsFilter}\n options={keywordOptions}\n data-testid=\"keywords-filter\"\n />\n </FilterSection>\n <FilterSection label=\"Active Requests\" collapsible>\n <CheckboxContainer data-testid=\"request-checkboxes\">\n <Checkbox\n label=\"Open calls\"\n isChecked={withActiveOpenCallsFilter}\n onChange={(e) => setWithActiveOpenCallsFilter(e.target.checked)}\n size=\"sm\"\n />\n <Checkbox\n label=\"Requests for proposals\"\n isChecked={withActiveRfpsFilter}\n onChange={(e) => setWithActiveRfpsFilter(e.target.checked)}\n size=\"sm\"\n />\n <Checkbox\n label=\"Startup programs\"\n isChecked={withActiveRfsFilter}\n onChange={(e) => setWithActiveRfsFilter(e.target.checked)}\n size=\"sm\"\n />\n </CheckboxContainer>\n </FilterSection>\n <ResetFiltersButton onClick={handleClearFilters} />\n </FilterContainer>\n );\n}\n","import CompanyCardWide from \"@components/Cards/CompanyCardWide\";\nimport { FiltersButton, Pagination, SelectableDropdown } from \"@components/library\";\nimport { DropdownOption } from \"@components/library/Dropdowns/DropdownOption\";\nimport EmptyState from \"@components/library/EmptyState\";\nimport { FEATURE_FLAGS, FONTS, WINDOW_DIMENSIONS } from \"@constants\";\nimport { useIsMount } from \"@hooks/useIsMount\";\nimport useIsVisible from \"@hooks/useIsVisible\";\nimport { RootState } from \"@redux/store\";\nimport {\n getAllCompanies,\n getCompanyMarketplaceCompanies,\n getCompanyMarketplaceFilterOptions,\n} from \"@requests/companies\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport { CompanyForCard } from \"@tsTypes/companies/_for_card\";\nimport appsignal from \"@utils/appsignal\";\nimport { getOptionFromValue, getValueFromOption } from \"@utils/dropdownUtils\";\nimport { t_html } from \"@utils/i18n\";\nimport { toastErrorHandler } from \"@utils/requests\";\nimport { useEffect, useLayoutEffect, useRef, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Loader } from \"semantic-ui-react\";\nimport styled from \"styled-components\";\nimport FindPartnersFilters from \"./FindPartnersFilters\";\nimport { Container, Description } from \"./RespondToRequests\";\nimport { Columns, ContentColumn, FilterColumn } from \"./sharedFilterStyles\";\n\nconst SORT_OPTIONS: DropdownOption[] = [\n { value: \"PREFERRED\", label: \"Default\" },\n { value: \"NAME\", label: \"Company name\" },\n];\nconst CARDS_PER_PAGE = 10;\n\ninterface Props {\n currentPageNum: number;\n setCurrentPageNum: (newPageNum: number) => void;\n}\n\nconst FindPartners = ({ currentPageNum, setCurrentPageNum }: Props) => {\n const [isLoading, setIsLoading] = useState(true);\n const [companies, setCompanies] = useState<CompanyForCard[]>([]);\n const [totalCompanyCount, setTotalCompanyCount] = useState(0);\n const [sortBy, setSortBy] = useState<DropdownOption>(SORT_OPTIONS[0]);\n const [isFiltersOpen, setIsFiltersOpen] = useState(false);\n\n const [keywordsFilter, setKeywordsFilter] = useState<DropdownOption[]>([]);\n const [withActiveRfpsFilter, setWithActiveRfpsFilter] = useState(false);\n const [withActiveOpenCallsFilter, setWithActiveOpenCallsFilter] = useState(false);\n const [withActiveRfsFilter, setWithActiveRfsFilter] = useState(false);\n const allFilters = [\n keywordsFilter,\n withActiveRfpsFilter,\n withActiveOpenCallsFilter,\n withActiveRfsFilter,\n ];\n\n const isTablet = useSelector((state: RootState) => state.window.isTablet);\n const isMount = useIsMount();\n\n const sortByRef = useRef(sortBy);\n const abortControllerRef = useRef(new AbortController());\n\n const [shouldScrollToTop, setShouldScrollToTop] = useState(false);\n // scrollToRef is tied to the top of the results container, null when loading or no results\n const scrollToRef = useRef<HTMLDivElement | null>(null);\n // topRef is always visible and used to determine if we need to scroll\n const topRef = useRef<HTMLDivElement | null>(null);\n const isAtTop = useIsVisible(topRef);\n\n // Filter options\n const { data: options } = useQuery({\n queryKey: [\"getCompanyMarketplaceFilterOptions\"],\n queryFn: () => getCompanyMarketplaceFilterOptions(),\n select: (data) => {\n const keywordOptions = data.keywords.map(getOptionFromValue) as DropdownOption[];\n return {\n keywordOptions,\n };\n },\n });\n\n // New query method with filters\n const { data: companiesData, isLoading: isLoadingCompanies } = useQuery(\n [\"getCompanyMarketplaceCompanies\", ...allFilters, sortBy, currentPageNum],\n () =>\n getCompanyMarketplaceCompanies({\n keywordsFilter: keywordsFilter.map(getValueFromOption) as string[],\n withActiveRfpsFilter,\n withActiveOpenCallsFilter,\n withActiveRfsFilter,\n sortBy: sortBy.value as any,\n pageNumber: currentPageNum,\n }),\n {\n enabled: FEATURE_FLAGS.COMPANY_MARKETPLACE_FILTER,\n onError: toastErrorHandler,\n }\n );\n\n // Old query method\n useEffect(() => {\n if (FEATURE_FLAGS.COMPANY_MARKETPLACE_FILTER) return;\n\n (async () => {\n try {\n abortControllerRef.current = new AbortController();\n\n const response = await getAllCompanies(\n currentPageNum,\n sortBy.value,\n abortControllerRef.current.signal\n );\n\n if (sortByRef.current.value !== sortBy.value) {\n setCurrentPageNum(1);\n sortByRef.current = sortBy;\n }\n\n setCompanies(response.companies);\n setTotalCompanyCount(response.total_count);\n } catch (e) {\n if (!abortControllerRef.current.signal.aborted) {\n appsignal.sendError(e, (span) => {\n span.setAction(\"FindPartners#useEffect[currentPageNum, sortBy]\");\n });\n }\n } finally {\n setIsLoading(false);\n }\n })();\n\n return () => abortControllerRef.current.abort();\n }, [currentPageNum, sortBy, ...allFilters]);\n\n // Handle old and new query methods with the same variables\n const _isLoading = FEATURE_FLAGS.COMPANY_MARKETPLACE_FILTER ? isLoadingCompanies : isLoading;\n const _companies = FEATURE_FLAGS.COMPANY_MARKETPLACE_FILTER\n ? companiesData?.companies ?? []\n : companies;\n const _totalCount = FEATURE_FLAGS.COMPANY_MARKETPLACE_FILTER\n ? companiesData?.total_count ?? 0\n : totalCompanyCount;\n\n // Reset page number of filter or sort change\n useEffect(() => {\n if (isMount) return;\n if (currentPageNum === 1) return;\n setCurrentPageNum(1);\n }, [...allFilters, sortBy]);\n\n // Scroll to top on filter change or page number change\n useEffect(() => {\n if (isMount) return;\n setShouldScrollToTop(true);\n }, [...allFilters, currentPageNum]);\n\n useLayoutEffect(() => {\n let animationFrameId: number;\n\n const checkAndScroll = () => {\n if (shouldScrollToTop && scrollToRef.current) {\n if (!isAtTop) {\n window.scrollTo({\n top: scrollToRef.current.getBoundingClientRect().top + window.scrollY - 130,\n behavior: \"smooth\",\n });\n }\n setShouldScrollToTop(false);\n } else {\n animationFrameId = requestAnimationFrame(checkAndScroll);\n }\n };\n\n checkAndScroll();\n\n return () => {\n if (animationFrameId) cancelAnimationFrame(animationFrameId);\n };\n }, [_companies, scrollToRef]);\n\n const filtersCount =\n keywordsFilter.length +\n (withActiveRfpsFilter ? 1 : 0) +\n (withActiveOpenCallsFilter ? 1 : 0) +\n (withActiveRfsFilter ? 1 : 0);\n\n const filters = (\n <FindPartnersFilters\n keywordOptions={options?.keywordOptions ?? []}\n keywordsFilter={keywordsFilter}\n setKeywordsFilter={setKeywordsFilter}\n withActiveRfpsFilter={withActiveRfpsFilter}\n setWithActiveRfpsFilter={setWithActiveRfpsFilter}\n withActiveOpenCallsFilter={withActiveOpenCallsFilter}\n setWithActiveOpenCallsFilter={setWithActiveOpenCallsFilter}\n withActiveRfsFilter={withActiveRfsFilter}\n setWithActiveRfsFilter={setWithActiveRfsFilter}\n />\n );\n\n return (\n <Container>\n <Description>{t_html(\"pages.marketplace.find_partners.description_html\")}</Description>\n <Columns>\n {FEATURE_FLAGS.COMPANY_MARKETPLACE_FILTER && <FilterColumn>{filters}</FilterColumn>}\n <ContentColumn>\n <SortBy>\n {FEATURE_FLAGS.COMPANY_MARKETPLACE_FILTER && isTablet && (\n <div style={{ marginRight: 20 }}>\n <FiltersButton\n variant=\"fourth\"\n count={filtersCount}\n isOpen={isFiltersOpen}\n setIsOpen={setIsFiltersOpen}\n />\n </div>\n )}\n Sort by:\n <SelectableDropdown\n value={sortBy}\n options={SORT_OPTIONS}\n onChange={(e) => setSortBy(e)}\n />\n </SortBy>\n {FEATURE_FLAGS.COMPANY_MARKETPLACE_FILTER && isFiltersOpen && isTablet && filters}\n <Companies>\n <span ref={topRef} />\n {(() => {\n if (_isLoading) {\n return <Loader active inline=\"centered\" style={{ marginTop: 100 }} />;\n }\n if (_companies.length === 0) {\n return <EmptyState text=\"No results\" imgSrc=\"\" />;\n }\n return (\n <>\n <span ref={scrollToRef} />\n {_companies.map((company) => (\n <CompanyCardWide\n key={company.id}\n company={company}\n fromHref={window.location.pathname + window.location.search}\n />\n ))}\n </>\n );\n })()}\n </Companies>\n </ContentColumn>\n </Columns>\n <Pagination\n currentPage={currentPageNum}\n setCurrentPage={setCurrentPageNum}\n totalPages={Math.ceil(_totalCount / CARDS_PER_PAGE)}\n />\n </Container>\n );\n};\n\nexport default FindPartners;\n\nconst Companies = styled.div`\n display: flex;\n flex-direction: column;\n gap: 20px;\n ${WINDOW_DIMENSIONS.MOBILE_MEDIA_QUERY} {\n gap: 24px;\n }\n`;\nconst SortBy = styled.div`\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 20px;\n ${FONTS.REGULAR_2};\n ${WINDOW_DIMENSIONS.MOBILE_MEDIA_QUERY} {\n margin-bottom: 18px;\n }\n`;\n","import { Checkbox } from \"@components/library\";\nimport { useSearchParams } from \"@hooks/router\";\nimport { useIsMount } from \"@hooks/useIsMount\";\nimport { Dispatch, SetStateAction, useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport {\n CheckboxContainer,\n FilterContainer,\n FilterSection,\n ResetFiltersButton,\n} from \"./sharedFilterStyles\";\n\ninterface Props {\n searchFilter: string;\n setSearchFilter: Dispatch<SetStateAction<string>>;\n commercialApplicationOptions: string[];\n commercialApplicationsFilter: string[];\n setCommercialApplicationsFilter: Dispatch<SetStateAction<string[]>>;\n}\n\nconst SEARCH_FILTER_PARAM = \"search\";\nconst COMMERCIAL_APPLICATION_FILTER_PARAM = \"application_areas\";\n\nexport default function StartupProgramsFilters({\n searchFilter,\n setSearchFilter,\n commercialApplicationOptions,\n commercialApplicationsFilter,\n setCommercialApplicationsFilter,\n}: Props) {\n const [localSearchFilter, setLocalSearchFilter] = useState(\"\");\n\n const [searchParams] = useSearchParams();\n const history = useHistory();\n const isMount = useIsMount();\n\n useEffect(() => {\n if (isMount) {\n if (searchParams.has(SEARCH_FILTER_PARAM)) {\n setLocalSearchFilter(searchParams.get(SEARCH_FILTER_PARAM)!);\n setSearchFilter(searchParams.get(SEARCH_FILTER_PARAM)!);\n }\n if (searchParams.has(COMMERCIAL_APPLICATION_FILTER_PARAM)) {\n setCommercialApplicationsFilter(\n searchParams.get(COMMERCIAL_APPLICATION_FILTER_PARAM)!.split(\";\")\n );\n }\n return;\n }\n\n if (searchFilter) {\n searchParams.set(SEARCH_FILTER_PARAM, searchFilter);\n } else {\n searchParams.delete(SEARCH_FILTER_PARAM);\n }\n if (commercialApplicationsFilter.length > 0) {\n searchParams.set(COMMERCIAL_APPLICATION_FILTER_PARAM, commercialApplicationsFilter.join(\";\"));\n } else {\n searchParams.delete(COMMERCIAL_APPLICATION_FILTER_PARAM);\n }\n history.replace({ search: searchParams.toString() });\n }, [searchFilter, commercialApplicationsFilter]);\n\n const handleClearFilters = () => {\n setSearchFilter(\"\");\n setLocalSearchFilter(\"\");\n setCommercialApplicationsFilter([]);\n };\n\n return (\n <FilterContainer>\n {/*\n <FilterSection label=\"Search\">\n <SearchBarInput\n placeholder=\"Expertise, company, etc.\"\n value={localSearchFilter}\n onChange={(value) => {\n if (!value) {\n setSearchFilter(\"\");\n }\n setLocalSearchFilter(value);\n }}\n onSubmit={() => setSearchFilter(localSearchFilter)}\n buttonText=\"Go\"\n />\n </FilterSection>\n */}\n {commercialApplicationOptions.length > 0 && (\n <FilterSection label=\"Application area\">\n <CheckboxContainer>\n {commercialApplicationOptions.map((commercialApplication) => (\n <Checkbox\n key={commercialApplication}\n label={commercialApplication}\n size=\"sm\"\n isChecked={commercialApplicationsFilter.includes(commercialApplication)}\n onChange={(e) => {\n if (e.target.checked) {\n setCommercialApplicationsFilter([\n ...commercialApplicationsFilter,\n commercialApplication,\n ]);\n } else {\n setCommercialApplicationsFilter(\n commercialApplicationsFilter.filter(\n (application) => application !== commercialApplication\n )\n );\n }\n }}\n />\n ))}\n </CheckboxContainer>\n </FilterSection>\n )}\n <ResetFiltersButton onClick={handleClearFilters} />\n </FilterContainer>\n );\n}\n","import RequestForStartupCardWide from \"@components/Cards/RequestForStartupCardWide\";\nimport { FiltersButton } from \"@components/library\";\nimport EmptyState from \"@components/library/EmptyState\";\nimport { WINDOW_DIMENSIONS } from \"@constants\";\nimport { useIsMount } from \"@hooks/useIsMount\";\nimport useIsVisible from \"@hooks/useIsVisible\";\nimport { RootState } from \"@redux/store\";\nimport {\n getMarketplaceRequestForStartups,\n getMarketplaceRequestForStartupsFilterOptions,\n} from \"@requests/requestForStartups\";\nimport { useQuery } from \"@tanstack/react-query\";\nimport { t_html } from \"@utils/i18n\";\nimport { toastErrorHandler } from \"@utils/requests\";\nimport { useEffect, useLayoutEffect, useRef, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Loader } from \"semantic-ui-react\";\nimport styled from \"styled-components\";\nimport { Container, Description } from \"./RespondToRequests\";\nimport StartupProgramsFilters from \"./StartupProgramsFilters\";\nimport { Columns, ContentColumn, FilterColumn } from \"./sharedFilterStyles\";\n\nexport default function StartupPrograms() {\n const [isFiltersOpen, setIsFiltersOpen] = useState(false);\n const [searchFilter, setSearchFilter] = useState(\"\");\n const [commercialApplicationsFilter, setCommercialApplicationsFilter] = useState<string[]>([]);\n const allFilters = [searchFilter, commercialApplicationsFilter];\n\n const isTablet = useSelector((state: RootState) => state.window.isTablet);\n const isMount = useIsMount();\n\n const [shouldScrollToTop, setShouldScrollToTop] = useState(false);\n // scrollToRef is tied to the top of the results container, null when loading or no results\n const scrollToRef = useRef<HTMLDivElement | null>(null);\n // topRef is always visible and used to determine if we need to scroll\n const topRef = useRef<HTMLDivElement | null>(null);\n const isAtTop = useIsVisible(topRef);\n\n const { data: requests = [], isLoading } = useQuery(\n [\"getMarketplaceRequestForStartups\", ...allFilters],\n () =>\n getMarketplaceRequestForStartups({\n searchFilter,\n commercialApplicationsFilter,\n }),\n {\n onError: toastErrorHandler,\n }\n );\n\n // Filter options\n const { data: options } = useQuery({\n queryKey: [\"getMarketplaceRequestForStartupsFilterOptions\"],\n queryFn: getMarketplaceRequestForStartupsFilterOptions,\n });\n\n // Scroll to top on filter change (and eventually page num change)\n useEffect(() => {\n if (isMount) return;\n setShouldScrollToTop(true);\n }, [...allFilters]);\n\n useLayoutEffect(() => {\n let animationFrameId: number;\n\n const checkAndScroll = () => {\n if (shouldScrollToTop && scrollToRef.current) {\n if (!isAtTop) {\n window.scrollTo({\n top: scrollToRef.current.getBoundingClientRect().top + window.scrollY - 130,\n behavior: \"smooth\",\n });\n }\n setShouldScrollToTop(false);\n } else {\n animationFrameId = requestAnimationFrame(checkAndScroll);\n }\n };\n\n checkAndScroll();\n\n return () => {\n if (animationFrameId) cancelAnimationFrame(animationFrameId);\n };\n }, [requests, scrollToRef]);\n\n const filtersCount = (searchFilter.length ? 1 : 0) + commercialApplicationsFilter.length;\n\n const filters = (\n <StartupProgramsFilters\n searchFilter={searchFilter}\n setSearchFilter={setSearchFilter}\n commercialApplicationOptions={options?.commercial_applications ?? []}\n commercialApplicationsFilter={commercialApplicationsFilter}\n setCommercialApplicationsFilter={setCommercialApplicationsFilter}\n />\n );\n\n return (\n <Container>\n <Description>{t_html(\"pages.marketplace.startup_program.description_html\")}</Description>\n <Columns>\n <FilterColumn>{filters}</FilterColumn>\n <ContentColumn>\n {isTablet && (\n <div style={{ margin: \"0 0 20px\" }}>\n <FiltersButton\n variant=\"fourth\"\n count={filtersCount}\n isOpen={isFiltersOpen}\n setIsOpen={setIsFiltersOpen}\n />\n </div>\n )}\n {isFiltersOpen && isTablet && filters}\n <Cards>\n <RefSpan ref={topRef} />\n {(() => {\n if (isLoading) {\n return <Loader active inline=\"centered\" style={{ marginTop: 100 }} />;\n }\n if (requests.length === 0) {\n return <EmptyState text=\"No results\" imgSrc=\"\" />;\n }\n return (\n <>\n <RefSpan ref={scrollToRef} />\n {requests.map((request) => (\n <RequestForStartupCardWide key={request.id} request={request} />\n ))}\n </>\n );\n })()}\n </Cards>\n </ContentColumn>\n </Columns>\n </Container>\n );\n}\n\nconst Cards = styled.div`\n display: flex;\n flex-direction: column;\n gap: 20px;\n position: relative;\n\n ${WINDOW_DIMENSIONS.MOBILE_MEDIA_QUERY} {\n gap: 24px;\n }\n`;\n\nconst RefSpan = styled.span`\n position: absolute;\n`;\n","import { PageContainer, Tabs } from \"@components/library\";\nimport SuggestedNetworksModal from \"@components/modals/SuggestedNetworksModal\";\nimport { COLORS, FONTS } from \"@constants\";\nimport { useSearchParams } from \"@hooks/router\";\nimport { usePageNumParam } from \"@hooks/usePageNumParam\";\nimport { RootState } from \"@redux/store\";\nimport { marketplace_path } from \"@routes/routes\";\nimport { marketplacePath } from \"@routes/utils\";\nimport { SegmentEventName } from \"@tsTypes/__generated__/enums\";\nimport { UserRole } from \"@tsTypes/users\";\nimport { track } from \"@utils/appUtils\";\nimport { t } from \"@utils/i18n\";\nimport { useEffect, useState } from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Redirect, Route, useHistory, useParams } from \"react-router-dom\";\nimport FindPartners from \"./FindPartners\";\nimport RespondToRequests from \"./RespondToRequests\";\nimport StartupPrograms from \"./StartupPrograms\";\n\nconst TABS = [\"REQUESTS\", \"PARTNERS\", \"STARTUP_PROGRAMS\"] as const;\ntype Tab = (typeof TABS)[number];\n\nconst Marketplace = () => {\n const { tab: tabPath } = useParams();\n\n const [pageNum, setPageNum] = usePageNumParam();\n\n const currentUser = useSelector((state: RootState) => state.profiles.currentUser);\n const isMobile = useSelector((state: RootState) => state.window.isMobile);\n\n const history = useHistory();\n const [searchParams] = useSearchParams();\n const tabParam = searchParams.get(\"tab\")?.toUpperCase() as any;\n\n const [activeTab, setActiveTab] = useState<Tab>(tabPath?.toUpperCase() || tabParam || \"REQUESTS\");\n\n const handleCloseFollowModal = () => {\n searchParams.delete(\"follow\");\n history.push({ pathname: marketplacePath(), search: searchParams.toString() });\n };\n\n const shouldOpenFollowModal =\n currentUser.role === UserRole.SCIENTIST && Boolean(searchParams.get(\"follow\"));\n\n switch (history.location.pathname) {\n case \"/marketplace\":\n history.replace(\"/marketplace/requests\");\n break;\n case \"/home\":\n switch (tabParam) {\n case \"PARTNERS\":\n history.replace(\"/marketplace/partners\");\n break;\n case \"STARTUP_PROGRAMS\":\n history.replace(\"/marketplace/startup_programs\");\n break;\n default:\n history.replace(\"/marketplace/requests\");\n }\n break;\n }\n\n useEffect(() => {\n if (history.location.pathname === marketplacePath(\"partners\")) {\n setActiveTab(\"PARTNERS\");\n } else if (history.location.pathname === marketplacePath(\"startup_programs\")) {\n setActiveTab(\"STARTUP_PROGRAMS\");\n }\n }, [history.location.pathname]);\n\n return (\n <>\n <SuggestedNetworksModal isOpen={shouldOpenFollowModal} onClose={handleCloseFollowModal} />\n <PageContainer hasTopDivider={!isMobile} hasOverflowHidden>\n <Tabs\n activeTab={activeTab}\n setActiveTab={(newTab) => {\n track(SegmentEventName.Click, {\n ui_component: \"Marketplace Tab\",\n tab: newTab,\n });\n setActiveTab(newTab as Tab);\n setPageNum(1);\n\n switch (newTab) {\n case \"REQUESTS\":\n history.push(\"/marketplace/requests\");\n break;\n case \"PARTNERS\":\n history.push(\"/marketplace/partners\");\n break;\n case \"STARTUP_PROGRAMS\":\n history.push(\"/marketplace/startup_programs\");\n break;\n }\n }}\n tabs={[\n {\n key: \"REQUESTS\",\n label: t(\"pages.marketplace.tabs.requests\"),\n },\n {\n key: \"STARTUP_PROGRAMS\",\n label: t(\"pages.marketplace.tabs.startup_program\"),\n withNewTag: true,\n },\n {\n key: \"PARTNERS\",\n label: t(\"pages.marketplace.tabs.partners\"),\n \"data-testid\": \"industry-partners-tab\",\n },\n ]}\n activeColor={COLORS.HALO_BLUE}\n tabDistance={isMobile ? \"24px\" : \"32px\"}\n font={FONTS.SEMIBOLD_1}\n />\n <>\n <Route exact path={marketplace_path()}>\n <Redirect to={marketplacePath()} />\n </Route>\n <Route path={marketplacePath()}>\n <RespondToRequests currentPageNum={pageNum} setCurrentPageNum={setPageNum} />\n </Route>\n <Route path=\"/marketplace/partners\">\n <FindPartners currentPageNum={pageNum} setCurrentPageNum={setPageNum} />\n </Route>\n <Route path=\"/marketplace/startup_programs\">\n <StartupPrograms />\n </Route>\n </>\n </PageContainer>\n </>\n );\n};\n\nexport default Marketplace;\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":["RequestForStartupCardWide","request","currentUser","useSelector","state","profiles","windowWidth","window","width","_useFollowRequest","WINDOW_DIMENSIONS","TABLET_LANDSCAPE","useFollowRequest","id","handleFollowRequest","isUserFollowing","handleNotify","e","preventDefault","requestable","has_page","track","SegmentEventName","Click","ui_component","react_component","request_slug","slug","logged_in","Boolean","_request$requestable","external_url","parent_program","status","getLaunchableRequestStatus","button","_jsx","Button","size","type","variant","to","requestPageUrlPath","iconName","iconPosition","onClick","is_external_link","children","isExternalLink","openInNewTab","undefined","LaunchableRequestStatus","COMING_SOON","CLOSED","deadline","IN_EXTENSION","_jsxs","OptedIn","Icon","name","color","COLORS","GREEN","BaseCardWide","title","subtitle","SubtitleWrapper","SubtitleText","company","private_alias","company_name","verification_status","CompanyVerificationStatus","VERIFIED","StyledIcon","HALO_BLUE","imageUrl","avatar","url","cornerContent","Status","hasUnknownLaunchDate","unknown_launch_date","useCompactText","TABLET","tags","areas_of_expertise","buttons","styled","div","FONTS","REGULAR_2","span","EmptyState","imgSrc","emptyStateImg","text","textAlign","orientation","withBackground","height","margin","Container","Content","Image","src","alt","BLUE_LIGHT_100","NEUTRAL_500","img","useIsVisible","ref","_useState2","_slicedToArray","useState","isIntersecting","setIsIntersecting","observer","useMemo","IntersectionObserver","entry","useEffect","current","observe","disconnect","getMarketplaceRequestForStartups","async","searchFilter","commercialApplicationsFilter","api","get","params","options","search_filter","commercial_applications_filter","data","requests","getMarketplaceRequestForStartupsFilterOptions","getCommercialApplicationPageRequestForStartups","commercialApplicationId","pageNum","request_for_startups_path","commercial_application_id","page_num","getRequestForStartup","response","redirect","location","href","HeaderTextContainer","HeaderText","HEADING_5_SEMIBOLD","BLACK","CompaniesContainer","Company","CompanyImageContainer","Requested","MEDIUM_2","HeaderDivider","hr","NEUTRAL_300","BottomContainer","BLUE_600","SuggestedNetworksModal","isOpen","onClose","isSubmitting","setIsSubmitting","_useState4","companies","setCompanies","_useState6","followedCompanyIds","setFollowedCompanyIds","getCompanyFollowSuggestions","BlankModal","hideCloseButton","closeOnDimmerClick","map","logo","requestToJoinCompanyNetwork","companyId","_objectSpread","Follow","object","SegmentEventObject","company_id","err","console","error","handleRequest","disabled","PAGE_PARAM","KEYWORDS_FILTER_PARAM","WITH_ACTIVE_RFPS_FILTER_PARAM","WITH_ACTIVE_OPEN_CALLS_FILTER_PARAM","WITH_ACTIVE_RFS_FILTER_PARAM","FindPartnersFilters","keywordOptions","keywordsFilter","setKeywordsFilter","withActiveRfpsFilter","setWithActiveRfpsFilter","withActiveOpenCallsFilter","setWithActiveOpenCallsFilter","withActiveRfsFilter","setWithActiveRfsFilter","searchParams","useSearchParams","history","useHistory","isMount","useIsMount","has","keywords","split","keyword","getOptionFromValue","length","set","value","join","delete","replace","search","toString","FilterContainer","FilterSection","label","labelMargin","MultiSelectDropdown","placeholder","withSearchIcon","onChange","collapsible","CheckboxContainer","Checkbox","isChecked","target","checked","ResetFiltersButton","handleClearFilters","SORT_OPTIONS","FindPartners","currentPageNum","setCurrentPageNum","isLoading","setIsLoading","totalCompanyCount","setTotalCompanyCount","_useState8","sortBy","setSortBy","_useState10","isFiltersOpen","setIsFiltersOpen","_useState12","_useState14","_useState16","_useState18","allFilters","isTablet","sortByRef","useRef","abortControllerRef","AbortController","_useState20","shouldScrollToTop","setShouldScrollToTop","scrollToRef","topRef","isAtTop","useQuery","queryKey","queryFn","getCompanyMarketplaceFilterOptions","select","_useQuery2","getCompanyMarketplaceCompanies","getValueFromOption","pageNumber","enabled","FEATURE_FLAGS","COMPANY_MARKETPLACE_FILTER","onError","toastErrorHandler","companiesData","isLoadingCompanies","getAllCompanies","signal","total_count","aborted","appsignal","sendError","setAction","abort","_isLoading","_companies","_totalCount","useLayoutEffect","animationFrameId","checkAndScroll","scrollTo","top","getBoundingClientRect","scrollY","behavior","requestAnimationFrame","cancelAnimationFrame","filtersCount","filters","Description","t_html","Columns","FilterColumn","ContentColumn","SortBy","style","marginRight","FiltersButton","count","setIsOpen","SelectableDropdown","Companies","Loader","active","inline","marginTop","_Fragment","CompanyCardWide","fromHref","pathname","Pagination","currentPage","setCurrentPage","totalPages","Math","ceil","MOBILE_MEDIA_QUERY","SEARCH_FILTER_PARAM","COMMERCIAL_APPLICATION_FILTER_PARAM","StartupProgramsFilters","setSearchFilter","commercialApplicationOptions","setCommercialApplicationsFilter","setLocalSearchFilter","commercialApplication","includes","filter","application","StartupPrograms","_useQuery","_useQuery$data","commercial_applications","Cards","RefSpan","Marketplace","tabPath","useParams","tab","_usePageNumParam","parseInt","newPageNum","push","usePageNumParam","_usePageNumParam2","setPageNum","isMobile","tabParam","toUpperCase","activeTab","setActiveTab","shouldOpenFollowModal","role","UserRole","SCIENTIST","marketplacePath","handleCloseFollowModal","PageContainer","hasTopDivider","hasOverflowHidden","Tabs","newTab","tabs","key","t","withNewTag","activeColor","tabDistance","font","SEMIBOLD_1","Route","exact","path","marketplace_path","Redirect","RespondToRequests","background","ACTIVE","date","formatDateToEastern","Date","getFullYear","GREEN_800","GREEN_200","launch_date","ORANGE","ORANGE_300","NEUTRAL_250","statusText","toLowerCase","Number","IconContainer","SEMIBOLD_3"],"sourceRoot":""}