{"version":3,"file":"js/956-41bac7c52c5e9d78678b.chunk.js","mappings":"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","sources":["webpack://hnmi/./app/webpacker/Environment/GtmDataLayerManager.tsx","webpack://hnmi/./app/webpacker/appGraphqlClient.ts","webpack://hnmi/./app/webpacker/AppProvider.tsx","webpack://hnmi/./app/webpacker/Components/Banners/BannerBase.tsx","webpack://hnmi/./app/webpacker/Components/Banners/AdminBanner.tsx","webpack://hnmi/./app/webpacker/Components/Banners/bannerFragment.ts","webpack://hnmi/./app/webpacker/Components/Banners/useBannerQuery.ts","webpack://hnmi/./app/webpacker/Components/ContentSubmitButton.tsx","webpack://hnmi/./app/webpacker/Components/ContentTextField.tsx","webpack://hnmi/./app/webpacker/Components/HtmlTypography.tsx","webpack://hnmi/./app/webpacker/Components/Navbar/usePropertyManagersMenu.tsx","webpack://hnmi/./app/webpacker/Components/Navbar/useUserMenu.tsx","webpack://hnmi/./app/webpacker/Components/Navbar/useAdminsMenu.tsx","webpack://hnmi/./app/webpacker/Components/Navbar/MobileNavbar.tsx","webpack://hnmi/./app/webpacker/Components/Navbar/DesktopNavbar.tsx","webpack://hnmi/./app/webpacker/Components/Navbar/Navbar.tsx","webpack://hnmi/./app/webpacker/Components/DataLoader.tsx","webpack://hnmi/./app/webpacker/Components/KeyVals.tsx","webpack://hnmi/./app/webpacker/Components/RoleFilter.tsx","webpack://hnmi/./app/webpacker/Components/OrgFilter.tsx","webpack://hnmi/./app/webpacker/Components/LoadingBox.tsx","webpack://hnmi/./app/webpacker/Components/IconText.tsx","webpack://hnmi/./app/webpacker/Hooks/useDataLayerVariable.ts","webpack://hnmi/./app/webpacker/Hooks/useHasPermissions.tsx","webpack://hnmi/./app/webpacker/MyAccount/Hooks/useMyAccount.ts","webpack://hnmi/./app/webpacker/MyAccount/Hooks/useMyPermissions.ts","webpack://hnmi/./app/webpacker/Routes/PageNotFound.tsx","webpack://hnmi/./app/webpacker/Routes/NavFallback.tsx","webpack://hnmi/./app/webpacker/User/Components/TwoFactorSetup.tsx","webpack://hnmi/./app/webpacker/Routes/Routes.tsx","webpack://hnmi/./app/webpacker/User/Components/UserForm.tsx","webpack://hnmi/./app/webpacker/User/Hooks/userHooks.ts","webpack://hnmi/./app/webpacker/utils/query.ts","webpack://hnmi/./app/webpacker/utils/readCsrfToken.ts","webpack://hnmi/./app/webpacker/utils/validations.ts"],"sourcesContent":["import useDataLayerVariable from \"Hooks/useDataLayerVariable\";\nimport useMyAccount from \"MyAccount/Hooks/useMyAccount\";\nimport pick from \"lodash-es/pick\";\nimport React, { useEffect } from \"react\";\n\nlet gtmDataLayerManagerMounted = false;\n\nconst GtmDataLayerManager: React.FC = () => {\n const [user] = useMyAccount();\n\n useEffect(() => {\n window.dataLayer.push({ user: undefined });\n window.dataLayer.push({ organizationId: undefined });\n\n if (gtmDataLayerManagerMounted)\n console.warn(\n \"Two instances of GtmDataLayerManager are mounted. This should not cause an error, but only one should be mounted at a time\",\n );\n\n gtmDataLayerManagerMounted = true;\n return () => {\n gtmDataLayerManagerMounted = false;\n };\n }, []);\n\n useDataLayerVariable(\"user\", user ? pick(user, \"id\", \"role\") : undefined);\n // useEffect(() => {\n // if (user) {\n // window.dataLayer.push({ user: pick(user, 'id', 'role') })\n // } else {\n // window.dataLayer.push({ user: null })\n // }\n // }, [user])\n\n return null;\n};\n\nexport default GtmDataLayerManager;\n","import { ApolloClient, ApolloLink, InMemoryCache } from \"@apollo/client\";\nimport { RetryLink } from \"@apollo/client/link/retry\";\nimport { BatchHttpLink } from \"apollo-link-batch-http\";\nimport { createUploadLink } from \"apollo-upload-client\";\nimport readCsrfToken from \"utils/readCsrfToken\";\n// @ts-ignore: Yes, it can import this\nimport FRAGMENT_TYPES from \"./fragmentTypes.json\";\n\nconst options: BatchHttpLink.Options = {\n uri: \"/graphql\",\n credentials: \"include\",\n headers: {\n \"X-CSRF-Token\": readCsrfToken(),\n },\n batchKey: (operation) => {\n // Send all initial site info queries in their own batch\n if ([\"myAccount\", \"MyPermissions\", \"BannerQuery\"].includes(operation.operationName))\n return \"initial-data\";\n return \"\";\n },\n};\n\nconst cleanInput = new ApolloLink((operation, forward) => {\n if (operation.variables) {\n const omitTypename = (key: string, value: any) => {\n if (key === \"__typename\") return undefined;\n if (key === \"fileUrl\") return undefined;\n if (key === \"updatedAt\") return undefined;\n if (key === \"createdAt\") return undefined;\n return value;\n };\n operation.variables = JSON.parse(JSON.stringify(operation.variables), omitTypename);\n }\n return forward(operation).map((data) => {\n return data;\n });\n});\n\nconst retryLink = new RetryLink();\n\nconst httpLink = ApolloLink.from([\n cleanInput,\n ApolloLink.split(\n (operation) => operation.getContext().hasUpload,\n createUploadLink(options) as unknown as ApolloLink, // Hack to handle update\n ApolloLink.from([retryLink, new BatchHttpLink(options) as unknown as ApolloLink]), // Hack to handle update\n // new HttpLink(options),\n ),\n]);\n\n// \nconst possibleTypes: { [key: string]: string[] } = {};\n\nFRAGMENT_TYPES.__schema.types.forEach(\n (supertype: { kind: string; name: string; possibleTypes: { name: string }[] }) => {\n if (supertype.possibleTypes) {\n possibleTypes[supertype.name] = supertype.possibleTypes.map((subtype) => subtype.name);\n }\n },\n);\n// \n\nconst appGraphqlClient = new ApolloClient({\n link: httpLink,\n cache: new InMemoryCache({ possibleTypes }),\n});\n\nexport default appGraphqlClient;\n","import { ApolloProvider } from \"@apollo/client\";\nimport GtmDataLayerManager from \"Environment/GtmDataLayerManager\";\nimport appGraphqlClient from \"appGraphqlClient\";\nimport React, { ReactNode } from \"react\";\nimport { DndProvider } from \"react-dnd\";\nimport { HTML5Backend } from \"react-dnd-html5-backend\";\n\nconst AppProvider: React.FC> = ({ children }) => {\n return (\n \n \n \n {children}\n \n \n );\n};\nexport default AppProvider;\n","import { Box, Collapse, IconButton } from \"@mui/material\";\nimport { makeStyles } from \"tss-react/mui\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport useIsMobile from \"Hooks/useIsMobile\";\nimport React from \"react\";\n\nexport type BannerBaseProps = {\n mobile?: boolean;\n open?: boolean;\n onClose?: () => void;\n center?: boolean;\n};\n\ntype StyleProps = {\n bgColor?: string;\n color?: string;\n linkColor?: string;\n};\n\nconst useStyles = makeStyles()(\n ({ spacing, breakpoints, palette }, { color, bgColor, linkColor }) => ({\n appBar: {\n color,\n backgroundColor: bgColor,\n },\n mobile: {\n top: 56,\n [breakpoints.up(\"sm\")]: {\n top: 64,\n },\n },\n desktop: {},\n closeButton: {\n padding: 0,\n paddingLeft: spacing(0.5),\n paddingRight: spacing(1),\n position: \"absolute\",\n borderRadius: 2,\n margin: \"4px\", // for focus outline\n height: \"80%\",\n top: 0,\n right: 0,\n outlineOffset: \"-50px\",\n color: color || palette.primary.contrastText,\n },\n content: {\n position: \"relative\",\n paddingLeft: spacing(3),\n paddingRight: spacing(6), // for close button\n paddingTop: spacing(1),\n paddingBottom: spacing(1),\n \"& a\": {\n color: linkColor || \"#0B66AD\",\n },\n \"& p\": {\n marginTop: \"0px\",\n marginBottom: \"0px\",\n },\n },\n }),\n);\n\nconst BannerBase: React.FC> = ({\n color,\n bgColor,\n linkColor,\n children,\n open,\n onClose,\n center,\n}) => {\n const mobile = useIsMobile();\n const { classes, cx } = useStyles({ color, bgColor, linkColor });\n\n return (\n \n \n \n {children}\n \n \n \n \n \n \n );\n};\n\nexport default BannerBase;\n","import HtmlTypography from \"Components/HtmlTypography\";\nimport { Banner, BannerColorEnum } from \"gqlTypes\";\nimport React from \"react\";\nimport BannerBase, { BannerBaseProps } from \"./BannerBase\";\n\nconst AdminBannerColors = {\n [BannerColorEnum.Blue]: {\n color: \"#253567\",\n bgColor: \"#E1F2FF\",\n },\n [BannerColorEnum.Yellow]: {\n color: \"#4F2600\",\n bgColor: \"#FFF0D9\",\n },\n [BannerColorEnum.Red]: {\n color: \"#4F0000\",\n bgColor: \"#FFDDDA\",\n },\n};\nconst AdminBanner: React.FC> = ({\n banner,\n ...props\n}) => {\n return (\n \n \n \n );\n};\n\nexport default AdminBanner;\n","import { gql } from \"@apollo/client\";\n\nexport const BANNER_QF = gql`\n fragment BannerFields on Banner {\n color\n content\n active\n }\n`;\n","import { gql, useQuery } from \"@apollo/client\";\nimport { Banner } from \"gqlTypes\";\nimport { useMemo } from \"react\";\nimport { featureIsToggled } from \"utils/featureToggle\";\nimport { FeatureToggle } from \"gqlTypes\";\nimport { getFragmentName } from \"utils/query\";\n\nimport { BANNER_QF } from \"./bannerFragment\";\n\nexport const QUERY = gql`\n query BannerQuery {\n banner {\n ...${getFragmentName(BANNER_QF)}\n __typename\n }\n }\n ${BANNER_QF}\n`;\n\nexport type ResultsType = {\n banner: Banner | null;\n};\n\nconst useBannerQuery = () => {\n const { data, ...status } = useQuery(QUERY, {\n skip: !featureIsToggled(FeatureToggle.AdminBanner),\n });\n\n if (status.error) throw status.error;\n\n return useMemo(() => [data?.banner, status] as const, [data, status]);\n};\n\nexport default useBannerQuery;\n","import { Button, ButtonProps } from \"@mui/material\";\nimport { useFormikContext } from \"formik\";\nimport React, { ReactNode } from \"react\";\n\ntype Props = {\n children: ReactNode;\n} & ButtonProps;\n\nconst ContentSubmitButton: React.FC> = ({\n color = \"primary\",\n ...props\n}) => {\n const { submitForm, isSubmitting, status } = useFormikContext();\n const disabled = status === \"disabled\";\n return (\n {\n submitForm().then(() => Promise.resolve(props.onClick && props.onClick(...args)));\n }}\n />\n );\n};\n\nexport default ContentSubmitButton;\n","import { OutlinedTextFieldProps, TextField } from \"@mui/material\";\nimport { useField, useFormikContext } from \"formik\";\nimport React, { useCallback } from \"react\";\n\ntype Props = Partial;\n\nconst normalizeTextValue = (value: string, type: string) => {\n let parsed;\n switch (type.toLowerCase()) {\n case \"number\":\n parsed = value ? Number(value) : NaN;\n return isNaN(parsed) ? null : parsed;\n default:\n return value;\n }\n};\n\nconst ContentTextField: React.FC> = ({\n value,\n onChange: ignored,\n ...props\n}) => {\n const [field, { error }] = useField(props.name!);\n const { setFieldValue } = useFormikContext();\n const handleChange = useCallback(\n (e: React.ChangeEvent) => {\n const { value, type } = e.currentTarget;\n setFieldValue(props.name!, normalizeTextValue(value, type));\n },\n [setFieldValue, props.name],\n );\n return (\n \n );\n};\n\nexport default ContentTextField;\n","import React from \"react\";\nimport { Typography, Link, TypographyVariant } from \"@mui/material\";\nimport parse, { domToReact, HTMLReactParserOptions, attributesToProps } from \"html-react-parser\";\nimport { Element } from \"domhandler/lib/node\";\nimport omit from \"lodash-es/omit\";\n\nexport type HtmlTypographyProps = {\n html?: string | null | undefined;\n replace?: HTMLReactParserOptions[\"replace\"];\n typographyVariant?: TypographyVariant;\n};\n\nconst HtmlTypography: React.FC> = ({\n html,\n replace = () => {},\n typographyVariant,\n}) => {\n const options: HTMLReactParserOptions = {\n replace: (domNode) => {\n const replaced = replace(domNode);\n if (replaced) return replaced;\n if (domNode instanceof Element) {\n if (domNode.name === \"a\")\n return (\n \n {domToReact(domNode.children, options)}\n \n );\n if (domNode.name === \"p\") {\n return (\n \n {domToReact(domNode.children, options)}\n \n );\n }\n if (domNode.name === \"li\")\n return (\n \n {domToReact(domNode.children, options)}\n \n );\n return (\n <>\n {domToReact(\n [{ ...domNode, attribs: omit(domNode.attribs, \"style\") } as typeof domNode],\n options,\n )}\n >\n );\n }\n },\n };\n return <>{html && parse(html, options)}>;\n};\n\nexport default HtmlTypography;\n","import useMyAccount from \"MyAccount/Hooks/useMyAccount\";\nimport React from \"react\";\nimport { NavbarLink, NavbarRouteLink, NavbarMenu } from \"Components/NavbarComponents/NavbarItems\";\nimport { useFormatMessage } from \"Localization/hooks\";\nimport { GtmLabels, GtmTriggers } from \"types\";\nimport * as URLS from \"consts/urls\";\n\nconst usePropertyManagersMenu = () => {\n const [user] = useMyAccount();\n const t = useFormatMessage();\n\n if (!user)\n return (\n \n \n \n \n );\n\n const hasItems = user?.organizationLinks && user.organizationLinks.length > 0;\n\n let items: JSX.Element[] = [];\n if (hasItems) {\n items = (user?.organizationLinks || []).map((link) => (\n \n ));\n } else {\n items.push(\n ,\n );\n }\n items.push(\n ,\n );\n return (\n \n {items}\n \n );\n};\n\nexport default usePropertyManagersMenu;\n","import useMyAccount from \"MyAccount/Hooks/useMyAccount\";\nimport React from \"react\";\nimport { NavbarRouteLink, NavbarMenu, NavbarAction } from \"Components/NavbarComponents/NavbarItems\";\nimport { useDestroyUserSession } from \"User/Hooks/userHooks\";\nimport AccountCircleIcon from \"@mui/icons-material/AccountCircle\";\nimport useIsMobile from \"Hooks/useIsMobile\";\nimport { GtmLabels, GtmTriggers } from \"types\";\n\nconst useUserMenu = () => {\n const [user, { loading }] = useMyAccount();\n const [handleLogout] = useDestroyUserSession();\n const isMobile = useIsMobile();\n\n const menuNode = (\n \n ) : (\n \n {user?.name || user?.email || \"User\"}\n \n \n \n )\n }\n label=\"show account menu\"\n GtmWrapperProps={{\n trigger: GtmTriggers.HeaderNavMenu,\n label: GtmLabels.HeaderNavMenuAccount,\n }}\n >\n \n \n \n );\n\n return [menuNode, loading] as const;\n};\n\nexport default useUserMenu;\n","import React from \"react\";\nimport { NavbarRouteLink, NavbarMenu } from \"Components/NavbarComponents/NavbarItems\";\nimport { GtmLabels, GtmTriggers } from \"types\";\nimport { useHasRootPermissions } from \"Hooks/useHasPermissions\";\nimport useMyPermissions from \"MyAccount/Hooks/useMyPermissions\";\n\nconst useAdminsMenu = () => {\n const [, { loading }] = useMyPermissions();\n\n const canAccessAdminFeatures = useHasRootPermissions([\n \"canAdminSearch\",\n \"canAdministerListings\",\n \"canClearCaches\",\n \"canCreateAdminUsers\",\n \"canCreateNonAdminUsers\",\n \"canCreateOrganizations\",\n \"canExportRecords\",\n \"canImportRecords\",\n \"canSetAdminBanner\",\n \"canViewNonPublicListings\",\n \"canViewSensitiveListings\",\n ]);\n\n const canAdminSearch = useHasRootPermissions(\"canAdminSearch\");\n\n const canAdministerUsers = useHasRootPermissions([\n \"canCreateAdminUsers\",\n \"canCreateNonAdminUsers\",\n ]);\n\n const canAdministerOrganizations = useHasRootPermissions(\"canCreateOrganizations\");\n\n const canAccessImports = useHasRootPermissions(\"canImportRecords\");\n\n const canAccessUtilities = useHasRootPermissions([\"canSetAdminBanner\", \"canClearCaches\"]);\n const canAccessDsi = useHasRootPermissions([\"canAdministerListings\"]);\n\n const menuNode = (\n \n {canAdminSearch && (\n \n )}\n {canAdministerUsers && (\n \n )}\n {canAdministerOrganizations && (\n \n )}\n {canAccessImports ? (\n \n ) : null}\n {canAccessUtilities && (\n \n )}\n {canAccessDsi && (\n \n )}\n \n );\n\n return [canAccessAdminFeatures ? menuNode : null, loading] as const;\n};\n\nexport default useAdminsMenu;\n","import React from \"react\";\nimport MenuIcon from \"@mui/icons-material/Menu\";\nimport MobileNavbarContainer from \"Components/NavbarComponents/MobileNavbar\";\nimport { NavbarLink, NavbarMenu } from \"Components/NavbarComponents/NavbarItems\";\nimport usePropertyManagersMenu from \"./usePropertyManagersMenu\";\nimport useUserMenu from \"./useUserMenu\";\nimport useAdminsMenu from \"./useAdminsMenu\";\nimport { NavbarProps } from \"./Navbar\";\nimport { Box } from \"@mui/material\";\nimport * as URLS from \"consts/urls\";\nimport { useFormatMessage } from \"Localization/hooks\";\nimport GoogleTranslate from \"Components/GoogleTranslate\";\nimport { featureIsToggled } from \"utils/featureToggle\";\nimport { FeatureToggle } from \"gqlTypes\";\nimport { GtmLabels, GtmTriggers } from \"types\";\n\nconst MobileNavbar: React.FC> = ({\n noUser = false,\n noTranslate = false,\n bannerContent,\n}) => {\n const propertyManagersMenu = usePropertyManagersMenu();\n const [userMenu] = useUserMenu();\n const [adminsMenu] = useAdminsMenu();\n const t = useFormatMessage();\n return (\n <>\n \n {noUser ? <>> : userMenu}\n }\n label={t(\"navigation.mobile\")}\n GtmWrapperProps={{\n trigger: GtmTriggers.HeaderNavMenu,\n label: GtmLabels.HeaderNavMenuMobile,\n }}\n >\n \n \n {adminsMenu || <>>}\n {propertyManagersMenu}\n {featureIsToggled(FeatureToggle.GoogleTranslate) && !noTranslate && (\n \n \n \n )}\n \n \n >\n );\n};\n\nexport default MobileNavbar;\n","import React from \"react\";\n\nimport DesktopNavbarContainer from \"Components/NavbarComponents/DesktopNavbar\";\nimport { NavbarLink } from \"Components/NavbarComponents/NavbarItems\";\nimport usePropertyManagersMenu from \"./usePropertyManagersMenu\";\nimport useUserMenu from \"./useUserMenu\";\nimport useAdminsMenu from \"./useAdminsMenu\";\nimport { NavbarProps } from \"./Navbar\";\nimport { useFormatMessage } from \"Localization/hooks\";\nimport * as URLS from \"consts/urls\";\nimport { GtmLabels, GtmTriggers } from \"types\";\nimport { Skeleton } from \"@mui/material\";\n\nconst DesktopNavbar: React.FC> = ({\n noUser = false,\n noTranslate,\n bannerContent,\n}) => {\n const t = useFormatMessage();\n const propertyManagersMenu = usePropertyManagersMenu();\n const [userMenu, userLoading] = useUserMenu();\n const [adminsMenu, adminLoading] = useAdminsMenu();\n\n return (\n <>\n {userLoading || adminLoading ? (\n \n \n \n ) : (\n \n \n \n {adminsMenu || <>>}\n {propertyManagersMenu}\n {noUser ? <>> : userMenu}\n \n )}\n >\n );\n};\n\nexport default DesktopNavbar;\n","import React, { useState } from \"react\";\n\nimport MobileNavbar from \"./MobileNavbar\";\nimport DesktopNavbar from \"./DesktopNavbar\";\nimport useIsMobile from \"Hooks/useIsMobile\";\nimport { useFetchCurrentUser } from \"User/Hooks/userHooks\";\nimport AdminBanner from \"Components/Banners/AdminBanner\";\nimport useBannerQuery from \"../Banners/useBannerQuery\";\n\nexport type NavbarProps = {\n bannerContent?: React.ReactNode;\n noUser?: boolean;\n noTranslate?: boolean;\n};\n\nconst Navbar: React.FC>> = (props) => {\n const [currentUser] = useFetchCurrentUser();\n const [banner] = useBannerQuery();\n const [bannerOpen, setBannerOpen] = useState(true);\n const handleBannerClose = () => setBannerOpen(false);\n\n let bannerContent: React.ReactNode | undefined = undefined;\n\n if (banner && banner.active)\n bannerContent = ;\n\n return useIsMobile() ? (\n \n ) : (\n \n );\n};\n\nexport default Navbar;\n","import { ReactElement, PropsWithChildren } from \"react\";\n\ntype LoaderRenderType = {\n loading?: () => ReactElement;\n error?: (error: Error) => ReactElement;\n data?: (data: T) => ReactElement;\n empty?: () => ReactElement;\n};\n\ntype DataLoaderProps = {\n data: T | undefined | null;\n loading?: boolean;\n error?: Error;\n render?: LoaderRenderType;\n};\n\nconst DataLoader = ({\n loading,\n error,\n data,\n render = {},\n}: PropsWithChildren>): ReactElement | null => {\n if (error) return render.error ? render.error(error) : null;\n if (loading) return render.loading ? render.loading() : null;\n if (!data || (Array.isArray(data) && data.length <= 0))\n return render.empty ? render.empty() : null;\n if (data) return render.data ? render.data(data) : null;\n return null;\n};\n\nexport default DataLoader;\n","import React from \"react\";\nimport { Box, Typography } from \"@mui/material\";\n\nconst transformVal = (val: any): string => {\n if (!val) return \"\";\n if (typeof val === \"object\") {\n if (Array.isArray(val)) return \"[ ... ]\";\n return JSON.stringify(val);\n }\n if (val && val.toString) return val.toString();\n return \"\";\n};\n\nconst KeyVals: React.FC> = ({\n obj,\n exclude,\n}) => {\n return (\n \n {Object.entries(obj)\n .filter(([key]) => !exclude || !exclude?.includes(key))\n // .sort(([k1], [k2]) => k1 > k2 ? 1 : -1)\n .map(([key, val]) => (\n \n \n {key}\n \n {transformVal(val)}\n \n ))}\n \n );\n};\n\nexport default KeyVals;\n","import React, { ReactNode } from \"react\";\n\nimport useMyAccount from \"MyAccount/Hooks/useMyAccount\";\nimport useMyPermissions from \"MyAccount/Hooks/useMyPermissions\";\n\nconst RoleFilter: React.FC<\n React.PropsWithChildren<{\n admin?: true;\n superadmin?: true;\n allowUnauthenticated?: boolean;\n otherwise?: ReactNode;\n fallback?: ReactNode; // Rendered if query is loading\n }>\n> = ({ admin, superadmin, otherwise, allowUnauthenticated = false, fallback, children }) => {\n const [user, { loading: userLoading }] = useMyAccount();\n const [permissions, { loading: permissionsLoading }] = useMyPermissions();\n\n let hasRole = false;\n\n if (admin && permissions?.canAdmin) hasRole = true;\n if (superadmin && permissions?.canSuperadmin) hasRole = true;\n\n if (userLoading || permissionsLoading) return fallback ? <>{fallback}> : null;\n\n if (user && hasRole) return <>{children}>;\n // Just checking if the user is logged in\n if (user && !admin && !superadmin) return <>{children}>;\n if (allowUnauthenticated) return <>{children}>;\n if (otherwise) return <>{otherwise}>;\n return null;\n};\n\nexport default RoleFilter;\n","import React, { ReactNode } from \"react\";\n\nimport useMyAccount from \"MyAccount/Hooks/useMyAccount\";\n\nconst OrgFilter: React.FC<\n React.PropsWithChildren<{\n orgId: string;\n roles?: string[];\n otherwise?: ReactNode;\n }>\n> = ({ orgId, roles, otherwise, children }) => {\n const [user, { loading }] = useMyAccount();\n\n if (loading) return null;\n\n const hasPermissions =\n user && // User must exist\n user.organizationLinks?.find(\n (link) =>\n link.organization.id === orgId && // User must be a member of the organization\n (roles ? link.roles.find((r) => roles.includes(r)) : true), // User must have one of the organization roles specified, or pass if none are specified\n );\n\n if (hasPermissions) return <>{children}>;\n if (otherwise) return <>{otherwise}>;\n return null;\n};\n\nexport default OrgFilter;\n","import React from \"react\";\nimport { Box, CircularProgress, Skeleton, SkeletonProps } from \"@mui/material\";\n\nconst LoadingBox: React.FC> = ({ children, ...props }) => (\n \n \n {children || }\n \n \n);\n\nexport default LoadingBox;\n","import { Box } from \"@mui/material\";\nimport { makeStyles } from \"tss-react/mui\";\nimport React, { cloneElement, ReactElement, ReactNode } from \"react\";\n\ntype IconTextProps = {\n icon?: ReactElement;\n text: ReactNode;\n alignItems?: \"flex-start\" | \"flex-end\" | \"center\" | \"stretch\" | \"baseline\";\n};\n\nconst useStyles = makeStyles()(() => ({\n container: {\n display: \"flex\",\n },\n icon: {\n marginRight: \"5px\",\n },\n text: {\n flexShrink: 0,\n },\n}));\n\nconst IconText: React.FC> = ({\n icon,\n text,\n alignItems = \"center\",\n}) => {\n const { classes } = useStyles();\n\n const iconComponent = icon ? cloneElement(icon, { className: classes.icon }) : null;\n\n return (\n \n {icon && iconComponent}\n {text}\n \n );\n};\n\nexport default IconText;\n","import { useEffect } from \"react\";\n\nconst useDataLayerVariable = (name: string, value: T, nullValue: any = undefined) => {\n useEffect(() => {\n return () => {\n window.dataLayer.push({ [name]: nullValue });\n };\n }, [nullValue, name]);\n\n useEffect(() => {\n window.dataLayer.push({ [name]: value || nullValue });\n }, [name, value, nullValue]);\n};\n\nexport default useDataLayerVariable;\n","import { Maybe, RootPermissions } from \"gqlTypes\";\nimport useMyPermissions from \"MyAccount/Hooks/useMyPermissions\";\n\nexport type UseHasRootPermissionsOptions = {\n mode?: \"all\" | \"any\";\n};\n\nexport const useHasPermissions = (\n permObject: Maybe | undefined,\n permissions: keyof T | (keyof T)[],\n { mode }: UseHasRootPermissionsOptions = {},\n) => {\n const permissionsList = Array.isArray(permissions) ? permissions : [permissions];\n\n const matcher = (key: keyof T) => !!(permObject && permObject[key]);\n\n return !!(\n permObject && (mode === \"all\" ? permissionsList.every(matcher) : permissionsList.some(matcher))\n );\n};\n\nexport const useHasRootPermissions = (\n permissions: keyof RootPermissions | (keyof RootPermissions)[],\n { mode }: UseHasRootPermissionsOptions = {},\n) => {\n const [myPermissions] = useMyPermissions();\n\n return useHasPermissions(myPermissions, permissions, { mode });\n};\n","import { useQuery } from \"@apollo/client\";\nimport gql from \"graphql-tag\";\n\nimport { RootPermissions, User } from \"gqlTypes\";\n\nexport const MY_ACCOUNT_FRAGMENT = gql`\n fragment CurrentUserFields on User {\n id\n name\n email\n role\n dev\n devToggles\n twoFactorEnabled\n organizationLinks {\n roles\n organization {\n id\n name\n }\n }\n }\n`;\nconst MY_ACCOUNT_QUERY = gql`\n query myAccount {\n myAccount {\n ...CurrentUserFields\n }\n myPermissions {\n canClearCaches\n canSetAdminBanner\n canAdminSearch\n canExportRecords\n canImportRecords\n canCreateListings\n canAdministerListings\n canViewNonPublicListings\n canViewSensitiveListings\n canCreateOrganizations\n canCreateAdminUsers\n canCreateNonAdminUsers\n }\n }\n ${MY_ACCOUNT_FRAGMENT}\n`;\n\nconst useMyAccount = () => {\n const { data, ...status } = useQuery<{ myAccount: User; myPermissions: RootPermissions }>(\n MY_ACCOUNT_QUERY,\n );\n\n if (status.error) throw status.error;\n\n const account = data?.myAccount ?? null;\n return [account, status] as const;\n};\n\nexport default useMyAccount;\n","import { useQuery } from \"@apollo/client\";\nimport gql from \"graphql-tag\";\n\nimport { RootPermissions } from \"gqlTypes\";\n\nconst MY_PERMISSIONS_QUERY = gql`\n query MyPermissions {\n myPermissions {\n canClearCaches\n canSetAdminBanner\n canAdminSearch\n canExportRecords\n canImportRecords\n canCreateListings\n canViewNonPublicListings\n canViewSensitiveListings\n canAdministerListings\n canCreateOrganizations\n canCreateAdminUsers\n canCreateNonAdminUsers\n canAdmin\n canSuperadmin\n }\n }\n`;\n\nconst useMyPermissions = () => {\n const { data, ...status } = useQuery<{ myPermissions: RootPermissions }>(MY_PERMISSIONS_QUERY);\n\n if (status.error) throw status.error;\n\n const permissions = data?.myPermissions ?? null;\n return [permissions, status] as const;\n};\n\nexport default useMyPermissions;\n","import { Typography } from \"@mui/material\";\nimport React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport UserLayout, { UserFormProps } from \"User/Components/UserLayout\";\n\nexport type PageNotFoundProps = {\n continueContent?: React.ReactNode;\n continueTo?: string;\n noContinue?: boolean;\n} & Partial;\n\nconst PageNotFound: React.FC> = ({\n children,\n continueContent,\n continueTo = \"/\",\n noContinue = false,\n ...props\n}) => {\n const continueNode = continueContent || <>» Continue>;\n return (\n \n {children}\n {!noContinue && (\n \n {continueNode}\n \n )}\n \n );\n};\n\nexport default PageNotFound;\n","import React from \"react\";\nimport { CircularProgress, Box, BoxProps } from \"@mui/material\";\nimport NavbarContainer from \"Components/NavbarComponents/Navbar\";\n\nexport type RoutesNavFallbackProps = {\n source?: string;\n} & BoxProps;\n\nconst RoutesNavFallback: React.FC> = ({\n source,\n ...boxProps\n}) => {\n // console.log('LOADING: ' + source)\n return (\n \n \n <>>\n \n \n \n {/* {source && {source}} */}\n \n \n );\n};\n\nexport default React.memo(RoutesNavFallback) as typeof RoutesNavFallback;\n","import { Box, Grid, Link, Typography, Alert, AlertTitle } from \"@mui/material\";\nimport { LoadingBox } from \"Components\";\nimport ContentSubmitButton from \"Components/ContentSubmitButton\";\nimport ContentTextField from \"Components/ContentTextField\";\nimport { Field } from \"formik\";\nimport { useFormatMessage } from \"Localization/hooks\";\n\nimport QRCode from \"qrcode\";\nimport React, { useCallback, useEffect, useRef } from \"react\";\nimport UserForm from \"User/Components/UserForm\";\nimport {\n OtpInput,\n useDestroyUserSession,\n useTwoFactorEnable,\n useTwoFactorQrCode,\n} from \"User/Hooks/userHooks\";\nimport { validateRequiredField } from \"utils/validations\";\nimport UserLayout from \"./UserLayout\";\n\nconst TwoFactorSetup: React.FC<{ onCompleted: VoidFunction }> = ({ onCompleted }) => {\n const t = useFormatMessage();\n const canvasRef = useRef(null);\n const [data, qrCodeStatus] = useTwoFactorQrCode();\n const [enable2fa, enableStatus] = useTwoFactorEnable();\n const [handleLogout] = useDestroyUserSession();\n\n const handleSubmitEnable = useCallback(\n (input: OtpInput) =>\n enable2fa(input).then((ok) => {\n if (ok) {\n onCompleted();\n }\n }),\n [enable2fa, onCompleted],\n );\n\n // Render QR code in canvas\n useEffect(() => {\n if (!canvasRef.current) return;\n if (qrCodeStatus === \"loading\" || !data?.provisioning_uri) return;\n\n QRCode.toCanvas(canvasRef.current, data.provisioning_uri);\n }, [data, qrCodeStatus]);\n\n if (qrCodeStatus === \"loading\") {\n return ;\n }\n\n return (\n \n \n \n Two-factor authentication is required for your account.\n \n Please follow the instructions below or{\" \"}\n \n log out.\n \n \n \n \n \n <>\n \n \n To begin, install an App such as Google Authenticator or Authy and use\n it to scan the following QR code:\n \n \n \n {canvasRef && data && (\n \n \n \n Key: {data.otp_secret}\n \n \n )}\n \n \n \n Enter a code from your Two-Factor Authentication app below and click verify. Each time\n you log in, you will be asked to enter a new code.\n \n \n \n \n \n \n \n \n \n Verify\n \n \n \n \n \n \n >\n \n \n );\n};\n\nexport default TwoFactorSetup;\n","// import OrganizationDashboard from \"PropertyManagement/OrganizationDashboard\";\nimport React, { lazy } from \"react\";\nimport { Redirect, Route, Switch } from \"react-router-dom\";\nimport { useFetchCurrentUser } from \"User/Hooks/userHooks\";\nimport PageNotFound from \"./PageNotFound\";\nimport RouterSuspense from \"./RouterSuspense\";\nimport NavFallback from \"./NavFallback\";\nimport BlockFallback from \"./BlockFallback\";\nimport TwoFactorSetup from \"User/Components/TwoFactorSetup\";\nimport AppProvider from \"AppProvider\";\n\nconst AppRouter = lazy(() => import(\"./AppRouter\"));\nconst UserFormRouter = lazy(() => import(\"./UserFormRouter\"));\nconst MyAccountRouter = lazy(() => import(\"./MyAccountRouter\"));\nconst Print = lazy(() => import(\"Navigator/Print\"));\n\nconst handleLoginSuccess = () => {\n // FIXME - need a page load because the csrf token changes after login\n window.location.replace(\"/me/organization_dashboard\");\n};\nconst Routes: React.FC> = () => {\n const [currentUser] = useFetchCurrentUser();\n\n if (currentUser === undefined) return ;\n\n if (currentUser && currentUser.setup_2fa_required) {\n return ;\n }\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n {currentUser ? (\n \n ) : (\n \n )}\n \n {!currentUser && }\n {!currentUser && }\n \n \n \n \n \n \n \n \n );\n};\n\nexport default Routes;\n","import { Box, Collapse } from \"@mui/material\";\nimport Alert from \"@mui/material/Alert\";\nimport { Form, Formik, FormikConfig, FormikErrors, FormikHelpers } from \"formik\";\nimport React, { ReactNode, useCallback, useEffect, useRef, useState } from \"react\";\n\ntype Props = {\n initialValues: T;\n onSubmit: (values: T, helpers: FormikHelpers) => Promise;\n children: ReactNode;\n promptOnDirtyNav?: boolean;\n failureMessage?: ReactNode;\n actions?: ReactNode;\n} & Pick<\n FormikConfig,\n \"validate\" | \"validateOnBlur\" | \"validateOnChange\" | \"enableReinitialize\"\n>;\n\nconst UserForm = >({\n initialValues,\n onSubmit,\n children,\n validate,\n failureMessage,\n validateOnBlur = false,\n validateOnChange = false,\n enableReinitialize = false,\n}: Props) => {\n const isMounted = useRef(true);\n\n useEffect(() => {\n return () => {\n isMounted.current = false;\n };\n }, []);\n\n const [alert, setAlert] = useState(undefined);\n\n const handleSubmit = useCallback(\n (values: any, helpers: FormikHelpers) => {\n const { setSubmitting, setErrors } = helpers;\n onSubmit(values, helpers)\n .then((data?: { errors?: FormikErrors; error?: string }) => {\n if (data && isMounted.current) {\n if (data.errors) {\n setErrors(data.errors);\n }\n if (data.error) {\n setAlert(data.error);\n }\n }\n })\n .finally(() => isMounted.current && setSubmitting(false));\n },\n [onSubmit],\n );\n\n return (\n \n \n \n \n \n {failureMessage} {alert}\n \n \n \n {children}\n \n \n );\n};\n\nexport default UserForm;\n","import { useCallback, useEffect, useState } from \"react\";\nimport readCsrfToken from \"utils/readCsrfToken\";\n\ntype Status = \"new\" | \"loading\" | \"success\" | \"failure\";\nexport type UserSessionInput = {\n email: string;\n password: string;\n remember_me: boolean;\n};\n\nexport type OtpInput = {\n otp_attempt: string;\n};\n\nconst headers = { \"Content-Type\": \"application/json\", \"X-CSRF-Token\": readCsrfToken() };\n\nconst parseJSON = (response: Response) => {\n return response.text().then(function (text) {\n return text ? JSON.parse(text) : {};\n });\n};\n\nexport const useOrganizationsFromInvitationToken = (invitation_token: string | null) => {\n const [status, setStatus] = useState(\"new\");\n const cb = useCallback(() => {\n setStatus(\"loading\");\n return fetch(`/users/organizations.json?invitation_token=${invitation_token}`, {\n method: \"GET\",\n headers,\n }).then((response) => {\n console.log(\"response\", response);\n setStatus(response.ok ? \"success\" : \"failure\");\n if (response.ok) {\n return parseJSON(response);\n } else {\n return { error: response.statusText };\n }\n });\n }, [invitation_token]);\n return [cb, status] as const;\n};\n\nexport const useDestroyUserSession = () => {\n const [status, setStatus] = useState(\"new\");\n const cb = useCallback(() => {\n setStatus(\"loading\");\n return fetch(\"/users/sign_out.json\", {\n method: \"GET\",\n headers,\n }).then((response) => {\n setStatus(response.ok ? \"success\" : \"failure\");\n if (response.ok) {\n window.location.replace(\"/\");\n }\n return parseJSON(response);\n });\n }, []);\n return [cb, status] as const;\n};\n\ntype LoginStatus = Status | \"otp\" | \"locked\";\n\nconst parseFailureStatus = (response: any): LoginStatus => {\n if (!response || !response?.error) return \"failure\";\n const err = response.error;\n if (typeof err === \"string\") {\n if (err.includes(\"2fa_required\")) return \"otp\";\n if (err.includes(\"locked\")) return \"locked\";\n }\n return \"failure\";\n};\n\nexport const useCreateUserSession = () => {\n const [status, setStatus] = useState(\"new\");\n const cb = useCallback((input: UserSessionInput) => {\n setStatus(\"loading\");\n return fetch(\"/users/sign_in.json\", {\n method: \"POST\",\n headers,\n body: JSON.stringify({ user: input }),\n }).then(async (response) => {\n const parsedResponse = await parseJSON(response);\n if (response.ok) {\n setStatus(\"success\");\n return parsedResponse;\n } else {\n setStatus(parseFailureStatus(parsedResponse));\n return null;\n }\n });\n }, []);\n return [cb, status] as const;\n};\n\nexport const useCreateUserSessionOtp = () => {\n const [status, setStatus] = useState(\"new\");\n const cb = useCallback((input: OtpInput) => {\n setStatus(\"loading\");\n return fetch(\"/users/sign_in.json\", {\n method: \"POST\",\n headers,\n body: JSON.stringify({ user: input }),\n }).then(async (response) => {\n const parsedResponse = await parseJSON(response);\n if (response.ok) {\n setStatus(\"success\");\n return parsedResponse;\n } else {\n setStatus(parseFailureStatus(parsedResponse));\n return null;\n }\n });\n }, []);\n return [cb, status] as const;\n};\n\nexport type ForgotPasswordInput = { email: string };\nexport const useRequestPasswordReset = () => {\n const [status, setStatus] = useState(\"new\");\n const cb = useCallback((input: ForgotPasswordInput) => {\n setStatus(\"loading\");\n return fetch(\"/users/password.json\", {\n method: \"POST\",\n headers,\n body: JSON.stringify({ user: input }),\n }).then((response) => {\n setStatus(response.ok ? \"success\" : \"failure\");\n return parseJSON(response);\n });\n }, []);\n return [cb, status] as const;\n};\n\nexport type UnlockInstructionsInput = { email: string };\nexport const useUnlockInstructions = () => {\n const [status, setStatus] = useState(\"new\");\n const cb = useCallback((input: UnlockInstructionsInput) => {\n setStatus(\"loading\");\n return fetch(\"/users/unlock.json\", {\n method: \"POST\",\n headers,\n body: JSON.stringify({ user: input }),\n }).then((response) => {\n setStatus(response.ok ? \"success\" : \"failure\");\n return parseJSON(response);\n });\n }, []);\n return [cb, status] as const;\n};\n\nexport type UnlockInput = { unlock_token: string };\nexport const useUnlockRequest = () => {\n const [status, setStatus] = useState(\"new\");\n const cb = useCallback((input: UnlockInput) => {\n setStatus(\"loading\");\n return fetch(`/users/unlock.json?unlock_token=${encodeURIComponent(input.unlock_token)}`, {\n method: \"GET\",\n headers,\n }).then((response) => {\n setStatus(response.ok ? \"success\" : \"failure\");\n return parseJSON(response);\n });\n }, []);\n return [cb, status] as const;\n};\n\nexport type ResetPasswordInput = {\n reset_password_token: string;\n password: string;\n password_confirmation: string;\n};\nexport const useResetPassword = () => {\n const [status, setStatus] = useState(\"new\");\n const cb = useCallback((input: ResetPasswordInput) => {\n setStatus(\"loading\");\n return fetch(\"/users/password.json\", {\n method: \"PATCH\",\n headers,\n body: JSON.stringify({ user: input }),\n }).then((response) => {\n setStatus(response.ok ? \"success\" : \"failure\");\n return parseJSON(response);\n });\n }, []);\n return [cb, status] as const;\n};\n\ntype UserStub = null | { id: string; setup_2fa_required: boolean };\nexport const useFetchCurrentUser = () => {\n const [status, setStatus] = useState(\"new\");\n const [user, setUser] = useState(undefined);\n useEffect(() => {\n setStatus(\"loading\");\n fetch(\"/current_user.json\", {\n method: \"GET\",\n headers,\n }).then(async (response) => {\n const status = response.ok ? \"success\" : \"failure\";\n const user = status === \"success\" ? await parseJSON(response) : undefined;\n setUser(user);\n setStatus(status);\n });\n }, [setStatus, setUser]);\n return [user, status] as const;\n};\n\nexport type AcceptInvitationInput = {\n invitation_token: string;\n password: string;\n password_confirmation: string;\n agree_to_terms: boolean;\n};\nexport const useAcceptInvitation = () => {\n const [status, setStatus] = useState(\"new\");\n const cb = useCallback((input: AcceptInvitationInput) => {\n setStatus(\"loading\");\n return fetch(\"/users/invitation.json\", {\n method: \"PATCH\",\n headers,\n body: JSON.stringify({ user: input }),\n }).then((response) => {\n setStatus(response.ok ? \"success\" : \"failure\");\n return parseJSON(response);\n });\n }, []);\n return [cb, status] as const;\n};\n\nexport const useValidateInvitationToken = (invitation_token: string | null) => {\n const [status, setStatus] = useState(\"new\");\n const [valid, setValid] = useState(undefined);\n\n useEffect(() => {\n setStatus(\"loading\");\n setValid(undefined);\n fetch(`/users/validate_invitation.json?invitation_token=${invitation_token}`, {\n method: \"GET\",\n headers,\n }).then((response) => {\n setStatus(response.ok ? \"success\" : \"failure\");\n parseJSON(response)\n .then(({ valid }: { valid: boolean }) => setValid(valid))\n .catch(console.error);\n });\n }, [invitation_token]);\n return [valid, status] as const;\n};\n\nexport const useTwoFactorQrCode = () => {\n const [status, setStatus] = useState(\"new\");\n const [data, setData] = useState();\n useEffect(() => {\n setStatus(\"loading\");\n fetch(\"/two_factor/provisioning_uri.json\", {\n method: \"GET\",\n headers,\n }).then(async (response) => {\n const status = response.ok ? \"success\" : \"failure\";\n const user = status === \"success\" ? await parseJSON(response) : undefined;\n setData(user);\n setStatus(status);\n });\n }, [setStatus, setData]);\n\n return [data, status] as const;\n};\n\nexport const useTwoFactorEnable = () => {\n const [status, setStatus] = useState(\"new\");\n const cb = useCallback((input: OtpInput) => {\n setStatus(\"loading\");\n return fetch(\"/two_factor/provisioning_code.json\", {\n method: \"POST\",\n headers,\n body: JSON.stringify({ user: input }),\n }).then((response) => {\n const status = response.ok ? \"success\" : \"failure\";\n setStatus(status);\n return response.ok;\n });\n }, []);\n return [cb, status] as const;\n};\n\nexport const useTwoFactorBackups = () => {\n const [status, setStatus] = useState(\"new\");\n const [data, setData] = useState();\n\n const cb = useCallback(() => {\n setStatus(\"loading\");\n return fetch(\"/two_factor/backups.json\", {\n method: \"GET\",\n headers,\n }).then(async (response) => {\n const status = response.ok ? \"success\" : \"failure\";\n const data = status === \"success\" ? await parseJSON(response) : undefined;\n setData(data);\n setStatus(status);\n });\n }, []);\n return [cb, data, status] as const;\n};\n","import { FieldList } from \"Components/DataTable/types\";\nimport { DocumentNode, FragmentDefinitionNode } from \"graphql\";\n\nexport const getFragmentName = (fragment: DocumentNode) =>\n (fragment.definitions.find((d) => d.kind === \"FragmentDefinition\") as FragmentDefinitionNode)\n ?.name.value;\n\nexport const getFragmentFields = (fields: FieldList) =>\n fields.filter((f) => f.fragment).map((f) => f.fragment || { name: f.key, body: `{ ${f.key} }` });\nexport const getBaseFields = (fields: FieldList) =>\n fields\n .filter((f) => !f.fragment)\n .map((f) => f.key)\n .join(\"\\n\");\nexport const fragmentTypes = (fields: FieldList, type: string) =>\n getFragmentFields(fields)\n .map((f) => `fragment ${f.name} on ${type} ${f.body}`)\n .join(\"\\n\");\nexport const fragmentCalls = (fields: FieldList) =>\n getFragmentFields(fields)\n .map((f) => `...${f.name}`)\n .join(\"\\n\");\nexport const getFragmentsOfType = (fragment: DocumentNode) => {\n return (\n fragment.definitions.find((d) => d.kind === \"FragmentDefinition\") as FragmentDefinitionNode\n )?.name.value;\n};\n","const readCsrfToken = () => {\n const csrfTokenEl = document.querySelector('meta[name=\"csrf-token\"]');\n return csrfTokenEl?.getAttribute(\"content\") || \"\";\n};\nexport default readCsrfToken;\n","export const isValidUrl = (url?: string | null) => {\n if (!url) return false;\n const reg = new RegExp(\n /^(?:http(s)?:\\/\\/)?[\\w\\\\.-]+(?:\\.[\\w\\\\.-]+)+[%\\w\\-\\\\._~:/?#[\\]@!\\\\$&'\\\\(\\\\)\\\\*\\\\+,;=.]+$/gm,\n );\n return reg.test(url);\n};\n\nexport const isValidPhone = (tel?: string | null) => {\n if (!tel) return false;\n const onlyNumbers = tel.replace(/[^\\d]/g, \"\");\n if (onlyNumbers.length < 11) {\n return false;\n }\n return true;\n};\n\nexport const isValidEmail = (email?: string | null) => {\n if (!email) return false;\n const reg = new RegExp(/\\S+@\\S+\\.\\S+/);\n return reg.test(email);\n};\n\nexport const validateRequiredField = (v?: string) => (v ? undefined : \"is required\");\n\nexport const validateUnits = (units: number, totalUnits?: number) => {\n if (units < 1) {\n return `must be greater than 0`;\n } else if (totalUnits && units > totalUnits) {\n return `cannot be greater than the total number of units (${totalUnits})`;\n }\n};\n"],"names":["gtmDataLayerManagerMounted","GtmDataLayerManager","user","useMyAccount","useEffect","window","dataLayer","push","undefined","organizationId","console","warn","useDataLayerVariable","pick","options","uri","credentials","headers","readCsrfToken","batchKey","operation","includes","operationName","cleanInput","ApolloLink","forward","variables","omitTypename","key","value","JSON","parse","stringify","map","data","retryLink","RetryLink","httpLink","from","split","getContext","hasUpload","createUploadLink","BatchHttpLink","possibleTypes","FRAGMENT_TYPES","forEach","supertype","name","subtype","ApolloClient","link","cache","InMemoryCache","AppProvider","children","React","DndProvider","backend","HTML5Backend","ApolloProvider","client","appGraphqlClient","useStyles","makeStyles","spacing","breakpoints","palette","color","bgColor","linkColor","appBar","backgroundColor","mobile","top","up","desktop","closeButton","padding","paddingLeft","paddingRight","position","borderRadius","margin","height","right","outlineOffset","primary","contrastText","content","paddingTop","paddingBottom","marginTop","marginBottom","BannerBase","open","onClose","center","useIsMobile","classes","cx","Collapse","in","root","Box","sx","display","alignItems","width","textAlign","className","IconButton","onClick","disableRipple","size","CloseIcon","AdminBannerColors","BannerColorEnum","Blue","Yellow","Red","AdminBanner","banner","props","Object","assign","HtmlTypography","html","typographyVariant","BANNER_QF","gql","QUERY","getFragmentName","useBannerQuery","status","useQuery","skip","featureIsToggled","FeatureToggle","error","useMemo","ContentSubmitButton","submitForm","isSubmitting","useFormikContext","disabled","Button","args","then","Promise","resolve","ContentTextField","onChange","ignored","field","useField","setFieldValue","handleChange","useCallback","e","type","currentTarget","normalizeTextValue","parsed","toLowerCase","Number","NaN","isNaN","TextField","helperText","fullWidth","variant","replace","domNode","replaced","Element","Link","attribs","style","domToReact","Typography","attributesToProps","component","omit","usePropertyManagersMenu","t","useFormatMessage","NavbarMenu","title","GtmWrapperProps","trigger","GtmTriggers","HeaderNavMenu","label","GtmLabels","HeaderNavMenuForOwners","NavbarRouteLink","to","HeaderNavLink","HeaderNavLinkForOwnersSignIn","NavbarLink","href","URLS","LinkProps","target","HeaderNavLinkForOwnersCreateAccount","items","organizationLinks","length","organization","id","HeaderNavLinkForOwners","None","HeaderNavLinkForOwnersWelcome","useUserMenu","loading","handleLogout","useDestroyUserSession","isMobile","AccountCircleIcon","email","HeaderNavMenuAccount","HeaderNavLinkMyAccount","NavbarAction","action","HeaderNavLinkLogOut","useAdminsMenu","useMyPermissions","canAccessAdminFeatures","useHasRootPermissions","canAdminSearch","canAdministerUsers","canAdministerOrganizations","canAccessImports","canAccessUtilities","canAccessDsi","menuNode","HeaderNavMenuForAdmins","HeaderNavLinkAdminRecordSearch","HeaderNavLinkAdminEditUsers","HeaderNavLinkAdminEditOrganizations","MobileNavbar","noUser","noTranslate","bannerContent","propertyManagersMenu","userMenu","adminsMenu","MobileNavbarContainer","MenuIcon","HeaderNavMenuMobile","HeaderNavLinkAbout","HeaderNavLinkResources","GoogleTranslate","px","DesktopNavbar","userLoading","adminLoading","DesktopNavbarContainer","Skeleton","currentUser","useFetchCurrentUser","bannerOpen","setBannerOpen","useState","active","handleBannerClose","DataLoader","render","Array","isArray","empty","KeyVals","obj","exclude","entries","filter","val","mb","toString","transformVal","RoleFilter","admin","superadmin","otherwise","allowUnauthenticated","fallback","permissions","permissionsLoading","hasRole","canAdmin","canSuperadmin","OrgFilter","orgId","roles","find","r","LoadingBox","justifyContent","CircularProgress","container","icon","marginRight","text","flexShrink","nullValue","useHasPermissions","permObject","mode","permissionsList","matcher","every","some","myPermissions","MY_ACCOUNT_FRAGMENT","MY_ACCOUNT_QUERY","myAccount","MY_PERMISSIONS_QUERY","PageNotFound","continueContent","continueTo","noContinue","continueNode","UserLayout","RoutesNavFallback","source","boxProps","flexDirection","flexGrow","minHeight","NavbarContainer","TwoFactorSetup","onCompleted","canvasRef","useRef","qrCodeStatus","useTwoFactorQrCode","enable2fa","enableStatus","useTwoFactorEnable","handleSubmitEnable","input","ok","current","provisioning_uri","QRCode","Alert","severity","AlertTitle","cursor","Grid","item","xs","ref","otp_secret","UserForm","initialValues","otp_attempt","onSubmit","failureMessage","Field","as","validate","validateRequiredField","AppRouter","lazy","UserFormRouter","MyAccountRouter","Print","handleLoginSuccess","location","Routes","BlockFallback","setup_2fa_required","Switch","Route","path","RouterSuspense","NavFallback","baseUrl","onLogin","Redirect","validateOnBlur","validateOnChange","enableReinitialize","isMounted","alert","setAlert","handleSubmit","values","helpers","setSubmitting","setErrors","errors","finally","Formik","Form","parseJSON","response","useOrganizationsFromInvitationToken","invitation_token","setStatus","fetch","method","log","statusText","parseFailureStatus","err","useCreateUserSession","body","async","parsedResponse","useCreateUserSessionOtp","useRequestPasswordReset","useUnlockInstructions","useUnlockRequest","encodeURIComponent","unlock_token","useResetPassword","setUser","useAcceptInvitation","useValidateInvitationToken","valid","setValid","catch","setData","cb","useTwoFactorBackups","fragment","definitions","d","kind","getFragmentFields","fields","f","getBaseFields","join","fragmentTypes","fragmentCalls","csrfTokenEl","document","querySelector","getAttribute","isValidUrl","url","RegExp","test","isValidPhone","tel","isValidEmail","v","validateUnits","units","totalUnits"],"sourceRoot":""}