{"version":3,"file":"js/application-ed2ded555802ee17f749.js","mappings":"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C,gBACE,gJACFC,gBAAiB,sBACjBC,gBAAiB,kCACjBC,qBAAsB,CACpBvU,YACE,qEACFwU,IAAK,+CACLC,GAAI,mDAENC,4BAA6B,CAC3B1U,YACE,sGACFwU,IAAK,8DACLC,GAAI,kEAENE,iBAAkB,CAChB3U,YAAa,mCACbwU,IAAK,kCACLC,GAAI,uCAGRG,SAAU,CACRC,uBACE,iDACFC,8BACE,qEACFC,OAAQ,qDACRC,cACE,uNACFC,SAAU,eACVC,UAAW,qBACXC,aAAc,wBACdC,QAAS,4BACTC,oBAAqB,iCACrBC,oBAAqB,kCACrBC,wBAAyB,4BACzBpH,UAAW,YACXqH,cACE,0LACFC,0BACE,sHACFC,kBACE,kGACFC,OACE,6HACFC,UACE,wFACFC,eACE,yDACFC,WACE,iLACFC,SACE,oGACFC,wBACE,kDACFC,+BAAgC,mCAChCC,cAAe,+BACfC,UAAW,oCACXC,cACE,kFACFC,cACE,uEACFC,aAAc,sDACdC,cACE,2EACFC,YACE,yGACFC,cACE,6FACFC,eAAgB,qCAChBjC,GAAI,KACJD,IAAK,MACLmC,kBACE,yFACFC,aAAc,gBACdC,iBAAkB,qBAClBC,qBAAsB,iCACtBC,UAAW,aAEbC,MAAO,CACLC,aAAc,8BACdC,mBACE,gGAEJC,iBACE,2JACFC,qBACE,mDACFC,OAAQ,CACNlqB,MAAO,QACP4gB,QAAS,WAEXuJ,OAAQ,CACN1C,SAAU,wBACVlqB,SAAU,aACVqnB,UAAW,oBACXwF,QAAS,UACTpqB,MAAO,QACPqqB,SAAU,WACVC,cAAe,gBACfC,aAAc,gBACdC,WAAY,eACZC,SAAU,WACVC,aAAc,2BACdC,QAAS,sBACTC,QAAS,UACTC,MAAO,yBACPrtB,KAAM,OACNojB,QAAS,UACTkK,aAAc,wBACdC,QAAS,WACTC,YAAa,eACbpW,QAAS,UACTqW,cAAe,CACbld,KAAM,WACNmd,aAAc,0BACdC,MAAO,SACPvG,UAAW,qBAEbwG,YAAa,wBACbtE,KAAM,QAERuE,QAAS,CACPC,oBAAqB,CACnB5f,WACE,sGACFC,UACE,mIACF4f,KAAM,qMAERT,aA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","sources":["webpack://marketplace/./app/frontend/react/shared/polyfill.js","webpack://marketplace/./app/frontend/react/components/Arrows/ArrowNext.jsx","webpack://marketplace/./app/frontend/react/components/Arrows/ArrowPrev.jsx","webpack://marketplace/./app/frontend/react/shared/utils/fuseConfig.js","webpack://marketplace/./app/frontend/scripts/analytics.js","webpack://marketplace/./app/frontend/react/shared/utils/helpers.js","webpack://marketplace/./app/frontend/react/components/TopNavBar/TopNavSearchForm/styles.module.scss?6089","webpack://marketplace/./app/frontend/utils/highlight.jsx","webpack://marketplace/./app/frontend/react/components/TopNavBar/TopNavSearchForm/TopNavSearchForm.jsx","webpack://marketplace/./app/frontend/react/shared/utils/modalUtil.js","webpack://marketplace/./app/frontend/react/components/TopNavBar/MobileMenu.jsx","webpack://marketplace/./app/frontend/react/shared/Dropdown/Dropdown.jsx","webpack://marketplace/./app/frontend/react/shared/Dropdown/index.js","webpack://marketplace/./app/frontend/react/components/TopNavBar/UserAvatar/styles.module.scss?445c","webpack://marketplace/./app/frontend/react/components/TopNavBar/UserAvatar/UserAvatar.jsx","webpack://marketplace/./app/frontend/react/components/TopNavBar/UserAvatar/index.js","webpack://marketplace/./app/frontend/react/components/TopNavBar/TopNavHeader.jsx","webpack://marketplace/./app/frontend/react/styles/v2.jsx","webpack://marketplace/./app/frontend/react/components/SingleCarousel/index.jsx","webpack://marketplace/./app/frontend/react/components/ContactForm.jsx","webpack://marketplace/./app/frontend/react/styles/index.jsx","webpack://marketplace/./app/frontend/react/consts.jsx","webpack://marketplace/./app/frontend/react/components/ListingsAppCard.jsx","webpack://marketplace/./app/frontend/react/components/SecurtyBadge/index.jsx","webpack://marketplace/./app/frontend/react/components/AppHeader.jsx","webpack://marketplace/./app/frontend/react/components/ListingsSidebar.jsx","webpack://marketplace/./app/frontend/react/components/NoResults.jsx","webpack://marketplace/./app/frontend/react/components/WistiaExtract.jsx","webpack://marketplace/./app/frontend/react/components/VersionHistory.jsx","webpack://marketplace/./app/frontend/react/shared/SearchInput/index.jsx","webpack://marketplace/./app/frontend/react/components/CompanyPicker/index.jsx","webpack://marketplace/./app/frontend/utils/apiUtil.js","webpack://marketplace/./app/frontend/react/components/InstallRequestButton/styles.module.scss?9be0","webpack://marketplace/./app/frontend/react/shared/Popover/styles.module.scss?7a38","webpack://marketplace/./app/frontend/react/shared/Popover/index.js","webpack://marketplace/./app/frontend/react/components/InstallRequestButton/index.jsx","webpack://marketplace/./app/frontend/react/components/ProcoreLogo/index.jsx","webpack://marketplace/./app/frontend/react/context/SearchContext.jsx","webpack://marketplace/./app/frontend/react/components/SearchBar/SearchResults.jsx","webpack://marketplace/./app/frontend/react/components/SearchBar/index.jsx","webpack://marketplace/./app/frontend/react/components/SupportMenu/index.jsx","webpack://marketplace/./app/frontend/react/context/AppContext.jsx","webpack://marketplace/./app/frontend/react/components/ProfileBox/index.jsx","webpack://marketplace/./app/frontend/react/hooks/useMediaQuery.js","webpack://marketplace/./app/frontend/react/components/ProcoreLogo/MobileLogo.jsx","webpack://marketplace/./app/frontend/react/components/MobileMenu/MenuHeader.jsx","webpack://marketplace/./app/frontend/react/components/MobileMenu/MenuBody.jsx","webpack://marketplace/./app/frontend/react/components/MobileMenu/UserSection.jsx","webpack://marketplace/./app/frontend/react/components/MobileMenu/MenuFooter.jsx","webpack://marketplace/./app/frontend/react/components/MobileMenu/index.jsx","webpack://marketplace/./app/frontend/react/components/Navbar/index.jsx","webpack://marketplace/./app/frontend/react/components/PlayButton/index.jsx","webpack://marketplace/./app/frontend/react/views/V1/Listings/ListingsIndex.jsx","webpack://marketplace/./app/frontend/react/api/index.js","webpack://marketplace/./app/frontend/react/views/V1/Listings/ListingsShow.jsx","webpack://marketplace/./app/frontend/react/hooks/useVisibility.js","webpack://marketplace/./app/frontend/react/views/V1/Index/MarketplaceIndex.jsx","webpack://marketplace/./app/frontend/react/views/V2/i18n.js","webpack://marketplace/./app/frontend/react/views/V2/AppDetails/components/Sections/Pricing.jsx","webpack://marketplace/./app/frontend/react/hooks/useSanitizedString.js","webpack://marketplace/./app/frontend/react/views/V2/AppDetails/components/Sections/Overview.jsx","webpack://marketplace/./app/frontend/react/views/V2/AppDetails/components/Sections/Functionality.jsx","webpack://marketplace/./app/frontend/react/views/V2/AppDetails/components/Sections/Security.jsx","webpack://marketplace/./app/frontend/react/views/V2/AppDetails/components/Sections/Support.styles.jsx","webpack://marketplace/./app/frontend/react/views/V2/AppDetails/components/Sections/Support.jsx","webpack://marketplace/./app/frontend/react/views/V2/AppDetails/components/utils/RegionModal.jsx","webpack://marketplace/./app/frontend/react/views/V2/AppDetails/components/utils/VersionHistoryModal.jsx","webpack://marketplace/./app/frontend/react/views/V2/AppDetails/components/utils/AppType.jsx","webpack://marketplace/./app/frontend/react/views/V2/AppDetails/components/Sections/SideBar.jsx","webpack://marketplace/./app/frontend/react/views/V2/AppDetails/utils.js","webpack://marketplace/./app/frontend/react/views/V2/AppDetails/components/MediaCarousel/ImageModal.jsx","webpack://marketplace/./app/frontend/react/views/V2/AppDetails/components/Sections/VideoPreview.jsx","webpack://marketplace/./app/frontend/react/views/V2/AppDetails/components/MediaCarousel/MainCarousel.jsx","webpack://marketplace/./app/frontend/react/views/V2/AppDetails/components/MediaCarousel/ThumbnailCarousel.jsx","webpack://marketplace/./app/frontend/react/views/V2/AppDetails/components/MediaCarousel/index.jsx","webpack://marketplace/./app/frontend/react/hooks/useIntersection.js","webpack://marketplace/./app/frontend/react/views/V2/AppDetails/components/Sections/SectionNav.jsx","webpack://marketplace/./app/frontend/react/views/V2/AppDetails/AppDetails.jsx","webpack://marketplace/./app/frontend/react/views/V2/AppDetails/index.jsx","webpack://marketplace/./app/frontend/react/views/V2/MarketplaceListing/MarketplaceListing.jsx","webpack://marketplace/./app/frontend/react/views/V2/MarketplaceListing/index.jsx","webpack://marketplace/./app/frontend/react/views/V2/FAQ/FAQ.jsx","webpack://marketplace/./app/frontend/react/views/V2/FAQ/index.jsx","webpack://marketplace/./app/frontend/packs/application.js","webpack://marketplace/./app/frontend/scripts/animations.js","webpack://marketplace/./app/frontend/scripts/modal.js","webpack://marketplace/./public/images/ sync ^\\.\\/.*$"],"sourcesContent":["import 'core-js/stable';\nimport 'regenerator-runtime/runtime';\n\n// NodeList.forEach\n// https://developer.mozilla.org/en-US/docs/Web/API/NodeList/forEach\nif ( !NodeList.prototype.forEach ) {\n NodeList.prototype.forEach = Array.prototype.forEach;\n}\n\n// ChildNode.remove\n// https://developer.mozilla.org/en-US/docs/Web/API/ChildNode/remove\n(function (arr) {\n arr.forEach(function (item) {\n item.remove = item.remove || function () {\n this.parentNode.removeChild(this);\n };\n });\n})([Element.prototype, CharacterData.prototype, DocumentType.prototype]);\n","import React from 'react';\nimport { ArrowRight } from '@procore/core-icons';\nimport { Box } from '@procore/core-react';\n\nexport const ArrowNext = () => (\n \n \n \n);\n","import React from 'react';\nimport { ArrowLeft } from '@procore/core-icons';\nimport { Box } from '@procore/core-react';\n\nexport const ArrowPrev = () => (\n \n \n \n);\n","export const FUSE_CONFIG = {\n ignoreLocation: true,\n shouldSort: true,\n threshold: 0,\n location: 0,\n distance: 90000, // Set distance to be large to account for long fields\n minMatchCharLength: 2,\n includeMatches: true,\n findAllMatches: false,\n keys: [\n { name: 'name', weight: 50 },\n { name: 'search_description', weight: 30 },\n { name: 'how_it_works', weight: 25 },\n { name: 'description', weight: 20 },\n ]\n};\n","import axios from 'axios';\n\nconst trackEvent = (key, params) => {\n axios({\n method: 'post',\n url: '/api/analytics',\n data: {\n key,\n additional_properties: params,\n },\n headers: {\n 'X-Forwarded-Host': window.location.host,\n 'X-CSRF-TOKEN': document\n .getElementsByName('csrf-token')[0]\n .getAttribute('content'),\n },\n });\n};\n\nexport default trackEvent;\n","export const debounce = (func, delay) => {\n let timer;\n return function(...args) {\n clearTimeout(timer);\n timer = setTimeout(() => func.apply(this, args), delay);\n };\n};\n\nexport const truncate = ( str, n, useWordBoundary ) => {\n if (str.length <= n) { return str; }\n const subString = str.substr(0, n-1);\n return (useWordBoundary\n ? subString.substr(0, subString.lastIndexOf(\" \"))\n : subString) + \"...\";\n};\n","// extracted by mini-css-extract-plugin\nexport default {\"searchWrapper\":\"styles-module__searchWrapper___gJhL\",\"searchInput\":\"styles-module__searchInput__JB2Vo\",\"searchForm\":\"styles-module__searchForm__o00Lu\",\"searchResultsWrapper\":\"styles-module__searchResultsWrapper___Gfg3\",\"searchResultsHidden\":\"styles-module__searchResultsHidden__cvWyn\",\"searchResultsVisible\":\"styles-module__searchResultsVisible__J6rbM\",\"searchResultsMenu\":\"styles-module__searchResultsMenu__nFuLV\",\"searchResultsMenuOptions\":\"styles-module__searchResultsMenuOptions__HEXEH\",\"searchResultsItem\":\"styles-module__searchResultsItem__A6G8Y\",\"searchResultsItemInner\":\"styles-module__searchResultsItemInner__C8uzX\",\"searchResultsThumbnail\":\"styles-module__searchResultsThumbnail__hrr1I\",\"searchResultsText\":\"styles-module__searchResultsText__a_UDO\"};","export const highlight = (\n results,\n maxLength = 40,\n highlightClass = 'highlight'\n) => {\n const renderHighlightedText = (text, regions = []) => {\n let truncated = false;\n let currStringLen = 0;\n\n const checkLengthAndTrunc = (string) => {\n if (currStringLen + string.length > maxLength) {\n const truncatedString = string.slice(0, maxLength - currStringLen);\n currStringLen += truncatedString.length;\n truncated = true;\n return truncatedString;\n }\n currStringLen += string.length;\n return string;\n };\n\n const content = regions.reduce((acc, [start, end], idx) => {\n const beforeMatch = checkLengthAndTrunc(text.slice(currStringLen, start));\n const highlightedMatch = checkLengthAndTrunc(text.slice(start, end + 1));\n const afterMatch =\n idx === regions.length - 1\n ? checkLengthAndTrunc(text.slice(end + 1))\n : '';\n\n const key = `match_${idx}`;\n acc.push(\n \n {beforeMatch}\n {highlightedMatch}\n {afterMatch}\n \n );\n return acc;\n }, []);\n\n return truncated ? [...content, '...'] : content;\n };\n\n return results\n ? results\n .filter(({ matches }) => matches && matches.length)\n .map(({ item, matches }) => {\n const highlightedItem = { ...item };\n\n matches.forEach((match) => {\n highlightedItem[match.key] = renderHighlightedText(\n match.value,\n match.indices\n );\n });\n\n return { highlightedItem, matches };\n })\n : [];\n};\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport Fuse from 'fuse.js';\nimport {\n Box,\n Card,\n colors,\n Flex,\n Link,\n Menu,\n Search,\n P,\n Typography,\n} from '@procore/core-react';\nimport classNames from 'classnames/bind';\nimport axios from 'axios';\nimport styled from 'styled-components';\nimport { FUSE_CONFIG } from '@/react/shared/utils/fuseConfig';\nimport trackEvent from '@/scripts/analytics';\nimport { debounce } from '@/react/shared/utils/helpers';\nimport styles from './styles.module.scss';\nimport { highlight } from '@/utils/highlight';\n\nconst cx = classNames.bind(styles);\n\nconst i18n = {\n logoAltText: 'App Marketplace Logo',\n noAppsFound: 'No apps found...',\n searching: 'Searching...',\n searchError: 'Error retrieving search data',\n searchLoading: 'Loading...',\n searchPlaceholder: 'Search for apps',\n};\n\nconst RESULTS_LIMIT = 7;\n\nconst StyledItem = styled(Menu.Item)`\n background-color: ${colors.gray96};\n border-bottom: 1px solid ${colors.gray85};\n\n &:hover {\n background-color: ${colors.gray90};\n }\n`;\n\nconst AppResults = ({ apps, searchTerm }) => {\n const limitedResults = highlight(apps.slice(0, RESULTS_LIMIT));\n\n return limitedResults.map((result, idx, arr) => {\n const { highlightedItem: app } = result;\n const viewAll = arr.length > 1 && idx === arr.length - 1;\n\n return (\n <>\n \n \n \n \n \n \n \n {app.name}\n {app.search_description}\n \n \n \n \n {viewAll && (\n \n \n \n View All Results\n \n \n \n )}\n \n );\n });\n};\n\nconst handleSearchAnalytics = (searchTerm, count) =>\n trackEvent('marketplace.apps.search.input', {\n marketplace_search_term: searchTerm,\n marketplace_search_count: count,\n });\n\nconst debounceHandleSearchAnalytics = debounce(handleSearchAnalytics, 500);\nconst StyledSearch = styled(Search)`\n width: 100%;\n`;\n\nconst TopNavSearchForm = ({\n appsSearchApiPath,\n fuse,\n searchDataState,\n propSearchTerm = '',\n propSetSearchTerm,\n}) => {\n const [searchTerm, setLocalSearchTerm] = useState(propSearchTerm);\n const setSearchTerm = propSetSearchTerm || setLocalSearchTerm;\n useEffect(() => {\n setSearchTerm(propSearchTerm);\n }, [propSearchTerm]);\n\n const [state, setState] = useState({\n appSearchResults: [],\n showResultsMenu: 'hidden',\n });\n\n const handleSetState = (newState) =>\n setState({\n ...state,\n ...newState,\n });\n\n useEffect(() => {\n if (!fuse) {\n axios.get(appsSearchApiPath).then((res) => {\n const newState = {\n fuse: new Fuse(res.data, FUSE_CONFIG),\n };\n if (searchTerm) {\n newState.appSearchResults = newState.fuse.search(searchTerm);\n }\n handleSetState(newState);\n });\n }\n }, []);\n\n useEffect(() => {\n if (searchTerm.length > 2) {\n handleSetState({\n appSearchResults: fuse\n ? fuse.search(searchTerm)\n : state.fuse.search(searchTerm),\n });\n debounceHandleSearchAnalytics(searchTerm, state.appSearchResults.length);\n } else {\n handleSetState({\n appSearchResults: [],\n });\n }\n }, [searchTerm]);\n\n const placeholderText = () => {\n if (!searchDataState) {\n return i18n.searchPlaceholder;\n }\n if (searchDataState?.loading) {\n return i18n.searchLoading;\n }\n if (!searchDataState?.loading && !searchDataState?.data.length) {\n return i18n.searchError;\n }\n return i18n.searchPlaceholder;\n };\n\n return (\n \n \n searchTerm.length > 2 &&\n handleSetState({ showResultsMenu: 'visible' })\n }\n onBlur={() => handleSetState({ showResultsMenu: 'hidden' })}\n onChange={(e) => {\n const val = e.target.value;\n setSearchTerm(val);\n handleSetState({\n showResultsMenu: val.length > 2 ? 'visible' : 'hidden',\n });\n }}\n onSubmit={() =>\n (window.location.href = `/search_results?query=${searchTerm}`)\n }\n />\n \n \n e.preventDefault()}\n >\n \n {state.appSearchResults?.length === 0 ? (\n

\n {state.search ? i18n.searching : i18n.noAppsFound}\n

\n ) : (\n \n )}\n
\n \n
\n \n \n );\n};\n\nTopNavSearchForm.propTypes = {\n appsSearchApiPath: PropTypes.string.isRequired,\n fuse: PropTypes.object,\n searchDataState: PropTypes.object,\n propSearchTerm: PropTypes.string,\n propSetSearchTerm: PropTypes.func,\n};\n\nexport default TopNavSearchForm;\n","/**\n * This helper will open up a jquery modal from a click event.\n * The Click target must be a link whose href is the ID\n * of the modal you wish to open.\n * Ex: \n * http://jquerymodal.com/\n * NOTE: This can only be used where jquery.modal is defined.\n */\nexport const triggerModalFromClickEvent = (e) => {\n e.preventDefault();\n\n $(e.target).modal({\n fadeDuration: 500\n });\n};\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { triggerModalFromClickEvent } from '../../shared/utils/modalUtil';\n\nconst i18n = {\n login: 'Login',\n logout: 'Logout',\n changeCompany: 'Change Company'\n};\n\nclass MobileMenu extends React.Component {\n constructor(props) {\n super(props);\n }\n\n getLinkPath(appsBasePath, paramKey, paramVal) {\n return `${appsBasePath}?${paramKey}=${paramVal}`;\n };\n\n getCategoryPath(category) {\n return `/${category.type === 'region' ? 'regions' : 'categories'}/${category.slug}`;\n };\n\n getMobileLink(href, text) {\n return(\n
\n {text}\n
\n );\n }\n\n getCategoriesMobileLinks(appsBasePath) {\n const links = [this.getMobileLink(appsBasePath, 'All')];\n this.props.categories.forEach(category => {\n links.push(this.getMobileLink(this.getCategoryPath(category), category.name))\n });\n return links;\n };\n\n render() {\n const {\n appsBasePath,\n faqsPath,\n partnerSignupPath,\n buildAppPath,\n communityPath,\n webinarsPath,\n signInPath,\n signOutPath,\n changeCompanyPath,\n isSignedIn,\n } = this.props;\n\n return (\n
\n
\n Menu\n
\n
\n
\n
Featured
\n \n
\n
\n
\n
Categories
\n {this.getCategoriesMobileLinks(appsBasePath)}\n
\n\n
\n
\n
Other Information
\n {this.getMobileLink(communityPath, 'Community')}\n {this.getMobileLink(webinarsPath, 'Webinars')}\n {this.getMobileLink(faqsPath, 'FAQ')}\n {this.getMobileLink(partnerSignupPath, 'Become a Partner')}\n {this.getMobileLink(buildAppPath, 'Build an App/Integration')}\n \n {\n !isSignedIn ? (\n this.getMobileLink(signInPath, i18n.login)\n ) : (\n <>\n {this.getMobileLink(signOutPath, i18n.logout)}\n {this.getMobileLink(changeCompanyPath, i18n.changeCompany)}\n \n )\n }\n
\n
\n
\n );\n }\n}\n\nMobileMenu.propTypes = {\n isSignedIn: PropTypes.bool.isRequired,\n currentUser: PropTypes.shape({\n email: PropTypes.string,\n procore_id: PropTypes.number,\n }),\n signInPath: PropTypes.string.isRequired,\n signOutPath: PropTypes.string.isRequired,\n appsBasePath: PropTypes.string.isRequired,\n faqsPath: PropTypes.string.isRequired,\n partnerSignupPath: PropTypes.string.isRequired,\n buildAppPath: PropTypes.string.isRequired,\n communityPath: PropTypes.string.isRequired,\n webinarsPath: PropTypes.string.isRequired,\n categories: PropTypes.array.isRequired,\n changeCompanyPath: PropTypes.string.isRequired,\n};\n\nexport default MobileMenu;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\n\n/**\n * For this component to have onClickOutside functionality, it must be wrapped\n * by the higher order component 'OnClickOutside'\n */\n\nconst DIRECTIONS_CLASS_MAP = {\n east: 'dropdown--drop-east',\n south: 'dropdown--drop-south',\n west: 'dropdown--drop-west',\n};\n\nclass Dropdown extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n isOpen: this.props.isOpenInitial,\n };\n\n // Pre-bind context of toggleDropdownState function\n this.toggleDropdownState = this.toggleDropdownState.bind(this);\n }\n\n toggleDropdownState() {\n this.setState({ isOpen: !this.state.isOpen });\n }\n\n handleClickOutside() {\n // User has clicked off of the dropdown, so close it\n this.setState({ isOpen: false });\n }\n\n render() {\n const {\n closeOnSelect,\n dropdownDirection,\n dropdownTarget,\n className,\n menuStyles,\n } = this.props;\n\n const { isOpen } = this.state;\n\n const dropdownDirectionClass = DIRECTIONS_CLASS_MAP[dropdownDirection];\n const dropdownClasses = cx('dropdown', dropdownDirectionClass, {\n 'dropdown--open': isOpen,\n });\n\n return (\n \n \n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */}\n \n {dropdownTarget}\n \n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */}\n {\n closeOnSelect && this.toggleDropdownState();\n }}\n >\n {this.props.children}\n \n \n \n );\n }\n}\n\nDropdown.propTypes = {\n menuStyles: PropTypes.shape({}),\n dropdownTarget: PropTypes.node.isRequired,\n dropdownDirection: PropTypes.oneOf(['east', 'south', 'west']),\n isOpenInitial: PropTypes.bool,\n className: PropTypes.string,\n closeOnSelect: PropTypes.bool,\n children: PropTypes.node,\n};\n\nDropdown.defaultProps = {\n dropdownDirection: 'east',\n isOpenInitial: false,\n};\n\nexport default Dropdown;\n","import Dropdown from './Dropdown';\nimport OnClickOutside from 'react-onclickoutside';\n\n// Wrap component in Higher Order OnClickOutside Component for handling\n// when user clicks off of dropdown\nexport default OnClickOutside(Dropdown);\n","// extracted by mini-css-extract-plugin\nexport default {\"avatarCircle\":\"styles-module__avatarCircle__R99og\",\"userIcon\":\"styles-module__userIcon__gkEOB\",\"dropdownContainer\":\"styles-module__dropdownContainer__OpqHu\",\"email\":\"styles-module__email__mnAaQ\",\"company\":\"styles-module__company__kt3RR\",\"footer\":\"styles-module__footer__GfmB8\"};","import React from 'react'\nimport PropTypes from 'prop-types';\nimport Dropdown from '@/react/shared/Dropdown';\nimport classNames from 'classnames/bind';\nimport styles from './styles.module.scss';\n\nconst cx = classNames.bind(styles);\n\nconst i18n = {\n logout: 'Logout',\n changeCompany: 'Change Company'\n};\n\nconst Avatar = () => (\n \n \n \n);\n\nconst UserAvatar = ({ email, company, signOutPath, changeCompanyPath }) => {\n return (\n }\n >\n
\n \n {email}\n
\n \n {company}\n \n
\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */}\n window.location = changeCompanyPath}>\n {i18n.changeCompany}\n
\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */}\n window.location = signOutPath}>\n {i18n.logout}\n \n \n \n \n )\n};\n\nUserAvatar.propTypes = {\n email: PropTypes.string.isRequired,\n company: PropTypes.string.isRequired,\n signOutPath: PropTypes.string.isRequired,\n changeCompanyPath: PropTypes.string.isRequired\n};\n\nexport default UserAvatar;\n","import UserAvatar from './UserAvatar';\nexport default UserAvatar;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport get from 'lodash.get';\nimport MobileMenu from './MobileMenu';\nimport { triggerModalFromClickEvent } from '../../shared/utils/modalUtil';\nimport UserAvatar from './UserAvatar';\nimport './TopNavHeader.scss';\nimport { debounce } from '../../shared/utils/helpers';\nimport trackEvent from '../../../scripts/analytics';\nimport { TopNavSearchForm } from './index';\n\nconst i18n = {\n logoAltText: 'App Marketplace Logo',\n buildAnApp: 'Build an App',\n submitAnIdea: 'Submit an Idea',\n faq: 'FAQ',\n becomeAPartner: 'Become a Partner',\n webinars: 'Webinars',\n login: 'Log In',\n community: 'Community',\n};\n\nconst sendAnalytics = (\n action,\n category,\n label,\n procoreLabel,\n procoreAdditionalFields,\n gtagValue\n) => {\n if (typeof gtag !== 'undefined') {\n gtag('event', action, {\n event_category: category,\n event_label: label,\n gtagValue,\n });\n }\n trackEvent(`marketplace.apps.${procoreLabel}`, {\n app_name: name,\n ...procoreAdditionalFields,\n });\n};\n\nclass TopNavHeader extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n isSolid: props.isSolid,\n searchOpacity: props.searchOpacity,\n };\n\n this.handleScroll = debounce(this.handleScroll.bind(this), 50);\n }\n\n componentDidMount() {\n window.addEventListener('scroll', this.handleScroll);\n }\n\n componentWillUnmount() {\n window.removeEventListener('scroll', this.handleScroll);\n }\n\n handleScroll() {\n if (this.props.animateOnScroll) {\n const yOffset = window.pageYOffset || document.documentElement.scrollTop;\n\n this.setState({\n isSolid: yOffset >= 1,\n });\n }\n }\n\n isLinkActive(path) {\n const href = get(window, ['location', 'href'], '');\n return href.indexOf(path) > -1;\n }\n\n fallBackUrl () {\n const pathRegex = /apps\\S+/;\n\n return pathRegex.exec(window.location.href) ? window.location.href : null;\n };\n\n signOutWithFallbackPath () {\n const { signOutPath } = this.props;\n const fallBack = this.fallBackUrl();\n\n return fallBack\n ? `${signOutPath}?fallback=${this.fallBackUrl()}`\n : signOutPath;\n };\n\n render() {\n const {\n isSignedIn,\n currentUser,\n currentCompany,\n marketplaceLogoURL,\n searchPath,\n marketplaceBasePath,\n appSearchResults,\n communityPath,\n webinarsPath,\n signInPath,\n changeCompanyPath,\n faqsPath,\n buildAppPath,\n partnerSignupPath,\n appsBasePath,\n appsSearchApiPath,\n categories,\n isHeroSearchVisible,\n searchDataState,\n searchTerm,\n setSearchTerm,\n fuse,\n } = this.props;\n\n const headerClasses = cx(\n 'pc-mp-header',\n 'pc-mp-header--pc-mp-large-header',\n { 'solid-header': this.state.isSolid || this.state.searchOpacity === 1 }\n );\n\n return (\n
\n
\n
\n \n \n \n
\n
\n {!isHeroSearchVisible && (\n \n )}\n
\n
\n \n sendAnalytics(\n 'click',\n 'Link',\n 'Community - Header',\n 'community_header.clicked'\n )\n }\n rel=\"noreferrer\"\n >\n {i18n.community}\n \n {i18n.webinars}\n \n {i18n.faq}\n \n {i18n.becomeAPartner}\n \n {i18n.buildAnApp}\n \n \n {i18n.submitAnIdea}\n \n {!isSignedIn ? (\n \n {i18n.login}\n \n ) : (\n \n )}\n
\n \n
\n
\n );\n }\n}\n\nTopNavHeader.propTypes = {\n signInPath: PropTypes.string.isRequired,\n signOutPath: PropTypes.string.isRequired,\n isSignedIn: PropTypes.bool.isRequired,\n currentUser: PropTypes.shape({\n email: PropTypes.string,\n procore_id: PropTypes.number,\n }).isRequired,\n marketplaceBasePath: PropTypes.string.isRequired,\n procoreBasePath: PropTypes.string.isRequired,\n appsBasePath: PropTypes.string.isRequired,\n partnerSignupPath: PropTypes.string.isRequired,\n communityPath: PropTypes.string.isRequired,\n webinarsPath: PropTypes.string.isRequired,\n faqsPath: PropTypes.string.isRequired,\n buildAppPath: PropTypes.string.isRequired,\n appSearchResults: PropTypes.array.isRequired,\n searchPath: PropTypes.string.isRequired,\n appsSearchApiPath: PropTypes.string.isRequired,\n marketplaceLogoURL: PropTypes.string.isRequired,\n animateOnScroll: PropTypes.bool,\n isSolid: PropTypes.bool,\n searchOpacity: PropTypes.number,\n categories: PropTypes.array.isRequired,\n currentCompany: PropTypes.shape({\n name: PropTypes.string,\n }).isRequired,\n changeCompanyPath: PropTypes.string.isRequired,\n isHeroSearchVisible: PropTypes.bool,\n searchDataState: PropTypes.string,\n searchTerm: PropTypes.string,\n setSearchTerm: PropTypes.func,\n fuse: PropTypes.object,\n};\n\nexport default TopNavHeader;\n","import styled from 'styled-components';\nimport {\n Box,\n Flex,\n Link,\n Modal,\n H1,\n Card,\n spacing,\n colors,\n} from '@procore/core-react';\n\nconst SmallLogoWrapper = styled(Flex)`\n width: 75px;\n height: 75px;\n background: #ffffff;\n border: 1px solid #c2c2c2;\n padding: 10px;\n`;\n\nconst MediumLogoWrapper = styled(Flex)`\n width: 100px;\n height: 100px;\n background: #ffffff;\n margin: 0px 38px 0px 0px;\n padding: 0px;\n`;\n\nconst SmallLogo = styled.img`\n width: 100%;\n height: auto;\n`;\n\nconst Container = styled(Box)`\n width: 100%;\n margin: 0 auto;\n`;\n\nconst SlideContainer = styled(Box)`\n width: 100%;\n height: 150px;\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n\n @media (min-width: 600px) {\n height: 290px;\n }\n\n @media (min-width: 768px) {\n height: 352px;\n }\n`;\n\nconst Slide = styled.img`\n display: block;\n background-color: ${colors.white};\n border: 1px solid ${colors.gray85};\n border-radius: 4px;\n width: 100%;\n height: 100%;\n object-fit: cover;\n cursor: pointer;\n`;\n\nconst EmptySlide = styled(Box)`\n background-color: ${colors.white};\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n width: 100%;\n border-radius: 4px;\n object-fit: cover;\n border: 1px solid ${colors.gray85};\n cursor: pointer;\n height: 150px;\n\n .dialog {\n width: 100%;\n padding: ${spacing.lg}px;\n\n @media (min-width: 768px) {\n width: 312px;\n padding: 0;\n }\n }\n\n @media (min-width: 768px) {\n height: 352px;\n }\n`;\n\nconst arrowMargin = 64;\n\nconst SlickWrapper = styled(Box)`\n margin: 0;\n width: 272px;\n\n @media (min-width: 552px) {\n width: 356px;\n margin: 0 ${arrowMargin}px;\n }\n\n @media (min-width: 600px) {\n width: 532px;\n }\n\n @media (min-width: 768px) {\n width: 644px;\n }\n\n .slick-arrow {\n &:before {\n color: #1d3243;\n }\n }\n\n &.thumbnail-carousel {\n .slick-track {\n display: flex;\n align-items: center;\n margin: 0 2px;\n }\n\n .slick-current {\n ${Slide} {\n border-color: ${colors.blue50};\n box-shadow: 0px 0px 0px 2px ${colors.blue50} inset,\n 0px 0px 0px 2px ${colors.blue50};\n }\n }\n }\n`;\n\nconst ArrowContainer = styled(Box)`\n background: white;\n border: 1px solid ${colors.gray85};\n width: 24px;\n height: 24px;\n border-radius: 50%;\n z-index: 1;\n\n &:before {\n content: none;\n }\n\n &.slick-prev {\n left: -32px;\n }\n\n &.slick-next {\n right: -32px;\n }\n\n svg {\n transform: scale(0.75);\n }\n\n &:hover {\n background: ${colors.gray85};\n }\n\n @media (min-width: 480px) {\n width: 48px;\n height: 48px;\n\n &.slick-prev {\n left: -64px;\n }\n\n &.slick-next {\n right: -64px;\n }\n\n svg {\n transform: scale(1);\n }\n }\n`;\n\nconst OrangeLink = styled(Link)`\n color: #f47e42;\n`;\n\nconst ImageModal = styled(Modal)`\n background: transparent;\n box-shadow: none;\n overflow: visible;\n > div {\n overflow: visible;\n }\n`;\n\nconst ModalImageBody = styled(Box)`\n width: 90vw;\n height: 90vh;\n max-width: none;\n justify-content: center;\n overflow: visible;\n position: relative;\n display: flex;\n\n > div > div {\n max-height: none;\n }\n`;\n\nconst ModalImage = styled.img`\n object-fit: contain;\n box-shadow: 0px 0px 32px -4px hsl(200deg 10% 15% / 64%);\n max-width: 100%;\n max-height: 100%;\n`;\n\nconst CloseImageModalButton = styled.button`\n position: absolute;\n top: -10px;\n right: -10px;\n border-radius: 50%;\n width: 25px;\n height: 25px;\n background-color: #000;\n border: 2px solid #fff;\n\n &:after {\n content: '\\\\00d7';\n color: #fff;\n }\n`;\n\nconst NameText = styled(H1)`\n font-size: 44px;\n margin: 8px auto;\n`;\n\nconst UnstyledLink = styled(Link)`\n color: inherit;\n text-decoration: none;\n\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n`;\n\nconst DropdownMenu = styled(Card)`\n margin-top: ${spacing.sm}px;\n background-color: ${colors.white};\n border-radius: 8px;\n padding: ${spacing.sm}px;\n box-shadow: 0px 4px 28px 0px rgba(0, 0, 0, 0.28);\n`;\n\nconst DropdownItem = styled(Box)`\n background-color: ${colors.white};\n border-radius: 8px;\n padding: ${spacing.md}px;\n margin: ${spacing.xs}px 0;\n width: 100%;\n\n &:hover {\n background-color: ${colors.gray94};\n }\n`;\n\nconst Divider = styled.div`\n width: 100%;\n border-top: 1px solid ${colors.gray94};\n height: 2px;\n margin: ${spacing.sm}px 0;\n`;\n\nconst LargeSpacingDivider = styled.div`\n width: 100%;\n border-top: 1px solid ${colors.gray94};\n height: 2px;\n margin: ${spacing.sm}px 0;\n`;\n\nconst UnderlineModalHeader = styled(Modal.Header)`\n border-bottom: 1px solid ${colors.gray85};\n`;\n\nconst MinWidthModal = styled(Modal)`\n width: 40%;\n`;\n\nconst MinWidthModalBody = styled(Modal.Body)`\n width: 100%;\n max-width: 100%;\n`;\n\nconst MediaContainer = styled(Flex)`\n max-width: 1200px;\n @media (max-width: 768px) {\n margin: 48px ${spacing.md}px;\n }\n\n @media (min-width: 769px) {\n margin: 48px 48px;\n }\n\n @media (min-width: 1200px) {\n margin: 48px 120px;\n }\n\n @media (min-width: 1920px) {\n margin: 48px 360px;\n }\n`;\n\nconst SidebarContainer = styled(Flex)`\n justify-content: center;\n margin-left: 32px;\n\n @media (min-width: 1024px) {\n justify-content: flex-start;\n margin-left: 50px;\n }\n`;\n\nconst UnderlineLink = styled(Box)`\n a {\n text-decoration: underline !important;\n }\n`;\n\nexport {\n Container,\n SmallLogo,\n SmallLogoWrapper,\n MediumLogoWrapper,\n NameText,\n SlickWrapper,\n Slide,\n OrangeLink,\n ImageModal,\n ModalImageBody,\n ModalImage,\n CloseImageModalButton,\n UnstyledLink,\n DropdownMenu,\n DropdownItem,\n Divider,\n LargeSpacingDivider,\n ArrowContainer,\n UnderlineModalHeader,\n MinWidthModal,\n MinWidthModalBody,\n MediaContainer,\n SidebarContainer,\n UnderlineLink,\n EmptySlide,\n SlideContainer,\n};\n","import React from 'react';\nimport PT from 'prop-types';\nimport Slider from 'react-slick';\nimport { colors, spacing } from '@procore/core-react';\nimport styled from 'styled-components';\nimport { Slide, ArrowContainer } from '@/react/styles/v2';\nimport { ArrowNext, ArrowPrev } from '../Arrows';\n\nconst SlickDots = styled.ul`\n display: flex;\n align-items: center;\n justify-content: center;\n width: auto;\n left: 50%;\n transform: translateX(-50%);\n gap: 4px;\n border-radius: 16px;\n padding: ${spacing.md}px;\n margin: 0 auto;\n background-color: ${colors.gray94};\n bottom: -36px;\n\n @media (min-width: 768px) {\n bottom: -59px;\n }\n\n & > li {\n margin: 0;\n width: 6px;\n height: 6px;\n\n &.slick-active {\n width: 8px;\n height: 8px;\n\n & > button {\n &::before {\n font-size: 8px;\n }\n }\n }\n\n & > button {\n width: auto;\n height: auto;\n padding: 0;\n\n &::before {\n width: auto;\n height: auto;\n line-height: 0;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n transition: all 0.2s ease;\n }\n }\n }\n`;\n\nconst StyledSlider = styled(Slider)`\n .slick-track {\n display: flex !important; // have to do this to override css\n align-items: stretch;\n }\n\n .slick-slide {\n display: flex;\n align-items: center;\n justify-content: center;\n height: 100%;\n }\n`;\n\nconst SlideContainer = styled.div`\n width: 100%;\n height: 183px;\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1;\n\n @media (min-width: 768px) {\n height: 496px;\n }\n`;\n\nexport const SingleCarousel = ({ settings, slides, handleOnSlideClick }) => {\n const sliderSettings = {\n focusOnSelect: false,\n dots: true,\n infinite: true,\n slidesToShow: 1,\n slidesToScroll: 1,\n fade: false,\n adaptiveHeight: false,\n appendDots: (dots) => {dots},\n prevArrow: (\n \n \n \n ),\n nextArrow: (\n \n \n \n ),\n ...settings,\n };\n\n return (\n \n {slides?.map((slide, index) => (\n \n \n \n ))}\n \n );\n};\n\nSingleCarousel.propTypes = {\n slides: PT.arrayOf(\n PT.shape({\n url: PT.string.isRequired,\n })\n ).isRequired,\n settings: PT.shape({}),\n handleOnSlideClick: PT.func,\n};\n","import React, { useState, useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Box,\n Button,\n H2,\n Modal,\n P,\n Tooltip,\n useI18nContext,\n} from '@procore/core-react';\n\nconst ContactForm = ({\n appName,\n email = 'example@example.com',\n company = 'Company',\n developerAppId = '',\n contactUsEmail,\n createLead,\n sendAnalytics = () => {},\n isSignedIn = false,\n}) => {\n const i18n = useI18nContext();\n const [formSubmitted, setFormSubmitted] = useState(false);\n const [modalOpen, setModalOpen] = useState(false);\n\n const openContactModal = useCallback(() => {\n if (!window.MktoForms2) {\n return;\n }\n\n sendAnalytics('open', 'Modal', 'Contact Us', 'contact_form.opened');\n setModalOpen(true);\n\n window.MktoForms2.loadForm(\n '//app-sj11.marketo.com',\n '788-HIQ-636',\n 6597,\n (form) => {\n form.vals({\n Email: email,\n Company: company,\n Marketplace_Interest__c: appName,\n marketplaceDeveloperAppId: developerAppId,\n marketplacePartnerEmail: contactUsEmail,\n marketplaceProcoreBuiltApp: createLead,\n });\n\n form.onSuccess(() => {\n setFormSubmitted(true);\n sendAnalytics('submit', 'Form', 'Contact Us', 'contact_form.sent');\n return false;\n });\n }\n );\n }, [\n appName,\n email,\n company,\n developerAppId,\n contactUsEmail,\n createLead,\n sendAnalytics,\n ]);\n\n const closeContactModal = useCallback(() => {\n setModalOpen(false);\n sendAnalytics(\n 'close',\n 'Modal',\n 'Contact Us',\n 'contact_form.closed',\n { sent_form: formSubmitted ? 1 : 0 },\n formSubmitted ? 1 : 0\n );\n }, [formSubmitted, sendAnalytics]);\n\n return (\n
\n {isSignedIn ? (\n \n ) : (\n \n \n \n {i18n.t('labels.contactUs', { defaultValue: 'Contact Us' })}\n \n \n \n )}\n \n \n {i18n.t('labels.contactUs', { defaultValue: 'Contact Us' })}\n \n \n \n {!formSubmitted ? (\n

\n {i18n.t('contactUs.formDescription', {\n defaultValue:\n 'Please fill out the form below. A representative will be in touch with you shortly with more information on pricing and how to get started.',\n })}\n

\n ) : (\n \n

\n {i18n.t('labels.thankYou', {\n defaultValue:\n 'Thanks for visiting our App Marketplace and requesting information on',\n })}\n !\n

\n

\n {i18n.t('contactUs.thanksForVisiting', {\n defaultValue:\n 'We have received your request and a representative will contact you shortly.',\n })}{' '}\n {appName}\n

\n

\n {i18n.t('contactUs.submitted', {\n defaultValue:\n 'We have received your request and a representative will contact you shortly.',\n })}\n

\n
\n )}\n {!formSubmitted &&
}\n\n

\n {i18n.t('contactUs.issues', {\n defaultValue:\n 'If you are having issues viewing the form, please disable your Adblock.',\n })}\n

\n \n \n \n
\n );\n};\n\nContactForm.propTypes = {\n appName: PropTypes.string.isRequired,\n email: PropTypes.string,\n company: PropTypes.string,\n developerAppId: PropTypes.string,\n contactUsEmail: PropTypes.string,\n createLead: PropTypes.bool,\n sendAnalytics: PropTypes.func,\n isSignedIn: PropTypes.bool,\n};\n\nexport default ContactForm;\n","import styled, { css } from 'styled-components';\nimport {\n Box,\n Flex,\n Link,\n Modal,\n H1,\n Card,\n spacing,\n colors,\n Page,\n} from '@procore/core-react';\n\nconst SmallLogoWrapper = styled(Flex)`\n width: 75px;\n height: 75px;\n background: #ffffff;\n border: 1px solid #c2c2c2;\n padding: 10px;\n`;\n\nconst MediumLogoWrapper = styled(Flex)`\n width: 100px;\n height: 100px;\n background: ${colors.white};\n margin-right: 38px;\n padding: 0px;\n`;\n\nconst SmallLogo = styled.img`\n width: 100%;\n height: auto;\n`;\n\nconst Container = styled(Box)`\n max-width: 1200px;\n width: 100%;\n margin: 0 auto;\n min-height: calc(100vh - 45px);\n background-color: ${colors.gray96};\n`;\n\nconst ContentContainer = styled(Box)`\n max-width: 780px;\n width: 100%;\n margin: 0 auto;\n\n @media (max-width: 768px) {\n padding: 0 ${spacing.lg}px;\n }\n`;\n\nconst Slide = styled.img`\n object-fit: contain;\n`;\n\nconst SlickWrapper = styled(Box)`\n .slick-arrow {\n transition: opacity 0.3s;\n opacity: 0;\n\n &:before {\n color: #1d3243;\n }\n }\n\n &:hover {\n .slick-arrow {\n opacity: 1;\n }\n }\n`;\n\nconst arrows = css`\n background: #1d3243;\n width: 50px;\n height: 75px;\n padding: 10px;\n\n img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n\n &:before {\n content: none;\n }\n\n &:hover {\n background: #1d3243;\n }\n`;\n\nconst SlickArrowPrev = styled(Box)`\n ${arrows}\n transform: translate(-20px, -50%);\n`;\n\nconst SlickArrowNext = styled(Box)`\n ${arrows}\n transform: translate(20px, -50%);\n`;\n\nconst OrangeLink = styled(Link)`\n color: #f47e42;\n`;\n\nconst ImageModal = styled(Modal)`\n background: transparent;\n box-shadow: none;\n overflow: visible;\n > div {\n overflow: visible;\n }\n`;\n\nconst ModalImageBody = styled(Box)`\n width: 90vw;\n height: 90vh;\n max-width: none;\n justify-content: center;\n overflow: visible;\n position: relative;\n display: flex;\n\n > div > div {\n max-height: none;\n }\n`;\n\nconst ModalImage = styled.img`\n object-fit: contain;\n box-shadow: 0px 0px 32px -4px hsl(200deg 10% 15% / 64%);\n max-width: 100%;\n max-height: 100%;\n`;\n\nconst CloseImageModalButton = styled.button`\n position: absolute;\n top: -10px;\n right: -10px;\n border-radius: 50%;\n width: 25px;\n height: 25px;\n background-color: #000;\n border: 2px solid #fff;\n\n &:after {\n content: '\\\\00d7';\n color: #fff;\n }\n`;\n\nconst HeaderText = styled(H1)`\n font-size: 38px;\n display: block;\n line-height: 44px;\n margin-bottom: ${spacing.sm}px;\n`;\n\nconst UnstyledLink = styled(Link)`\n color: inherit;\n text-decoration: none;\n\n &:hover {\n color: inherit;\n text-decoration: none;\n }\n`;\n\nconst DropdownMenu = styled(Card)`\n margin-top: ${spacing.sm}px;\n background-color: ${colors.white};\n border-radius: 8px;\n padding: ${spacing.sm}px;\n box-shadow: 0px 4px 28px 0px rgba(0, 0, 0, 0.28);\n`;\n\nconst DropdownItem = styled(Box)`\n background-color: ${colors.white};\n border-radius: 8px;\n padding: ${spacing.md}px;\n margin: ${spacing.xs}px 0;\n width: 100%;\n\n &:hover {\n background-color: ${colors.gray94};\n }\n`;\n\nconst Divider = styled.div`\n width: 100%;\n border-top: 1px solid ${({ color }) => color || colors.gray94};\n height: 2px;\n margin: ${spacing.sm}px 0;\n`;\n\nconst HeaderContainer = styled(Box)`\n max-width: 1344px;\n width: 100%;\n margin: 0 auto;\n padding-bottom: 32px;\n`;\n\nconst PageHeader = styled(Page.Header)`\n display: flex;\n flex-direction: column;\n align-items: center;\n`;\n\nconst ResponsiveFlex = styled(Box)`\n flex-direction: column;\n flex-wrap: wrap;\n gap: ${spacing.lg}px;\n\n @media (min-width: 576px) {\n flex-direction: row;\n }\n`;\n\nconst TruncatedText = styled(Box)`\n max-width: 230px;\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n`;\n\nexport {\n Container,\n SmallLogo,\n SmallLogoWrapper,\n MediumLogoWrapper,\n HeaderText,\n SlickArrowNext,\n SlickArrowPrev,\n SlickWrapper,\n Slide,\n OrangeLink,\n ImageModal,\n ModalImageBody,\n ModalImage,\n CloseImageModalButton,\n UnstyledLink,\n DropdownMenu,\n DropdownItem,\n Divider,\n ContentContainer,\n HeaderContainer,\n PageHeader,\n ResponsiveFlex,\n TruncatedText,\n};\n","import React from 'react';\nimport {\n Wrench,\n PeopleGroup,\n Handshake,\n LightBulb,\n BookInfo,\n Presentation,\n} from '@procore/core-icons';\n\nexport const ADDITIONAL_CATEGORY_LINKS = [\n {\n href: '/',\n name: 'Featured',\n slug: '/',\n },\n {\n href: '/featured/new',\n name: 'New',\n slug: 'new',\n },\n {\n href: '/listings',\n name: 'All',\n slug: 'listings',\n },\n];\n\nexport const COMPONENT_MAP = {\n iframe: 'Embedded',\n fullscreen: 'Embedded',\n sidepanel: 'Embedded',\n};\n\nexport const NAVIGATION_MENU_ITEMS = [\n {\n icon: ,\n label: 'navbar.app',\n href: 'https://developers.procore.com/documentation/partner-overview',\n },\n {\n icon: ,\n label: 'navbar.community',\n href: 'https://community.procore.com/s/?utm_source=header&utm_medium=link&utm_campaign=Community%20Header&utm_id=community',\n },\n {\n icon: ,\n label: 'navbar.partner',\n href: 'https://developers.procore.com/partner-signup',\n },\n {\n icon: ,\n label: 'navbar.idea',\n href: 'https://feedback.procore.com/forums/183340-customer-feedback-for-procore-technologies-inc?category_id=78299',\n },\n {\n icon: ,\n label: 'navbar.webinars',\n href: 'https://www.procore.com/virtual-training?groups=integration-spotlights',\n },\n {\n icon: ,\n label: 'navbar.faq',\n href: '/faqs',\n },\n];\n","import React from 'react';\nimport {\n Box,\n Card,\n colors,\n Flex,\n H2,\n P,\n Typography,\n} from '@procore/core-react';\nimport PT from 'prop-types';\nimport LazyLoad from 'react-lazyload';\nimport styled from 'styled-components';\n\nimport { truncate } from '@/react/shared/utils/helpers';\nimport { UnstyledLink } from '@/react/styles';\nimport { COMPONENT_MAP } from '@/react/consts';\n\nconst BottomBorderFlex = styled(Flex)`\n border-bottom: 1px solid ${colors.gray90};\n min-height: 100px;\n width: 100%;\n`;\n\nconst StyledComponentsText = styled(P)`\n color: ${colors.black};\n margin: 0;\n`;\n\n// IE specific CSS fix to prevent\n// text from overflowing container\nconst FlexFullWidthChildren = styled(Flex)`\n width: 100%;\n & > * {\n width: 100%;\n }\n`;\n\nconst renderComponentString = (components, isBeta) => {\n const mappedComponents = components\n .map((component) => COMPONENT_MAP[component])\n .filter(Boolean);\n if (isBeta) {\n mappedComponents.push('Beta');\n }\n\n return mappedComponents.join(' | ');\n};\n\nconst ListingsAppCard = ({ app }) => (\n \n \n \n \n {app.image_url && (\n \n \n \n )}\n \n \n

{app.name}

\n \n \n {truncate(app.search_description, 100, true)}\n \n \n \n \n {renderComponentString(app.components, app.status === 'beta')}\n \n \n \n \n
\n
\n);\n\nListingsAppCard.propTypes = {\n app: PT.shape({\n components: PT.arrayOf(PT.string).isRequired,\n image_url: PT.string.isRequired,\n slug: PT.string.isRequired,\n name: PT.string.isRequired,\n search_description: PT.string.isRequired,\n status: PT.string.isRequired,\n }).isRequired,\n};\n\nexport default ListingsAppCard;\n","import React from 'react';\nimport { ExternalLink, ShieldStar } from '@procore/core-icons';\nimport {\n Box,\n colors,\n Link,\n Popover,\n Typography,\n useI18nContext,\n} from '@procore/core-react';\nimport styled from 'styled-components';\n\nconst PopoverHeader = styled(Box)`\n border-bottom: 1px solid ${colors.gray90};\n`;\n\nconst PopoverBody = styled(Box)`\n border-bottom: 1px solid ${colors.gray90};\n`;\n\nconst SecurityBadge = () => {\n const i18n = useI18nContext();\n return (\n \n \n \n {i18n.t('securityBadge.title')}\n \n \n \n {i18n.t('securityBadge.partnerAnswered')}{' '}\n {i18n.t('securityBadge.link')}\n \n \n {i18n.t('securityBadge.responsibility')}\n \n \n {i18n.t('securityBadge.learnMore')} \n \n \n \n );\n};\n\nexport default SecurityBadge;\n","import React from 'react';\nimport PT from 'prop-types';\nimport {\n Box,\n Breadcrumbs,\n colors,\n Flex,\n H2,\n LinkButton,\n Page,\n Pill,\n Typography,\n useI18nContext,\n Tooltip,\n Popover,\n} from '@procore/core-react';\nimport {\n Building,\n ChevronLeft,\n Download,\n Help,\n ShieldStar,\n} from '@procore/core-icons';\nimport ContactForm from './ContactForm';\nimport {\n HeaderContainer,\n HeaderText,\n MediumLogoWrapper,\n PageHeader,\n ResponsiveFlex,\n SmallLogo,\n TruncatedText,\n} from '@/react/styles';\nimport SecurityBadge from './SecurtyBadge';\n\nconst AppHeader = ({\n app,\n companyName,\n getActionButton,\n metricsData = 0,\n sendAnalytics,\n user,\n}) => {\n const i18n = useI18nContext();\n const {\n built_by,\n contact_us_email,\n create_lead,\n developer_app_id,\n status,\n name,\n search_description,\n small_logo,\n small_logo_url,\n price_button,\n seller,\n security_questionnaire_visible,\n direct_installable,\n } = app;\n\n const installCount =\n metricsData || 0;\n\n const headerIcons = [\n {\n id: 'built-by',\n Icon: () => ,\n translation: 'builtBy',\n value: built_by,\n isVisible: true,\n },\n {\n id: 'supported-by',\n Icon: () => ,\n translation: 'supportedBy',\n value: seller || built_by,\n isVisible: true,\n },\n {\n id: 'install-count',\n Icon: () => ,\n translation: 'installs',\n value: i18n.toNumber(installCount, { precision: 0 }),\n isVisible: direct_installable,\n },\n ];\n\n return (\n \n \n \n \n \n \n }\n >\n \n {i18n.t('global.appMarketplace')}\n \n \n \n \n \n\n \n \n \n \n \n\n \n {name}\n

\n {search_description}\n

\n\n \n {headerIcons.map(\n ({ id, Icon, translation, value, isVisible }) =>\n isVisible && (\n \n \n \n \n {translation === 'installs' ? (\n \n {value} {i18n.t(`header.${translation}`)}\n \n ) : (\n \n {i18n.t(`header.${translation}`)} {value}\n \n )}\n \n \n \n )\n )}\n\n {security_questionnaire_visible && (\n \n }\n placement=\"bottom\"\n trigger=\"hover\"\n >\n \n \n \n \n {i18n.t('header.securityBadge')}\n \n \n \n \n \n )}\n\n {status === 'beta' && (\n \n {i18n.t('header.beta')}\n \n )}\n
\n \n \n\n \n \n {contact_us_email || create_lead ? (\n \n ) : (\n \n sendAnalytics(\n 'click',\n 'Link',\n 'Learn How',\n 'learn_how.clicked'\n )\n }\n target=\"_blank\"\n >\n {i18n.t('labels.learnHow')}\n \n )}\n \n {getActionButton()}\n \n \n
\n
\n
\n );\n};\n\nAppHeader.propTypes = {\n app: PT.shape({\n built_by: PT.string.isRequired,\n contact_us_email: PT.string,\n create_lead: PT.bool,\n developer_app_id: PT.string,\n installCount: PT.string,\n status: PT.string.isRequired,\n name: PT.string.isRequired,\n price_button: PT.string,\n search_description: PT.string.isRequired,\n small_logo: PT.shape({\n url: PT.string,\n }).isRequired,\n security_questionnaire_visible: PT.bool,\n installed: PT.bool,\n direct_installable: PT.bool,\n small_logo_url: PT.string,\n seller: PT.string,\n }),\n companyName: PT.string.isRequired,\n getActionButton: PT.func.isRequired,\n metricsData: PT.shape({\n app_installations: PT.shape({\n rows: PT.arrayOf(PT.shape({})).isRequired,\n }),\n }),\n sendAnalytics: PT.func.isRequired,\n user: PT.shape({\n email: PT.string,\n isSignedIn: PT.bool,\n }).isRequired,\n};\n\nexport default AppHeader;\n","import React from 'react';\nimport { Box, H2, Flex, colors } from '@procore/core-react';\nimport PT from 'prop-types';\nimport styled from 'styled-components';\n\nimport { ADDITIONAL_CATEGORY_LINKS } from '@/react/consts';\nimport { UnstyledLink } from '@/react/styles';\n\nconst StyledSidebar = styled.div`\n background-color: transparent;\n`;\n\nconst Divider = styled.div`\n margin: 24px;\n border-bottom: 1px solid ${colors.gray90};\n height: 1px;\n`;\n\nconst MenuItem = styled(Flex).attrs({ className: 'menu-item' })`\n font-family: inherit;\n font-size: 14px;\n color: ${colors.gray15};\n cursor: pointer;\n position: relative;\n transition: all 0.2s ease-in-out 0s;\n\n &:after {\n background-color: ${(props) =>\n props.active ? colors.orange50 : 'transparent'};\n content: '';\n height: 100%;\n left: 0px;\n position: absolute;\n top: 0px;\n transition: all 0.2s ease-in-out 0s;\n width: 5px;\n }\n\n &:hover {\n background-color: ${colors.gray90};\n color: ${colors.gray15};\n &:after {\n background-color: ${colors.orange50};\n }\n }\n`;\n\nconst FlexMenuContainer = styled(Flex)`\n flex-direction: column;\n & > * {\n width: 100%;\n }\n`;\n\nconst endsWith = (str = '', suffix = '') =>\n str.indexOf(suffix, str.length - suffix.length) !== -1;\n\nconst isLinkActive = (path) => {\n const location = window.location || { pathname: '' };\n const { pathname } = location;\n return endsWith(pathname, path);\n};\n\nconst ListingsSidebar = ({ categories }) => (\n \n \n {ADDITIONAL_CATEGORY_LINKS.map((category) => (\n \n \n {category.name}\n \n \n ))}\n \n \n

Categories

\n
\n {categories.map((category) => (\n \n \n {category.name}\n \n \n ))}\n
\n
\n);\n\nListingsSidebar.propTypes = {\n categories: PT.arrayOf(\n PT.shape({\n name: PT.string.isRequired,\n slug: PT.string.isRequired,\n type: PT.string.isRequired,\n })\n ).isRequired,\n};\n\nexport default ListingsSidebar;\n","import React from 'react';\nimport { H3, P, Typography, colors } from '@procore/core-react';\nimport { Plus } from '@procore/core-icons/dist';\nimport styled from 'styled-components';\nimport { OrangeLink } from '@/react/styles';\n\nconst StyledLI = styled.li`\n margin: 10px 0 10px -45px;\n`;\n\nconst StyledH3 = styled(H3)`\n margin: 30px 0;\n`;\n\nconst StyledPlus = styled(Plus)`\n color: ${colors.orange50};\n margin-bottom: -0.5em;\n margin-right: 5px;\n`;\n\nconst NoResults = () => {\n return (\n <>\n No results\n

Sorry, we did not find any results for your search.

\n\n Might we suggest:\n\n \n \n \n Browsing our app categories to find what you may be looking for\n \n \n \n Visiting the \n \n Procore Community: Integrations / App Marketplace\n {' '}\n and discuss your needs with others\n \n \n \n \n Making a suggestion\n {' '}\n so we can start working on delivering your app needs\n \n \n \n );\n};\n\nexport default NoResults;\n","import React from 'react';\n\nconst WistiaExtract = (html, setParsedHTML) => {\n const container = document.createElement('div');\n container.innerHTML = html.trim();\n document.body.appendChild(container);\n\n /**\n * Wistia script and iframe are always first items of HTML\n * so they render at top of page\n */\n\n const wistiaIframe = container.getElementsByTagName('iframe').item(0);\n const wistiaScript = container.getElementsByTagName('script').item(0);\n\n /**\n * If no script or iframe, we remove the fake container\n * and set the raw HTML as is\n */\n if (!wistiaScript && !wistiaIframe) {\n document.body.removeChild(container);\n setParsedHTML({\n description: html,\n video: null,\n });\n return;\n }\n\n let url;\n\n /**\n * Some videos are embedded via iframe, others embedded via script\n */\n\n if (wistiaIframe) {\n url = wistiaIframe.src;\n wistiaIframe.parentElement.removeChild(wistiaIframe);\n } else {\n url = wistiaScript.src;\n }\n\n /**\n * Below we generate the scripts and DOM necessary to allow\n * for the video to be inserted into the media slider\n */\n\n const wistiaDom = container.getElementsByClassName(\n 'wistia_responsive_padding'\n );\n container.removeChild(wistiaDom.item(0));\n document.body.removeChild(container);\n\n const id = url\n .substring(url.lastIndexOf('/') + 1)\n .split('.')[0]\n .split('?')[0];\n\n const s = document.createElement('script');\n s.type = 'text/javascript';\n s.src = `https://fast.wistia.com/embed/medias/${id}.jsonp`;\n s.async = true;\n\n const s1 = document.createElement('script');\n s1.type = 'text/javascript';\n s1.src = 'https://fast.wistia.com/assets/external/E-v1.js';\n s1.async = true;\n\n document.head.append(s);\n document.head.append(s1);\n\n setParsedHTML({\n video: (\n <>\n \n \n \n \n \n \n ),\n description: container.outerHTML,\n });\n};\n\nexport default WistiaExtract;\n","import { Button, H3, Modal, P } from '@procore/core-react';\nimport PT from 'prop-types';\nimport React from 'react';\nimport styled from 'styled-components';\nimport * as Styles from '@/react/styles';\n\nconst Container = styled.div`\n margin: 14px 0;\n`;\nconst Link = styled(Styles.OrangeLink)`\n text-decoration: none;\n`;\nconst SectionHeader = styled.div`\n display: flex;\n justify-content: space-between;\n`;\n\nfunction VersionHistory({ history, showingVersion }) {\n const [open, setOpen] = React.useState(showingVersion);\n\n if (\n !(Array.isArray(history) && history.length) ||\n history.every((v) => v.changelog === null)\n ) {\n return <>;\n }\n\n const changelog = showingVersion\n ? history.filter((version) => version.semantic_version === showingVersion)\n : [...history].reverse();\n\n const [{ semantic_version }] = changelog;\n const VERSION_HISTORY = 'Version History';\n\n return (\n <>\n

Version {semantic_version}

\n \n setOpen(true)}>{VERSION_HISTORY}\n \n setOpen(false)} open={open} width=\"md\">\n setOpen(false)}>\n {VERSION_HISTORY}\n \n \n {changelog.map((version, idx) => (\n \n \n

{version.semantic_version}

\n {version.created_at}\n
\n

{version.changelog}

\n
\n ))}\n
\n \n \n \n \n \n
\n \n );\n}\n\nVersionHistory.propTypes = {\n history: PT.arrayOf(\n PT.shape({\n changelog: PT.string,\n created_at: PT.string,\n semantic_version: PT.string,\n })\n ),\n showingVersion: PT.string,\n};\n\nVersionHistory.defaultProps = {\n history: [{ changelog: null, created_at: '', semantic_version: '' }],\n};\n\nexport default VersionHistory;\n","import React, { useState, useEffect } from 'react';\nimport PropTypes from 'prop-types';\n\nconst SearchInput = ({ onSearchChange }) => {\n const [searchValue, setSearchValue] = useState('');\n\n useEffect(() => {\n onSearchChange(searchValue);\n }, [searchValue]);\n\n const clearSearch = () => {\n setSearchValue('');\n };\n\n return (\n /* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */\n e.stopPropagation()}\n >\n { }\n setSearchValue(e.target.value)}\n placeholder=\"Search\"\n />\n \n \n );\n};\n\nSearchInput.propTypes = {\n onSearchChange: PropTypes.func.isRequired,\n};\n\nexport default SearchInput;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport cx from 'classnames';\nimport qs from 'qs';\nimport Dropdown from '@/react/shared/Dropdown';\nimport SearchInput from '@/react/shared/SearchInput';\n\nconst I18n = {\n cont: 'Continue',\n select_a_company: 'Select a Company'\n};\n\nlet companyCounter = 0;\n\nclass CompanyPicker extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n companyId: null,\n searchValue: '',\n };\n\n this.handleSearch = this.handleSearch.bind(this);\n }\n\n setCompanyId(companyId) {\n this.setState({ companyId });\n }\n\n handleSearch(searchValue) {\n this.setState({searchValue});\n }\n\n renderCompanies() {\n const { companies } = this.props;\n const { searchValue } = this.state;\n return companies.filter(company => (company.name.toLowerCase().indexOf(searchValue.toLowerCase()) === 0)).map((company) => (\n /* eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions */\n this.setCompanyId(company.id) }\n className='dropdown-item'\n key={`${company.name}-${company.id}-${companyCounter++}`}\n >\n {company.name}\n \n ))\n }\n\n render() {\n const { linkTo, companies } = this.props;\n const { companyId } = this.state;\n const disabled = !companyId;\n\n const selectedCompany = companies.find((c) => (c.id == companyId));\n\n let continuePath;\n if (selectedCompany) {\n const params = {\n 'company_id': selectedCompany.id,\n 'company_name': selectedCompany.name,\n 'company_root': selectedCompany.procore_root,\n };\n\n continuePath = `${linkTo}?${qs.stringify(params)}`;\n }\n\n return (\n <>\n \n
\n {\n selectedCompany ?\n selectedCompany.name :\n I18n.select_a_company\n }\n
\n
\n \n }\n >\n \n {this.renderCompanies()}\n \n \n {I18n.cont}\n \n \n );\n }\n}\n\nCompanyPicker.propTypes = {\n companies: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.number,\n name: PropTypes.string,\n procore_root: PropTypes.string,\n })\n ),\n linkTo: PropTypes.string,\n};\n\nexport default CompanyPicker;\n","/**\n * Private Helpers\n */\nconst _getSharedBaseHeaders = () => ({\n 'X-CSRF-TOKEN': document\n .querySelector('meta[name=\"csrf-token\"]')\n .getAttribute('content'),\n});\n\nexport const POST_HEADERS = {\n 'Content-Type': 'application/json',\n};\n\nexport const getHeaders = (headers = {}) => ({\n ..._getSharedBaseHeaders(),\n ...headers,\n});\n","// extracted by mini-css-extract-plugin\nexport default {\"buttonContainer\":\"styles-module__buttonContainer__K3ZmC\",\"button\":\"styles-module__button__bVyZy\",\"modalFooter\":\"styles-module__modalFooter__nSPIt\",\"footerButtons\":\"styles-module__footerButtons__lCRar\",\"footerButton\":\"styles-module__footerButton__VvQTL\",\"notesInput\":\"styles-module__notesInput__JxhGH\",\"popover\":\"styles-module__popover__QZv6Y\",\"requestModal\":\"styles-module__requestModal__hfC_7\"};","// extracted by mini-css-extract-plugin\nexport default {\"popoverWrapper\":\"styles-module__popoverWrapper__nMNoS\",\"popoverContent\":\"styles-module__popoverContent__WOMFV\",\"popoverTarget\":\"styles-module__popoverTarget__N0L_6\",\"topPopoverContent\":\"styles-module__topPopoverContent__f_X3r\",\"bottomPopoverContent\":\"styles-module__bottomPopoverContent__DUm68\"};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames/bind';\nimport styles from './styles.module.scss';\n\nconst cx = classNames.bind(styles);\n\nclass Popover extends React.Component {\n render() {\n const {\n className,\n children,\n position,\n } = this.props;\n\n return (\n
\n
\n\n
\n {children}\n
\n
\n );\n }\n}\n\nPopover.propTypes = {\n className: PropTypes.string,\n children: PropTypes.node,\n position: PropTypes.string\n};\n\nPopover.defaultProps = {\n position: 'bottom'\n}\n\nexport default Popover;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport classNames from 'classnames';\nimport axios from 'axios';\nimport { Button } from '@procore/core-react';\nimport { getHeaders, POST_HEADERS } from '@/utils/apiUtil';\nimport styles from './styles.module.scss';\nimport Popover from '@/react/shared/Popover';\n\nconst cx = classNames.bind(styles);\n\nconst I18n = {\n requestSent: 'App Requested',\n requestInstall: 'Request App',\n modalTitle: 'Request App',\n cancel: 'Cancel',\n submit: 'Submit',\n notesPlaceholder:\n 'Only company administrators can install apps. Include an optional note for your administrators here.',\n error: 'Something went wrong, please try again later.',\n sentInfo:\n 'Your request to install this app has been sent to your company administrators.',\n};\n\nconst api = {\n requestInstall: (installRequestsPath, developerAppId, notes) => {\n return axios(installRequestsPath, {\n method: 'post',\n data: { developer_app_id: developerAppId, notes },\n headers: getHeaders(POST_HEADERS),\n });\n },\n};\n\nclass InstallRequestButton extends React.Component {\n constructor(props) {\n super(props);\n this.state = { notes: '', requestSent: false, error: null };\n }\n\n componentDidMount() {\n $('#install-request-modal').on($.modal.AFTER_CLOSE, () => {\n this.setNotes('');\n });\n }\n\n setRequestSent(requestSent) {\n this.setState({ requestSent });\n }\n\n setNotes(notes) {\n this.setState({ notes });\n }\n\n setError(error) {\n this.setState({ error });\n }\n\n requestInstall() {\n const { installRequestsPath, developerAppId, sendAnalytics } = this.props;\n const self = this;\n\n api\n .requestInstall(installRequestsPath, developerAppId, this.state.notes)\n .then((response) => {\n if (response.status >= 200 && response.status <= 299) {\n self.setRequestSent(true);\n sendAnalytics('submit', 'Form', 'Install Request');\n }\n })\n .catch(() => {\n self.setError(I18n.error);\n });\n $.modal.close();\n }\n\n render() {\n const { requestSent, notes, error } = this.state;\n const { requested, sendAnalytics } = this.props;\n\n return (\n
\n
\n {error && (\n {I18n.error}\n )}\n {requested || requestSent ? (\n <>\n {I18n.sentInfo}\n
\n {I18n.requestSent}\n
\n \n ) : (\n \n sendAnalytics(\n 'open',\n 'Modal',\n 'Install Request',\n 'installation_request.clicked'\n )\n }\n >\n \n \n )}\n
\n \n

{I18n.modalTitle}

\n\n
\n this.setNotes(e.target.value)}\n placeholder={I18n.notesPlaceholder}\n className={cx(styles.notesInput)}\n />\n
\n\n
\n
\n \n sendAnalytics(\n 'close',\n 'Modal',\n 'Install Request',\n 'installation_request.closed',\n { request_sent: this.state.requestSent }\n )\n }\n >\n {I18n.cancel}\n \n this.requestInstall()}\n >\n {I18n.submit}\n \n
\n
\n
\n
\n );\n }\n}\n\nInstallRequestButton.propTypes = {\n installRequestsPath: PropTypes.string.isRequired,\n developerAppId: PropTypes.number.isRequired,\n requested: PropTypes.bool,\n sendAnalytics: PropTypes.func.isRequired,\n};\n\nexport default InstallRequestButton;\n","import React from 'react';\n\nconst ProcoreLogo = () => {\n return (\n \n \n \n \n );\n};\n\nexport default ProcoreLogo;\n","import React, {\n createContext,\n useContext,\n useState,\n useEffect,\n useMemo,\n} from 'react';\nimport PT from 'prop-types';\nimport Fuse from 'fuse.js';\nimport axios from 'axios';\nimport { FUSE_CONFIG } from '@/react/shared/utils/fuseConfig';\nimport { debounce } from '@/react/shared/utils/helpers';\nimport trackEvent from '@/scripts/analytics';\n\nconst SearchContext = createContext();\n\nexport const useSearch = () => useContext(SearchContext);\n\nexport const SearchProvider = ({ children }) => {\n const DEBOUNCE_DELAY = 300;\n const SEARCH_TERM_LENGTH = 2;\n const MAX_SEARCH_RESULTS = 15;\n const [searchTerm, setSearchTerm] = useState('');\n const [fuse, setFuse] = useState(null);\n const [appSearchResults, setAppSearchResults] = useState([]);\n const [isLoading, setIsLoading] = useState(true);\n\n useEffect(() => {\n // Fetch and initialize Fuse only once\n axios.get('/search_data').then((res) => {\n setFuse(new Fuse(res.data, FUSE_CONFIG));\n setIsLoading(false);\n });\n }, []);\n\n const performSearch = useMemo(\n () =>\n debounce((term) => {\n if (fuse && term.length > SEARCH_TERM_LENGTH) {\n const results = fuse.search(term).slice(0, MAX_SEARCH_RESULTS);\n setAppSearchResults(results);\n trackEvent('marketplace.apps.search.input', {\n marketplace_search_term: term,\n marketplace_search_count: results.length,\n });\n } else {\n setAppSearchResults([]);\n }\n }, DEBOUNCE_DELAY),\n [fuse]\n );\n\n useEffect(() => {\n performSearch(searchTerm);\n }, [searchTerm, performSearch]);\n\n // Memoize the context value to avoid unnecessary re-renders\n const contextValue = useMemo(\n () => ({ searchTerm, setSearchTerm, appSearchResults, isLoading }),\n [searchTerm, setSearchTerm, appSearchResults, isLoading]\n );\n\n return (\n \n {children}\n \n );\n};\n\nSearchProvider.propTypes = {\n children: PT.node.isRequired,\n};\n","import React from 'react';\nimport PT from 'prop-types';\nimport {\n Box,\n Flex,\n LinkButton,\n Typography,\n useI18nContext,\n} from '@procore/core-react';\nimport { UnstyledLink, DropdownItem, Divider } from '@/react/styles';\nimport { highlight } from '@/utils/highlight';\n\nconst SearchResults = ({ results, searchTerm }) => {\n const RESULTS_LIMIT = 7;\n const i18n = useI18nContext();\n const highlightedResults = highlight(results?.slice(0, RESULTS_LIMIT));\n\n return highlightedResults.length > 0 ? (\n highlightedResults.map((result, idx, arr) => {\n const { highlightedItem: app } = result;\n const viewAll = arr.length > 1 && idx === arr.length - 1;\n\n return (\n \n \n \n \n \n \n \n \n {app.name}\n \n {app.search_description}\n \n \n \n \n \n {viewAll && (\n \n \n \n {i18n.t('labels.viewAll')}\n \n \n )}\n \n );\n })\n ) : (\n \n {i18n.t('labels.noResults')}\n \n );\n};\n\nSearchResults.propTypes = {\n results: PT.arrayOf(PT.shape({})).isRequired,\n searchTerm: PT.string.isRequired,\n};\n\nexport default SearchResults;\n","import React, { useEffect, useRef } from 'react';\nimport PT from 'prop-types';\nimport styled from 'styled-components';\nimport {\n Button,\n Box,\n Input,\n colors,\n useI18nContext,\n Typography,\n} from '@procore/core-react';\nimport { Search } from '@procore/core-icons';\nimport { useSearch } from '@/react/context/SearchContext';\nimport { DropdownMenu } from '@/react/styles';\nimport SearchResults from './SearchResults';\n\nconst SearchBox = styled(Box)`\n border-radius: 100px;\n width: 100%;\n padding: 6px 16px 6px 8px;\n background-color: ${({ backgroundColor }) =>\n backgroundColor || colors.gray94};\n\n &:hover,\n &:focus-within {\n background-color: ${({ hoverColor }) => hoverColor || colors.gray90};\n }\n\n @media (min-width: 576px) {\n min-width: 428px;\n }\n border-bottom: none;\n`;\n\nconst SearchInput = styled(Input)`\n display: block;\n border: none;\n padding: 0px;\n width: 100%;\n background-color: inherit;\n\n &:focus {\n border: none;\n outline: none;\n box-shadow: none;\n }\n`;\n\nconst SearchButton = styled(Button)`\n border-radius: 100px;\n\n &:hover {\n background-color: ${colors.gray85};\n }\n`;\n\nconst SearchResultsMenu = styled(DropdownMenu)`\n position: absolute;\n left: 0;\n right: 0;\n max-height: 650px;\n overflow-y: auto;\n`;\n\nconst SearchBar = ({ styledSearch }) => {\n const SEARCH_TERM_THRESHOLD = 2;\n const i18n = useI18nContext();\n const { searchTerm, setSearchTerm, appSearchResults, isLoading } =\n useSearch();\n const searchRef = useRef();\n\n useEffect(() => {\n const handleClickOutside = (event) => {\n if (searchRef.current && !searchRef.current.contains(event.target)) {\n setSearchTerm('');\n }\n };\n\n document.addEventListener('mousedown', handleClickOutside);\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [setSearchTerm]);\n\n return (\n \n \n }\n size=\"md\"\n aria-label=\"Search\"\n variant=\"tertiary\"\n color={colors.black}\n />\n setSearchTerm(e.target.value)}\n />\n \n {searchTerm.length > SEARCH_TERM_THRESHOLD && (\n \n {isLoading ? (\n \n {i18n.t('labels.searchLoading')}\n \n ) : (\n \n )}\n \n )}\n \n );\n};\n\nSearchBar.propTypes = {\n styledSearch: PT.shape({\n backgroundColor: PT.string,\n hoverColor: PT.string,\n }),\n};\n\nexport default SearchBar;\n","import React from 'react';\nimport { Help } from '@procore/core-icons';\nimport styled from 'styled-components';\nimport {\n Box,\n Grid,\n OverlayTrigger,\n Typography,\n useI18nContext,\n Button,\n colors,\n} from '@procore/core-react';\nimport { DropdownMenu, UnstyledLink } from '@/react/styles';\nimport { NAVIGATION_MENU_ITEMS } from '@/react/consts';\n\nconst InfoButton = styled(Button)`\n border-radius: 100px;\n background-color: ${colors.gray96};\n`;\n\nconst MenuTile = styled(Box)`\n background-color: ${colors.gray96};\n width: 124px;\n height: 124px;\n border-radius: 8px;\n text-align: center;\n transition: background-color 0.15s ease;\n\n &:hover {\n background-color: ${colors.gray90};\n }\n`;\n\nconst SupportMenu = () => {\n const ITEMS_PER_ROW = 2;\n const i18n = useI18nContext();\n\n // group menuItems into pairs for 2x3 layout using\n const menuRows = NAVIGATION_MENU_ITEMS.reduce((rows, item, idx) => {\n if (idx % ITEMS_PER_ROW === 0) {\n rows.push([item]);\n } else {\n rows[rows.length - 1].push(item);\n }\n return rows;\n }, []);\n\n const renderMenuItem = (item, key) => (\n \n \n \n {item.icon}\n \n {i18n.t(item.label)}\n \n \n \n \n );\n\n const renderMenu = (\n \n \n {menuRows.map((row, rowIndex) => {\n const rowKey = `row_${rowIndex}`;\n return (\n \n {row.map((item, itemIndex) =>\n renderMenuItem(item, `row_${itemIndex}`)\n )}\n \n );\n })}\n \n \n );\n\n return (\n \n \n }\n size=\"lg\"\n aria-label={i18n.t('ariaLabels.supportButton')}\n variant=\"secondary\"\n />\n \n \n );\n};\n\nexport default SupportMenu;\n","import React, { useMemo, createContext, useContext } from 'react';\nimport PT from 'prop-types';\n\nconst defaultProps = {\n appDetails: {\n app: {},\n user: {},\n installationRequest: {\n apiPath: '',\n present: false,\n },\n companyInstallationRequestsEnabled: false,\n companyName: '',\n version: '',\n metricsData: {},\n sectionNavEnabled: false,\n },\n header: {},\n listing: {\n apps: [],\n categories: [],\n query: '',\n },\n};\n\nconst AppContext = createContext();\n\nexport const useAppContext = () => useContext(AppContext);\n\nexport const AppContextProvider = ({\n children,\n appDetails,\n listing,\n header,\n}) => {\n const contextValue = useMemo(\n () => ({\n ...defaultProps, // Fill any missing values from defaultProps\n appDetails,\n header,\n listing,\n }),\n [appDetails, header, listing]\n );\n\n return (\n {children}\n );\n};\n\nAppContextProvider.propTypes = {\n children: PT.node.isRequired,\n appDetails: PT.shape({\n app: PT.shape({\n built_by: PT.string,\n email: PT.string,\n name: PT.string,\n html: PT.string,\n installed: PT.bool,\n pricing: PT.bool,\n create_lead: PT.bool,\n contact_us_email: PT.string,\n search_description: PT.string,\n small_logo: PT.shape({\n url: PT.string,\n }),\n small_logo_url: PT.string,\n website: PT.string,\n category_names: PT.arrayOf(PT.string),\n components: PT.arrayOf(PT.string),\n developer_app_id: PT.string,\n direct_installable: PT.bool,\n install_path: PT.string,\n price_button: PT.string,\n screenshots: PT.arrayOf(\n PT.shape({\n url: PT.string,\n })\n ),\n regions: PT.arrayOf(PT.string),\n countries: PT.shape({}),\n security_questionnaire_visible: PT.bool,\n security_questionnaire_document: PT.string,\n seller: PT.string,\n }),\n installationRequest: PT.shape({\n apiPath: PT.string,\n present: PT.bool,\n }).isRequired,\n companyName: PT.string.isRequired,\n user: PT.shape({\n email: PT.string,\n isCompanyAdmin: PT.bool.isRequired,\n isSignedIn: PT.bool.isRequired,\n }).isRequired,\n companyInstallationRequestsEnabled: PT.bool,\n metricsData: PT.shape({}),\n wistiaId: PT.string,\n }),\n header: PT.shape({}).isRequired,\n listing: PT.shape({\n apps: PT.shape([]),\n categories: PT.shape([]),\n query: PT.string,\n }),\n};\n","import React from 'react';\nimport styled from 'styled-components';\nimport {\n Avatar,\n Box,\n colors,\n Grid,\n LinkButton,\n OverlayTrigger,\n spacing,\n Typography,\n useI18nContext,\n} from '@procore/core-react';\nimport { Building, Import, Person } from '@procore/core-icons';\nimport { useAppContext } from '@/react/context/AppContext';\nimport { DropdownMenu, Divider, UnstyledLink } from '@/react/styles';\n\nconst StyledBox = styled(Box)`\n background-color: ${colors.gray94};\n border-radius: 10px;\n cursor: pointer;\n\n &:hover {\n background-color: ${colors.gray90};\n }\n`;\n\nconst CompanyName = styled(Typography)`\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: 100px;\n`;\n\nconst MenuItem = styled(Box)`\n border-radius: ${spacing.xs}px;\n text-align: center;\n\n &:hover {\n background-color: ${colors.gray94};\n }\n`;\n\nconst ProfileBox = () => {\n const i18n = useI18nContext();\n const { header } = useAppContext();\n const {\n currentCompany,\n currentUser,\n isSignedIn,\n signInPath,\n signOutPath,\n changeCompanyPath,\n } = header;\n\n if (!isSignedIn) {\n return (\n \n {i18n.t('labels.login')}\n \n );\n }\n\n const renderMenu = (\n \n \n \n \n \n \n {currentUser.email}\n \n \n \n \n \n \n \n {i18n.t('navbar.companySwitch')}\n \n \n \n \n \n \n \n \n {i18n.t('navbar.logout')}\n \n \n \n \n \n \n \n );\n\n return (\n \n \n \n } />\n \n \n \n {currentCompany.name}\n \n \n \n \n );\n};\n\nexport default ProfileBox;\n","import { useState, useEffect } from 'react';\n\nexport const useMediaQuery = (query) => {\n const [matches, setMatches] = useState(window.matchMedia(query).matches);\n\n useEffect(() => {\n const mediaQueryList = window.matchMedia(query);\n\n const handleChange = () => setMatches(mediaQueryList.matches);\n mediaQueryList.addEventListener('change', handleChange);\n\n // Cleanup listener on unmount\n return () => mediaQueryList.removeEventListener('change', handleChange);\n }, [query]);\n\n return matches;\n};\n","import React from 'react';\n\nconst MobileLogo = () => {\n return (\n \n \n \n \n );\n};\n\nexport default MobileLogo;\n","import React from 'react';\nimport PT from 'prop-types';\nimport { Box, Button, colors, Typography } from '@procore/core-react';\nimport { Clear } from '@procore/core-icons';\nimport styled from 'styled-components';\nimport { UnstyledLink } from '@/react/styles';\nimport MobileLogo from '../ProcoreLogo/MobileLogo';\n\nconst HeaderContainer = styled(Box)`\n background-color: ${colors.white};\n`;\n\nconst MenuHeader = ({ toggleMenu, marketplaceBasePath, title }) => (\n \n \n \n \n \n {title}\n \n \n \n }\n onClick={toggleMenu}\n data-testid=\"close-menu\"\n />\n \n);\n\nMenuHeader.propTypes = {\n toggleMenu: PT.func.isRequired,\n marketplaceBasePath: PT.string.isRequired,\n title: PT.string.isRequired,\n};\n\nexport default MenuHeader;\n","import React from 'react';\nimport {\n Box,\n Typography,\n Flex,\n colors,\n useI18nContext,\n LinkButton,\n} from '@procore/core-react';\nimport styled from 'styled-components';\nimport { Divider } from '@/react/styles';\nimport { NAVIGATION_MENU_ITEMS } from '@/react/consts';\n\nconst BodyContainer = styled(Box)`\n background-color: ${colors.gray96};\n flex-grow: 1;\n`;\n\nconst MenuItem = styled(LinkButton)`\n align-items: center;\n justify-content: flex-start;\n`;\n\nconst MenuBody = () => {\n const i18n = useI18nContext();\n return (\n \n \n {i18n.t('navbar.supportCenter')}\n \n\n \n\n \n {NAVIGATION_MENU_ITEMS.map((item) => (\n \n \n {i18n.t(item.label)}\n \n \n ))}\n \n \n );\n};\n\nexport default MenuBody;\n","import React from 'react';\nimport PT from 'prop-types';\nimport {\n LinkButton,\n Typography,\n Box,\n Avatar,\n useI18nContext,\n colors,\n} from '@procore/core-react';\nimport { Building, Import, Person } from '@procore/core-icons';\nimport styled from 'styled-components';\n\nconst FullButton = styled(LinkButton)`\n align-items: center;\n justify-content: flex-start;\n`;\n\nconst UserSection = ({\n currentUser,\n currentCompany,\n changeCompanyPath,\n signOutPath,\n}) => {\n const i18n = useI18nContext();\n return (\n \n \n \n } />\n \n {currentUser.email}\n \n\n \n {currentCompany.name}\n \n\n \n \n \n \n \n {i18n.t('navbar.companySwitch')}\n \n \n \n\n \n \n \n \n {i18n.t('navbar.logout')}\n \n \n \n \n \n );\n};\n\nUserSection.propTypes = {\n currentUser: PT.shape({ email: PT.string }).isRequired,\n currentCompany: PT.shape({ name: PT.string }).isRequired,\n changeCompanyPath: PT.string.isRequired,\n signOutPath: PT.string.isRequired,\n};\n\nexport default UserSection;\n","import React from 'react';\nimport PT from 'prop-types';\nimport { Box, colors, LinkButton, useI18nContext } from '@procore/core-react';\nimport styled from 'styled-components';\nimport UserSection from './UserSection';\n\nconst FooterContainer = styled(Box)`\n background-color: ${colors.white};\n border-top: 1px solid ${colors.gray90};\n`;\n\nconst MenuFooter = ({\n isSignedIn,\n signInPath,\n currentUser,\n currentCompany,\n changeCompanyPath,\n signOutPath,\n}) => {\n const i18n = useI18nContext();\n\n return (\n \n {!isSignedIn ? (\n \n {i18n.t('labels.login')}\n \n ) : (\n \n )}\n \n );\n};\n\nMenuFooter.propTypes = {\n isSignedIn: PT.bool.isRequired,\n signInPath: PT.string.isRequired,\n currentUser: PT.shape({}),\n currentCompany: PT.shape({}),\n changeCompanyPath: PT.string,\n signOutPath: PT.string,\n};\nexport default MenuFooter;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport { Box, colors, useI18nContext } from '@procore/core-react';\nimport styled from 'styled-components';\nimport { useAppContext } from '@/react/context/AppContext';\nimport MenuHeader from './MenuHeader';\nimport MenuBody from './MenuBody';\nimport MenuFooter from './MenuFooter';\n\nconst MenuWrapper = styled(Box)`\n background-color: ${colors.white};\n height: 100vh;\n`;\n\nconst MobileMenu = ({ toggleMenu }) => {\n const i18n = useI18nContext();\n const { header } = useAppContext();\n const {\n marketplaceBasePath,\n signInPath,\n currentCompany,\n currentUser,\n isSignedIn,\n signOutPath,\n changeCompanyPath,\n } = header;\n return (\n \n \n\n \n\n \n \n );\n};\n\nMobileMenu.propTypes = {\n toggleMenu: PropTypes.func.isRequired,\n};\n\nexport default MobileMenu;\n","import React, { useState } from 'react';\nimport PT from 'prop-types';\nimport {\n Box,\n Button,\n colors,\n spacing,\n Typography,\n useI18nContext,\n} from '@procore/core-react';\nimport styled from 'styled-components';\nimport { List } from '@procore/core-icons';\nimport ProcoreLogo from '../ProcoreLogo';\nimport SearchBar from '../SearchBar';\nimport SupportMenu from '../SupportMenu';\nimport ProfileBox from '../ProfileBox';\nimport { UnstyledLink } from '../../styles';\nimport { useAppContext } from '@/react/context/AppContext';\nimport { useMediaQuery } from '@/react/hooks/useMediaQuery';\nimport MobileLogo from '../ProcoreLogo/MobileLogo';\nimport MobileMenu from '../MobileMenu';\n\nconst StyledLogo = styled(Box)`\n width: 100%;\n`;\n\nconst Header = styled.header`\n position: sticky;\n top: 0;\n right: 0;\n left: 0;\n background-color: ${colors.white};\n border-bottom: 1px solid ${colors.gray90};\n padding: 0 ${spacing.lg}px;\n width: 100%;\n z-index: 10000;\n`;\n\nconst NavContainer = styled(Box)`\n @media (min-width: 768px) {\n flex: 1;\n }\n`;\n\nconst MobileMenuContainer = styled(Box)`\n position: fixed;\n top: 0;\n bottom: 0;\n left: 0;\n width: 100%;\n background-color: ${colors.white};\n box-shadow: 0 -2px 10px rgba(0, 0, 0, 0.1);\n opacity: ${({ isOpen }) => (isOpen ? 1 : 0)};\n transform: ${({ isOpen }) => (isOpen ? 'scale(1)' : 'scale(0.8)')};\n transform-origin: bottom center;\n transition: opacity 0.15s ease, transform 0.25s ease;\n z-index: 10001;\n visibility: ${({ isOpen }) => (isOpen ? 'visible' : 'hidden')};\n`;\n\nconst Navbar = ({ isSearchVisible }) => {\n const [isMenuOpen, setIsMenuOpen] = useState(false);\n const isMobile = useMediaQuery('(max-width: 768px)');\n const isTablet = useMediaQuery('(max-width: 992px)');\n const isDesktop = useMediaQuery('(max-width: 1200px)');\n const i18n = useI18nContext();\n const { header } = useAppContext();\n const { marketplaceBasePath } = header;\n\n const toggleMenu = () => setIsMenuOpen(!isMenuOpen);\n\n return (\n <>\n
\n \n \n \n {!isDesktop ? : }\n \n {i18n.t('global.appMarketplace')}\n \n \n \n\n {!isTablet && isSearchVisible && (\n \n \n \n )}\n\n {!isMobile ? (\n \n \n \n \n ) : (\n }\n onClick={toggleMenu}\n />\n )}\n \n\n {isTablet && isSearchVisible && (\n \n \n \n )}\n
\n {isMobile && (\n \n \n \n )}\n \n );\n};\n\nNavbar.propTypes = {\n isSearchVisible: PT.bool.isRequired,\n};\n\nexport default Navbar;\n","import React from 'react';\n\nconst PlayButton = () => {\n return (\n \n \n \n \n );\n};\n\nexport default PlayButton;\n","import React from 'react';\n\nimport { Box, Flex, FlexList, Typography } from '@procore/core-react';\nimport PT from 'prop-types';\nimport styled from 'styled-components';\nimport Fuse from 'fuse.js';\nimport { FUSE_CONFIG } from '@/react/shared/utils/fuseConfig';\nimport {\n ListingsAppCard,\n ListingsSidebar,\n NoResults,\n} from '@/react/components';\n\nconst SidebarWrapper = styled(Box)`\n @media (min-width: 1001px) {\n flex: 0 1 20%;\n }\n\n @media (max-width: 1000px) {\n display: none;\n }\n`;\n\nconst ListingsAppsWrapper = styled(Box)`\n @media (min-width: 1001px) {\n flex: 0 1 80%;\n }\n\n @media (max-width: 1000px) {\n flex: 1 0 100%;\n }\n`;\n\nconst AppsNotFoundWrapper = styled(Flex)`\n flex: 0 1 80%;\n margin-left: auto;\n margin-right: auto;\n`;\n\n// Core React Flexlist removes margin on last child,\n// which causes weird wrapping in our case here.\nconst FlexListMarginChild = styled(FlexList)`\n & > *:last-child {\n margin-right: 32px !important;\n }\n`;\n\nconst ListingsIndex = ({ apps, categories, query }) => {\n apps\n .filter((app) => app.name.startsWith('Arcoro'))\n .map(\n (app) =>\n (app.search_description = app.search_description.replace(/^/, 'HR '))\n );\n\n const fuse = new Fuse(apps, FUSE_CONFIG);\n const listings = query\n ? fuse.search(query).map((result) => result.item)\n : apps;\n\n listings\n .filter((app) => app.name.startsWith('Arcoro'))\n .map(\n (app) =>\n (app.search_description = app.search_description.replace(/^HR /, ''))\n );\n\n return (\n \n {categories.length > 0 && (\n \n \n \n )}\n {listings.length > 0 ? (\n \n \n {listings.map((listing) => (\n \n ))}\n \n \n ) : (\n \n \n \n \n \n )}\n \n );\n};\n\nListingsIndex.propTypes = {\n apps: PT.arrayOf(\n PT.shape({\n image_url: PT.string.isRequired,\n search_description: PT.string.isRequired,\n components: PT.arrayOf(PT.string).isRequired,\n slug: PT.string.isRequired,\n name: PT.string.isRequired,\n })\n ).isRequired,\n query: PT.string,\n categories: PT.arrayOf(\n PT.shape({\n name: PT.string.isRequired,\n slug: PT.string.isRequired,\n type: PT.string.isRequired,\n })\n ).isRequired,\n};\n\nexport default ListingsIndex;\n","import axios from 'axios';\n\nconst appInstallPost = (app) =>\n axios({\n method: 'post',\n url: '/apps/app_installation',\n data: {\n app,\n },\n headers: {\n 'X-CSRF-TOKEN': document.querySelector('meta[name=\"csrf-token\"]').content,\n },\n });\n\nexport { appInstallPost };\n","/* eslint-disable */\nimport React, { useEffect, useState } from 'react';\nimport {\n Box,\n Button,\n Card,\n Flex,\n LinkButton,\n Grid,\n H1,\n H3,\n Link,\n P,\n Popover,\n} from '@procore/core-react';\nimport { ChevronDown, ChevronUp, Info } from '@procore/core-icons';\nimport PT from 'prop-types';\nimport Slider from 'react-slick';\nimport trackEvent from '../../../../scripts/analytics';\nimport * as Styles from '@/react/styles';\nimport {\n WistiaExtract,\n VersionHistory,\n TopNavHeader,\n InstallRequestButton,\n ContactForm,\n} from '@/react/components';\nimport { appInstallPost } from '@/react/api';\n\nconst componentMap = {\n iframe: 'Embedded',\n fullscreen: 'Embedded',\n sidepanel: 'Embedded',\n};\n\nconst ListingsShow = ({\n app,\n installationRequest,\n companyInstallationRequestsEnabled,\n companyName,\n user,\n headerProps,\n version,\n}) => {\n const {\n built_by,\n email,\n name,\n html,\n installed,\n pricing,\n contact_us_email,\n create_lead,\n search_description,\n small_logo,\n small_logo_url,\n website,\n category_names,\n components,\n developer_app_id,\n direct_installable,\n install_path,\n price_button,\n screenshots,\n regions,\n countries,\n versioning_history,\n new_draft_preview,\n security_badge,\n security_questionnaire_document,\n } = app;\n\n const filteredComponents =\n components?.map((component) => componentMap[component]).filter(Boolean) ||\n {};\n\n const [expanded, setExpanded] = useState(false);\n const toggleExpanded = () => setExpanded(!expanded);\n const sendAnalytics = (\n action,\n category,\n label,\n procoreLabel,\n procoreAdditionalFields,\n gtagValue\n ) => {\n if (typeof gtag !== 'undefined') {\n gtag('event', action, {\n event_category: category,\n event_label: label,\n gtagValue,\n });\n }\n trackEvent(`marketplace.apps.${procoreLabel}`, {\n app_name: name,\n ...procoreAdditionalFields,\n });\n };\n\n const colWidthsContent = { tabletLg: 8, tabletMd: 12 };\n const colWidthSidebar = { tabletLg: 4, tabletMd: 12 };\n\n const [parsedHTML, setParsedHTML] = useState({\n video: null,\n description: null,\n });\n const [imageModalOpen, setImageModalOpen] = useState(false);\n const [currentImageUrl, setCurrentImageUrl] = useState('');\n const sliderSettings = {\n focusOnSelect: false,\n dots: true,\n infinite: true,\n speed: 500,\n slidesToShow: 1,\n slidesToScroll: 1,\n fade: true,\n adaptiveHeight: true,\n beforeChange: (curr, index) => {\n sendAnalytics('click', 'Media Slider', index, 'media_slider.changed', {\n index,\n });\n setCurrentImageUrl(\n index === 0 && parsedHTML.video\n ? ''\n : screenshots[parsedHTML.video ? index - 1 : index].url\n );\n },\n prevArrow: (\n \n \"\"\n \n ),\n nextArrow: (\n \n \"\"\n \n ),\n };\n\n /**\n * Extracts Wistia video and script from HTML passed in from dev portal\n * so we can render it in the media slider\n * This can be removed if we migrate away from using raw HTML\n */\n\n useEffect(() => {\n WistiaExtract(html, setParsedHTML);\n }, []);\n\n const getActionButton = () => {\n if (installed) {\n return ;\n }\n\n if (direct_installable) {\n if (!user.isSignedIn) {\n return (\n \n \n \n \n );\n }\n\n if (!user.isCompanyAdmin) {\n if (companyInstallationRequestsEnabled) {\n return (\n \n );\n }\n const content = (\n \n \n

You must be a company admin to install an app

\n
\n
\n );\n return (\n \n {() => (\n \n \n \n )}\n \n );\n }\n if (install_path) {\n return (\n {\n sendAnalytics(\n 'click',\n 'Button',\n 'Install App',\n 'install_button.clicked'\n );\n appInstallPost(app);\n window.location = install_path;\n }}\n >\n Install App\n \n );\n }\n }\n return null;\n };\n\n const renderSecurityCertifiedSection = () => (\n <>\n \n \n {expanded ? : }\n \n \n {expanded && (\n <>\n

\n Partner Security Review | Self-Certified Responses\n

\n

\n The following partner has supplied answers to a set of standard\n questions, self-certifying their adherence to specific security\n requirements.\n \n {' '}View the partner's answers here.\n \n
\n
\n \n The partner is solely responsible for the accuracy of the\n information provided.\n \n \n {' '}Learn more about the badge here.\n \n

\n \n )}\n
\n
\n \n );\n\n const renderRegions = () => {\n ((countries && Object.keys(countries).length > 0) ||\n regions?.length > 0) && (\n <>\n

\n Available in {}\n \n sendAnalytics(\n 'click',\n 'Link',\n 'Supported Regions FAQ',\n 'supported_regions_faq.clicked'\n )\n }\n href=\"https://support.procore.com/faq/what-are-supported-regions-on-apps\"\n style={{ color: 'gray' }}\n target=\"_blank\"\n >\n \n \n

\n {regions.map((region, idx) => (\n \n

{region}

\n
\n ))}\n {Object.keys(countries).map((region) => {\n const rc = countries[region];\n return regions.includes(region) ? null : (\n <>\n

\n \n {region} ({rc.length})\n \n

\n \n
    \n {rc.map((regionCountry) => (\n
  • {regionCountry}
  • \n ))}\n
\n \n \n );\n })}\n \n );\n };\n\n return (\n <>\n {screenshots?.length > 0 && (\n setImageModalOpen(false)}\n >\n \n \n setImageModalOpen(false)}\n />\n \n \n \n \n )}\n\n \n \n \n \n \n \n \n \n \n \n \n \n

{name}

\n

\n {search_description}\n

\n
\n
\n
\n \n \n {getActionButton()}\n {contact_us_email || create_lead ? (\n \n ) : (\n \n sendAnalytics(\n 'click',\n 'Link',\n 'Learn How',\n 'learn_how.clicked'\n )\n }\n target=\"_blank\"\n >\n Learn How\n \n )}\n
\n \n \n \n \n \n \n {parsedHTML.video}\n {screenshots?.length === 0 && (\n

\n \n

\n )}\n {screenshots?.map((slide) => (\n setImageModalOpen(true)}\n />\n ))}\n
\n
\n \n \n \n
\n \n \n \n {security_badge && renderSecurityCertifiedSection()}\n \n {filteredComponents.length > 0 && (\n <>\n

Type

\n

{filteredComponents.join(', ')}

\n \n )}\n {category_names?.length > 0 && (\n <>\n

Category

\n

{category_names.join(', ')}

\n \n )}\n {regions && renderRegions()}\n \n

Support

\n

Email

\n \n \n sendAnalytics(\n 'click',\n 'Link',\n 'Email',\n 'email.clicked'\n )\n }\n >\n {email}\n \n

\n\n

Website

\n

\n \n sendAnalytics(\n 'click',\n 'Link',\n 'Website',\n 'website.clicked'\n )\n }\n >\n {built_by || name}\n \n

\n
\n
\n
\n \n \n \n \n

Ask the Community

\n

\n Join the\n \n sendAnalytics(\n 'click',\n 'Link',\n 'Integrations',\n 'integrations.clicked'\n )\n }\n >\n {' '}\n integrations discussion{' '}\n \n in the\n \n sendAnalytics(\n 'click',\n 'Link',\n 'Community',\n 'community.clicked'\n )\n }\n >\n {' '}\n Procore Community{' '}\n \n

\n
\n
\n
\n
\n
\n \n \n
\n \n \n );\n};\n\nListingsShow.propTypes = {\n app: PT.shape({\n built_by: PT.string.isRequired,\n email: PT.string.isRequired,\n name: PT.string.isRequired,\n html: PT.string.isRequired,\n installed: PT.bool.isRequired,\n pricing: PT.bool.isRequired,\n create_lead: PT.bool,\n contact_us_email: PT.string,\n search_description: PT.string.isRequired,\n small_logo: PT.shape({\n url: PT.string,\n }).isRequired,\n small_logo_url: PT.string,\n website: PT.string.isRequired,\n category_names: PT.arrayOf(PT.string).isRequired,\n components: PT.arrayOf(PT.string).isRequired,\n developer_app_id: PT.string,\n direct_installable: PT.bool,\n install_path: PT.string,\n price_button: PT.string,\n screenshots: PT.arrayOf(\n PT.shape({\n url: PT.string.isRequired,\n })\n ),\n regions: PT.arrayOf(PT.string),\n countries: PT.shape({}),\n security_badge: PT.bool,\n security_questionnaire_document: PT.string,\n }),\n installationRequest: PT.shape({\n apiPath: PT.string,\n present: PT.bool,\n }),\n companyName: PT.string.isRequired,\n user: PT.shape({\n email: PT.string,\n isCompanyAdmin: PT.bool.isRequired,\n isSignedIn: PT.bool.isRequired,\n }).isRequired,\n companyInstallationRequestsEnabled: PT.bool,\n new_draft_preview: PT.bool,\n metricsData: PT.shape({}),\n};\n\nListingsShow.defaultProps = {\n app: {\n countries: {},\n developer_app_id: -1,\n direct_installable: false,\n install_path: '',\n price_button: false,\n regions: [],\n screenshots: [],\n small_logo_url: '',\n versioning_history: null,\n new_draft_preview: false,\n security_badge: false,\n security_questionnaire_document: '',\n },\n installationRequest: {\n apiPath: '',\n present: false,\n },\n companyInstallationRequestsEnabled: false,\n};\n\nexport default ListingsShow;\n","import { useEffect, useRef, useState, useCallback } from 'react';\n\n/**\n * Custom hook to check if an element is within the viewport.\n *\n * @param {number} offset - Number of pixels for offset from the top.\n * @param {boolean} initialVisibility - Initial visibility state, default is true.\n * @returns {[boolean, React.RefObject]} isVisible and ref to attach to the element.\n */\nexport const useVisibility = (offset = 0, initialVisibility = true) => {\n const [isVisible, setIsVisible] = useState(initialVisibility);\n const elementRef = useRef(null);\n\n // Avoid re-creating it on each render\n const checkVisibility = useCallback(() => {\n if (!elementRef.current) {\n return;\n }\n\n const { top, bottom } = elementRef.current.getBoundingClientRect();\n const withinViewport =\n top + offset >= 0 && bottom - offset <= window.innerHeight;\n setIsVisible(withinViewport);\n }, [offset]);\n\n // Setup event listeners for scroll and resize\n useEffect(() => {\n checkVisibility(); // Initial check\n window.addEventListener('scroll', checkVisibility);\n window.addEventListener('resize', checkVisibility);\n\n // Cleanup event listeners\n return () => {\n window.removeEventListener('scroll', checkVisibility);\n window.removeEventListener('resize', checkVisibility);\n };\n }, [checkVisibility]);\n\n return [isVisible, elementRef];\n};\n","import React, { useEffect, useState } from 'react';\nimport { Box, Flex, Typography } from '@procore/core-react';\nimport PT from 'prop-types';\nimport styled from 'styled-components';\nimport Fuse from 'fuse.js';\nimport axios from 'axios';\nimport { FUSE_CONFIG } from '@/react/shared/utils/fuseConfig';\nimport { useVisibility } from '@/react/hooks/useVisibility';\nimport { TopNavHeader, TopNavSearchForm } from '@/react/components';\n\nconst Hero = styled(Flex)`\n background: url(/images/marketplace_header.png) no-repeat top center;\n background-size: cover;\n height: 400px;\n`;\n\nconst MarketplaceIndex = ({ headerProps }) => {\n const [isHeroSearchVisible, heroSearchElement] = useVisibility(50);\n const [searchTerm, setSearchTerm] = useState('');\n const [fuse, setFuse] = useState({\n search: (term) => setSearchTerm(term),\n });\n const [searchDataState, setSearchDataState] = useState({\n loading: true,\n data: [],\n });\n\n useEffect(() => {\n axios.get('/search_data').then((res) => {\n res.data\n .filter((app) => app.name.startsWith('Arcoro'))\n .map(\n (app) =>\n (app.search_description = app.search_description.replace(\n /^/,\n 'HR '\n ))\n );\n setSearchDataState({\n loading: false,\n data: res.data,\n });\n setFuse(new Fuse(res.data, FUSE_CONFIG));\n });\n }, []);\n\n return (\n <>\n \n \n \n \n \n Explore integrations for Procore\n \n \n \n {isHeroSearchVisible && (\n \n )}\n \n \n \n \n );\n};\n\nMarketplaceIndex.propTypes = {\n headerProps: PT.shape({}).isRequired,\n};\n\nexport default MarketplaceIndex;\n","import { createI18njs } from '@procore/core-i18n-js';\n\nexport default createI18njs({\n locale: 'en',\n translations: {\n en: {\n navbar: {\n app: 'Build an App',\n community: 'Community',\n partner: 'Become a Partner',\n idea: 'Post an Idea',\n webinars: 'Webinars',\n faq: 'FAQ',\n companySwitch: 'Change Company',\n logout: 'Logout',\n supportCenter: 'Support Center',\n },\n hero: {\n tagline: 'Explore Integrations for Procore',\n },\n header: {\n builtBy: 'Built by',\n builtByOverlay: '%{value} developed this app.',\n supportedBy: 'Supported by',\n supportedByOverlay: '%{value} provides support for this app.',\n installs: 'Installs',\n installsOverlay:\n 'This app is installed by at least %{value} companies.',\n securityBadge: 'Security & Trust',\n beta: 'Beta',\n },\n securityBadge: {\n title: 'Security & Trust Partner Self-Certified',\n partnerAnswered:\n 'The following Partner has supplied answers to a set of standard questions, self-certifying their adherence to specific security requirements.',\n link: 'View the Partner’s answers here.',\n responsibility:\n 'The Partner is solely responsible for the accuracy of the information provided.',\n learnMore: 'Learn more about the badge here.',\n },\n appDetails: {\n loginToInstall: 'Login to Install',\n mustBeAdmin: 'You must be a company admin to install an app',\n installApp: 'Install App',\n noHelpfulLinks: 'The partner did not provide any helpful links.',\n noRegions: 'The partner did not provide this information.',\n partnerSecurityReview:\n 'Partner Security Review | Self-Certified Responses',\n partnerSecurityDescription:\n 'The following partner has supplied answers to a set of standard questions, self-certifying their adherence to specific security requirements.',\n partnerSecurityLink: \"View the partner's answers here.\",\n partnerSecurityBadge:\n 'The partner is solely responsible for the accuracy of the information provided.',\n partnerSecurityBadgeLink: 'Learn more about the badge here.',\n pricing: {\n title: 'Pricing',\n titleNoPricing: 'Pricing Information Not Available',\n soldBy: 'Sold By ',\n website: 'Visit Pricing Website',\n faqs: 'FAQs',\n description:\n \"Our application offers flexible pricing plans to suit the needs of every user. Whether you are an individual, a small business, or a large enterprise, we have a plan that fits your budget and requirements. Each plan includes a variety of features designed to help you get the most out of our application. Explore our pricing options and choose the one that's right for you.\",\n descriptionNoPricing:\n 'The pricing details for this app have not been specified. ',\n contactPartner: 'Contact the partner for more information.',\n faqsHeaderPart1:\n 'These standard questions are answered by our partners to ensure transparency. Procore isn’t responsible for the pricing details, please ',\n faqsHeaderPart2: 'contact the partner',\n faqsHeaderPart3: ' for more detailed information.',\n subscriptionRequired: {\n description:\n 'Does the app require an additional subscription to another system?',\n yes: 'Yes, an additional subscription is required.',\n no: 'No, an additional subscription is not required.',\n },\n thirdPartyConnectorRequired: {\n description:\n 'Is there a third-party connector needed for the integration, or is it included in the subscription?',\n yes: 'Yes, a third-party connector is needed for the integration.',\n no: 'No, a third-party connector is not needed for the integration.',\n },\n freeTrialOffered: {\n description: 'Does the app offer a free trial?',\n yes: 'Yes, a free trial is available.',\n no: 'No, a free trial is not available.',\n },\n },\n security: {\n informationNotProvided:\n 'Security & Compliance Information Not Provided',\n informationNotProvidedDetails:\n 'The Partner did not provide the Security & Compliance information.',\n review: 'Partner Security Review | Self-Certified Responses',\n reviewDetails:\n 'This partner has provided answers to a set of standard questions, self-certifying their adherence to specific security requirements. The Partner is solely responsible for the accuracy of the information provided.',\n aboutApp: 'About %{app}',\n legalName: 'COMPANY LEGAL NAME',\n headquarters: 'HEADQUARTERS LOCATION',\n privacy: 'Privacy & Data Governance',\n informationSecurity: 'Information Security Practices',\n applicationSecurity: 'Application Security / Features',\n dataProcessingLocations: 'Data Processing Locations',\n countries: 'COUNTRIES',\n subprocessors:\n 'Does your company engage subprocessors / vendors (e.g. cloud hosting providers, backup vendors, service providers, etc.) (“Subprocessors”) to process or store customer data?',\n subprocessorsPersonalData:\n 'Do you or your subprocessors process or store sensitive personal data as part of the services/products you provide?',\n dedicatedFunction:\n 'Does your company have a dedicated security function (e.g., security employees and management)?',\n audits:\n 'Does your company undertake audits or other reviews to ensure security controls are implemented and operating effectively?',\n hasAudits:\n 'Yes. Regular internal audits and external reviews are conducted to ensure compliance.',\n accredidations:\n 'Are you accredited to any relevant security standards?',\n penTesting:\n 'Do you undertake penetration testing (or similar technical security testing, code review or vulnerability assessment); and are you able to provide copies of results/findings?',\n dataLoss:\n 'Do you have mechanisms to notify Procore and customers in case of a security breach or data loss?',\n vulnerabilityDisclosure:\n 'Do you have a vulnerability disclosure program?',\n vulnerabilityDisclosureProgram: 'Vulnerability Disclosure Program',\n disclosureUrl: 'URL to Public Facing Program',\n bugBounty: 'Do you have a bug bounty program?',\n aesEncryption:\n 'Is customer data encrypted at rest a minimum standard of AES-256 or equivalent?',\n tlsEncryption:\n 'Is customer data encrypted in transit a minimum standard of TLS 1.2?',\n ssoSupported: 'Does your application support Single Sign On (SSO)?',\n samlSupported:\n 'Does your application support Security Assertion Markup Language (SAML)?',\n mfaRequired:\n 'Is multifactor authentication (MFA) required for back-end system access used to process customer data?',\n pfasSupported:\n 'Does your integration support authenticated requests to Procore File Access Service (FAS)?',\n contactMessage: 'Yes. For security issues, contact ',\n no: 'No',\n yes: 'Yes',\n technicalMeasures:\n 'What technical measures does your company implement to protect customer personal data?',\n securityTeam: 'SECURITY TEAM',\n bugBountyProgram: 'BUG BOUNTY PROGRAM',\n vulnerabilityProgram: 'SECURITY VULNERABILITY PROGRAM',\n standards: 'STANDARDS',\n },\n media: {\n titleNoMedia: 'No Media Content To Display',\n descriptionNoMedia:\n 'No media content has been uploaded yet. Upload content to enhance your marketplace listing. ',\n },\n toolsInformation:\n 'Tools information not declared by the Partner. This app may not require specific Procore tools for its proper functionality. If you have any questions, ',\n toolsInformationLink:\n 'please contact the partner for more information.',\n labels: {\n email: 'EMAIL',\n website: 'WEBSITE',\n },\n titles: {\n security: 'Security & Compliance',\n category: 'Categories',\n community: 'Ask the Community',\n contact: 'Contact',\n email: 'Email',\n features: 'Features',\n functionality: 'Functionality',\n helpfulLinks: 'Helpful Links',\n howItWorks: 'How it Works',\n overview: 'Overview',\n requirements: 'Integration Requirements',\n summary: 'Integration Summary',\n support: 'Support',\n tools: 'Required Procore Tools',\n type: 'Type',\n website: 'Website',\n embeddedType: 'Embedded Display Type',\n appType: 'App Type',\n availableIn: 'Available in',\n version: 'Version',\n joinCommunity: {\n join: 'Join the',\n integrations: 'integrations discussion',\n inThe: 'in the',\n community: 'Procore Community',\n },\n displayType: 'Embedded Display Type',\n faqs: 'FAQs',\n },\n sideBar: {\n embeddedTypePopover: {\n fullscreen:\n 'Occupies the entire Procore window, providing an immersive and comprehensive interface for the app.',\n sidepanel:\n 'Displays the app in a fixed-width panel on the right side of the Procore interface, ideal for contextual tools and quick access.',\n both: 'This app offers the flexibility in how it is display within Procore, either occupying the entire window for an immersive experience and in a fixed-width side panel for quick, contextual access.',\n },\n embeddedType: 'Learn more about display types here.',\n displayType: {\n iframe: 'Full Screen',\n fullscreen: 'Full Screen',\n sidepanel: 'Side Panel',\n },\n appType: {\n embedded: 'Embedded',\n dataConnector: 'Data Connector',\n dataConnectorAndEmbedded: 'Data Connector and Embedded',\n },\n appTypePopover:\n 'This app utilizes Procore APIs to offer seamless data connection integration and supports an immersive experience through an embedded interface within Procore, providing streamlined workflows and comprehensive data exchange capabilities.',\n appTypeLink: 'Learn more about app types here.',\n returnToListing: 'Return to Listing',\n regionModal: {\n title: 'Country & Region Availability',\n trigger: 'View Available Regions',\n },\n historyModal: {\n title: 'Version History',\n trigger: 'View App History',\n noChangelog: 'No description provided',\n },\n },\n sectionNav: {\n overview: 'Overview',\n functionality: 'Functionality',\n requirements: 'Requirements',\n support: 'Support',\n security: 'Security & Compliance',\n pricing: 'Pricing',\n },\n },\n contactUs: {\n formDescription:\n 'Please fill out the form below. A representative will be in touch with you shortly with more information on pricing and how to get started.',\n thanksForVisiting:\n 'Thanks for visiting our App Marketplace and requesting information on',\n submitted:\n 'We have received your request and a representative will contact you shortly.',\n issues:\n 'If you are having issues viewing the form, please disable your Adblock.',\n mustLogIn: 'Log in to contact the Partner',\n },\n labels: {\n myAccount: 'My Account',\n login: 'Login',\n searchInput: 'Search for Apps',\n searchLoading: 'Searching...',\n noResults: 'No results found',\n viewAll: 'View All Results',\n learnHow: 'Learn how',\n contactUs: 'Contact Us',\n installed: 'Installed',\n thankYou: 'Thank You',\n close: 'Close',\n },\n ariaLabels: {\n supportButton: 'Open Support Menu',\n account: 'My Account',\n },\n global: {\n appMarketplace: 'App Marketplace',\n },\n },\n },\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Box,\n Grid,\n Flex,\n Typography,\n H1,\n H2,\n H3,\n P,\n Link,\n colors,\n spacing,\n useI18nContext,\n} from '@procore/core-react';\nimport { ArrowRight } from '@procore/core-icons';\nimport * as Styles from '@/react/styles';\n\nconst PricingSection = ({\n pricingDescription,\n subscriptionRequired,\n connectorRequired,\n hasTrials,\n pricingUrl,\n email,\n soldBy,\n}) => {\n const i18n = useI18nContext();\n\n return (\n <>\n {!pricingDescription && (\n \n \n \n

{i18n.t('appDetails.pricing.titleNoPricing')}

\n

\n {i18n.t('appDetails.pricing.descriptionNoPricing')}\n \n \n {i18n.t('appDetails.pricing.contactPartner')}\n \n \n

\n
\n \n )}\n\n {pricingDescription && (\n \n \n \n \n

{i18n.t('appDetails.pricing.title')}

\n \n

\n {i18n.t('appDetails.pricing.soldBy')}\n {soldBy}\n

\n

{pricingDescription}

\n {pricingUrl && (\n

\n \n {i18n.t('appDetails.pricing.website')}\n \n \n

\n )}\n
\n
\n\n \n

{i18n.t('appDetails.pricing.faqs')}

\n\n \n \n {i18n.t('appDetails.pricing.faqsHeaderPart1')}\n \n \n \n {i18n.t('appDetails.pricing.faqsHeaderPart2')}\n \n \n \n {i18n.t('appDetails.pricing.faqsHeaderPart3')}\n \n \n\n \n

\n {i18n.t(\n 'appDetails.pricing.subscriptionRequired.description'\n )}\n

\n

\n {i18n.t(\n `appDetails.pricing.subscriptionRequired.${\n subscriptionRequired ? 'yes' : 'no'\n }`\n )}\n

\n
\n\n \n\n \n

\n {i18n.t(\n 'appDetails.pricing.thirdPartyConnectorRequired.description'\n )}\n

\n

\n {i18n.t(\n `appDetails.pricing.thirdPartyConnectorRequired.${\n connectorRequired ? 'yes' : 'no'\n }`\n )}\n

\n
\n\n \n\n \n

\n {i18n.t('appDetails.pricing.freeTrialOffered.description')}\n

\n

\n {i18n.t(\n `appDetails.pricing.freeTrialOffered.${\n hasTrials ? 'yes' : 'no'\n }`\n )}\n

\n
\n
\n
\n \n \n )}\n \n );\n};\n\nPricingSection.propTypes = {\n pricingDescription: PropTypes.string,\n subscriptionRequired: PropTypes.bool,\n connectorRequired: PropTypes.bool,\n hasTrials: PropTypes.bool,\n pricingUrl: PropTypes.string,\n email: PropTypes.string,\n soldBy: PropTypes.string,\n};\n\nexport default PricingSection;\n","import { useState, useEffect } from 'react';\nimport sanitizeHtml from 'sanitize-html';\n\nconst sanitizeOptions = {\n allowedTags: ['a', 'li', 'ul', 'h1', 'h2', 'h3', 'div'],\n allowedAttributes: {\n a: ['href', 'style', 'target'],\n li: ['style'],\n div: ['style'],\n },\n allowedStyles: {\n '*': {\n color: [/^.*$/], // Allow any color\n },\n },\n};\n\nexport const useSanitizedString = (string) => {\n const [sanitizedString, setSanitizedString] = useState('');\n\n useEffect(() => {\n setSanitizedString(sanitizeHtml(string, sanitizeOptions));\n }, [string]);\n\n return sanitizedString;\n};\n\nexport const useSanitizedArray = (array) => {\n const [sanitizedArray, setSanitizedArray] = useState([]);\n\n useEffect(() => {\n setSanitizedArray(\n array.map((string) => sanitizeHtml(string, sanitizeOptions))\n );\n }, [array]);\n\n return sanitizedArray;\n};\n","import React from 'react';\nimport PT from 'prop-types';\nimport { Box, Flex, H1, H2, useI18nContext } from '@procore/core-react';\nimport { useSanitizedString } from '@/react/hooks/useSanitizedString';\n\nconst OverviewSection = ({ description }) => {\n const i18n = useI18nContext();\n\n const sanitizedDescription = useSanitizedString(description);\n\n return (\n \n \n

{i18n.t('appDetails.titles.overview')}

\n
\n \n

{i18n.t('appDetails.titles.summary')}

\n
\n \n \n );\n};\n\nOverviewSection.propTypes = {\n description: PT.string.isRequired,\n};\n\nexport default OverviewSection;\n","import React from 'react';\nimport PT from 'prop-types';\nimport { Box, Flex, H1, H2, Link, useI18nContext } from '@procore/core-react';\nimport { Info } from '@procore/core-icons';\nimport sanitizeHtml from 'sanitize-html';\nimport { useSanitizedArray } from '@/react/hooks/useSanitizedString';\n\nconst FunctionalitySection = ({\n howItWorks,\n features,\n requirements,\n tools,\n}) => {\n const i18n = useI18nContext();\n const sanitizedHowItWorks = sanitizeHtml(howItWorks);\n const sanitizedFeatures = useSanitizedArray(features);\n const sanitizedRequirements = useSanitizedArray(requirements);\n\n return (\n \n \n

{i18n.t('appDetails.titles.functionality')}

\n
\n\n \n

{i18n.t('appDetails.titles.howItWorks')}

\n
\n \n\n {features && (\n <>\n \n

{i18n.t('appDetails.titles.features')}

\n
\n
    \n {sanitizedFeatures.map((feature) => (\n \n
  • \n \n ))}\n
\n \n )}\n\n {requirements && (\n <>\n \n

{i18n.t('appDetails.titles.requirements')}

\n
\n
    \n {sanitizedRequirements.map((requirement) => (\n \n
  • \n \n ))}\n
\n \n )}\n\n \n

{i18n.t('appDetails.titles.tools')}

\n
\n\n {tools?.length > 0 ? (\n
    \n {tools.map((tool) => (\n \n
  • {tool}
  • \n
    \n ))}\n
\n ) : (\n \n \n \n {i18n.t('appDetails.toolsInformation')}\n \n {i18n.t('appDetails.toolsInformationLink')}\n \n \n \n )}\n \n );\n};\n\nFunctionalitySection.propTypes = {\n howItWorks: PT.string.isRequired,\n features: PT.arrayOf(PT.string),\n requirements: PT.arrayOf(PT.string),\n tools: PT.arrayOf(PT.string),\n};\n\nexport default FunctionalitySection;\n","import React, { useState } from 'react';\nimport PT from 'prop-types';\nimport {\n Flex,\n H1,\n H2,\n Link,\n Typography,\n colors,\n useI18nContext,\n} from '@procore/core-react';\nimport {\n Building,\n Check,\n ChevronDown,\n ChevronUp,\n Clear,\n Location,\n RibbonPerson,\n ShieldStar,\n} from '@procore/core-icons';\nimport styled from 'styled-components';\nimport { useSanitizedString } from '@/react/hooks/useSanitizedString';\n\nconst maxContentWidth = '780px';\n\nconst Logo = styled.img`\n height: 96px;\n width: 96px;\n`;\n\nconst Label = styled(Typography)`\n color: ${colors.gray30};\n margin: 12px 0px 0px 0px;\n`;\n\nconst BreakingLine = styled.hr`\n border: 0;\n border-top: 1px solid ${colors.gray70};\n margin: 24px 0px;\n width: 100%;\n`;\n\nconst ConditionalLine = ({ condition, affirmative, negative }) => {\n return (\n \n {condition ? (\n \n ) : (\n \n )}\n \n \n \n {condition ? affirmative : negative}\n \n \n \n \n );\n};\n\nConditionalLine.propTypes = {\n condition: PT.bool.isRequired,\n affirmative: PT.node.isRequired,\n negative: PT.node.isRequired,\n};\n\nconst CollapsibleSection = ({\n title,\n children,\n openSection,\n setOpenSection,\n sectionId,\n}) => {\n const open = openSection === sectionId;\n\n return (\n setOpenSection(openSection === sectionId ? '' : sectionId)}\n >\n \n

{title}

\n {open ? : }\n \n \n {open && children}\n \n );\n};\n\nCollapsibleSection.propTypes = {\n title: PT.string,\n children: PT.node.isRequired,\n openSection: PT.string.isRequired,\n setOpenSection: PT.func.isRequired,\n sectionId: PT.string.isRequired,\n};\n\nconst SecuritySection = ({ app, questionnaire }) => {\n const i18n = useI18nContext();\n const [openSection, setOpenSection] = useState('');\n\n const sanitizedAbout = useSanitizedString(app.about);\n\n if (!app.security_questionnaire_visible || !questionnaire) {\n return (\n \n

{i18n.t('appDetails.titles.security')}

\n \n \n \n \n \n

{i18n.t('appDetails.security.informationNotProvided')}

\n
\n \n {i18n.t('appDetails.security.informationNotProvidedDetails')}\n \n
\n
\n \n

{i18n.t('appDetails.security.aboutApp', { app: app.built_by })}

\n \n \n \n \n );\n }\n\n const securityStandards = [\n ...questionnaire.security_standards.map(\n (standard) => standard.standard_name\n ),\n ...(questionnaire.other_security_standards === ''\n ? []\n : [questionnaire.other_security_standards]),\n ];\n\n return (\n \n

{i18n.t('appDetails.titles.security')}

\n\n \n \n \n \n

{i18n.t('appDetails.security.review')}

\n
\n
\n \n {`${i18n.t('appDetails.security.reviewDetails')} `}\n \n {i18n.t('appDetails.partnerSecurityBadgeLink')}\n \n \n \n\n \n

{i18n.t('appDetails.security.aboutApp', { app: app.built_by })}

\n \n \n \n
\n\n \n \n\n \n \n \n \n {questionnaire.company_legal_name}\n \n \n \n \n \n \n \n \n {questionnaire.headquarters_country}\n \n \n \n \n\n \n \n \n {i18n.t('appDetails.security.dataProcessingLocations')}\n \n \n \n \n \n \n {questionnaire.data_processing_locations.join(', ')}\n \n \n \n \n\n \n {i18n.t('appDetails.security.subprocessors')}\n \n \n\n \n\n \n {i18n.t('appDetails.security.subprocessorsPersonalData')}\n \n \n \n\n \n \n {i18n.t('appDetails.security.dedicatedFunction')}\n \n \n {i18n.t('appDetails.security.contactMessage')}\n \n {questionnaire.security_email}\n \n \n }\n negative={i18n.t('appDetails.security.no')}\n />\n\n \n\n \n {i18n.t('appDetails.security.audits')}\n \n \n\n \n\n \n {i18n.t('appDetails.security.technicalMeasures')}\n \n \n \n \n {`${i18n.t('appDetails.security.yes')}. `}\n \n \n {questionnaire.security_email}\n \n \n \n \n }\n negative={i18n.t('appDetails.security.no')}\n />\n\n \n \n\n \n \n \n {`${i18n.t('appDetails.security.yes')}. `}\n \n \n {questionnaire.disclosure_program_url}\n \n \n \n \n }\n negative={i18n.t('appDetails.security.no')}\n />\n\n \n\n \n {i18n.t('appDetails.security.accredidations')}\n \n \n \n {`${i18n.t('appDetails.security.yes')}. `}\n {securityStandards.join(', ')}\n \n }\n negative={i18n.t('appDetails.security.no')}\n />\n\n \n\n \n {i18n.t('appDetails.security.penTesting')}\n \n \n\n \n\n \n {i18n.t('appDetails.security.dataLoss')}\n \n \n\n \n\n \n {i18n.t('appDetails.security.vulnerabilityDisclosure')}\n \n \n {`${i18n.t('appDetails.security.yes')}. `}\n \n \n {i18n.t(\n 'appDetails.security.vulnerabilityDisclosureProgram'\n )}\n \n \n \n }\n negative={i18n.t('appDetails.security.no')}\n />\n\n \n\n \n {i18n.t('appDetails.security.bugBounty')}\n \n \n \n\n \n \n {i18n.t('appDetails.security.aesEncryption')}\n \n \n\n \n\n \n {i18n.t('appDetails.security.tlsEncryption')}\n \n \n\n \n {i18n.t('appDetails.security.ssoSupported')}\n \n \n\n \n\n \n {i18n.t('appDetails.security.samlSupported')}\n \n \n\n \n {i18n.t('appDetails.security.mfaRequired')}\n \n \n\n \n {i18n.t('appDetails.security.pfasSupported')}\n \n \n \n \n \n );\n};\n\nSecuritySection.propTypes = {\n app: PT.shape({\n about: PT.string,\n built_by: PT.string,\n security_questionnaire_visible: PT.bool,\n }),\n questionnaire: PT.shape({\n can_notify_procore: PT.bool.isRequired,\n company_legal_name: PT.string.isRequired,\n data_processing_locations: PT.arrayOf(PT.string),\n disclosure_program_url: PT.string.isRequired,\n has_bug_bounty_program: PT.bool.isRequired,\n has_data_encryption_at_rest: PT.bool.isRequired,\n has_data_encryption_in_transit: PT.bool.isRequired,\n has_disclosure_program: PT.bool.isRequired,\n has_fas_support: PT.bool.isRequired,\n has_mfa_support: PT.bool.isRequired,\n has_penetration_testing: PT.bool.isRequired,\n has_saml_support: PT.bool.isRequired,\n has_security_audits: PT.bool.isRequired,\n has_security_contact: PT.bool.isRequired,\n has_security_standards: PT.bool.isRequired,\n has_sensitive_data: PT.bool.isRequired,\n has_sso_support: PT.bool.isRequired,\n has_subprocessors: PT.bool.isRequired,\n headquarters_country: PT.string.isRequired,\n other_security_standards: PT.string.isRequired,\n security_email: PT.string.isRequired,\n security_standards: PT.arrayOf(\n PT.shape({\n variant: PT.string,\n standard_name: PT.string,\n })\n ),\n sensitive_data_handling_details: PT.string.isRequired,\n subprocessors_details: PT.string.isRequired,\n }),\n};\n\nexport default SecuritySection;\n","import styled from 'styled-components';\nimport { Flex, H1, H2, Link, Typography } from '@procore/core-react';\nimport { ExternalLink } from '@procore/core-icons';\n\nconst ContactContainer = styled(Flex)`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 6px;\n flex: 1 0 0;\n`;\n\nconst ContactsContainer = styled(Flex)`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n flex: 1 0 0;\n height: 100%;\n`;\n\nconst ContactType = styled(Typography)`\n color: var(--grey-concrete-555555, #555);\n font-feature-settings: 'liga' off, 'clig' off;\n\n font-size: 12px;\n font-style: normal;\n font-weight: 600;\n line-height: 16px;\n letter-spacing: 1px;\n text-transform: uppercase;\n`;\n\nconst DualSectionsContainer = styled(Flex)`\n display: flex;\n align-items: stretch;\n gap: 48px;\n align-self: stretch;\n width: 100%;\n max-width: 684px;\n flex-wrap: wrap;\n`;\n\nconst EmptyState = styled(Typography)`\n width: 100%;\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n`;\n\nconst HelpfulLinksContainer = styled(Flex)`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 6px;\n`;\n\nconst LinksContainer = styled(Flex)`\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 12px;\n flex: 1 0 0;\n`;\n\nconst Logo = styled.img`\n width: 96px;\n height: 96px;\n flex-shrink: 0;\n align-self: center;\n`;\n\nconst SectionContainer = styled(Flex)`\n display: flex;\n align-items: stretch;\n gap: 24px;\n flex: 1 0 0;\n align-self: stretch;\n`;\n\nconst StyledExternalLink = styled(ExternalLink)`\n width: 16px;\n height: 16px;\n`;\n\nconst StyledExternalLinkContainer = styled(Flex)`\n display: inline-flex;\n margin-left: 4px;\n vertical-align: middle;\n`;\n\nconst StyledH1 = styled(H1)`\n color: var(--procore-procore-black-000000, #000);\n font-feature-settings: 'liga' off, 'clig' off;\n\n font-size: 28px;\n font-style: normal;\n font-weight: 700;\n line-height: 36px;\n letter-spacing: -0.75px;\n`;\n\nconst StyledH2 = styled(H2)`\n color: var(--procore-procore-black-000000, #000);\n font-feature-settings: 'liga' off, 'clig' off;\n\n font-size: 24px;\n font-style: normal;\n font-weight: 700;\n line-height: 32px; /* 133.333% */\n letter-spacing: -0.25px;\n`;\n\nconst StyledLink = styled(Link)`\n color: var(--Blue-blue-45, #1d5cc9);\n font-feature-settings: 'liga' off, 'clig' off;\n\n font-size: 14px;\n font-style: normal;\n font-weight: 400;\n line-height: 20px;\n text-decoration: underline !important;\n text-decoration-line: underline;\n text-decoration-style: solid;\n text-decoration-skip-ink: none;\n text-decoration-thickness: auto;\n text-underline-offset: auto;\n text-underline-position: from-font;\n`;\n\nconst SupportCard = styled(Flex)`\n background: var(--bw-white, #fff);\n display: flex;\n padding: 48px;\n flex-direction: column;\n justify-content: center;\n align-items: flex-start;\n gap: 32px;\n align-self: stretch;\n width: 100%;\n max-width: 780px;\n margin: 48px auto;\n`;\n\nexport {\n ContactContainer,\n ContactsContainer,\n ContactType,\n DualSectionsContainer,\n EmptyState,\n HelpfulLinksContainer,\n LinksContainer,\n Logo,\n SectionContainer,\n StyledExternalLink,\n StyledExternalLinkContainer,\n StyledH1,\n StyledH2,\n StyledLink,\n SupportCard,\n};\n","import React from 'react';\nimport PT from 'prop-types';\nimport { useI18nContext } from '@procore/core-react';\nimport {\n ContactContainer,\n ContactsContainer,\n ContactType,\n DualSectionsContainer,\n EmptyState,\n HelpfulLinksContainer,\n LinksContainer,\n Logo,\n SectionContainer,\n StyledExternalLink,\n StyledExternalLinkContainer,\n StyledH1,\n StyledH2,\n StyledLink,\n SupportCard,\n} from './Support.styles';\n\nconst SupportSection = ({ name, website, contactUsEmail, helpfulLinks }) => {\n const i18n = useI18nContext();\n\n return (\n \n {i18n.t('appDetails.titles.support')}\n \n \n \n \n {i18n.t('appDetails.titles.helpfulLinks')}\n \n {helpfulLinks.length ? (\n helpfulLinks.map(({ url, label }) => (\n \n {label}\n \n \n \n \n ))\n ) : (\n {i18n.t('appDetails.noHelpfulLinks')}\n )}\n \n \n \n \n \n \n {i18n.t('appDetails.titles.contact')}\n {contactUsEmail && (\n \n Email\n \n {contactUsEmail}\n \n \n )}\n {website && name && (\n \n {i18n.t('appDetails.labels.website')}\n \n {name}\n \n \n \n \n \n )}\n \n \n \n \n );\n};\n\nSupportSection.propTypes = {\n name: PT.string.isRequired,\n website: PT.string.isRequired,\n contactUsEmail: PT.string.isRequired,\n helpfulLinks: PT.arrayOf(\n PT.shape({\n url: PT.string.isRequired,\n label: PT.string.isRequired,\n })\n ),\n};\n\nexport default SupportSection;\n","import React, { useEffect, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Modal,\n Link,\n useI18nContext,\n H3,\n Flex,\n Typography,\n spacing,\n Button,\n} from '@procore/core-react';\nimport styled from 'styled-components';\nimport {\n UnderlineModalHeader,\n MinWidthModal,\n MinWidthModalBody,\n LargeSpacingDivider,\n} from '@/react/styles/v2';\nimport { UnderlineLink } from '../../../../../styles/v2';\n\nconst CountryList = styled.ul`\n padding-left: ${spacing.lg}px;\n min-width: 200px;\n width: 100%;\n`;\n\nexport const RegionModal = ({ regions, countries }) => {\n const i18n = useI18nContext();\n const [isRegionsOpen, setIsRegionsOpen] = useState(false);\n\n // split the countries for a region into max 3 columns of length 10 or less\n const [mappedCountries, setMappedCountries] = useState({});\n useEffect(() => {\n const newMappedCountries = {};\n Object.keys(countries).forEach((region) => {\n const columns = [];\n let column = [];\n const maxLength = Math.ceil(countries[region].length / 3);\n countries[region].forEach((country) => {\n if (column.length >= maxLength) {\n columns.push(column);\n column = [];\n }\n column.push(country);\n });\n columns.push(column);\n newMappedCountries[region] = columns;\n });\n setMappedCountries(newMappedCountries);\n }, [countries]);\n\n return (\n <>\n \n setIsRegionsOpen(!isRegionsOpen)}>\n {i18n.t('appDetails.sideBar.regionModal.trigger')}\n \n \n setIsRegionsOpen(false)}\n open={isRegionsOpen}\n >\n \n {i18n.t('appDetails.sideBar.regionModal.title')}\n \n \n {regions &&\n regions.length > 0 &&\n regions.map((region, regionIndex) => {\n return (\n \n

{`${region}${\n countries[region]?.length > 0\n ? ` (${countries[region].length})`\n : ''\n }`}

\n {mappedCountries[region] && (\n \n {mappedCountries[region].map((column, index) => {\n return (\n \n \n {column.map((country) => {\n return (\n
  • \n \n {country}\n \n
  • \n );\n })}\n
    \n
    \n );\n })}\n
    \n )}\n {regionIndex !== regions.length - 1 && (\n \n )}\n \n );\n })}\n
    \n \n \n \n \n \n \n \n );\n};\n\nRegionModal.propTypes = {\n regions: PropTypes.arrayOf(PropTypes.string).isRequired,\n countries: PropTypes.object.isRequired,\n};","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Link,\n Modal,\n useI18nContext,\n Button,\n H3,\n Flex,\n P,\n Typography,\n spacing,\n} from '@procore/core-react';\nimport {\n UnderlineModalHeader,\n MinWidthModal,\n MinWidthModalBody,\n} from '@/react/styles/v2';\nimport styled from 'styled-components';\nimport { UnderlineLink } from '@/react/styles/v2';\n\n// non-standard color in design\nconst DividerSection = styled(Flex)`\n border-bottom: 1px solid #a3a4a6;\n padding-top: ${spacing.lg}px;\n &:last-child {\n border-bottom: none;\n }\n &:first-child {\n padding-top: ${spacing.lg}px;\n }\n`;\n\nexport const VersionHistoryModal = ({ versionHistory }) => {\n const [isModalOpen, setIsModalOpen] = useState(false);\n const i18n = useI18nContext();\n return (\n <>\n \n setIsModalOpen(true)}>\n {i18n.t('appDetails.sideBar.historyModal.trigger')}\n \n \n setIsModalOpen(false)}\n style={{ minWidth: '40%' }}\n >\n \n {i18n.t('appDetails.sideBar.historyModal.title')}\n \n \n {versionHistory.map((version) => (\n \n

    {version.semantic_version}

    \n \n {version.created_at}\n \n

    \n {version.changelog ||\n i18n.t('appDetails.sideBar.historyModal.noChangelog')}\n

    \n
    \n ))}\n
    \n \n \n \n \n \n );\n};\n\nVersionHistoryModal.propTypes = {\n versionHistory: PropTypes.array,\n};","import React from 'react';\nimport PropTypes from 'prop-types';\nimport {\n Flex,\n Popover,\n Typography,\n useI18nContext,\n Link,\n} from '@procore/core-react';\nimport { ExternalLink, Info } from '@procore/core-icons';\nimport { UnderlineLink } from '@/react/styles/v2';\n\nconst EMBEDDED_TYPES = ['iframe', 'fullscreen', 'sidepanel'];\nconst embeddedType = {\n fullscreen: 0,\n sidepanel: 1,\n both: 2,\n};\n\nconst getEmbeddedType = (components) => {\n if (components.length === 0) {\n return embeddedType.fullscreen;\n }\n let fullscreen = false;\n let sidepanel = false;\n components.forEach((component) => {\n if (component === 'fullscreen' || component === 'iframe') {\n fullscreen = true;\n }\n if (component === 'sidepanel') {\n sidepanel = true;\n }\n });\n\n if (fullscreen && sidepanel) {\n return embeddedType.both;\n }\n if (fullscreen) {\n return embeddedType.fullscreen;\n }\n return embeddedType.sidepanel;\n};\n\nconst getType = (components) => {\n if (components.length === 0) {\n return 'dataConnector';\n }\n let dataConnector = false;\n let embedded = false;\n components.forEach((component) => {\n if (component === 'oauth') {\n dataConnector = true;\n }\n if (EMBEDDED_TYPES.includes(component)) {\n embedded = true;\n }\n });\n\n if (dataConnector && embedded) {\n return 'dataConnectorAndEmbedded';\n }\n if (dataConnector) {\n return 'dataConnector';\n }\n return 'embedded';\n};\n\nexport const hasEmbedded = (components) => {\n return components.some((component) => EMBEDDED_TYPES.includes(component));\n};\n\nexport const AppType = ({ components }) => {\n const i18n = useI18nContext();\n const overlay = (\n \n \n {i18n.t('appDetails.sideBar.appTypePopover')}\n \n \n \n \n {i18n.t('appDetails.sideBar.appTypeLink')}{' '}\n \n \n \n \n \n \n \n );\n return (\n \n \n {i18n.t(`appDetails.sideBar.appType.${getType(components)}`)}\n \n \n {() => }\n \n \n );\n};\n\nAppType.propTypes = {\n components: PropTypes.arrayOf(PropTypes.string).isRequired,\n};\n\nconst EmbeddedTypePopover = ({ type }) => {\n const i18n = useI18nContext();\n let content = '';\n switch (type) {\n case embeddedType.fullscreen:\n content = i18n.t('appDetails.sideBar.embeddedTypePopover.fullscreen');\n break;\n case embeddedType.sidepanel:\n content = i18n.t('appDetails.sideBar.embeddedTypePopover.sidepanel');\n break;\n case embeddedType.both:\n content = i18n.t('appDetails.sideBar.embeddedTypePopover.both');\n break;\n default:\n content = 'missingContent';\n }\n return {content};\n};\n\nEmbeddedTypePopover.propTypes = {\n type: PropTypes.number.isRequired,\n};\n\nexport const EmbeddedType = ({ components }) => {\n const i18n = useI18nContext();\n const translatedComponents = components\n .filter((component) => EMBEDDED_TYPES.includes(component))\n .map((component) => i18n.t(`appDetails.sideBar.displayType.${component}`));\n const embeddedType = getEmbeddedType(components);\n const overlay = (\n \n \n \n \n \n \n \n {i18n.t('appDetails.sideBar.embeddedType')}{' '}\n \n \n \n \n \n \n \n );\n return (\n \n {translatedComponents.join(', ')}\n \n {() => }\n \n \n );\n};\n\nEmbeddedType.propTypes = {\n components: PropTypes.arrayOf(PropTypes.string).isRequired,\n};","import React, { useEffect, useState } from 'react';\nimport {\n Box,\n useI18nContext,\n Link,\n Pill,\n colors,\n spacing,\n Flex,\n Typography,\n} from '@procore/core-react';\nimport { ExternalLink } from '@procore/core-icons';\nimport styled from 'styled-components';\nimport { useAppContext } from '@/react/context/AppContext';\nimport { RegionModal } from '../utils/RegionModal';\nimport { VersionHistoryModal } from '../utils/VersionHistoryModal';\nimport { AppType, EmbeddedType, hasEmbedded } from '../utils/AppType';\nimport { UnderlineLink } from '@/react/styles/v2';\n\nconst CategoryPill = styled(Pill)`\n color: white;\n background-color: ${colors.blue50};\n font-weight: 400;\n font-size: 14px;\n padding: ${spacing.xxs}px ${spacing.md}px;\n`;\n\nconst SectionLabel = styled(Typography)`\n color: var(--grey-concrete-555555, #555);\n font-feature-settings: 'liga' off, 'clig' off;\n font-size: 12px;\n font-style: normal;\n font-weight: 600;\n line-height: 16px;\n letter-spacing: 1px;\n text-transform: uppercase;\n`;\n\nconst RowGapFlex = styled(Flex)`\n row-gap: ${spacing.sm}px;\n`;\n\n// eslint-disable-next-line react/prop-types\nconst SideBarSection = ({ title, children }) => (\n \n {title}\n {children}\n \n);\n\nconst SideBar = () => {\n const i18n = useI18nContext();\n\n const {\n appDetails: { app, version },\n } = useAppContext();\n\n const {\n built_by,\n name,\n website,\n category_names,\n regions,\n countries,\n versioning_history,\n components,\n } = app;\n\n // last version in the versioning history array\n const latestVersion =\n versioning_history?.[versioning_history.length - 1]?.semantic_version;\n\n const [hasEmbeddedComponents, setHasEmbeddedComponents] = useState(\n hasEmbedded(components)\n );\n useEffect(() => {\n setHasEmbeddedComponents(hasEmbedded(components));\n }, [components]);\n\n const displayVersion = version || latestVersion;\n\n return (\n
    \n \n \n \n \n {hasEmbeddedComponents && (\n \n \n \n )}\n \n \n {category_names?.map((category) => (\n \n {category}\n \n ))}\n \n \n \n {regions?.length === 0 ? (\n <>{i18n.t('appDetails.noRegions')}\n ) : (\n <>\n \n {regions?.map((region) => (\n {`${region}${\n countries[region] ? ` (${countries[region].length})` : ''\n }; `}\n ))}\n \n \n \n )}\n \n {displayVersion && (\n \n {displayVersion}\n \n \n )}\n \n {/* styling bug here around no anchor underline */}\n \n \n {built_by || name} {' '}\n \n \n \n \n
    \n );\n};\n\nexport default SideBar;\n","import trackEvent from '@/scripts/analytics';\n\nexport const sendAnalytics = (\n action,\n category,\n label,\n procoreLabel,\n procoreAdditionalFields,\n gtagValue\n) => {\n if (typeof gtag !== 'undefined') {\n gtag('event', action, {\n event_category: category,\n event_label: label,\n gtagValue,\n });\n }\n trackEvent(`marketplace.apps.${procoreLabel}`, {\n app_name: name,\n ...procoreAdditionalFields,\n });\n};\n","import React from 'react';\nimport PT from 'prop-types';\nimport styled from 'styled-components';\nimport {\n Box,\n Button,\n colors,\n H1,\n Modal,\n spacing,\n Typography,\n useI18nContext,\n} from '@procore/core-react';\nimport { SingleCarousel } from '@/react/components';\n\nconst ModalLogo = styled.img`\n width: 75px;\n height: 75px;\n object-fit: cover;\n margin-right: ${spacing.lg}px;\n`;\n\nconst MediaSection = styled(Modal.Section)`\n width: calc(100% - 36px);\n margin: 0 auto;\n\n @media (min-width: 768px) {\n width: calc(100% - 132px);\n }\n`;\n\nconst ModalBody = styled(Modal.Body)`\n border-top: 1px solid ${colors.gray85};\n border-bottom: 1px solid ${colors.gray85};\n height: 100%;\n\n &:focus-within {\n outline: none;\n }\n\n @media (min-width: 768px) {\n height: 612px;\n }\n`;\n\nconst ImageModal = ({\n logoURL,\n appName,\n tagline,\n slides,\n isOpen,\n imageURL,\n onClose,\n}) => {\n const i18n = useI18nContext();\n return (\n \n \n \n \n

    {appName}

    \n \n {tagline}\n \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nImageModal.propTypes = {\n logoURL: PT.string.isRequired,\n appName: PT.string.isRequired,\n tagline: PT.string.isRequired,\n slides: PT.arrayOf(\n PT.shape({\n url: PT.string.isRequired,\n })\n ),\n isOpen: PT.bool.isRequired,\n imageURL: PT.string.isRequired,\n onClose: PT.func.isRequired,\n};\n\nexport default ImageModal;\n","import React from 'react';\nimport PT from 'prop-types';\nimport styled from 'styled-components';\nimport { Box } from '@procore/core-react';\n\nconst WistiaImage = styled.img`\n filter: blur(5px);\n height: 100%;\n object-fit: contain;\n width: 100%;\n`;\n\nconst WistiaEmbed = styled.div`\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n position: relative;\n`;\n\nexport const VideoPreview = ({ wistiaId }) => {\n return (\n \n \n \n \n \n );\n};\n\nVideoPreview.propTypes = {\n wistiaId: PT.string,\n};\n","import React from 'react';\nimport PT from 'prop-types';\nimport Slider from 'react-slick';\nimport { ImageStack } from '@procore/core-icons';\nimport { Box, H3, Typography, useI18nContext } from '@procore/core-react';\nimport {\n Slide,\n ArrowContainer,\n EmptySlide,\n SlideContainer,\n} from '@/react/styles/v2';\nimport { VideoPreview } from '../Sections/VideoPreview';\nimport { ArrowPrev, ArrowNext } from '@/react/components';\n\nconst MainCarousel = ({\n screenshots,\n wistiaId,\n onBeforeChange,\n setMainCarousel,\n thumbnailCarousel,\n openImageModal,\n}) => {\n const i18n = useI18nContext();\n const settings = {\n focusOnSelect: false,\n dots: false,\n infinite: false,\n slidesToShow: 1,\n slidesToScroll: 1,\n fade: false,\n adaptiveHeight: true,\n beforeChange: onBeforeChange,\n prevArrow: (\n \n \n \n ),\n nextArrow: (\n \n \n \n ),\n };\n\n return screenshots.length !== 0 ? (\n \n {wistiaId && (\n \n \n \n )}\n {screenshots?.map((slide, index) => (\n \n \n \n ))}\n \n ) : (\n \n \n \n

    {i18n.t('appDetails.media.titleNoMedia')}

    \n \n {i18n.t('appDetails.media.descriptionNoMedia')}\n \n \n
    \n );\n};\n\nMainCarousel.propTypes = {\n screenshots: PT.arrayOf(\n PT.shape({\n url: PT.string.isRequired,\n })\n ),\n wistiaId: PT.string,\n onBeforeChange: PT.func.isRequired,\n setMainCarousel: PT.func.isRequired,\n thumbnailCarousel: PT.shape({}),\n openImageModal: PT.func.isRequired,\n};\n\nexport default MainCarousel;\n","import React from 'react';\nimport PT from 'prop-types';\nimport Slider from 'react-slick';\nimport { Box, spacing } from '@procore/core-react';\nimport styled from 'styled-components';\nimport { Slide } from '@/react/styles/v2';\nimport { PlayButton } from '@/react/components';\n\nconst MAX_THUMBNAIL_SLIDES = 3.25;\nconst VideoThumbnail = styled(Box)`\n position: relative;\n display: flex;\n justify-content: center;\n align-items: center;\n\n & > svg {\n display: block;\n position: absolute;\n top: 50%;\n left: calc(50% - ${spacing.sm}px);\n transform: translate(-50%, -50%);\n cursor: pointer;\n }\n`;\n\nconst ThumbnailCarousel = ({\n screenshots,\n wistiaId,\n setThumbnailCarousel,\n mainCarousel,\n}) => {\n const settings = {\n slidesToShow: MAX_THUMBNAIL_SLIDES,\n slidesToScroll: 1,\n arrows: false,\n infinite: false,\n focusOnSelect: true,\n responsive: [\n {\n breakpoint: 768,\n settings: { slidesToShow: MAX_THUMBNAIL_SLIDES * 0.75 },\n },\n ],\n };\n\n return screenshots.length !== 0 ? (\n \n {wistiaId && (\n \n \n \n \n )}\n {screenshots?.map((slide, index) => (\n \n \n \n ))}\n \n ) : null;\n};\n\nThumbnailCarousel.propTypes = {\n screenshots: PT.arrayOf(\n PT.shape({\n url: PT.string.isRequired,\n })\n ).isRequired,\n wistiaId: PT.string,\n setThumbnailCarousel: PT.func.isRequired,\n mainCarousel: PT.shape({}),\n};\n\nexport default ThumbnailCarousel;\n","import React, { useCallback, useState } from 'react';\nimport PT from 'prop-types';\nimport { Flex } from '@procore/core-react';\nimport { SlickWrapper } from '@/react/styles/v2';\nimport { sendAnalytics } from '../../utils';\nimport ImageModal from './ImageModal';\nimport MainCarousel from './MainCarousel';\nimport ThumbnailCarousel from './ThumbnailCarousel';\n\nconst MediaCarousel = ({\n screenshots,\n wistiaId,\n appName,\n tagline,\n logoURL,\n}) => {\n const [mainCarousel, setMainCarousel] = useState(null);\n const [thumbnailCarousel, setThumbnailCarousel] = useState(null);\n const [imageModalOpen, setImageModalOpen] = useState(false);\n const [currentImageUrl, setCurrentImageUrl] = useState('');\n\n const handleBeforeChange = useCallback(\n (_, next) => {\n sendAnalytics('click', 'Media Slider', next, 'media_slider.changed', {\n index: next,\n });\n setCurrentImageUrl(\n next === 0 && wistiaId\n ? ''\n : screenshots[wistiaId ? next - 1 : next]?.url\n );\n },\n [screenshots, wistiaId]\n );\n\n return (\n <>\n {screenshots?.length > 0 && (\n setImageModalOpen(false)}\n slides={screenshots}\n />\n )}\n\n \n \n {/* Main Carousel */}\n setImageModalOpen(true)}\n />\n \n\n {/* Thumbnail Carousel */}\n \n \n \n \n \n );\n};\n\nMediaCarousel.propTypes = {\n screenshots: PT.arrayOf(\n PT.shape({\n url: PT.string.isRequired,\n })\n ),\n wistiaId: PT.string,\n appName: PT.string.isRequired,\n tagline: PT.string.isRequired,\n logoURL: PT.string.isRequired,\n};\n\nexport default MediaCarousel;\n","import { useState, useEffect } from 'react';\n\n// Hook that returns a boolean value indicating whether the target element is in the viewport\n\nexport const useIntersection = (targetRefs) => {\n const [currentIntersections, setCurrentIntersections] = useState({});\n const [lastIntersection, setLastIntersection] = useState(null);\n useEffect(() => {\n const intersectionMap = targetRefs.reduce((acc, ref) => {\n if (ref.current && !acc[ref.current.id]) {\n acc[ref.current.id] = false;\n }\n return acc;\n }, currentIntersections);\n setCurrentIntersections(intersectionMap);\n }, [targetRefs.current]);\n \n\n useEffect(() => {\n const observer = new IntersectionObserver(\n ([entry]) => {\n setLastIntersection((previous) => {\n if (entry.isIntersecting) {\n return entry.target.id;\n }\n return previous;\n });\n },\n { threshold: 0.5 }\n );\n\n targetRefs.forEach((ref) => {\n if (ref.current) {\n observer.observe(ref.current);\n }\n });\n\n return () => {\n targetRefs.forEach((ref) => {\n if (ref.current) {\n observer.unobserve(ref.current);\n }\n });\n\n observer.disconnect();\n };\n }, [targetRefs]);\n\n return lastIntersection;\n};\n","import React, { useState, useEffect, useMemo } from 'react';\nimport {\n Flex,\n Typography,\n spacing,\n useI18nContext,\n colors,\n} from '@procore/core-react';\nimport styled from 'styled-components';\nimport classNames from 'classnames';\nimport PropTypes from 'prop-types';\nimport { useIntersection } from '../../../../../hooks/useIntersection';\n\nconst HEADER_HEIGHT = 72;\nconst HEADER_HEIGHT_MOBILE = 120;\n\nexport const ScrollAnchor = styled.div`\n scroll-margin-top: 140px;\n @media (max-width: 992px) {\n scroll-margin-top: 190px;\n }\n`;\n\nconst LocalTab = styled.div`\n padding: ${spacing.sm}px;\n cursor: pointer;\n transition: background-color 0.2s;\n background-color: white;\n &:hover {\n background-color: ${colors.gray94};\n border-top-left-radius: 4px;\n border-top-right-radius: 4px;\n }\n span {\n color: ${colors.gray15};\n }\n border-bottom: 3px solid ${({ active }) => (active ? 'black' : colors.gray85)};\n margin-bottom: -3px;\n ${({ active }) => active && 'font-weight: semibold;'}\n`;\n\nconst NavContainer = styled.div`\n position: sticky;\n top: ${HEADER_HEIGHT}px;\n z-index: 10001;\n width: 100vw;\n background-color: white;\n @media (max-width: 992px) {\n top: ${HEADER_HEIGHT_MOBILE}px;\n }\n\n overflow-x: auto;\n overflow-y: hidden;\n /* Hide scrollbar for WebKit browsers */\n &::-webkit-scrollbar {\n display: none;\n }\n\n /* Hide scrollbar for Firefox */\n scrollbar-width: none;\n`;\n\nconst BorderBox = styled.div`\n border-bottom: 3px solid ${colors.gray85};\n width: 100%;\n @media (max-width: 700px) {\n width: max-content;\n }\n display: flex;\n flex-direction: column;\n align-items: center;\n`;\n\nconst FlexContainer = styled.div`\n width: 100%;\n max-width: 1344px;\n`;\n\nconst MediaResponsiveFlex = styled(Flex)`\n @media (max-width: 768px) {\n gap: ${spacing.sm}px;\n }\n gap: ${spacing.lg}px;\n background-color: white;\n width: max-content;\n`;\n\nexport const SectionNav = ({ sections }) => {\n const i18n = useI18nContext();\n const sectionRefs = useMemo(\n () => sections.map((section) => section.ref),\n [sections]\n );\n const [overRideActiveSection, setOverRideActiveSection] = useState(null);\n const [activeSection, setActiveSection] = useState(null);\n const lastIntersection = useIntersection(sectionRefs);\n useEffect(() => {\n if (!overRideActiveSection) {\n setActiveSection(() => lastIntersection);\n }\n }, [lastIntersection]);\n\n return (\n \n \n \n \n {sections.map((section, index) => (\n {\n section.ref.current.scrollIntoView({\n behavior: 'smooth',\n block: 'start',\n });\n setOverRideActiveSection(section.id);\n setActiveSection(section.id);\n setTimeout(() => {\n setOverRideActiveSection(null);\n }, 800);\n }}\n data-testid={`section-nav-${section.id}`}\n >\n \n {i18n.t(section.title)}\n \n \n ))}\n \n \n \n \n );\n};\n\nSectionNav.propTypes = {\n sections: PropTypes.arrayOf(\n PropTypes.shape({\n id: PropTypes.string.isRequired,\n ref: PropTypes.object.isRequired,\n title: PropTypes.string.isRequired,\n })\n ).isRequired,\n};\n","import React, { useRef } from 'react';\nimport {\n Box,\n Button,\n colors,\n spacing,\n Flex,\n Grid,\n P,\n Popover,\n useI18nContext,\n Typography,\n} from '@procore/core-react';\nimport { Check } from '@procore/core-icons';\nimport PricingSection from './components/Sections/Pricing';\n\nimport { appInstallPost } from '@/react/api';\nimport { MediaContainer, SidebarContainer } from '@/react/styles/v2';\nimport * as Styles from '@/react/styles';\nimport { AppHeader, InstallRequestButton } from '@/react/components';\nimport { useAppContext } from '@/react/context/AppContext';\n\nimport {\n OverviewSection,\n SideBar,\n SupportSection,\n FunctionalitySection,\n SecuritySection,\n} from './components/Sections';\nimport { sendAnalytics } from './utils';\nimport MediaCarousel from './components/MediaCarousel';\nimport { ScrollAnchor, SectionNav } from './components/Sections/SectionNav';\n\nconst AppDetails = () => {\n const i18n = useI18nContext();\n const {\n appDetails: {\n app,\n metricsData,\n installationRequest,\n companyInstallationRequestsEnabled,\n companyName,\n user,\n wistiaId,\n sectionNavEnabled,\n },\n } = useAppContext();\n\n const {\n installed,\n developer_app_id,\n direct_installable,\n install_path,\n screenshots,\n seller,\n built_by,\n small_logo,\n small_logo_url,\n } = app;\n\n const colWidthsContent = { desktopSm: 8, tabletLg: 12 };\n const colWidthSidebar = { desktopSm: 4, tabletLg: 12 };\n\n const overviewRef = useRef(null);\n const functionalityRef = useRef(null);\n const pricingRef = useRef(null);\n const securityRef = useRef(null);\n const supportRef = useRef(null);\n\n const getActionButton = () => {\n if (installed) {\n return (\n \n \n \n {i18n.t('labels.installed')}\n \n \n );\n }\n\n if (direct_installable) {\n if (!user.isSignedIn) {\n return (\n
    \n \n \n {i18n.t('appDetails.loginToInstall')}\n \n \n );\n }\n\n if (!user.isCompanyAdmin) {\n if (companyInstallationRequestsEnabled) {\n return (\n \n );\n }\n\n const content = (\n \n \n

    {i18n.t('appDetails.mustBeAdmin')}

    \n
    \n
    \n );\n\n return (\n \n {() => (\n \n \n {i18n.t('appDetails.installApp')}\n \n \n )}\n \n );\n }\n\n if (install_path) {\n return (\n {\n sendAnalytics(\n 'click',\n 'Button',\n 'Install App',\n 'install_button.clicked'\n );\n appInstallPost(app);\n window.location = install_path;\n }}\n size=\"lg\"\n >\n {i18n.t('appDetails.installApp')}\n \n );\n }\n }\n return null;\n };\n\n return (\n \n \n \n {sectionNavEnabled && (\n \n )}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default AppDetails;\n","import React from 'react';\nimport PT from 'prop-types';\nimport { I18nProvider } from '@procore/core-react';\nimport i18n from '../i18n';\nimport AppDetails from './AppDetails';\nimport { AppContextProvider } from '@/react/context/AppContext';\nimport { SearchProvider } from '@/react/context/SearchContext';\nimport { Navbar } from '@/react/components';\n\nconst MarketplaceAppContainer = ({ appDetails, header }) => {\n return (\n \n \n \n \n \n \n \n \n );\n};\n\nMarketplaceAppContainer.propTypes = {\n appDetails: PT.shape({}).isRequired,\n header: PT.shape({}).isRequired,\n};\n\nexport default MarketplaceAppContainer;\n","import React from 'react';\n\nimport {\n Box,\n colors,\n Flex,\n FlexList,\n Typography,\n useI18nContext,\n} from '@procore/core-react';\nimport styled from 'styled-components';\nimport Fuse from 'fuse.js';\nimport { FUSE_CONFIG } from '@/react/shared/utils/fuseConfig';\nimport { useAppContext } from '@/react/context/AppContext';\nimport { useVisibility } from '@/react/hooks/useVisibility';\n\nimport {\n ListingsAppCard,\n ListingsSidebar,\n NoResults,\n Navbar,\n SearchBar,\n} from '@/react/components';\n\nconst SidebarWrapper = styled(Box)`\n @media (min-width: 1001px) {\n flex: 0 1 20%;\n }\n\n @media (max-width: 1000px) {\n display: none;\n }\n`;\n\nconst ListingsAppsWrapper = styled(Box)`\n @media (min-width: 1001px) {\n flex: 0 1 80%;\n }\n\n @media (max-width: 1000px) {\n flex: 1 0 100%;\n }\n`;\n\nconst AppsNotFoundWrapper = styled(Flex)`\n flex: 0 1 80%;\n margin-left: auto;\n margin-right: auto;\n`;\n\n// Core React Flexlist removes margin on last child,\n// which causes weird wrapping in our case here.\nconst FlexListMarginChild = styled(FlexList)`\n & > *:last-child {\n margin-right: 32px !important;\n }\n`;\n\nconst ListingContainer = styled.div`\n max-width: 1200px;\n margin: 50px auto;\n`;\n\nconst Hero = styled(Box)`\n background: url(/images/marketplace_header.png) no-repeat top center;\n background-size: cover;\n height: 400px;\n`;\n\nconst MarketplaceListing = () => {\n const [isVisible, elementRef] = useVisibility(100);\n const { listing } = useAppContext();\n const i18n = useI18nContext();\n const { apps, categories, query } = listing;\n\n apps\n .filter((app) => app.name.startsWith('Arcoro'))\n .map(\n (app) =>\n (app.search_description = app.search_description.replace(/^/, 'HR '))\n );\n\n const fuse = new Fuse(apps, FUSE_CONFIG);\n const listings = query\n ? fuse.search(query).map((result) => result.item)\n : apps;\n\n listings\n .filter((app) => app.name.startsWith(' '))\n .map(\n (app) =>\n (app.search_description = app.search_description.replace(/^HR /, ''))\n );\n\n return (\n <>\n \n\n \n \n {i18n.t('hero.tagline')}\n \n \n \n \n \n\n \n \n {categories.length > 0 && (\n \n \n \n )}\n {listings.length > 0 ? (\n \n \n {listings.map((listing) => (\n \n ))}\n \n \n ) : (\n \n \n \n \n \n )}\n \n \n \n );\n};\n\nexport default MarketplaceListing;\n","import React from 'react';\nimport PT from 'prop-types';\nimport { I18nProvider } from '@procore/core-react';\nimport i18n from '../i18n';\nimport { AppContextProvider } from '@/react/context/AppContext';\nimport { SearchProvider } from '@/react/context/SearchContext';\nimport MarketplaceListing from './MarketplaceListing';\n\nconst MarketplaceListingContainer = ({ listing, header }) => {\n return (\n \n \n \n \n \n \n \n );\n};\n\nMarketplaceListingContainer.propTypes = {\n header: PT.shape({}).isRequired,\n listing: PT.shape({\n apps: PT.shape([]),\n query: PT.string,\n categories: PT.shape([]),\n }).isRequired,\n};\n\nexport default MarketplaceListingContainer;\n","import React from 'react';\nimport PT from 'prop-types';\nimport { Box, colors, Typography, useI18nContext } from '@procore/core-react';\nimport styled from 'styled-components';\n\nconst Container = styled(Box)`\n max-width: 940px;\n width: 100%;\n margin: 0 auto;\n`;\n\nconst FAQBox = styled(Box)`\n background-color: ${colors.white};\n border-radius: 8px;\n\n a {\n color: ${colors.orange50};\n text-decoration: underline !important;\n\n &:hover {\n color: ${colors.orange40};\n }\n }\n`;\n\nconst FAQ = ({ faqs }) => {\n const i18n = useI18nContext();\n return (\n \n {i18n.t('appDetails.titles.faqs')}\n \n {faqs &&\n faqs.length !== 0 &&\n faqs.map((faq) => (\n \n {faq.question}\n \n \n ))}\n \n \n );\n};\n\nFAQ.propTypes = {\n faqs: PT.arrayOf(PT.shape({})).isRequired,\n};\n\nexport default FAQ;\n","import React from 'react';\nimport PT from 'prop-types';\nimport { I18nProvider } from '@procore/core-react';\nimport { AppContextProvider } from '@/react/context/AppContext';\nimport { SearchProvider } from '@/react/context/SearchContext';\nimport { Navbar } from '@/react/components';\nimport i18n from '../i18n';\nimport FAQ from './FAQ';\n\nconst FAQContainer = ({ faqs, header }) => {\n return (\n \n \n \n \n \n \n \n \n );\n};\n\nFAQContainer.propTypes = {\n faqs: PT.arrayOf(PT.shape({})).isRequired,\n header: PT.shape({}).isRequired,\n};\n\nexport default FAQContainer;\n","const images = require.context('../../../public/images', true);\nwindow.imagePath = (name) => images(`./${name}`, true);\n\nimport 'stylesheets/application.scss';\nimport '../react/shared/polyfill';\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport $ from 'jquery';\nimport 'jquery-modal';\n\nimport \"slick-carousel/slick/slick.css\";\nimport \"slick-carousel/slick/slick-theme.css\";\n\nimport '@/scripts';\n\nimport {\n TopNavSearchForm,\n TopNavHeader,\n CompanyPicker,\n InstallRequestButton,\n} from '@/react/components';\nimport Popover from '@/react/shared/Popover';\nimport {\n ListingsIndex,\n ListingsShow,\n MarketplaceIndex,\n} from '@/react/views/V1';\nimport {\n MarketplaceListingContainer,\n MarketplaceAppContainer,\n FAQContainer,\n} from '@/react/views/V2';\n\n// Make React/Jquery Dependencies Global For Rails View Consumption\nwindow.React = React;\nwindow.ReactDOM = ReactDOM;\nwindow.$ = $;\nwindow.jQuery = $;\n\nwindow.TopNavSearchForm = TopNavSearchForm;\nwindow.TopNavHeader = TopNavHeader;\nwindow.Popover = Popover;\nwindow.CompanyPicker = CompanyPicker;\nwindow.InstallRequestButton = InstallRequestButton;\nwindow.ListingsIndex = ListingsIndex;\nwindow.ListingsShow = ListingsShow;\nwindow.MarketplaceListingContainer = MarketplaceListingContainer;\nwindow.MarketplaceAppContainer = MarketplaceAppContainer;\nwindow.Index = MarketplaceIndex;\nwindow.FAQContainer = FAQContainer;\n","$(document).ready(function() {\n // Functions for mobile menu slideout\n $(\"html\").on(\"click\", \".pc-mp-header--menu-button-container\", function() {\n $('.pc-mp-header--menu-sections-container').toggleClass(\"opened\");\n $('body').toggleClass(\"no-scroll\");\n });\n});\n","$(function() {\n $('[data-behavior=\"modal\"]').click(function(event) {\n event.preventDefault();\n\n $(this).modal({\n fadeDuration: 500\n });\n })\n});\n\n\n// Procore Modal\n$(function() {\n $('[data-behavior=\"modal\"]').click(function(event) {\n event.preventDefault();\n\n $(this).modal({\n fadeDuration: 500\n });\n })\n});\n","var map = {\n\t\"./Copliot-Badge.png\": 17373,\n\t\"./app-image-placeholder.png\": 34724,\n\t\"./app-store-icons.png\": 45757,\n\t\"./app_marketplace_logo_V2\": 9630,\n\t\"./app_marketplace_logo_V2.svg\": 9630,\n\t\"./app_marketplace_logo_split.png\": 33985,\n\t\"./appmarketplace_crane_bg.jpg\": 99263,\n\t\"./background.jpg\": 10249,\n\t\"./banner-backgrounds/arrow-left.png\": 62923,\n\t\"./banner-backgrounds/arrow-right.png\": 74676,\n\t\"./community.png\": 27666,\n\t\"./contact\": 10574,\n\t\"./contact.svg\": 10574,\n\t\"./document.png\": 58810,\n\t\"./helpful-links\": 74552,\n\t\"./helpful-links.svg\": 74552,\n\t\"./lets-work-together.jpg\": 23470,\n\t\"./logo-placeholder.png\": 58432,\n\t\"./marketplace_header.png\": 95530,\n\t\"./privacy-icon.png\": 89879,\n\t\"./procore_marketplace.png\": 82169,\n\t\"./security-trust-header.png\": 43610,\n\t\"./submit_an_idea_icon_v1.png\": 48341\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 10452;"],"names":["NodeList","prototype","forEach","Array","Element","CharacterData","DocumentType","item","remove","this","parentNode","removeChild","ArrowNext","React","Box","display","alignItems","justifyContent","style","height","ArrowRight","size","color","ArrowPrev","ArrowLeft","FUSE_CONFIG","ignoreLocation","shouldSort","threshold","location","distance","minMatchCharLength","includeMatches","findAllMatches","keys","name","weight","key","params","axios","method","url","data","additional_properties","headers","window","host","document","getElementsByName","getAttribute","debounce","func","delay","timer","_this","_len","arguments","length","args","_key","clearTimeout","setTimeout","apply","highlight","results","maxLength","undefined","highlightClass","filter","_ref3","matches","map","_ref4","highlightedItem","_objectSpread","match","text","regions","truncated","currStringLen","checkLengthAndTrunc","string","truncatedString","slice","content","reduce","acc","_ref","idx","_ref2","_slicedToArray","start","end","beforeMatch","highlightedMatch","afterMatch","concat","push","createElement","className","_toConsumableArray","renderHighlightedText","value","indices","cx","classNames","styles","i18n","StyledItem","styled","Menu","Item","_templateObject","_taggedTemplateLiteral","colors","gray96","gray85","gray90","AppResults","apps","searchTerm","result","arr","app","viewAll","slug","searchResultsItem","Link","href","Flex","searchResultsItemInner","alt","src","small_logo_url","searchResultsThumbnail","paddingLeft","direction","Typography","search_description","debounceHandleSearchAnalytics","count","trackEvent","marketplace_search_term","marketplace_search_count","StyledSearch","Search","_templateObject2","_state$appSearchResul","appsSearchApiPath","fuse","searchDataState","_ref2$propSearchTerm","propSearchTerm","propSetSearchTerm","_useState2","useState","setLocalSearchTerm","setSearchTerm","useEffect","_useState4","appSearchResults","showResultsMenu","state","setState","handleSetState","newState","then","res","Fuse","search","searchWrapper","autoComplete","id","searchInput","disabled","loading","placeholder","onFocus","onBlur","onChange","e","val","target","onSubmit","searchResultsVisible","searchResultsHidden","searchResultsWrapper","Card","searchResultsMenu","onMouseDown","preventDefault","Options","searchResultsMenuOptions","P","searchResultsText","triggerModalFromClickEvent","$","modal","fadeDuration","MobileMenu","_React$Component","props","_classCallCheck","_callSuper","_inherits","appsBasePath","paramKey","paramVal","category","type","links","getMobileLink","categories","getCategoryPath","_this$props","faqsPath","partnerSignupPath","buildAppPath","communityPath","webinarsPath","signInPath","signOutPath","changeCompanyPath","isSignedIn","getLinkPath","getCategoriesMobileLinks","onClick","DIRECTIONS_CLASS_MAP","east","south","west","Dropdown","isOpen","isOpenInitial","toggleDropdownState","bind","_this2","closeOnSelect","dropdownDirection","dropdownTarget","menuStyles","dropdownDirectionClass","dropdownClasses","children","defaultProps","OnClickOutside","Avatar","avatarCircle","userIcon","email","company","right","dropdownContainer","footer","sendAnalytics","action","label","procoreLabel","procoreAdditionalFields","gtagValue","gtag","event_category","event_label","app_name","TopNavHeader","isSolid","searchOpacity","handleScroll","addEventListener","removeEventListener","animateOnScroll","yOffset","pageYOffset","documentElement","scrollTop","path","get","indexOf","exec","fallBackUrl","currentUser","currentCompany","marketplaceLogoURL","searchPath","marketplaceBasePath","isHeroSearchVisible","headerClasses","TopNavSearchForm","openIdeaSubmitModal","rel","active","isLinkActive","UserAvatar","signOutWithFallbackPath","img","_templateObject3","_templateObject4","SlideContainer","_templateObject5","Slide","_templateObject6","white","EmptySlide","_templateObject7","spacing","lg","SlickWrapper","_templateObject8","blue50","ArrowContainer","_templateObject9","LargeSpacingDivider","_templateObject10","Modal","_templateObject11","_templateObject12","_templateObject13","button","_templateObject14","H1","_templateObject15","_templateObject16","_templateObject17","sm","_templateObject18","md","xs","gray94","div","_templateObject19","_templateObject20","UnderlineModalHeader","Header","_templateObject21","MinWidthModal","_templateObject22","MinWidthModalBody","Body","_templateObject23","MediaContainer","_templateObject24","SidebarContainer","_templateObject25","UnderlineLink","_templateObject26","SlickDots","ul","StyledSlider","Slider","SingleCarousel","settings","slides","handleOnSlideClick","sliderSettings","focusOnSelect","dots","infinite","slidesToShow","slidesToScroll","fade","adaptiveHeight","appendDots","prevArrow","nextArrow","slide","index","appName","_ref$email","_ref$company","_ref$developerAppId","developerAppId","contactUsEmail","createLead","_ref$sendAnalytics","_ref$isSignedIn","useI18nContext","formSubmitted","setFormSubmitted","modalOpen","setModalOpen","openContactModal","useCallback","MktoForms2","loadForm","form","vals","Email","Company","Marketplace_Interest__c","marketplaceDeveloperAppId","marketplacePartnerEmail","marketplaceProcoreBuiltApp","onSuccess","closeContactModal","sent_form","Button","variant","t","defaultValue","Tooltip","overlay","placement","trigger","open","onClickOverlay","onClose","paddingTop","H2","SmallLogoWrapper","MediumLogoWrapper","SmallLogo","Container","ContentContainer","arrows","css","SlickArrowPrev","SlickArrowNext","OrangeLink","ImageModal","ModalImageBody","ModalImage","CloseImageModalButton","HeaderText","UnstyledLink","DropdownMenu","DropdownItem","Divider","HeaderContainer","PageHeader","Page","ResponsiveFlex","TruncatedText","ADDITIONAL_CATEGORY_LINKS","COMPONENT_MAP","iframe","fullscreen","sidepanel","NAVIGATION_MENU_ITEMS","icon","Wrench","PeopleGroup","Handshake","LightBulb","Presentation","BookInfo","BottomBorderFlex","StyledComponentsText","black","FlexFullWidthChildren","components","isBeta","mappedComponents","padding","minHeight","minWidth","image_url","LazyLoad","width","maxHeight","grow","margin","intent","str","n","useWordBoundary","subString","substr","lastIndexOf","truncate","status","component","Boolean","join","PopoverHeader","PopoverBody","Popover","Content","zIndex","maxWidth","gap","ShieldStar","ExternalLink","companyName","getActionButton","_ref$metricsData","metricsData","user","built_by","contact_us_email","create_lead","developer_app_id","small_logo","price_button","seller","security_questionnaire_visible","direct_installable","installCount","headerIcons","Icon","Building","translation","isVisible","Help","Download","toNumber","precision","Breadcrumbs","LinkButton","ChevronLeft","gray15","flexWrap","marginRight","imagePath","Title","marginTop","marginLeft","gray30","SecurityBadge","Pill","ContactForm","isInstalled","installed","StyledSidebar","MenuItem","attrs","orange50","FlexMenuContainer","suffix","endsWith","pathname","paddingBottom","paddingRight","StyledLI","li","StyledH3","H3","StyledPlus","Plus","as","listStyleType","html","setParsedHTML","container","innerHTML","trim","body","appendChild","wistiaIframe","getElementsByTagName","wistiaScript","description","video","parentElement","wistiaDom","getElementsByClassName","substring","split","s","async","s1","head","append","position","left","opacity","overflow","top","transition","objectFit","outerHTML","Styles","SectionHeader","VersionHistory","history","showingVersion","_React$useState2","setOpen","isArray","every","v","changelog","version","semantic_version","reverse","VERSION_HISTORY","created_at","Footer","FooterButtons","onSearchChange","searchValue","setSearchValue","stopPropagation","I18n","companyCounter","CompanyPicker","companyId","handleSearch","companies","toLowerCase","setCompanyId","continuePath","linkTo","selectedCompany","find","c","procore_root","qs","SearchInput","renderCompanies","POST_HEADERS","getHeaders","querySelector","popoverWrapper","popoverTarget","popoverContent","api","installRequestsPath","notes","InstallRequestButton","requestSent","error","on","AFTER_CLOSE","setNotes","self","response","setRequestSent","setError","close","_this3","_this$state","_this$props2","requested","installRequestContainer","buttonContainer","popover","requestModal","notesInput","modalFooter","footerButtons","footerButton","request_sent","requestInstall","viewBox","fill","xmlns","d","SearchContext","createContext","SearchProvider","setFuse","_useState6","setAppSearchResults","_useState8","isLoading","setIsLoading","performSearch","useMemo","term","contextValue","Provider","highlightedResults","SearchBox","backgroundColor","hoverColor","Input","SearchButton","SearchResultsMenu","styledSearch","_useSearch","useContext","searchRef","useRef","handleClickOutside","event","current","contains","ref","SearchResults","InfoButton","MenuTile","menuRows","rows","renderMenu","Grid","gutterX","gutterY","row","rowIndex","rowKey","Row","itemIndex","Col","renderMenuItem","OverlayTrigger","appDetails","installationRequest","apiPath","present","companyInstallationRequestsEnabled","sectionNavEnabled","header","listing","query","AppContext","useAppContext","AppContextProvider","StyledBox","CompanyName","colWidth","Import","red50","stroke","cursor","Person","borderRadius","useMediaQuery","matchMedia","setMatches","mediaQueryList","handleChange","toggleMenu","title","MobileLogo","Clear","BodyContainer","block","role","FullButton","FooterContainer","UserSection","MenuWrapper","MenuHeader","MenuBody","MenuFooter","StyledLogo","NavContainer","MobileMenuContainer","isSearchVisible","isMenuOpen","setIsMenuOpen","isMobile","isTablet","isDesktop","ProcoreLogo","flex","SearchBar","List","SupportMenu","ProfileBox","fillOpacity","strokeWidth","SidebarWrapper","ListingsAppsWrapper","AppsNotFoundWrapper","FlexListMarginChild","FlexList","startsWith","replace","listings","ListingsSidebar","boxProps","marginBottom","space","wrap","ListingsAppCard","NoResults","appInstallPost","componentMap","ListingsShow","_screenshots$","headerProps","pricing","website","category_names","install_path","screenshots","countries","versioning_history","security_badge","new_draft_preview","security_questionnaire_document","filteredComponents","expanded","setExpanded","toggleExpanded","colWidthsContent","tabletLg","tabletMd","colWidthSidebar","parsedHTML","imageModalOpen","setImageModalOpen","currentImageUrl","setCurrentImageUrl","speed","beforeChange","curr","WistiaExtract","colStackCap","isCompanyAdmin","dangerouslySetInnerHTML","__html","borderBottom","alignContent","ChevronUp","ChevronDown","fontSize","Object","Info","region","rc","includes","regionCountry","float","useVisibility","offset","initialVisibility","setIsVisible","elementRef","checkVisibility","_elementRef$current$g","getBoundingClientRect","bottom","withinViewport","innerHeight","Hero","_useVisibility2","heroSearchElement","setSearchDataState","assign","lineHeight","createI18njs","locale","translations","en","navbar","community","partner","idea","webinars","faq","companySwitch","logout","supportCenter","hero","tagline","builtBy","builtByOverlay","supportedBy","supportedByOverlay","installs","installsOverlay","securityBadge","beta","partnerAnswered","link","responsibility","learnMore","loginToInstall","mustBeAdmin","installApp","noHelpfulLinks","noRegions","partnerSecurityReview","partnerSecurityDescription","partnerSecurityLink","partnerSecurityBadge","partnerSecurityBadgeLink","titleNoPricing","soldBy","faqs","descriptionNoPricing","contactPartner","faqsHeaderPart1","faqsHeaderPart2","faqsHeaderPart3","subscriptionRequired","yes","no","thirdPartyConnectorRequired","freeTrialOffered","security","informationNotProvided","informationNotProvidedDetails","review","reviewDetails","aboutApp","legalName","headquarters","privacy","informationSecurity","applicationSecurity","dataProcessingLocations","subprocessors","subprocessorsPersonalData","dedicatedFunction","audits","hasAudits","accredidations","penTesting","dataLoss","vulnerabilityDisclosure","vulnerabilityDisclosureProgram","disclosureUrl","bugBounty","aesEncryption","tlsEncryption","ssoSupported","samlSupported","mfaRequired","pfasSupported","contactMessage","technicalMeasures","securityTeam","bugBountyProgram","vulnerabilityProgram","standards","media","titleNoMedia","descriptionNoMedia","toolsInformation","toolsInformationLink","labels","titles","contact","features","functionality","helpfulLinks","howItWorks","overview","requirements","summary","support","tools","embeddedType","appType","availableIn","joinCommunity","integrations","inThe","displayType","sideBar","embeddedTypePopover","both","embedded","dataConnector","dataConnectorAndEmbedded","appTypePopover","appTypeLink","returnToListing","regionModal","historyModal","noChangelog","sectionNav","contactUs","formDescription","thanksForVisiting","submitted","issues","mustLogIn","myAccount","login","searchLoading","noResults","learnHow","thankYou","ariaLabels","supportButton","account","global","appMarketplace","pricingDescription","connectorRequired","hasTrials","pricingUrl","blue45","tabletSm","fontWeight","textDecoration","gray70","sanitizeOptions","allowedTags","allowedAttributes","a","allowedStyles","useSanitizedString","sanitizedString","setSanitizedString","sanitizeHtml","useSanitizedArray","array","sanitizedArray","setSanitizedArray","sanitizedDescription","sanitizedHowItWorks","sanitizedFeatures","sanitizedRequirements","feature","requirement","tool","Logo","Label","BreakingLine","hr","ConditionalLine","condition","affirmative","negative","Check","green30","red30","CollapsibleSection","openSection","setOpenSection","sectionId","questionnaire","sanitizedAbout","about","securityStandards","security_standards","standard","standard_name","other_security_standards","blue94","gray40","RibbonPerson","company_legal_name","headquarters_country","Location","data_processing_locations","has_subprocessors","subprocessors_details","has_sensitive_data","sensitive_data_handling_details","has_security_contact","security_email","has_security_audits","has_bug_bounty_program","has_disclosure_program","disclosure_program_url","has_security_standards","has_penetration_testing","can_notify_procore","has_data_encryption_at_rest","has_data_encryption_in_transit","has_sso_support","has_saml_support","has_mfa_support","has_fas_support","ContactContainer","ContactsContainer","ContactType","DualSectionsContainer","EmptyState","HelpfulLinksContainer","LinksContainer","SectionContainer","StyledExternalLink","StyledExternalLinkContainer","StyledH1","StyledH2","StyledLink","SupportCard","CountryList","RegionModal","isRegionsOpen","setIsRegionsOpen","mappedCountries","setMappedCountries","newMappedCountries","columns","column","Math","ceil","country","regionIndex","_countries$region","alignSelf","DividerSection","VersionHistoryModal","versionHistory","isModalOpen","setIsModalOpen","w","EMBEDDED_TYPES","getEmbeddedType","hasEmbedded","some","AppType","getType","EmbeddedTypePopover","EmbeddedType","translatedComponents","CategoryPill","xxs","SectionLabel","RowGapFlex","SideBarSection","_versioning_history","_useAppContext$appDet","latestVersion","hasEmbeddedComponents","setHasEmbeddedComponents","displayVersion","rowGap","ModalLogo","MediaSection","Section","ModalBody","logoURL","imageURL","WistiaImage","WistiaEmbed","VideoPreview","wistiaId","onBeforeChange","setMainCarousel","thumbnailCarousel","openImageModal","asNavFor","ImageStack","VideoThumbnail","setThumbnailCarousel","mainCarousel","responsive","breakpoint","MAX_THUMBNAIL_SLIDES","PlayButton","handleBeforeChange","_","next","_screenshots","MainCarousel","ThumbnailCarousel","ScrollAnchor","LocalTab","BorderBox","FlexContainer","MediaResponsiveFlex","SectionNav","sections","sectionRefs","section","overRideActiveSection","setOverRideActiveSection","activeSection","setActiveSection","lastIntersection","targetRefs","currentIntersections","setCurrentIntersections","setLastIntersection","intersectionMap","observer","IntersectionObserver","entry","previous","isIntersecting","observe","unobserve","disconnect","useIntersection","scrollIntoView","behavior","overviewRef","functionalityRef","pricingRef","securityRef","supportRef","AppHeader","desktopSm","MediaCarousel","SideBar","OverviewSection","border","borderTop","FunctionalitySection","how_it_works","feature_bullets","product_tools","xxl","background","PricingSection","pricing_description","subscription_required","connector_required","has_trials","pricing_url","SecuritySection","security_questionnaire","SupportSection","helpful_links","I18nProvider","Navbar","AppDetails","ListingContainer","MarketplaceListing","FAQBox","orange40","question","answer","FAQ","images","require","ReactDOM","jQuery","ListingsIndex","MarketplaceListingContainer","MarketplaceAppContainer","Index","MarketplaceIndex","FAQContainer","ready","toggleClass","click","webpackContext","req","webpackContextResolve","__webpack_require__","o","Error","code","resolve","module","exports"],"sourceRoot":""}