{"version":3,"file":"js/5008-b9afaf0470a8c356f29f.chunk.js","mappings":"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","sources":["webpack://halo/./app/client/src/components/CharLimitInput/CharLimitInput.styles.js","webpack://halo/./app/client/src/components/CharLimitInput/CharLimitInput.jsx","webpack://halo/./app/client/src/components/CharLimitInput/index.js","webpack://halo/./app/client/src/requests/scientists.ts","webpack://halo/./app/client/src/views/ProfilePage/mockAttachments.ts","webpack://halo/./app/client/src/views/ProfilePage/ProfileAttachments.tsx","webpack://halo/./app/client/src/views/ProfilePage/Sidebar/Sidebar.styles.tsx","webpack://halo/./app/client/src/views/ProfilePage/Sidebar/modals/styles.ts","webpack://halo/./app/client/src/views/ProfilePage/Sidebar/modals/AffiliationEditModal.tsx","webpack://halo/./app/client/src/views/ProfilePage/Sidebar/modals/StartupEditModal.tsx","webpack://halo/./app/client/src/views/ProfilePage/Sidebar/modals/KeywordEditModal.tsx","webpack://halo/./app/client/src/views/ProfilePage/Sidebar/Sidebar.tsx","webpack://halo/./app/client/src/views/ProfilePage/Sidebar/index.ts","webpack://halo/./app/client/src/views/ProfilePage/ProfilePage.tsx","webpack://halo/./app/client/src/views/ProfilePage/index.ts"],"sourcesContent":["import { COLORS, FONTS } from \"@constants\";\nimport resizeGrabber from \"@images/icons/resize_grabber.svg\";\nimport styled from \"styled-components\";\n\nexport const InputBox = styled.textarea`\n  width: ${({ width }) => width || `100%`};\n  padding: 10px;\n  display: grid;\n  border-radius: 3px;\n  color: ${COLORS.BLACK};\n  ${FONTS.REGULAR_2};\n  resize: none;\n\n  &::placeholder {\n    ${FONTS.REGULAR_2};\n    color: ${COLORS.NEUTRAL_500};\n  }\n\n  ${({ resizeable }) =>\n    resizeable &&\n    `\n  min-height: 100px;\n  resize: vertical;\n  &::-webkit-resizer {\n    background-image: url(${resizeGrabber});\n  }\n  `}\n\n  ${({ error }) =>\n    error &&\n    `\n    border-color: ${COLORS.RED};\n    &:focus {\n      border-color: ${COLORS.RED};\n    }\n  `}\n`;\n\nexport const InputDescription = styled.div`\n  margin: 0px 0 24px;\n  color: ${COLORS.BLACK};\n  ${FONTS.SEMIBOLD_1};\n  text-align: left;\n  ${({ labelStyles }) => labelStyles};\n`;\n\nexport const InputLabel = styled.div`\n  text-align: left;\n  ${FONTS.REGULAR_3};\n  color: ${COLORS.BLACK};\n  margin-bottom: 5px;\n  width: 100%;\n  ${({ error }) => error && `color: ${COLORS.RED};`}\n`;\n\nexport const OptionalDescription = styled.span`\n  margin: 0px 0 24px;\n  color: ${COLORS.BLACK};\n  ${FONTS.REGULAR_2};\n  text-align: left;\n`;\n","import PropTypes from \"prop-types\";\nimport { useState } from \"react\";\nimport * as S from \"./CharLimitInput.styles\";\n\nconst CharLimitInput = (props) => {\n  const [textValue, setTextValue] = useState(props.default || \"\");\n  const inputHandler = (e) => {\n    // update the characters in text area as user types\n    setTextValue(e.target.value);\n    // must call handler passed by parent to handle state\n    props.handler(e, e.target.value.length > props.charLimit);\n  };\n  const overLimit = (props.value?.length ?? textValue.length) > props.charLimit;\n\n  return (\n    <div style={props.style}>\n      <S.InputDescription labelStyles={props.labelStyles}>\n        {props.label}{\" \"}\n        {props.optional ? <S.OptionalDescription>(Optional)</S.OptionalDescription> : null}\n      </S.InputDescription>\n      <S.InputLabel error={overLimit}>\n        {\" \"}\n        {props.value?.length ?? textValue.length} of {props.charLimit} characters including spaces\n      </S.InputLabel>\n      <S.InputBox\n        value={props.value ?? textValue}\n        onChange={props.onChange ?? inputHandler}\n        error={overLimit}\n        {...props}\n      />\n    </div>\n  );\n};\n\nCharLimitInput.propTypes = {\n  default: PropTypes.string,\n  label: PropTypes.string,\n  placeholder: PropTypes.string,\n  charLimit: PropTypes.number,\n  rows: PropTypes.number,\n  handler: PropTypes.func,\n  optional: PropTypes.bool,\n  labelStyles: PropTypes.string,\n  resizeable: PropTypes.bool,\n};\n\nexport default CharLimitInput;\n","import CharLimitInput from \"./CharLimitInput\";\n\nexport default CharLimitInput;\n","import { Education, Startup } from \"@tsTypes/schema\";\nimport type { AffiliationType } from \"src/views/ProfilePage/Sidebar/modals/AffiliationEditModal\";\nimport request from \"./request\";\n\nexport const updateAffiliation = (\n  userId: number,\n  {\n    location,\n    startYear,\n    endYear,\n    title,\n  }: {\n    location: string;\n    startYear: string;\n    endYear: string;\n    title?: string;\n  }\n) =>\n  request.put(`/scientist_profile/${userId}`, {\n    university: location,\n    university_start_year: startYear,\n    university_end_year: endYear,\n    ...(title ? { title: title } : {}),\n  });\n\nexport const createOrUpdateEducation = async ({\n  degree,\n  location,\n  fieldOfStudy,\n  startYear,\n  endYear,\n  id,\n}: {\n  degree: Omit<AffiliationType, \"primary\">;\n  location: string;\n  fieldOfStudy?: string;\n  startYear: string;\n  endYear: string;\n  id?: number;\n}): Promise<Education> => {\n  const data = {\n    location,\n    degree,\n    ...(fieldOfStudy && { field_of_study: fieldOfStudy }),\n    start_year: startYear,\n    end_year: endYear,\n  };\n\n  if (id) {\n    return (await request.put(`/educations/${id}`, data)).data;\n  }\n  return (await request.post(\"/educations\", data)).data;\n};\n\nexport const deleteEducation = (id: number) => request.delete(`/educations/${id}`);\n\nexport const createOrUpdateStartup = async ({\n  name,\n  url,\n  startYear,\n  endYear,\n  id,\n  title,\n}: {\n  name: string;\n  url?: string;\n  startYear?: string;\n  endYear?: string;\n  id?: number;\n  title?: string;\n}): Promise<Startup> => {\n  const data = {\n    startup_name: name,\n    url: url && encodeURI(url),\n    start_year: startYear,\n    end_year: endYear,\n    primary_affiliation_title: title,\n  };\n\n  if (id) {\n    return (await request.put(`/startups/${id}`, data)).data;\n  }\n  return (await request.post(\"/startups\", data)).data;\n};\n\nexport const deleteStartup = (id: number): Promise<void> => request.delete(`/startups/${id}`);\n","import { PublicationPartial } from \"@tsTypes/publications/_publication\";\n\nexport const MOCK_PUBLICATIONS: PublicationPartial[] = [\n  {\n    id: 1,\n    title: \"Attention is All you Need\",\n    abstract:\n      \"The dominant sequence transduction models are based on complex recurrent or convolutional neural networks in an encoder-decoder configuration. The best performing models also connect the encoder and decoder through an attention mechanism. We propose a new simple network architecture, the Transformer, based solely on attention mechanisms, dispensing with recurrence and convolutions entirely.\",\n    url: \"www.halo.science\",\n    date: \"June 2017\",\n    publication_name: \"NIPS\",\n  },\n  {\n    id: 2,\n    title: \"Cleavage of structural proteins during the assembly of the head of bacteriophage T4\",\n    abstract:\n      \"Using an improved method of gel electrophoresis, many hitherto unknown proteins have been found in bacteriophage T4 and some of these have been identified with specific gene products. Four major components of the head are cleaved during the process of assembly, apparently after the precursor proteins have assembled into some large intermediate structure.\",\n    url: \"www.halo.science\",\n    publication_name: \"Nature\",\n    date: \"August 1970\",\n  },\n  {\n    id: 3,\n    title: \"Density-functional thermochemistry. III. The role of exact exchange.\",\n    abstract:\n      \"Despite the remarkable thermochemical accuracy of Kohn–Sham density‐functional theories with gradient corrections for exchange‐correlation [see, for example, A. D. Becke, J. Chem. Phys. 96, 2155 (1992)], we believe that further improvements are unlikely unless exact‐exchange information is considered.\",\n    url: \"www.halo.science\",\n    publication_name: \"J. Chem. Phys.\",\n    date: \"April 1993\",\n  },\n];\n","import ScientistContribution from \"@components/ScientistContribution\";\nimport { Button, GradientButton, IconButton, Tabs } from \"@components/library\";\nimport { COLORS, FONTS, STYLES } from \"@constants\";\nimport { toggleLoginModal } from \"@redux/actions/profileActions\";\nimport { FundingPartial } from \"@tsTypes/fundings/_funding\";\nimport { ScientistProfileProposal } from \"@tsTypes/index\";\nimport { PatentPartial } from \"@tsTypes/patents/_patent\";\nimport { PublicationPartial } from \"@tsTypes/publications/_publication\";\nimport { setPrevUrlCookie } from \"@utils/authUtils\";\nimport { t, t_html } from \"@utils/i18n\";\nimport pluralize from \"pluralize\";\nimport { Dispatch, SetStateAction, useMemo, useState } from \"react\";\nimport { useDispatch } from \"react-redux\";\nimport styled from \"styled-components\";\nimport { MOCK_PUBLICATIONS } from \"./mockAttachments\";\n\ninterface Props {\n  publications: PublicationPartial[];\n  openPublicationModal: (editingPublication: PublicationPartial | null) => void;\n  fundings: FundingPartial[];\n  openFundingModal: (editingFunding: FundingPartial | null) => void;\n  patents: PatentPartial[];\n  openPatentModal: (editingPatent: PatentPartial | null) => void;\n  proposals: ScientistProfileProposal[];\n  name: string;\n  isPublic: boolean;\n  isOwner: boolean;\n  shouldBlur: boolean;\n}\n\nconst TABS = [\"Publications\", \"Fundings\", \"Patents\", \"Proposals\"] as const;\ntype TabLabel = typeof TABS[number];\n\nconst TAB_FONT = FONTS.MEDIUM_2;\nconst TAB_DISTANCE = \"64px\";\nconst TAB_MARGIN = \"0 0 24px\";\n\nfunction ProfileAttachments({\n  publications,\n  openPublicationModal,\n  fundings,\n  openFundingModal,\n  patents,\n  openPatentModal,\n  proposals,\n  name,\n  isPublic,\n  isOwner,\n  shouldBlur,\n}: Props) {\n  const [activeTab, setActiveTab] = useState<TabLabel>(\"Publications\");\n  const dispatch = useDispatch();\n\n  const tabs: {\n    label: TabLabel;\n    key: string;\n    data: PublicationPartial[] | FundingPartial[] | PatentPartial[] | ScientistProfileProposal[];\n    count: number;\n    add?: () => void;\n    edit?: (id: number) => void;\n    \"data-testid\": string;\n  }[] = useMemo(\n    () =>\n      [\n        {\n          label: \"Publications\" as TabLabel,\n          data: publications,\n          visible: true,\n          add: () => openPublicationModal(null),\n          edit: (id: number) => openPublicationModal(publications.find((p) => p.id === id) ?? null),\n          \"data-testid\": \"profile-page-publications-tab\",\n        },\n        {\n          label: \"Funding\" as TabLabel,\n          data: fundings,\n          visible: true,\n          add: () => openFundingModal(null),\n          edit: (id: number) => openFundingModal(fundings.find((f) => f.id === id) ?? null),\n          \"data-testid\": \"profile-page-fundings-tab\",\n        },\n        {\n          label: \"Patents\" as TabLabel,\n          data: patents,\n          visible: true,\n          add: () => openPatentModal(null),\n          edit: (id: number) => openPatentModal(patents.find((p) => p.id === id) ?? null),\n          \"data-testid\": \"profile-page-patent-tab\",\n        },\n        {\n          label: \"Proposals\" as TabLabel,\n          data: proposals,\n          visible: !isPublic && (proposals.length > 0 || isOwner),\n          \"data-testid\": \"profile-page-proposals-tab\",\n        },\n      ]\n        .filter(({ visible }) => visible)\n        .map((tab) => ({\n          ...tab,\n          key: tab.label,\n          count: tab.data.length,\n        })),\n    [publications, fundings, patents, proposals, isPublic]\n  );\n\n  // Show blurry preview if logged out (and not digest)\n  if (shouldBlur) {\n    return (\n      <TabsContainer shouldBlur>\n        <Tabs\n          activeTab={activeTab}\n          setActiveTab={setActiveTab as Dispatch<SetStateAction<string>>}\n          tabs={TABS.map((tab) => ({ key: tab, label: tab }))}\n          font={TAB_FONT}\n          tabDistance={TAB_DISTANCE}\n          margin={TAB_MARGIN}\n        />\n        <TabPanel isActive shouldBlur>\n          {MOCK_PUBLICATIONS.map((attachment) => (\n            <ScientistContribution key={attachment.id} contribution={attachment} />\n          ))}\n        </TabPanel>\n        <SignedOutOverlay>\n          {t_html(\"pages.scientist_profile_page.signed_out_cta.text_html\", {\n            name: name ?? \"the researcher\",\n          })}\n          <br />\n          <GradientButton\n            size=\"md\"\n            margin=\"24px 0 0 0\"\n            width=\"100px\"\n            onClick={() => {\n              setPrevUrlCookie(window.location.href);\n              dispatch(toggleLoginModal({ open: true }));\n            }}\n          >\n            {t(\"pages.scientist_profile_page.signed_out_cta.button\")}\n          </GradientButton>\n        </SignedOutOverlay>\n      </TabsContainer>\n    );\n  }\n\n  return (\n    <TabsContainer>\n      <Tabs\n        activeTab={activeTab}\n        setActiveTab={setActiveTab as Dispatch<SetStateAction<string>>}\n        tabs={tabs}\n        font={TAB_FONT}\n        tabDistance={TAB_DISTANCE}\n        margin={TAB_MARGIN}\n      />\n      {tabs.map((tab) => (\n        <TabPanel isActive={activeTab === tab.label} key={`tabpanel-${tab.label}`}>\n          {isOwner && !isPublic && tab.add && (\n            <div>\n              <Button\n                size=\"sm\"\n                iconName=\"Edit\"\n                variant=\"secondary\"\n                onClick={() => tab.add!()}\n                data-testid={`profile-page-add-${pluralize(tab.label.toLowerCase(), 1)}-button`}\n                margin=\"0 0 16px\"\n              >\n                Add {pluralize(tab.label, 1)}\n              </Button>\n            </div>\n          )}\n          {tab.data.map(\n            (attachment) =>\n              activeTab === tab.label && (\n                <EditRow key={attachment.id}>\n                  <ScientistContribution contribution={attachment} />\n                  {isOwner && !isPublic && tab.edit && (\n                    <IconButton\n                      iconName=\"Edit\"\n                      variant=\"fourth\"\n                      data-testid=\"profile-page-edit-button\"\n                      onClick={() => tab.edit!(attachment.id)}\n                      margin=\"0 0 0 8px\"\n                      hideTooltip\n                      size=\"xs\"\n                    />\n                  )}\n                </EditRow>\n              )\n          )}\n        </TabPanel>\n      ))}\n    </TabsContainer>\n  );\n}\n\nexport default ProfileAttachments;\n\nconst TabsContainer = styled.div`\n  position: relative;\n  width: 700px;\n  margin-top: 15px;\n  margin-bottom: 15rem;\n  min-height: 500px;\n  ${({ shouldBlur }) => shouldBlur && \"pointer-events: none;\"}\n`;\nconst TabPanel = styled.div`\n  display: ${({ isActive }) => (isActive ? \"flex\" : \"none\")};\n  flex-direction: column;\n  gap: 8px;\n  ${({ shouldBlur }) =>\n    shouldBlur &&\n    `\n    filter: blur(3px);\n    pointer-events: none;\n    user-select: none;\n  `}\n  ${FONTS.REGULAR_2};\n`;\nconst SignedOutOverlay = styled.div`\n  position: absolute;\n  top: 160px;\n  left: 50%;\n  transform: translateX(-50%);\n\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  width: 400px;\n  padding: 36px 20px;\n\n  border-radius: 8px;\n  text-align: center;\n  white-space: pre-wrap;\n  background-color: ${COLORS.WHITE};\n  box-shadow: ${STYLES.SHADOW_D};\n  pointer-events: all;\n  ${FONTS.MEDIUM_1};\n`;\nconst EditRow = styled.div`\n  display: flex;\n  & > :nth-child(2) {\n    opacity: 0.4;\n  }\n`;\n","import { COLORS, JS_FONTS } from \"@constants\";\nimport { StyleSheet } from \"aphrodite\";\n\nconst Styles = StyleSheet.create({\n  Sidebar_container: {\n    textAlign: \"center\",\n    borderRight: `1px solid ${COLORS.NEUTRAL_200}`,\n    background: COLORS.WHITE,\n    position: \"relative\",\n    height: \"calc(100% + 40px)\",\n    padding: \"44px 0 60px\",\n  },\n  Sidebar_showMoreText: {\n    ...JS_FONTS.REGULAR_4,\n    color: COLORS.NEUTRAL_200,\n    cursor: \"pointer\",\n  },\n  Sidebar_dropdownIcon: {\n    marginLeft: \"10px\",\n    display: \"inline-block\",\n  },\n  Sidebar_showMoreIcon: {\n    marginRight: \"5px\",\n    display: \"inline-block\",\n    height: \"20px\",\n    width: \"20px\",\n  },\n  Sidebar_accordion: {\n    textAlign: \"left\",\n    paddingLeft: \"80px\",\n  },\n  Sidebar_verifiedIcon: {\n    marginLeft: \"5px\",\n    marginRight: \"5px\",\n  },\n  Sidebar_popupProfilePic: {\n    height: \"100px\",\n    width: \"100px\",\n    backgroundColor: COLORS.NEUTRAL_100,\n    margin: \"auto\",\n    borderRadius: \"50%\",\n    backgroundRepeat: \"no-repeat\",\n    backgroundPosition: \"center center\",\n    backgroundSize: \"cover\",\n    cursor: \"pointer\",\n  },\n  Sidebar_regularProfilePic: {\n    height: \"100px\",\n    width: \"100px\",\n    backgroundColor: COLORS.NEUTRAL_100,\n    margin: \"auto\",\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\",\n    ...JS_FONTS.HEADING_2_SEMIBOLD,\n    borderRadius: \"50%\",\n    backgroundRepeat: \"no-repeat\",\n    backgroundPosition: \"center center\",\n    backgroundSize: \"cover\",\n  },\n  Sidebar_regularProfilePicClickable: {\n    cursor: \"pointer\",\n  },\n  Sidebar_profilePicContainer: {\n    marginBottom: \"20px\",\n  },\n  Sidebar_profileName: {\n    color: COLORS.BLACK,\n    ...JS_FONTS.HEADING_4_SEMIBOLD,\n    marginBottom: 10,\n  },\n  Sidebar_headline: {\n    width: \"75%\",\n    margin: \"-10px auto 20px\",\n    color: COLORS.BLACK,\n    ...JS_FONTS.REGULAR_1,\n    textAlign: \"left\",\n  },\n  Sidebar_about: {\n    width: \"75%\",\n    margin: \"-10px auto 30px\",\n    color: COLORS.BLACK,\n    ...JS_FONTS.REGULAR_2,\n  },\n  Sidebar_profileTitle: {\n    position: \"relative\",\n    ...JS_FONTS.MEDIUM_2,\n    color: COLORS.NEUTRAL_500,\n    overflowX: \"hidden\",\n    textOverflow: \"ellipsis\",\n    width: \"75%\",\n    margin: \"0 auto 30px\",\n  },\n  Sidebar_followButtonContainer: {\n    display: \"flex\",\n    justifyContent: \"center\",\n    margin: \"-8px 0 24px\",\n  },\n  Sidebar_sidebarHeader: {\n    display: \"flex\",\n    justifyContent: \"space-between\",\n    alignItems: \"center\",\n    color: COLORS.NEUTRAL_500,\n    ...JS_FONTS.MEDIUM_2,\n    letterSpacing: \"1px\",\n    width: \"75%\",\n    margin: \"30px auto 10px\",\n    textAlign: \"left\",\n  },\n  Sidebar_sidebar: {\n    color: COLORS.HALO_BLUE,\n    ...JS_FONTS.REGULAR_2,\n    width: \"75%\",\n    margin: \"auto\",\n    textAlign: \"left\",\n  },\n  Sidebar_interestSidebar: {\n    color: COLORS.HALO_BLUE,\n    ...JS_FONTS.MEDIUM_3,\n    width: \"75%\",\n    margin: \"auto\",\n    textAlign: \"left\",\n    display: \"flex\",\n    flexFlow: \"row wrap\",\n  },\n  Sidebar_keyword: {\n    padding: \"5px 10px\",\n    marginRight: \"10px\",\n    marginBottom: \"10px\",\n    width: \"fit-content\",\n    borderRadius: \"4px\",\n    border: `1px solid ${COLORS.NEUTRAL_200}`,\n    color: COLORS.NEUTRAL_500,\n    textAlign: \"left\",\n    ...JS_FONTS.REGULAR_4,\n  },\n  Sidebar_expertise: {\n    padding: \"5px 10px\",\n    marginRight: \"10px\",\n    marginBottom: \"10px\",\n    width: \"fit-content\",\n    borderRadius: \"4px\",\n    border: `1px solid ${COLORS.HALO_BLUE}`,\n    color: COLORS.HALO_BLUE,\n    textAlign: \"left\",\n    ...JS_FONTS.REGULAR_4,\n  },\n  Sidebar_application: {\n    backgroundColor: COLORS.NEUTRAL_100,\n  },\n  Sidebar_opportunityList: {\n    textAlign: \"left\",\n    marginLeft: \"30px\",\n  },\n  Sidebar_opportunityHeader: {\n    ...JS_FONTS.SEMIBOLD_2,\n    color: COLORS.BLACK,\n    marginBottom: \"16px\",\n  },\n  Sidebar_opportunityTitle: {\n    ...JS_FONTS.REGULAR_2,\n    color: COLORS.BLACK,\n    display: \"inline-block\",\n    textOverflow: \"ellipsis\",\n    overflowX: \"hidden\",\n    whiteSpace: \"nowrap\",\n    width: \"75%\",\n    cursor: \"pointer\",\n  },\n  Sidebar_opportunityTitleActive: {\n    ...JS_FONTS.SEMIBOLD_2,\n    color: COLORS.BLACK,\n    display: \"inline-block\",\n    textOverflow: \"ellipsis\",\n    overflowX: \"hidden\",\n    whiteSpace: \"nowrap\",\n    width: \"75%\",\n    cursor: \"pointer\",\n  },\n  Sidebar_opportunityCount: {\n    ...JS_FONTS.REGULAR_2,\n    color: COLORS.BLACK,\n    display: \"inline-block\",\n    width: \"25%\",\n    verticalAlign: \"top\",\n    textAlign: \"right\",\n    paddingRight: \"15px\",\n  },\n  Sidebar_opportunityRow: {\n    marginBottom: \"15px\",\n  },\n  Sidebar_uploadIcon: {\n    height: \"100%\",\n    alignItems: \"center\",\n    justifyContent: \"center\",\n    display: \"inline-flex\",\n    margin: 0,\n    padding: 0,\n    position: \"absolute\",\n    top: 0,\n    left: 0,\n    fontSize: \"32px\",\n    width: \"100%\",\n    color: COLORS.NEUTRAL_400,\n    cursor: \"pointer\",\n  },\n  Sidebar_settingsGroup: {},\n  Sidebar_settingsLabelActive: {\n    color: COLORS.HALO_BLUE,\n    ...JS_FONTS.REGULAR_2,\n    marginBottom: \"12px\",\n    cursor: \"pointer\",\n  },\n  Sidebar_settingsLabel: {\n    color: COLORS.BLACK,\n    ...JS_FONTS.REGULAR_2,\n    marginBottom: \"12px\",\n    cursor: \"pointer\",\n  },\n  Sidebar_regularText: {\n    color: COLORS.BLACK,\n    ...JS_FONTS.REGULAR_2,\n  },\n  Sidebar_emptyPFPic: {\n    ...JS_FONTS.MEDIUM_3,\n    position: \"absolute\",\n    top: \"0\",\n    color: COLORS.WHITE,\n    width: \"100%\",\n    height: \"100%\",\n    padding: \"50px 10px 0\",\n    \":hover\": {\n      opacity: 0.8,\n    },\n  },\n  Sidebar_affiliationRow: {\n    display: \"grid\",\n    gridTemplateColumns: \"1fr auto\",\n    gap: 10,\n  },\n  Sidebar_iconButton: {\n    cursor: \"pointer\",\n  },\n  Sidebar_sidebarSubtext: {\n    color: COLORS.NEUTRAL_500,\n  },\n  Sidebar_link: {\n    color: COLORS.HALO_BLUE,\n  },\n});\n\nexport default Styles;\n","import styled from \"styled-components\";\n\nimport { COLORS, FONTS } from \"@constants\";\n\nexport const Form = styled.form`\n  padding: 45px;\n`;\n\nexport const Heading = styled.div`\n  margin-bottom: 32px;\n\n  ${FONTS.HEADING_4_SEMIBOLD};\n  color: ${COLORS.BLACK};\n`;\n\nexport const Label = styled.label`\n  display: flex;\n  flex-direction: column;\n  gap: 5px;\n\n  width: 100%;\n\n  ${FONTS.MEDIUM_3};\n  color: ${COLORS.BLACK};\n`;\n\nexport const Error = styled.div`\n  margin: 20px 0 -20px;\n\n  ${FONTS.REGULAR_2};\n  color: ${COLORS.RED};\n`;\n\nexport const ButtonContainer = styled.div`\n  display: flex;\n  justify-content: space-between;\n\n  width: 100%;\n  margin-top: 36px;\n\n  & > div {\n    display: flex;\n  }\n`;\n\nexport const Contact = styled.div`\n  margin-top: 15px;\n\n  ${FONTS.REGULAR_3}\n`;\n\nexport const Gap = styled.div`\n  margin-top: 20px;\n`;\n\nexport const TwoColumns = styled.div`\n  display: flex;\n  flex-direction: row;\n  gap: 20px;\n\n  & > div {\n    width: 50%;\n  }\n`;\n","import { FormEvent, useEffect, useState } from \"react\";\nimport { Link } from \"react-router-dom\";\n\nimport {\n  BlankModal,\n  Button,\n  SingleSelectDropdown,\n  TextInput,\n  UniversityDropdown,\n} from \"@components/library\";\nimport { createOrUpdateEducation, deleteEducation, updateAffiliation } from \"@requests/scientists\";\nimport { getOptionFromValue, getValueFromOption, getYearOptions } from \"@utils/dropdownUtils\";\n\nimport { DropdownOption } from \"@components/library/Dropdowns/DropdownOption\";\nimport { SCIENTIST_ROLE_OPTIONS } from \"src/views/Onboarding/Step3/ResearchInstitutionScientist\";\nimport { ButtonContainer, Contact, Error, Form, Gap, Heading, Label, TwoColumns } from \"./styles\";\n\nexport type AffiliationType = \"primary\" | \"PhD\" | \"MD\" | \"Postdoctoral Scientist\";\n\ninterface Props {\n  isOpen: boolean;\n  onClose: () => void;\n  type: AffiliationType;\n  profileUser: any;\n  setProfileUser: (newProfileUser: any) => void;\n}\n\nconst HEADING = {\n  primary: \"Current Institution\",\n  PhD: \"Add PhD\",\n  MD: \"Add MD\",\n  \"Postdoctoral Scientist\": \"Add Postdoc\",\n};\n\nexport default function AffiliationEditModal({\n  isOpen,\n  onClose,\n  type,\n  profileUser,\n  setProfileUser,\n}: Props) {\n  const [location, setLocation] = useState<string | undefined>();\n  const [title, setTitle] = useState<DropdownOption | null>(null);\n  const [fieldOfStudy, setFieldOfStudy] = useState<string | undefined>();\n  const [startYear, setStartYear] = useState<string | undefined>();\n  const [endYear, setEndYear] = useState<string | undefined>();\n  const [id, setId] = useState<number | undefined>();\n\n  const [error, setError] = useState<string | null>(null);\n  const [isSubmitting, setIsSubmitting] = useState(false);\n\n  useEffect(() => {\n    if (type === \"primary\") {\n      setLocation(profileUser.profile_info.university);\n      setTitle(\n        SCIENTIST_ROLE_OPTIONS.find((option) => option?.value === profileUser.profile_info.title)!\n      );\n      setStartYear(profileUser.profile_info.university_start_year);\n      setEndYear(profileUser.profile_info.university_end_year);\n      return;\n    }\n    const education = profileUser.profile_info.educations.find(({ degree }) => degree === type);\n    setLocation(education?.location);\n    setFieldOfStudy(education?.field_of_study);\n    setStartYear(education?.start_year);\n    setEndYear(education?.end_year);\n    setId(education?.id);\n  }, [type]);\n\n  useEffect(() => {\n    // Ensure that end year is gte to start year\n    if (!startYear || !endYear) return;\n    if (endYear !== \"Present\" && startYear > endYear) {\n      setError(\"Please enter an end year that is after the start year\");\n    } else {\n      setError(null);\n    }\n  }, [startYear, endYear]);\n\n  if (!isOpen) return null;\n\n  const handleSubmit = async (e: FormEvent) => {\n    e.preventDefault();\n\n    if (!location || !startYear || !endYear) return;\n\n    setIsSubmitting(true);\n    try {\n      if (type === \"primary\") {\n        // Update primary affiliation\n        await updateAffiliation(profileUser.id, {\n          location,\n          startYear,\n          endYear,\n          title: title?.value,\n        });\n        setProfileUser({\n          ...profileUser,\n          profile_info: {\n            ...profileUser.profile_info,\n            title: title?.value,\n            university: location,\n            university_start_year: startYear,\n            university_end_year: endYear,\n          },\n        });\n      } else {\n        // Update PhD, MD, or Postdoc\n        const response = await createOrUpdateEducation({\n          degree: type,\n          location,\n          fieldOfStudy,\n          startYear,\n          endYear,\n          id,\n        });\n        const updatedUser = {\n          ...profileUser,\n          profile_info: {\n            ...profileUser.profile_info,\n            educations: [\n              ...profileUser.profile_info.educations.filter(({ degree }) => degree !== type),\n              {\n                degree: type,\n                location,\n                field_of_study: fieldOfStudy,\n                start_year: startYear,\n                end_year: endYear,\n                id: response.id,\n              },\n            ],\n          },\n        };\n        setProfileUser(updatedUser);\n      }\n\n      onClose();\n    } catch (err) {\n      console.error(err);\n      setError(\"Something went wrong, please try again.\");\n      setIsSubmitting(false);\n    }\n  };\n\n  const handleDelete = async () => {\n    setIsSubmitting(true);\n\n    if (!id) return;\n\n    try {\n      await deleteEducation(id);\n\n      const updatedUser = {\n        ...profileUser,\n        profile_info: {\n          ...profileUser.profile_info,\n          educations: profileUser.profile_info.educations.filter(\n            (education) => education.degree !== type\n          ),\n        },\n      };\n      setProfileUser(updatedUser);\n\n      onClose();\n    } catch (err) {\n      console.error(err);\n      setError(\"Something went wrong, please try again.\");\n      setIsSubmitting(false);\n    }\n  };\n\n  return (\n    <BlankModal width=\"700px\" isOpen={isOpen} onClose={onClose} closeOnDimmerClick hideCloseButton>\n      <Form onSubmit={handleSubmit}>\n        <Heading>{HEADING[type]}</Heading>\n        <Label>\n          Research Institution\n          <UniversityDropdown\n            value={getOptionFromValue(location)}\n            onChange={(option) => setLocation(getValueFromOption(option))}\n          />\n        </Label>\n        <Contact>\n          <Link\n            to=\"/contact?message=Hello, I can't find my institution. My institution is: \"\n            target=\"_blank\"\n          >\n            Contact us\n          </Link>{\" \"}\n          if you don&rsquo;t see your institution\n        </Contact>\n        {type === \"primary\" && (\n          <>\n            <Gap />\n            <Label>\n              Title\n              <SingleSelectDropdown\n                value={title}\n                onChange={setTitle}\n                options={SCIENTIST_ROLE_OPTIONS as DropdownOption[]}\n              />\n            </Label>\n          </>\n        )}\n        {type === \"PhD\" && (\n          <>\n            <Gap />\n            <Label>\n              Field of Study\n              <TextInput\n                value={fieldOfStudy ?? \"\"}\n                characterLimit={80}\n                onChange={(e) => setFieldOfStudy(e.target.value.slice(0, 80))}\n                placeholder=\"Add your field of study\"\n                hideClearButton\n              />\n            </Label>\n          </>\n        )}\n        <Gap />\n        <TwoColumns>\n          <div>\n            <Label>\n              Start year\n              <SingleSelectDropdown\n                placeholder=\"Start year\"\n                options={getYearOptions()}\n                value={getOptionFromValue(startYear)}\n                onChange={(option) => setStartYear(getValueFromOption(option))}\n                maxMenuHeight=\"200px\"\n                menuPlacement=\"bottom\"\n                isPortal\n              />\n            </Label>\n          </div>\n          <div>\n            <Label>\n              End year\n              <SingleSelectDropdown\n                placeholder=\"End year\"\n                options={[{ label: \"Present\", value: \"Present\" }, ...getYearOptions()]}\n                value={getOptionFromValue(endYear)}\n                onChange={(option) => setEndYear(getValueFromOption(option))}\n                maxMenuHeight=\"200px\"\n                menuPlacement=\"bottom\"\n                isPortal\n              />\n            </Label>\n          </div>\n        </TwoColumns>\n        {error && <Error>{error}</Error>}\n        <ButtonContainer>\n          <div>\n            {type !== \"primary\" && id && (\n              <Button\n                type=\"button\"\n                onClick={handleDelete}\n                disabled={isSubmitting}\n                variant=\"destructive-ghost\"\n              >\n                Remove {type === \"Postdoctoral Scientist\" ? \"Postdoc\" : type}\n              </Button>\n            )}\n          </div>\n          <div>\n            <Button type=\"button\" onClick={onClose} variant=\"ghost\" margin=\"0 15px 0 0\">\n              Cancel\n            </Button>\n            <Button\n              type=\"submit\"\n              disabled={\n                !location ||\n                (type === \"primary\" && !title) ||\n                (type === \"PhD\" && !fieldOfStudy) ||\n                !startYear ||\n                !endYear ||\n                Boolean(error) ||\n                isSubmitting\n              }\n            >\n              Save\n            </Button>\n          </div>\n        </ButtonContainer>\n      </Form>\n    </BlankModal>\n  );\n}\n","import { FormEvent, useEffect, useState } from \"react\";\n\nimport { BlankModal, Button, SingleSelectDropdown, TextInput } from \"@components/library\";\nimport { createOrUpdateStartup, deleteStartup } from \"@requests/scientists\";\nimport { getOptionFromValue, getValueFromOption, getYearOptions } from \"@utils/dropdownUtils\";\n\nimport { DropdownOption } from \"@components/library/Dropdowns/DropdownOption\";\nimport { STARTUP_TITLE_OPTIONS } from \"src/views/Onboarding/Step3/CompanyScientist\";\nimport { ButtonContainer, Error, Form, Gap, Heading, Label, TwoColumns } from \"./styles\";\n\ninterface Props {\n  isOpen: boolean;\n  onClose: () => void;\n  profileUser: any;\n  setProfileUser: (newProfileUser: any) => void;\n}\n\nexport default function StartupEditModal({ isOpen, onClose, profileUser, setProfileUser }: Props) {\n  const id: number | undefined = profileUser.profile_info.startup?.id;\n  const isPrimaryAffiliation: boolean | undefined =\n    profileUser.profile_info.startup?.primary_affiliation;\n\n  const [name, setName] = useState<string>(profileUser.profile_info.startup?.startup_name);\n  const [url, setUrl] = useState<string>(profileUser.profile_info.startup?.url);\n  const [title, setTitle] = useState<DropdownOption | null>(\n    getOptionFromValue(profileUser.profile_info.title)\n  );\n  const [startYear, setStartYear] = useState<string>(profileUser.profile_info.startup?.start_year);\n  const [endYear, setEndYear] = useState<string>(profileUser.profile_info.startup?.end_year);\n\n  const [error, setError] = useState<string | null>(null);\n  const [isSubmitting, setIsSubmitting] = useState(false);\n\n  useEffect(() => {\n    // Ensure that end year is gte to start year\n    if (!startYear || !endYear) return;\n    if (endYear !== \"Present\" && startYear > endYear) {\n      setError(\"Please enter an end year that is after the start year\");\n    } else {\n      setError(null);\n    }\n  }, [startYear, endYear]);\n\n  if (!isOpen) return null;\n\n  const handleSubmit = async (e: FormEvent) => {\n    e.preventDefault();\n\n    if (!name || !startYear || !endYear) return;\n\n    setIsSubmitting(true);\n    try {\n      const response = await createOrUpdateStartup({\n        name,\n        url,\n        startYear,\n        endYear,\n        id,\n        ...(isPrimaryAffiliation && { title: getValueFromOption(title) }),\n      });\n      const updatedUser = {\n        ...profileUser,\n        profile_info: {\n          ...profileUser.profile_info,\n          ...(isPrimaryAffiliation && { title: getValueFromOption(title) }),\n          startup: {\n            startup_name: name,\n            url,\n            start_year: startYear,\n            end_year: endYear,\n            id: response.id,\n            primary_affiliation: isPrimaryAffiliation,\n          },\n        },\n      };\n      setProfileUser(updatedUser);\n      onClose();\n    } catch (err) {\n      console.error(err);\n      setError(\"Something went wrong, please try again.\");\n      setIsSubmitting(false);\n    }\n  };\n\n  const handleDelete = async () => {\n    setIsSubmitting(true);\n\n    if (!id) return;\n\n    try {\n      await deleteStartup(id);\n\n      const updatedUser = {\n        ...profileUser,\n        profile_info: {\n          ...profileUser.profile_info,\n          startup: undefined,\n        },\n      };\n      setProfileUser(updatedUser);\n\n      onClose();\n    } catch (err) {\n      console.error(err);\n      setError(\"Something went wrong, please try again.\");\n      setIsSubmitting(false);\n    }\n  };\n\n  return (\n    <BlankModal width=\"700px\" isOpen={isOpen} onClose={onClose} closeOnDimmerClick hideCloseButton>\n      <Form onSubmit={handleSubmit}>\n        <Heading>Add Startup</Heading>\n        <Label>\n          Startup Name\n          <TextInput\n            value={name ?? \"\"}\n            onChange={(e) => setName(e.target.value.slice(0, 80))}\n            characterLimit={80}\n            data-testid=\"startup-name-input\"\n            placeholder=\"Startup Name\"\n            hideClearButton\n          />\n        </Label>\n        <Gap />\n        <Label>\n          URL\n          <TextInput\n            value={url ?? \"\"}\n            onChange={(e) => setUrl(e.target.value)}\n            data-testid=\"startup-url-input\"\n            placeholder=\"Startup URL\"\n            hideClearButton\n          />\n        </Label>\n        {isPrimaryAffiliation && (\n          <>\n            <Gap />\n            <Label>\n              Title\n              <SingleSelectDropdown\n                value={title}\n                onChange={setTitle}\n                options={STARTUP_TITLE_OPTIONS as DropdownOption[]}\n                data-testid=\"startup-title-dropdown\"\n              />\n            </Label>\n          </>\n        )}\n        <Gap />\n        <TwoColumns>\n          <div>\n            <Label>\n              Start year\n              <SingleSelectDropdown\n                placeholder=\"Start year\"\n                data-testid=\"startup-start-year-input\"\n                options={getYearOptions()}\n                value={getOptionFromValue(startYear)}\n                onChange={(option) => setStartYear(getValueFromOption(option) ?? \"\")}\n                maxMenuHeight=\"200px\"\n                menuPlacement=\"bottom\"\n                isPortal\n              />\n            </Label>\n          </div>\n          <div>\n            <Label>\n              End year\n              <SingleSelectDropdown\n                placeholder=\"End year\"\n                data-testid=\"startup-end-year-input\"\n                options={[{ label: \"Present\", value: \"Present\" }, ...getYearOptions()]}\n                value={getOptionFromValue(endYear)}\n                onChange={(option) => setEndYear(getValueFromOption(option) ?? \"\")}\n                maxMenuHeight=\"200px\"\n                menuPlacement=\"bottom\"\n                isPortal\n              />\n            </Label>\n          </div>\n        </TwoColumns>\n        {error && <Error>{error}</Error>}\n        <ButtonContainer>\n          <div>\n            {id && !isPrimaryAffiliation && (\n              <Button\n                type=\"button\"\n                onClick={handleDelete}\n                disabled={isSubmitting}\n                variant=\"destructive-ghost\"\n              >\n                Remove Startup\n              </Button>\n            )}\n          </div>\n          <div>\n            <Button type=\"button\" onClick={onClose} variant=\"ghost\" margin=\"0 15px 0 0\">\n              Cancel\n            </Button>\n            <Button\n              type=\"submit\"\n              data-testid=\"startup-save-button\"\n              disabled={!name || !startYear || !endYear || Boolean(error) || isSubmitting}\n            >\n              Save\n            </Button>\n          </div>\n        </ButtonContainer>\n      </Form>\n    </BlankModal>\n  );\n}\n","import { useEffect, useState } from \"react\";\n\nimport { Button } from \"@components/library\";\nimport KeywordsDropdown from \"@components/library/Dropdowns/KeywordsDropdown/KeywordsDropdown\";\nimport BlankModal, { BlankModalProps } from \"@components/library/ModalBases/BlankModal\";\nimport api from \"@requests/request\";\nimport { KeywordType } from \"@tsTypes/keywords\";\nimport { ButtonContainer, Form, Heading, Label } from \"./styles\";\n\ninterface KeywordEditModalProps extends BlankModalProps {\n  type: KeywordType;\n  currentValue: string[];\n  profileUser: any;\n  setProfileUser: (newProfileUser: any) => void;\n}\n\nconst HEADING = {\n  discipline: \"Which disciplines are most relevant to your work?\",\n  area_of_expertise: \"What is your expertise?\",\n};\n\nconst KeywordEditModal = ({\n  isOpen,\n  onClose,\n  type,\n  currentValue,\n  profileUser,\n  setProfileUser,\n}: KeywordEditModalProps) => {\n  const [value, setValue] = useState<string[]>([]);\n  const [isSubmitting, setIsSubmitting] = useState(false);\n\n  useEffect(() => {\n    setValue(currentValue);\n  }, [currentValue, isOpen]);\n\n  if (!isOpen) return null;\n\n  const handleSubmit = async () => {\n    setIsSubmitting(true);\n\n    try {\n      await api.put(`/scientist_profile/${profileUser.id}`, {\n        ...(type === \"discipline\" && { disciplines: value }),\n        ...(type === \"area_of_expertise\" && { areas_of_expertise: value }),\n      });\n      const updatedUser = {\n        ...profileUser,\n        ...(type === \"discipline\" && { disciplines: value }),\n        ...(type === \"area_of_expertise\" && { areas_of_expertise: value }),\n      };\n      setProfileUser(updatedUser);\n      setIsSubmitting(false);\n    } catch (e) {\n      setIsSubmitting(false);\n    }\n    onClose();\n  };\n\n  return (\n    <BlankModal width=\"700px\" isOpen={isOpen} onClose={onClose} closeOnDimmerClick hideCloseButton>\n      <Form>\n        <Heading>{HEADING[type]}</Heading>\n        <Label>\n          <KeywordsDropdown\n            keywordType={type}\n            targetType=\"scientist\"\n            value={value ?? []}\n            onChange={setValue}\n            isPortal\n          />\n        </Label>\n        <ButtonContainer>\n          <div />\n          <div>\n            <Button type=\"button\" onClick={onClose} variant=\"ghost\" margin=\"0 15px 0 0\">\n              Cancel\n            </Button>\n            <Button\n              type=\"button\"\n              disabled={\n                isSubmitting ||\n                value?.length < (type === \"discipline\" ? 1 : 3) ||\n                value === currentValue\n              }\n              onClick={handleSubmit}\n            >\n              Save\n            </Button>\n          </div>\n        </ButtonContainer>\n      </Form>\n    </BlankModal>\n  );\n};\n\nexport default KeywordEditModal;\n","import { css } from \"aphrodite\";\nimport { ChangeEvent, Dispatch, SetStateAction, useEffect, useRef, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { Loader } from \"semantic-ui-react\";\nimport styled from \"styled-components\";\n\nimport { Button, Icon, Tooltip } from \"@components/library\";\nimport { COLORS, FONTS } from \"@constants\";\nimport { setMessengerState } from \"@redux/actions/messengerActions\";\nimport { setCurrentUser, toggleLoginModal } from \"@redux/actions/profileActions\";\nimport type { RootState } from \"@redux/store\";\nimport api from \"@requests/request\";\nimport { SegmentEventName } from \"@tsTypes/__generated__/enums\";\nimport type { Education } from \"@tsTypes/schema\";\nimport { track } from \"@utils/appUtils\";\n\nimport toast from \"@components/Toast\";\nimport { useSearchParams } from \"@hooks/router\";\nimport {\n  addScientistToCompanyNetwork,\n  getCompanyNetworkScientist,\n} from \"@requests/companyNetworkScientists\";\nimport { ScientistCurrentUser } from \"@tsTypes/index\";\nimport { KeywordType } from \"@tsTypes/keywords\";\nimport appsignal from \"@utils/appsignal\";\nimport { setPrevUrlCookie } from \"@utils/authUtils\";\nimport { t } from \"@utils/i18n\";\nimport { ProfilePageUser } from \"../ProfilePage\";\nimport styles from \"./Sidebar.styles\";\nimport { AffiliationEditModal, KeywordEditModal, StartupEditModal } from \"./modals\";\nimport type { AffiliationType } from \"./modals/AffiliationEditModal\";\n\ninterface Props {\n  profileUser: ProfilePageUser | null;\n  setProfileUser: Dispatch<SetStateAction<ProfilePageUser | null>>;\n  isLoading: boolean;\n  isPublic: boolean;\n  isDigest: boolean;\n}\n\nexport default function Sidebar({\n  profileUser,\n  setProfileUser,\n  isLoading,\n  isPublic,\n  isDigest,\n}: Props) {\n  const [isAffiliationEditModalOpen, setIsAffiliationEditModalOpen] = useState(false);\n  const [affiliationEditModalType, setAffiliationEditModalType] = useState<AffiliationType>();\n  const [isStartupEditModalOpen, setIsStartupEditModalOpen] = useState(false);\n  const [isKeywordEditModalOpen, setIsKeywordEditModalOpen] = useState(false);\n  const [keywordEditModalType, setKeywordEditModalType] = useState<KeywordType>();\n  const [isInNetwork, setIsInNetwork] = useState(false);\n  const [isAddingToNetwork, setIsAddingToNetwork] = useState(false);\n\n  const fileInputRef = useRef<HTMLInputElement>(null);\n\n  const dispatch = useDispatch();\n\n  const currentUser = useSelector((state: RootState) => state.profiles.currentUser);\n  const subscription = useSelector((state: RootState) => state.company.subscription);\n  const isMobile = useSelector((state: RootState) => state.window.isMobile);\n\n  const [searchParams, setSearchParams] = useSearchParams();\n  const autoAddParam = searchParams.get(\"auto_add\");\n  const shouldAutoAdd = autoAddParam === \"true\";\n\n  const isUser = currentUser.id === profileUser?.id;\n  const canEdit = isUser && !isPublic;\n  const isSponsor = currentUser?.role === 1;\n\n  const scientistProfileId = profileUser?.profile_info?.id;\n  const companyId = currentUser.profile_info?.company_id;\n\n  useEffect(() => {\n    if (!(scientistProfileId && companyId)) return;\n\n    if (shouldAutoAdd) {\n      addToNetwork();\n      return;\n    }\n\n    // Check if scientist is in sponsor's network\n    (async () => {\n      const cns = await getCompanyNetworkScientist({\n        scientistProfileId,\n        companyId,\n      });\n      setIsInNetwork(cns?.status === \"accepted\");\n    })();\n  }, [scientistProfileId, companyId]);\n\n  const currentEducations = profileUser?.profile_info?.educations\n    ? profileUser.profile_info.educations.map((e: any) => e.degree)\n    : [];\n\n  const userStartup = profileUser?.profile_info?.startup;\n\n  const handlePFPicClick = () => {\n    track(SegmentEventName.Click, {\n      ui_component: \"Profile Picture\",\n      react_component: \"Sidebar\",\n      profile: profileUser,\n    });\n    fileInputRef.current?.click();\n  };\n\n  const updateUser = (updatedUser: ScientistCurrentUser) => {\n    setProfileUser(updatedUser);\n    dispatch(setCurrentUser(updatedUser));\n  };\n\n  const onPFPicChange = async (e: ChangeEvent<HTMLInputElement>) => {\n    const file = e.target.files?.[0];\n\n    if (!file) return;\n\n    const formData = new FormData();\n    formData.append(\"file\", file);\n\n    const response = await api.post(`/profile/image-upload`, formData);\n\n    const updatedUser = {\n      ...profileUser,\n      image: response.data.image,\n    };\n    updateUser(updatedUser as any);\n  };\n\n  const renderAddStartup = () => {\n    let companyUrl = userStartup?.url ?? \"\";\n\n    if (companyUrl.startsWith(\"http\")) {\n      companyUrl = companyUrl.split(\"://\")[1];\n    }\n\n    return (\n      <div className={css(styles.Sidebar_sidebar)}>\n        <div className={css(styles.Sidebar_affiliationRow)}>\n          {companyUrl.length > 0 ? (\n            <a\n              href={`//${userStartup?.url}`}\n              target=\"_blank\"\n              className={css(styles.Sidebar_link)}\n              rel=\"noreferrer\"\n            >\n              {userStartup?.startup_name}\n            </a>\n          ) : (\n            <div>{userStartup?.startup_name}</div>\n          )}\n          {canEdit ? (\n            <div\n              className={css(styles.Sidebar_iconButton)}\n              data-testid=\"edit-startup-button\"\n              onClick={() => setIsStartupEditModalOpen(true)}\n            >\n              <Icon name=\"Edit\" size=\"sm\" color={COLORS.NEUTRAL_400} margin=\"1px 0 0\" />\n            </div>\n          ) : null}\n        </div>\n        {userStartup?.primary_affiliation && (\n          <div className={css(styles.Sidebar_sidebarSubtext)}>\n            {profileUser?.profile_info?.title}\n          </div>\n        )}\n        {userStartup?.start_year ? (\n          <div className={css(styles.Sidebar_sidebarSubtext)}>\n            {userStartup?.start_year || \"?\"} - {userStartup?.end_year || \"Present\"}\n          </div>\n        ) : null}\n        <br />\n      </div>\n    );\n  };\n\n  const renderLatestLocation = () => {\n    if (!profileUser) return \"\";\n\n    const { startup, university, university_end_year } = profileUser.profile_info;\n\n    const startupIsRecent = startup?.id && (startup?.end_year === \"Present\" || !startup?.end_year);\n    if (startupIsRecent) {\n      return startup.startup_name;\n    } else if (university && (university_end_year === \"Present\" || !university_end_year)) {\n      return university;\n    }\n\n    return \"\";\n  };\n\n  const sendMessage = () => {\n    dispatch(\n      setMessengerState({\n        recipient: {\n          ...profileUser,\n          name: `${profileUser?.first_name} ${profileUser?.last_name}`,\n        },\n      } as any)\n    );\n  };\n\n  const addToNetwork = async () => {\n    track(SegmentEventName.Click, {\n      ui_component: \"Add To Network Button\",\n      isDigest,\n      profileUser,\n    });\n    if (!scientistProfileId) return;\n\n    if (!currentUser.id) {\n      setPrevUrlCookie(window.location.href + \"&auto_add=true\");\n      dispatch(toggleLoginModal({ open: true, landing: \"login\" }));\n      return;\n    }\n\n    setIsAddingToNetwork(true);\n\n    try {\n      await addScientistToCompanyNetwork(scientistProfileId.toString());\n      toast.success(\n        t(\"models.company_network_scientist.scientist_digest.add_success\", {\n          scientist_name: profileUser.first_name,\n          company_name: currentUser.profile_info.company_name,\n        })\n      );\n\n      setIsInNetwork(true);\n\n      searchParams.delete(\"digest\");\n      searchParams.delete(\"auto_add\");\n      setSearchParams(searchParams);\n    } catch (error) {\n      appsignal.sendError(error, (span) => {\n        span.setAction(\"ProfileSidebar#addToNetwork\");\n        span.setTags({ scientist_profile_id: scientistProfileId.toString() });\n      });\n      toast.error(t(\"error.default\"));\n    }\n    setIsAddingToNetwork(false);\n  };\n\n  const currentPFPic = profileUser?.image?.medium?.url;\n\n  return (\n    <div>\n      {isMobile && isLoading ? (\n        <Loader style={{ marginTop: \"180px\" }} active inline=\"centered\" />\n      ) : (\n        <div\n          className={css(styles.Sidebar_container)}\n          style={{\n            zIndex: !isMobile ? 499 : undefined,\n            paddingTop: isMobile && \"110px\",\n          }}\n        >\n          {isAffiliationEditModalOpen && affiliationEditModalType && (\n            <AffiliationEditModal\n              isOpen={isAffiliationEditModalOpen}\n              onClose={() => {\n                setIsAffiliationEditModalOpen(false);\n                setAffiliationEditModalType(undefined);\n              }}\n              type={affiliationEditModalType}\n              profileUser={profileUser}\n              setProfileUser={updateUser}\n            />\n          )}\n          {isStartupEditModalOpen && (\n            <StartupEditModal\n              isOpen={isStartupEditModalOpen}\n              onClose={() => setIsStartupEditModalOpen(false)}\n              profileUser={profileUser}\n              setProfileUser={updateUser}\n            />\n          )}\n          {isKeywordEditModalOpen && keywordEditModalType && (\n            <KeywordEditModal\n              type={keywordEditModalType}\n              isOpen={isKeywordEditModalOpen}\n              onClose={() => setIsKeywordEditModalOpen(false)}\n              currentValue={\n                profileUser?.[\n                  keywordEditModalType === \"discipline\" ? \"disciplines\" : \"areas_of_expertise\"\n                ] as string[]\n              }\n              profileUser={profileUser}\n              setProfileUser={updateUser}\n            />\n          )}\n          {Boolean(profileUser) && !isLoading && (\n            <div data-testid=\"sidebar-content\">\n              <div className={css(styles.Sidebar_profilePicContainer)}>\n                {(() => {\n                  if (canEdit) {\n                    if (currentPFPic) {\n                      return (\n                        <div\n                          className={css(styles.Sidebar_popupProfilePic)}\n                          data-testid=\"profile-page-profile-picture\"\n                          onClick={handlePFPicClick}\n                          style={{\n                            backgroundImage: `url(${currentPFPic})`,\n                            position: \"relative\",\n                          }}\n                        >\n                          <input\n                            onChange={onPFPicChange}\n                            type=\"file\"\n                            id=\"file\"\n                            accept=\".png, .jpg, .jpeg, .bmp, .gif, .ico, .cur, .jfif, .pjped, .pjp, .svg\"\n                            ref={fileInputRef}\n                            style={{ display: \"none\" }}\n                          />\n                        </div>\n                      );\n                    }\n                    return (\n                      <div\n                        className={css(\n                          styles.Sidebar_regularProfilePic,\n                          styles.Sidebar_regularProfilePicClickable\n                        )}\n                        data-testid=\"profile-page-profile-picture\"\n                        onClick={handlePFPicClick}\n                      >\n                        <Icon name=\"Avatar Edit\" color={COLORS.NEUTRAL_500} />\n                        <input\n                          onChange={onPFPicChange}\n                          type=\"file\"\n                          id=\"file\"\n                          accept=\".png, .jpg, .jpeg, .bmp, .gif, .ico, .cur, .jfif, .pjped, .pjp, .svg\"\n                          ref={fileInputRef}\n                          style={{ display: \"none\" }}\n                        />\n                      </div>\n                    );\n                  } else if (!currentPFPic && profileUser?.first_name && profileUser?.last_name) {\n                    return (\n                      <div className={css(styles.Sidebar_regularProfilePic)}>\n                        {profileUser.first_name[0].toUpperCase()}\n                        {profileUser.last_name[0].toUpperCase()}\n                      </div>\n                    );\n                  }\n\n                  return (\n                    <div\n                      className={css(styles.Sidebar_regularProfilePic)}\n                      style={{\n                        backgroundImage: `url(${profileUser?.image?.medium?.url})`,\n                      }}\n                    />\n                  );\n                })()}\n              </div>\n              <div className={css(styles.Sidebar_profileName)}>\n                {profileUser?.first_name &&\n                  profileUser.first_name.charAt(0).toUpperCase() +\n                    profileUser.first_name.slice(1)}{\" \"}\n                {profileUser?.last_name &&\n                  profileUser.last_name.charAt(0).toUpperCase() + profileUser.last_name.slice(1)}\n              </div>\n              <div className={css(styles.Sidebar_profileTitle)}>\n                {profileUser?.profile_info && renderLatestLocation()?.toUpperCase()}\n              </div>\n              {isSponsor &&\n                !currentUser.profile_info.commenter &&\n                isInNetwork &&\n                !isDigest &&\n                subscription?.features?.company_scientist_network && (\n                  <div className={css(styles.Sidebar_followButtonContainer)}>\n                    <Button\n                      type=\"button\"\n                      iconName=\"Message\"\n                      size=\"sm\"\n                      margin=\"0\"\n                      onClick={sendMessage}\n                    >\n                      Message\n                    </Button>\n                  </div>\n                )}\n              {\n                // Show digest button if non-commenter sponsor and sci is not in network\n                // OR if is digest and is logged out or a sponsor\n                ((isSponsor && !currentUser.profile_info.commenter && !isInNetwork) ||\n                  (isDigest && (!currentUser.id || isSponsor))) && (\n                  <div className={css(styles.Sidebar_followButtonContainer)}>\n                    <div>\n                      <Button\n                        type=\"button\"\n                        iconName=\"Add\"\n                        size=\"sm\"\n                        margin=\"0\"\n                        onClick={addToNetwork}\n                        disabled={isAddingToNetwork}\n                      >\n                        {t(\"components.buttons.add_to_network\")}\n                      </Button>\n                      <TooltipContainer>\n                        <Tooltip\n                          arrowOffsetTop=\"40%\"\n                          contentWidth=\"100px\"\n                          tooltipWidth=\"200px\"\n                          position=\"right\"\n                          content={t(\"pages.scientist_profile_page.add_to_network_tooltip.text\", {\n                            name: profileUser?.first_name ?? \"\",\n                            company_name:\n                              currentUser.profile_info.company_name ??\n                              t(\n                                \"pages.scientist_profile_page.add_to_network_tooltip.company_name_default\"\n                              ),\n                          })}\n                        >\n                          <TooltipText>\n                            <Icon name=\"Info Small\" size=\"xs\" color={COLORS.NEUTRAL_400} />\n                            What&apos;s this?\n                          </TooltipText>\n                        </Tooltip>\n                      </TooltipContainer>\n                    </div>\n                  </div>\n                )\n              }\n\n              {isMobile && (\n                <>\n                  <div className={css(styles.Sidebar_headline)}>\n                    {profileUser?.profile_info?.headline}\n                  </div>\n                  <div className={css(styles.Sidebar_about)}>\n                    {profileUser?.profile_info?.about}\n                  </div>\n                </>\n              )}\n\n              {userStartup?.primary_affiliation && renderAddStartup()}\n\n              <div>\n                {profileUser?.profile_info?.university ? (\n                  <div className={css(styles.Sidebar_sidebar)}>\n                    <div className={css(styles.Sidebar_affiliationRow)}>\n                      {profileUser.profile_info.university}\n                      {canEdit && (\n                        <div\n                          className={css(styles.Sidebar_iconButton)}\n                          onClick={() => {\n                            setIsAffiliationEditModalOpen(true);\n                            setAffiliationEditModalType(\"primary\");\n                          }}\n                        >\n                          <Icon name=\"Edit\" size=\"sm\" color={COLORS.NEUTRAL_400} margin=\"1px 0 0\" />\n                        </div>\n                      )}\n                    </div>\n                    <div className={css(styles.Sidebar_sidebarSubtext)}>\n                      {userStartup?.primary_affiliation\n                        ? \"Principal Investigator\"\n                        : profileUser.profile_info.title}\n                    </div>\n                    {profileUser.profile_info.university_start_year ? (\n                      <div className={css(styles.Sidebar_sidebarSubtext)}>\n                        {profileUser.profile_info.university_start_year || \"?\"} -{\" \"}\n                        {profileUser.profile_info.university_end_year || \"Present\"}\n                      </div>\n                    ) : null}\n                    <br />\n                  </div>\n                ) : (\n                  canEdit &&\n                  !userStartup && (\n                    <div className={css(styles.Sidebar_sidebar)}>\n                      <div\n                        style={{ cursor: \"pointer\" }}\n                        onClick={() => {\n                          setIsAffiliationEditModalOpen(true);\n                          setAffiliationEditModalType(\"primary\");\n                        }}\n                      >\n                        + Add PI\n                      </div>\n                      <br />\n                    </div>\n                  )\n                )}\n              </div>\n              {userStartup && !userStartup.primary_affiliation && renderAddStartup()}\n              {profileUser?.profile_info && (\n                <>\n                  {profileUser.profile_info.educations &&\n                    profileUser.profile_info.educations.length > 0 && (\n                      <>\n                        {profileUser.profile_info.educations\n                          .sort((obj1: Education, obj2: Education) => {\n                            if (\n                              obj1.end_year === obj2.end_year &&\n                              obj1.start_year === obj2.start_year\n                            ) {\n                              return 0;\n                            }\n\n                            if (\n                              (obj1.end_year === \"Present\" && obj2.end_year !== \"Present\") ||\n                              Number(obj1.end_year) > Number(obj2.end_year)\n                            ) {\n                              return -1;\n                            } else if (\n                              (obj2.end_year === \"Present\" && obj1.end_year !== \"Present\") ||\n                              Number(obj1.end_year) < Number(obj2.end_year)\n                            ) {\n                              return 1;\n                            }\n\n                            // Else go to the 2nd item\n                            if (\n                              obj2.start_year === \"?\" ||\n                              Number(obj1.start_year) < Number(obj2.start_year)\n                            ) {\n                              return -1;\n                            } else if (\n                              obj1.start_year === \"?\" ||\n                              Number(obj1.start_year) > Number(obj2.start_year)\n                            ) {\n                              return 1;\n                            }\n                            // nothing to split them\n                            return 0;\n                          })\n                          .map((education: Education) => {\n                            return (\n                              <div\n                                key={`education-${education.id}`}\n                                className={css(styles.Sidebar_sidebar)}\n                              >\n                                <div className={css(styles.Sidebar_affiliationRow)}>\n                                  {education.location}\n                                  {canEdit && (\n                                    <div\n                                      className={css(styles.Sidebar_iconButton)}\n                                      onClick={() => {\n                                        setIsAffiliationEditModalOpen(true);\n                                        setAffiliationEditModalType(\n                                          education.degree as AffiliationType\n                                        );\n                                      }}\n                                    >\n                                      <Icon\n                                        name=\"Edit\"\n                                        size=\"sm\"\n                                        color={COLORS.NEUTRAL_400}\n                                        margin=\"1px 0 0\"\n                                      />\n                                    </div>\n                                  )}\n                                </div>\n                                <div className={css(styles.Sidebar_sidebarSubtext)}>\n                                  {education.degree}\n                                  {education.degree === \"PhD\" && education.field_of_study\n                                    ? `, ${education.field_of_study}`\n                                    : \"\"}\n                                </div>\n                                {education.start_year ? (\n                                  <div className={css(styles.Sidebar_sidebarSubtext)}>\n                                    {education.start_year || \"?\"} -{\" \"}\n                                    {education.end_year || \"Present\"}\n                                  </div>\n                                ) : null}\n                                <br />\n                              </div>\n                            );\n                          })}\n                      </>\n                    )}\n                  {canEdit && (\n                    <div className={css(styles.Sidebar_sidebar)}>\n                      {canEdit &&\n                        profileUser.profile_info.title !== \"Postdoctoral Scientist\" &&\n                        !currentEducations.includes(\"Postdoctoral Scientist\") && (\n                          <div>\n                            <br />\n                            <div\n                              style={{ cursor: \"pointer\" }}\n                              onClick={() => {\n                                setIsAffiliationEditModalOpen(true);\n                                setAffiliationEditModalType(\"Postdoctoral Scientist\");\n                              }}\n                            >\n                              + Add Postdoc\n                            </div>\n                          </div>\n                        )}\n                      {canEdit &&\n                        currentUser.profile_info.title !== \"PhD Candidate\" &&\n                        !currentEducations.includes(\"PhD\") && (\n                          <div>\n                            <br />\n                            <div\n                              style={{ cursor: \"pointer\" }}\n                              onClick={() => {\n                                setIsAffiliationEditModalOpen(true);\n                                setAffiliationEditModalType(\"PhD\");\n                              }}\n                            >\n                              + Add PhD\n                            </div>\n                          </div>\n                        )}\n                      {canEdit &&\n                        currentUser.profile_info.title !== \"MD Candidate\" &&\n                        !currentEducations.includes(\"MD\") && (\n                          <div>\n                            <br />\n                            <div\n                              style={{ cursor: \"pointer\" }}\n                              onClick={() => {\n                                setIsAffiliationEditModalOpen(true);\n                                setAffiliationEditModalType(\"MD\");\n                              }}\n                            >\n                              + Add MD\n                            </div>\n                          </div>\n                        )}\n                    </div>\n                  )}\n                  {!userStartup && canEdit && (\n                    <div className={css(styles.Sidebar_sidebar)}>\n                      <br />\n                      <div\n                        style={{ cursor: \"pointer\" }}\n                        onClick={() => {\n                          setIsStartupEditModalOpen(true);\n                        }}\n                      >\n                        + Add Startup\n                      </div>\n                    </div>\n                  )}\n                </>\n              )}\n\n              {isUser || profileUser?.disciplines?.length ? (\n                <div className={css(styles.Sidebar_sidebarHeader)}>\n                  Disciplines\n                  {canEdit && (\n                    <div\n                      className={css(styles.Sidebar_iconButton)}\n                      onClick={() => {\n                        track(SegmentEventName.Click, {\n                          ui_component: \"Disciplines\",\n                          react_component: \"Sidebar\",\n                          profile: profileUser,\n                        });\n                        setIsKeywordEditModalOpen(true);\n                        setKeywordEditModalType(\"discipline\");\n                      }}\n                    >\n                      <Icon name=\"Edit\" size=\"sm\" color={COLORS.NEUTRAL_400} />\n                    </div>\n                  )}\n                </div>\n              ) : null}\n\n              {profileUser?.disciplines?.length ? (\n                <div className={css(styles.Sidebar_interestSidebar)}>\n                  {profileUser.disciplines.map((discipline) => (\n                    <div\n                      key={`discipline-${discipline}`}\n                      className={css(styles.Sidebar_expertise, styles.Sidebar_application)}\n                    >\n                      {discipline}\n                    </div>\n                  ))}\n                </div>\n              ) : (\n                <div className={css(styles.Sidebar_sidebar)}>\n                  {canEdit && (\n                    <div\n                      style={{ cursor: \"pointer\" }}\n                      onClick={() => {\n                        setIsKeywordEditModalOpen(true);\n                        setKeywordEditModalType(\"discipline\");\n                      }}\n                    >\n                      + Add Discipline\n                    </div>\n                  )}\n                </div>\n              )}\n\n              {isUser || profileUser?.areas_of_expertise?.length ? (\n                <div className={css(styles.Sidebar_sidebarHeader)}>\n                  Expertise\n                  {canEdit && (\n                    <div\n                      className={css(styles.Sidebar_iconButton)}\n                      onClick={() => {\n                        track(\"Clicked areas of expertise\");\n                        setIsKeywordEditModalOpen(true);\n                        setKeywordEditModalType(\"area_of_expertise\");\n                      }}\n                    >\n                      <Icon name=\"Edit\" size=\"sm\" color={COLORS.NEUTRAL_400} />\n                    </div>\n                  )}\n                </div>\n              ) : null}\n\n              {profileUser?.areas_of_expertise && profileUser.areas_of_expertise.length > 0 ? (\n                <div className={css(styles.Sidebar_interestSidebar)}>\n                  {profileUser.areas_of_expertise.map((area) => (\n                    <div key={`area-${area}`} className={css(styles.Sidebar_expertise)}>\n                      {area}\n                    </div>\n                  ))}\n                </div>\n              ) : (\n                <div className={css(styles.Sidebar_sidebar)}>\n                  {canEdit && (\n                    <div\n                      style={{ cursor: \"pointer\" }}\n                      onClick={() => {\n                        setIsKeywordEditModalOpen(true);\n                        setKeywordEditModalType(\"area_of_expertise\");\n                      }}\n                    >\n                      + Add Areas of Expertise\n                    </div>\n                  )}\n                </div>\n              )}\n            </div>\n          )}\n        </div>\n      )}\n    </div>\n  );\n}\n\nconst TooltipContainer = styled.div`\n  display: flex;\n  justify-content: center;\n  margin: 4px 0;\n`;\n\nconst TooltipText = styled.div`\n  display: flex;\n  align-items: center;\n  gap: 4px;\n  color: ${COLORS.NEUTRAL_500};\n  ${FONTS.REGULAR_3}\n`;\n","import Sidebar from \"./Sidebar\";\n\nexport default Sidebar;\n","import CharLimitInput from \"@components/CharLimitInput\";\nimport { BlankModal } from \"@components/library\";\nimport FundingEditModal from \"@components/modals/ScientistContributionEditModals/FundingEditModal\";\nimport PatentEditModal from \"@components/modals/ScientistContributionEditModals/PatentEditModal\";\nimport PublicationEditModal from \"@components/modals/ScientistContributionEditModals/PublicationEditModal\";\nimport {\n  useFundings,\n  usePatents,\n  useProposals,\n  usePublications,\n} from \"@components/modals/ScientistQuickViewModal/hooks\";\nimport { COLORS, FONTS, WINDOW_DIMENSIONS } from \"@constants\";\nimport { useSearchParams } from \"@hooks/router\";\nimport { fetchFundings, fetchPatents, fetchPublications } from \"@redux/actions/profileActions\";\nimport { RootState } from \"@redux/store\";\nimport { getUser, updateUserProfile } from \"@requests/users\";\nimport { FundingPartial } from \"@tsTypes/fundings/_funding\";\nimport { ScientistCurrentUser, ScientistProfileProposal, ScientistShowUser } from \"@tsTypes/index\";\nimport { PatentPartial } from \"@tsTypes/patents/_patent\";\nimport { PublicationPartial } from \"@tsTypes/publications/_publication\";\nimport { UserRole } from \"@tsTypes/users\";\nimport appsignal from \"@utils/appsignal\";\nimport { t } from \"@utils/i18n\";\nimport { debounce } from \"lodash\";\nimport { Dispatch, SetStateAction, useEffect, useMemo, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { useParams } from \"react-router-dom\";\nimport { Loader } from \"semantic-ui-react\";\nimport styled from \"styled-components\";\nimport KeywordSignUpModal from \"../../components/modals/KeywordSignUpModal\";\nimport ProfileAttachments from \"./ProfileAttachments\";\nimport Sidebar from \"./Sidebar\";\n\nconst CHAR_LIMITS = {\n  headline: 65,\n  about: 300,\n} as const;\n\nexport type ProfilePageUser = ScientistShowUser | ScientistCurrentUser;\ntype TextFieldLabel = \"headline\" | \"about\";\ntype TextFieldSaveStatus = \"error\" | \"success\" | \"submitting\" | null;\n\nfunction ProfilePage() {\n  const [editingHeadline, setEditingHeadline] = useState(\"\");\n  const [headlineStatus, setHeadlineStatus] = useState<TextFieldSaveStatus>(null);\n  const [editingAbout, setEditingAbout] = useState(\"\");\n  const [aboutStatus, setAboutStatus] = useState<TextFieldSaveStatus>(null);\n  const [profileUser, setProfileUser] = useState<ProfilePageUser | null>(null);\n  const [isLoading, setIsLoading] = useState(false);\n  const [refreshKey, setRefreshKey] = useState(0);\n\n  const [isPublicationModalOpen, setIsPublicationModalOpen] = useState(false);\n  const [editPublication, setEditPublication] = useState<PublicationPartial | null>(null);\n  const [isFundingModalOpen, setIsFundingModalOpen] = useState(false);\n  const [editFunding, setEditFunding] = useState<FundingPartial | null>(null);\n  const [isPatentModalOpen, setIsPatentModalOpen] = useState(false);\n  const [editPatent, setEditPatent] = useState<PatentPartial | null>(null);\n\n  const dispatch = useDispatch();\n  const currentUser = useSelector((state: RootState) => state.profiles.currentUser);\n\n  const [searchParams] = useSearchParams();\n  const isPublicParam = searchParams.get(\"public\");\n  const isDigestParam = searchParams.get(\"digest\");\n\n  // Permission flags\n  const isOwner = currentUser.id === profileUser?.id;\n  const isPublic = isPublicParam === \"true\" && isOwner;\n  const isDigest = isDigestParam === \"true\";\n  const currentUserRole = currentUser?.role;\n  const isLoggedOut = typeof currentUserRole === \"undefined\";\n  const shouldBlur = isLoggedOut && !isDigest;\n  const [isKeywordModalOpen, setIsKeywordModalOpen] = useState<boolean>(\n    searchParams.get(\"keywords\") === \"1\"\n  );\n\n  const profileInfoId = profileUser?.profile_info?.id;\n  const { publications, refresh: refreshPublications } = usePublications(\n    shouldBlur ? undefined : profileInfoId\n  );\n  const { fundings, refresh: refreshFundings } = useFundings(\n    shouldBlur ? undefined : profileInfoId\n  );\n  const { patents, refresh: refreshPatents } = usePatents(shouldBlur ? undefined : profileInfoId);\n  const proposals: ScientistProfileProposal[] = useProposals(\n    shouldBlur ? undefined : profileInfoId\n  ) as any;\n\n  const { id: profileIdParam } = useParams<{ id: string }>();\n\n  // Get profile user\n  useEffect(() => {\n    setIsLoading(true);\n\n    const pathId = profileIdParam?.split(\"-\");\n    if (!pathId?.indexOf(\"-\")) return;\n    const profileUserId = pathId[pathId.length - 1];\n\n    (async () => {\n      const data = await getUser(profileUserId);\n      if (!data?.user) return;\n      setProfileUser(data.user as ProfilePageUser);\n    })();\n  }, [profileIdParam, refreshKey]);\n\n  // Get extra info and attachments about the profile user\n  useEffect(() => {\n    if (!profileUser?.id) return;\n\n    setEditingHeadline(profileUser.profile_info?.headline ?? \"\");\n    setEditingAbout(profileUser.profile_info?.about ?? \"\");\n\n    setIsLoading(false);\n\n    if (shouldBlur) return;\n\n    // NOTE: (justinpchang) Inefficient for now due to duplicate request with custom hooks\n    // TODO: (justinpchang) Remove edit modal dependency on redux\n    if (profileInfoId !== undefined) {\n      dispatch(fetchPublications(profileInfoId));\n      dispatch(fetchPatents(profileInfoId));\n      dispatch(fetchFundings(profileInfoId));\n    }\n  }, [profileUser?.id, refreshKey]);\n\n  const debouncedUpdateHeadlineOrAbout = useMemo(\n    () =>\n      debounce(\n        async (label: TextFieldLabel, value: string) => {\n          const status = label === \"headline\" ? headlineStatus : aboutStatus;\n          const setStatus = label === \"headline\" ? setHeadlineStatus : setAboutStatus;\n\n          if (status === \"submitting\") return;\n\n          if (value.length > CHAR_LIMITS[label]) return;\n\n          setStatus(\"submitting\");\n          try {\n            const user = await updateUserProfile(profileUser?.id, UserRole.SCIENTIST, {\n              [label]: value,\n            });\n            setProfileUser(user);\n            setStatus(\"success\");\n            setTimeout(() => setStatus(null), 2500);\n          } catch (error) {\n            setStatus(\"error\");\n            appsignal.sendError(error, (span) => {\n              span.setAction(\"ProfilePage#debouncedUpdateProfile\");\n              span.setTags({ profileId: profileIdParam, [value]: label });\n            });\n          }\n        },\n        500,\n        { leading: true, trailing: true }\n      ),\n    [profileUser?.id, headlineStatus, aboutStatus, refreshKey]\n  );\n\n  const renderTextInput = (label: TextFieldLabel) => {\n    let value: string,\n      setValue: Dispatch<SetStateAction<string>>,\n      status: TextFieldSaveStatus,\n      rows: number,\n      charLimit: number;\n    if (label === \"headline\") {\n      value = editingHeadline;\n      setValue = setEditingHeadline;\n      status = headlineStatus;\n      rows = 1;\n      charLimit = 65;\n    } else {\n      value = editingAbout;\n      setValue = setEditingAbout;\n      status = aboutStatus;\n      rows = 4;\n      charLimit = 300;\n    }\n    return (\n      <InputContainer>\n        <Input\n          value={value}\n          onChange={(e) => {\n            setValue(e.target.value);\n            debouncedUpdateHeadlineOrAbout(label, e.target.value);\n          }}\n          rows={rows}\n          charLimit={charLimit}\n          placeholder={t([\"pages\", \"scientist_profile_page\", \"input\", \"placeholder\", label])}\n          data-testid={`user-${label}-input`}\n        />\n        {status && (\n          <InputStatus>\n            {t([\"pages\", \"scientist_profile_page\", \"input\", \"status\", status])}\n          </InputStatus>\n        )}\n      </InputContainer>\n    );\n  };\n\n  const hasHeadline =\n    profileUser?.profile_info?.headline && profileUser?.profile_info.headline.trim().length > 0;\n  const hasAbout =\n    profileUser?.profile_info?.about && profileUser?.profile_info.about.trim().length > 0;\n\n  return (\n    <>\n      {isPublicationModalOpen && (\n        <PublicationEditModal\n          isOpen={isPublicationModalOpen}\n          onClose={() => setIsPublicationModalOpen(false)}\n          onSuccess={() => refreshPublications()}\n          editPublication={editPublication}\n        />\n      )}\n      {isFundingModalOpen && (\n        <FundingEditModal\n          isOpen={isFundingModalOpen}\n          onClose={() => setIsFundingModalOpen(false)}\n          onSuccess={() => refreshFundings()}\n          editFunding={editFunding}\n        />\n      )}\n      {isPatentModalOpen && (\n        <PatentEditModal\n          isOpen={isPatentModalOpen}\n          onClose={() => setIsPatentModalOpen(false)}\n          onSuccess={() => refreshPatents()}\n          editPatent={editPatent}\n        />\n      )}\n\n      <Container\n        data-testid=\"profile-page-container-main\"\n        data-test-profile-id={profileUser?.profile_id}\n      >\n        <Sidebar\n          profileUser={profileUser}\n          setProfileUser={setProfileUser}\n          isLoading={isLoading}\n          isPublic={isPublic}\n          isDigest={isDigest}\n        />\n        {isLoading ? (\n          <Loader style={{ marginTop: \"150px\" }} active inline=\"centered\" />\n        ) : (\n          <Content>\n            <BlankModal\n              onClose={() => {\n                setIsKeywordModalOpen(false);\n              }}\n              isOpen={isKeywordModalOpen}\n              width=\"540px\"\n            >\n              <KeywordSignUpModal\n                onSubmit={() => {\n                  setIsKeywordModalOpen(false);\n                  // If keywords changed, we refetch so the page is updated with them.\n                  setRefreshKey(refreshKey + 1);\n                }}\n              />\n            </BlankModal>\n\n            {isOwner && !isPublic ? (\n              <>\n                {renderTextInput(\"headline\")}\n                {renderTextInput(\"about\")}\n              </>\n            ) : (\n              <>\n                {hasHeadline && (\n                  <DisabledHeadline>{profileUser.profile_info.headline}</DisabledHeadline>\n                )}\n                {hasAbout && <DisabledAbout>{profileUser.profile_info.about}</DisabledAbout>}\n              </>\n            )}\n            <ProfileAttachments\n              publications={publications}\n              openPublicationModal={(newEditPublication) => {\n                setEditPublication(newEditPublication);\n                setIsPublicationModalOpen(true);\n              }}\n              fundings={fundings}\n              openFundingModal={(newEditFunding) => {\n                setEditFunding(newEditFunding);\n                setIsFundingModalOpen(true);\n              }}\n              patents={patents}\n              openPatentModal={(newEditPatent) => {\n                setEditPatent(newEditPatent);\n                setIsPatentModalOpen(true);\n              }}\n              proposals={proposals}\n              name={profileUser?.name ?? \"\"}\n              isPublic={isPublic}\n              isOwner={isOwner}\n              shouldBlur={shouldBlur}\n            />\n          </Content>\n        )}\n      </Container>\n    </>\n  );\n}\n\nexport default ProfilePage;\n\nconst Container = styled.div`\n  position: relative;\n  height: fit-content;\n  min-height: 1000px;\n\n  display: grid;\n  grid-template-columns: 330px 1fr;\n\n  ${WINDOW_DIMENSIONS.MOBILE_MEDIA_QUERY} {\n    grid-template-columns: 1fr;\n  }\n`;\nconst Content = styled.div`\n  display: flex;\n  flex-direction: column;\n  gap: 20px;\n\n  width: 100%;\n  padding: 32px 5vw 0;\n  overflow-x: auto;\n\n  ${WINDOW_DIMENSIONS.MOBILE_MEDIA_QUERY} {\n    display: none;\n  }\n`;\nconst InputContainer = styled.div`\n  width: 55%;\n  margin: -25px 0 15px 0;\n`;\nconst Input = styled(CharLimitInput)`\n  padding: 8px 10px;\n  margin: 0 0 10px 0;\n  box-sizing: border-box;\n  min-width: 500px;\n\n  ${FONTS.REGULAR_2}\n\n  ::placeholder {\n    ${FONTS.REGULAR_2}\n  }\n`;\nconst InputStatus = styled.span`\n  position: relative;\n  top: -10px;\n  margin-left: 15px;\n\n  ${FONTS.REGULAR_3};\n`;\nconst DisabledHeadline = styled.div`\n  width: 75%;\n  margin-bottom: 10px;\n  color: ${COLORS.BLACK};\n  ${FONTS.SEMIBOLD_1}\n`;\nconst DisabledAbout = styled.div`\n  width: 75%;\n  margin-bottom: 25px;\n  color: ${COLORS.BLACK};\n  ${FONTS.REGULAR_2}\n`;\n","import ProfilePage from \"./ProfilePage\";\nexport default ProfilePage;\n"],"names":["InputBox","styled","textarea","width","COLORS","BLACK","FONTS","REGULAR_2","NEUTRAL_500","resizeable","resizeGrabber","error","RED","InputDescription","div","SEMIBOLD_1","labelStyles","InputLabel","REGULAR_3","OptionalDescription","span","props","_useState2","_slicedToArray","useState","default","textValue","setTextValue","overLimit","value","length","charLimit","_jsxs","style","children","S","label","optional","_jsx","_objectSpread","onChange","e","target","handler","updateAffiliation","userId","location","startYear","endYear","title","request","put","university","university_start_year","university_end_year","createOrUpdateEducation","async","degree","fieldOfStudy","id","data","field_of_study","start_year","end_year","post","deleteEducation","delete","createOrUpdateStartup","name","url","startup_name","encodeURI","primary_affiliation_title","deleteStartup","MOCK_PUBLICATIONS","abstract","date","publication_name","TABS","TAB_FONT","MEDIUM_2","TAB_DISTANCE","TAB_MARGIN","publications","openPublicationModal","fundings","openFundingModal","patents","openPatentModal","proposals","isPublic","isOwner","shouldBlur","activeTab","setActiveTab","dispatch","useDispatch","tabs","useMemo","visible","add","edit","find","p","f","filter","map","tab","key","count","TabsContainer","Tabs","font","tabDistance","margin","TabPanel","isActive","attachment","ScientistContribution","contribution","SignedOutOverlay","t_html","GradientButton","size","onClick","setPrevUrlCookie","window","href","toggleLoginModal","open","t","Button","iconName","variant","pluralize","toLowerCase","EditRow","IconButton","hideTooltip","WHITE","STYLES","SHADOW_D","MEDIUM_1","StyleSheet","create","Sidebar_container","textAlign","borderRight","NEUTRAL_200","background","position","height","padding","Sidebar_showMoreText","JS_FONTS","REGULAR_4","color","cursor","Sidebar_dropdownIcon","marginLeft","display","Sidebar_showMoreIcon","marginRight","Sidebar_accordion","paddingLeft","Sidebar_verifiedIcon","Sidebar_popupProfilePic","backgroundColor","NEUTRAL_100","borderRadius","backgroundRepeat","backgroundPosition","backgroundSize","Sidebar_regularProfilePic","justifyContent","alignItems","HEADING_2_SEMIBOLD","Sidebar_regularProfilePicClickable","Sidebar_profilePicContainer","marginBottom","Sidebar_profileName","HEADING_4_SEMIBOLD","Sidebar_headline","REGULAR_1","Sidebar_about","Sidebar_profileTitle","overflowX","textOverflow","Sidebar_followButtonContainer","Sidebar_sidebarHeader","letterSpacing","Sidebar_sidebar","HALO_BLUE","Sidebar_interestSidebar","MEDIUM_3","flexFlow","Sidebar_keyword","border","Sidebar_expertise","Sidebar_application","Sidebar_opportunityList","Sidebar_opportunityHeader","SEMIBOLD_2","Sidebar_opportunityTitle","whiteSpace","Sidebar_opportunityTitleActive","Sidebar_opportunityCount","verticalAlign","paddingRight","Sidebar_opportunityRow","Sidebar_uploadIcon","top","left","fontSize","NEUTRAL_400","Sidebar_settingsGroup","Sidebar_settingsLabelActive","Sidebar_settingsLabel","Sidebar_regularText","Sidebar_emptyPFPic","opacity","Sidebar_affiliationRow","gridTemplateColumns","gap","Sidebar_iconButton","Sidebar_sidebarSubtext","Sidebar_link","Form","form","Heading","Label","Error","ButtonContainer","Contact","Gap","TwoColumns","HEADING","primary","PhD","MD","AffiliationEditModal","isOpen","onClose","type","profileUser","setProfileUser","setLocation","_useState4","setTitle","_useState6","setFieldOfStudy","_useState8","setStartYear","_useState10","setEndYear","_useState12","setId","_useState14","setError","_useState16","isSubmitting","setIsSubmitting","useEffect","profile_info","SCIENTIST_ROLE_OPTIONS","option","education","educations","BlankModal","closeOnDimmerClick","hideCloseButton","onSubmit","preventDefault","response","updatedUser","err","console","UniversityDropdown","getOptionFromValue","getValueFromOption","Link","to","_Fragment","SingleSelectDropdown","options","TextInput","characterLimit","slice","placeholder","hideClearButton","getYearOptions","maxMenuHeight","menuPlacement","isPortal","disabled","Boolean","StartupEditModal","startup","isPrimaryAffiliation","primary_affiliation","setName","setUrl","STARTUP_TITLE_OPTIONS","undefined","discipline","area_of_expertise","KeywordEditModal","currentValue","setValue","KeywordsDropdown","keywordType","targetType","api","disciplines","areas_of_expertise","TooltipContainer","TooltipText","isLoading","isDigest","isAffiliationEditModalOpen","setIsAffiliationEditModalOpen","affiliationEditModalType","setAffiliationEditModalType","isStartupEditModalOpen","setIsStartupEditModalOpen","isKeywordEditModalOpen","setIsKeywordEditModalOpen","keywordEditModalType","setKeywordEditModalType","isInNetwork","setIsInNetwork","isAddingToNetwork","setIsAddingToNetwork","fileInputRef","useRef","currentUser","useSelector","state","profiles","subscription","company","isMobile","_useSearchParams2","useSearchParams","searchParams","setSearchParams","shouldAutoAdd","get","isUser","canEdit","isSponsor","role","scientistProfileId","companyId","company_id","addToNetwork","cns","getCompanyNetworkScientist","status","currentEducations","userStartup","handlePFPicClick","track","SegmentEventName","Click","ui_component","react_component","profile","current","click","updateUser","setCurrentUser","onPFPicChange","file","files","formData","FormData","append","image","renderAddStartup","companyUrl","startsWith","split","className","css","styles","rel","Icon","landing","addScientistToCompanyNetwork","toString","toast","success","scientist_name","first_name","company_name","appsignal","sendError","setAction","setTags","scientist_profile_id","currentPFPic","medium","Loader","marginTop","active","inline","zIndex","paddingTop","backgroundImage","accept","ref","last_name","toUpperCase","charAt","renderLatestLocation","_profileUser$profile_","commenter","features","company_scientist_network","sendMessage","setMessengerState","recipient","Tooltip","arrowOffsetTop","contentWidth","tooltipWidth","content","headline","about","sort","obj1","obj2","Number","includes","area","CHAR_LIMITS","editingHeadline","setEditingHeadline","headlineStatus","setHeadlineStatus","editingAbout","setEditingAbout","aboutStatus","setAboutStatus","setIsLoading","refreshKey","setRefreshKey","isPublicationModalOpen","setIsPublicationModalOpen","_useState18","editPublication","setEditPublication","_useState20","isFundingModalOpen","setIsFundingModalOpen","_useState22","editFunding","setEditFunding","_useState24","isPatentModalOpen","setIsPatentModalOpen","_useState26","editPatent","setEditPatent","isPublicParam","isDigestParam","currentUserRole","_useState28","isKeywordModalOpen","setIsKeywordModalOpen","profileInfoId","_usePublications","usePublications","refreshPublications","refresh","_useFundings","useFundings","refreshFundings","_usePatents","usePatents","refreshPatents","useProposals","profileIdParam","useParams","pathId","indexOf","profileUserId","getUser","user","fetchPublications","fetchPatents","fetchFundings","debouncedUpdateHeadlineOrAbout","debounce","setStatus","updateUserProfile","UserRole","SCIENTIST","setTimeout","profileId","leading","trailing","renderTextInput","rows","InputContainer","Input","InputStatus","hasHeadline","trim","hasAbout","PublicationEditModal","onSuccess","FundingEditModal","PatentEditModal","Container","profile_id","Sidebar","Content","KeywordSignUpModal","DisabledHeadline","DisabledAbout","ProfileAttachments","newEditPublication","newEditFunding","newEditPatent","WINDOW_DIMENSIONS","MOBILE_MEDIA_QUERY","CharLimitInput"],"sourceRoot":""}