{"version":3,"file":"Shell.mjs","names":["React","lazy","useState","useEffect","useMemo","useCallback","Suspense","makeStyles","Drawer","useMediaQuery","useTheme","NavigationSidebar","SiteHeader","UtilityBar","getMenuItemsRecursively","findHomeRoute","clsx","PropTypes","useUser","ActionProvider","PageActionWrapper","useInquiryStore","useProductsStore","ConfigService","useWidgetRegistry","useBuildEnvironment","APP_RIBBON_SPACE","ChatBotProvider","UserProfileMenuWrapper","useMenuContext","usePageTitleStore","selectPageTitle","Switch","UdpRoutes","useRouteRegistry","useShellVisibility","PageLoading","ErrorBoundary","FUIAppSwitcher","UtilitySideBar","then","m","default","MenuTypeEnums","Left_Menu","Application_Menu","Builders_Menu","Favorites_Menu","useStyles","theme","html","minHeight","display","flexDirection","flex","root","gridTemplateAreas","map","line","join","gridTemplateColumns","gridTemplateRows","header","gridArea","sidebar","content","position","zIndex","height","appRibbonSpace","overflowY","paper","width","breakpoints","up","props","drawerWidth","name","Shell","buildEnv","classes","ribbonSpace","children","userAvatar","appContent","leftMenu","appSelectorMenus","siteName","className","navRoot","hideToggle","useMockData","mockMenus","user","passedInUser","unityUrl","expander","sidebarTitle","navMenuHoverOn","secondExtended","toggleOne","toggleTwo","closePrimary","closeSecondary","panelExpanded","panelExpandedSecondary","setPanelExpanded","setPanelExpandedSecondary","breadCrumbAltLabelList","currentLocation","utilitySidebarResizable","utilitySidebarToggleOverride","onUtilitySidebarToggleExpandClick","hideLayout","getAccessToken","switcherData","selectedItem","switcherWidth","languages","projectSwitcherColor","widgets","getWidget","getWidgetProp","isValidWidget","isValidWidgetProp","appSwitcherHeader","hamburgerMenuAccessRole","hideLanguageSwitcher","subheader","hideHelpCenter","leftMenuLoading","contextUser","currentProductName","state","products","find","p","String","productId","config","UNITY_PRODUCT_ID","resolvedSiteName","routeConfig","routeMap","currentPath","isPublicRoute","isPublic","appSwitcherMobile","setAppSwitcherMobile","appSwitcherDesktop","setAppSwitcherDesktop","inquiryTitle","title","menuContext","resolvedLeftMenu","leftMenuStale","home","length","homeRoute","slug","homeRouteState","resolvedAppSelectorMenus","providedLanguages","resolvedLanguages","Array","isArray","effectiveShellHidden","hasUser","Boolean","id","pageTitle","filter","document","getMenuItems","menuTypeId","menus","menusToFilter","foundMenus","menu","active","reduce","menuItemInstanceStructureViews","menuItems","mobile","handleAppSwitcher","type","bool","builderMenu","favoriteMenu","appMenu","hideAppMenu","roleNames","includes","propTypes","array","string","number","oneOfType","arrayOf","node","isRequired","element","object","func","currentTenant"],"sources":["../../src/shell/Shell.jsx"],"sourcesContent":["import React, { lazy, useState, useEffect, useMemo, useCallback, Suspense } from 'react';\nimport { makeStyles, Drawer, useMediaQuery, useTheme } from '@material-ui/core';\nimport NavigationSidebar from './ui/NavigationSidebar';\nimport SiteHeader from './ui/SiteHeader';\nimport { UtilityBar } from '../UI/utilityDisplay/UtilityBar';\nimport {\n  getMenuItemsRecursively,\n  findHomeRoute\n} from '../utilities/menus/menuUtilities';\nimport clsx from 'clsx';\nimport PropTypes from 'prop-types';\nimport { useUser } from '../utilities/auth/useUser';\nimport { ActionProvider } from '../utilities/provider/ActionProvider';\nimport { PageActionWrapper } from '../actions/PageActionWrapper';\nimport { useInquiryStore } from '../stores/inquiryStore';\nimport { useProductsStore } from '../stores/productsStore';\nimport { ConfigService } from '../configService';\nimport { useWidgetRegistry } from './useWidgetRegistry';\n\nimport {\n  useBuildEnvironment,\n  APP_RIBBON_SPACE\n} from './ui/useBuildEnvironment';\nimport { ChatBotProvider } from '../utilities/chatBot/ChatBotProvider';\nimport { UserProfileMenuWrapper } from '../shell/ui/profile';\nimport { useMenuContext } from '../utilities/menus/MenuProvider';\nimport { usePageTitleStore, selectPageTitle } from './pageTitle';\n//import { usePreloadPages } from '../hooks/usePreloadPages';\nimport { Switch } from 'react-router-dom';\nimport { UdpRoutes } from '../routes/UdpRoutes';\nimport { useRouteRegistry } from '../routes/routeRegistryStore';\nimport { useShellVisibility } from './useShellVisibility';\nimport { PageLoading } from '../UI';\nimport ErrorBoundary from '../errorBoundary/ErrorBoundary';\n\n// Lazy-load components that only render in response to user interaction or\n// optional props, so they don't get pulled into the Shell entry chunk.\nconst FUIAppSwitcher = lazy(() => import('./ui/appSwitcher/FUIAppSwitcher'));\nconst UtilitySideBar = lazy(() =>\n  import('../UI/utilityDisplay/UtilitySideBar').then((m) => ({\n    default: m.UtilitySideBar\n  }))\n);\nconst MenuTypeEnums = {\n  Left_Menu: 1,\n  Application_Menu: 2,\n  Builders_Menu: 3,\n  Favorites_Menu: 4\n};\n\nconst useStyles = makeStyles(\n  (theme) => ({\n    '@global': {\n      html: {\n        minHeight: '100%'\n      },\n      'html, body, #root': {\n        display: 'flex',\n        flexDirection: 'column'\n      },\n      'body, #root': {\n        flex: 1\n      }\n    },\n    root: {\n      flex: 1,\n      minHeight: '100vh',\n      display: 'grid',\n      gridTemplateAreas: ['sidebar header', 'sidebar content']\n        .map((line) => `\"${line}\"`)\n        .join(' '),\n      gridTemplateColumns: 'auto 1fr',\n      gridTemplateRows: 'auto 1fr'\n    },\n    header: {\n      gridArea: 'header'\n    },\n    sidebar: {\n      gridArea: 'sidebar'\n    },\n    content: {\n      gridArea: 'content',\n      display: 'flex',\n      flexDirection: 'column',\n      position: 'relative',\n      zIndex: 1,\n      height: ({ appRibbonSpace }) => `calc(100vh - ${56 + appRibbonSpace}px)`,\n      overflowY: 'auto'\n    },\n    paper: {\n      width: '100%',\n      [theme.breakpoints.up('sm')]: {\n        width: (props) => props.drawerWidth || 520\n      }\n    }\n  }),\n  { name: 'Layout' }\n);\n\n/**\n * Core site layout common to all pages\n */\nexport const Shell = (props) => {\n  const buildEnv = useBuildEnvironment();\n  const classes = useStyles({\n    ...props,\n    ribbonSpace: buildEnv ? APP_RIBBON_SPACE : 0\n  });\n  const {\n    children,\n    userAvatar = <UserProfileMenuWrapper />,\n    appContent,\n    leftMenu,\n    appSelectorMenus,\n    /** @deprecated Site header is now populated from the current product's `name` via `useProductsStore`. Only set this prop to explicitly override the product name. */\n    siteName,\n    className,\n    /** @deprecated The breadcrumb root falls back to the i18n-translated default (`'home'`). Only set this prop to override the translated root label. */\n    navRoot,\n    hideToggle,\n    useMockData,\n    mockMenus,\n    user: passedInUser,\n    unityUrl,\n    expander,\n    sidebarTitle,\n    navMenuHoverOn = false,\n    secondExtended,\n    toggleOne,\n    toggleTwo,\n    closePrimary,\n    closeSecondary,\n    panelExpanded,\n    panelExpandedSecondary,\n    setPanelExpanded = false,\n    setPanelExpandedSecondary = false,\n    breadCrumbAltLabelList = [],\n    currentLocation,\n    utilitySidebarResizable,\n    utilitySidebarToggleOverride,\n    onUtilitySidebarToggleExpandClick,\n    hideLayout = false,\n    getAccessToken,\n    switcherData,\n    selectedItem,\n    switcherWidth,\n    languages,\n    projectSwitcherColor,\n    widgets,\n    /** @deprecated Use `widgets` prop instead */\n    getWidget: getWidgetProp,\n    /** @deprecated Use `widgets` prop instead */\n    isValidWidget: isValidWidgetProp,\n    appSwitcherHeader,\n    hamburgerMenuAccessRole,\n    hideLanguageSwitcher = false,\n    subheader,\n    hideHelpCenter = false,\n    leftMenuLoading = false\n  } = props;\n  const contextUser = useUser();\n  const user = passedInUser ?? contextUser;\n  const currentProductName = useProductsStore((state) =>\n    state.products.find(\n      (p) =>\n        String(p.productId) === String(ConfigService.config.UNITY_PRODUCT_ID)\n    )?.name\n  );\n  const resolvedSiteName = siteName ?? currentProductName;\n  useWidgetRegistry({\n    widgets,\n    getWidget: getWidgetProp,\n    isValidWidget: isValidWidgetProp\n  });\n  const routeConfig = useRouteRegistry(\n    (state) => state.routeMap[state.currentPath]\n  );\n  const isPublicRoute = routeConfig?.isPublic !== false;\n  const [appSwitcherMobile, setAppSwitcherMobile] = useState(false);\n  const [appSwitcherDesktop, setAppSwitcherDesktop] = useState(false);\n  const inquiryTitle = useInquiryStore((state) => state.title);\n\n  //usePreloadPages();\n\n  const menuContext = useMenuContext?.();\n  const resolvedLeftMenu = useMemo(() => {\n    if (leftMenuLoading) return [];\n    // A caller passing its own menu owns its freshness via leftMenuLoading; the\n    // context menu we have to check ourselves, otherwise the previous tenant's\n    // items stay on screen for the whole switch.\n    if (leftMenu) return leftMenu;\n    return menuContext?.leftMenuStale ? [] : menuContext?.leftMenu;\n  }, [leftMenuLoading, leftMenu, menuContext]);\n  // Both the slug and the menu item's params: the `/` redirect has to push the\n  // params as location state, otherwise the home page renders with none.\n  const home = useMemo(\n    () => (leftMenu?.length ? findHomeRoute(leftMenu) : null),\n    [leftMenu]\n  );\n  const homeRoute = leftMenu?.length\n    ? (home?.slug ?? null)\n    : menuContext?.homeRoute;\n  const homeRouteState = leftMenu?.length\n    ? (home?.state ?? null)\n    : (menuContext?.homeRouteState ?? null);\n  const resolvedAppSelectorMenus =\n    appSelectorMenus ?? menuContext?.appSelectorMenus;\n  const providedLanguages = languages ?? menuContext?.languages;\n  const resolvedLanguages = Array.isArray(providedLanguages)\n    ? providedLanguages\n    : [];\n  const effectiveShellHidden = useShellVisibility({\n    hideLayout,\n    isPublicRoute,\n    hasUser: Boolean(user?.id)\n  });\n\n  // Browser tab title. A page-declared <PageTitle> (deepest instance) wins,\n  // with the site name appended; with none declared the title from\n  // index.html is left alone.\n  const pageTitle = usePageTitleStore(selectPageTitle);\n  useEffect(() => {\n    const title = pageTitle\n      ? [pageTitle, resolvedSiteName].filter(Boolean).join(' - ')\n      : siteName;\n    if (title) document.title = title;\n  }, [pageTitle, siteName, resolvedSiteName]);\n\n  const getMenuItems = useCallback(\n    (menuTypeId, menus) => {\n      if (!menus && !useMockData) {\n        return [];\n      }\n      const menusToFilter = useMockData ? mockMenus : menus;\n\n      const foundMenus = menusToFilter.filter(\n        (menu) => menu.menuTypeId === menuTypeId && menu.active\n      );\n\n      if (foundMenus) {\n        return foundMenus.reduce((menuItemInstanceStructureViews, menu) => {\n          return [\n            ...menuItemInstanceStructureViews,\n            ...menu.menuItemInstanceStructureViews\n          ];\n        }, []);\n      } else {\n        return [];\n      }\n    },\n    [useMockData, mockMenus]\n  );\n\n  const menus = useMemo(() => {\n    const menuItems = getMenuItems(1, resolvedLeftMenu);\n    return getMenuItemsRecursively(menuItems, true, user);\n  }, [getMenuItems, user, resolvedLeftMenu]);\n\n  const theme = useTheme();\n  const mobile = useMediaQuery(theme.breakpoints.up('sm'));\n\n  const handleAppSwitcher = (type, bool) => {\n    if (type === 'mobile') {\n      setAppSwitcherMobile(bool);\n    } else {\n      setAppSwitcherDesktop(bool);\n    }\n  };\n\n  const builderMenu = useMemo(() => {\n    const menuItems = getMenuItems(\n      MenuTypeEnums.Builders_Menu,\n      resolvedAppSelectorMenus\n    );\n    return getMenuItemsRecursively(menuItems, true, user, getAccessToken);\n  }, [getMenuItems, user, resolvedAppSelectorMenus, getAccessToken]);\n\n  const favoriteMenu = useMemo(() => {\n    const menuItems = getMenuItems(\n      MenuTypeEnums.Favorites_Menu,\n      resolvedAppSelectorMenus\n    );\n    return getMenuItemsRecursively(menuItems, true, user, getAccessToken);\n  }, [getMenuItems, user, resolvedAppSelectorMenus, getAccessToken]);\n\n  const appMenu = useMemo(() => {\n    const menuItems = getMenuItems(\n      MenuTypeEnums.Application_Menu,\n      resolvedAppSelectorMenus\n    );\n    return getMenuItemsRecursively(menuItems, true, user, getAccessToken);\n  }, [getMenuItems, user, resolvedAppSelectorMenus, getAccessToken]);\n\n  const hideAppMenu = useMemo(\n    () =>\n      !resolvedAppSelectorMenus ||\n      (hamburgerMenuAccessRole &&\n        !user?.roleNames.includes(hamburgerMenuAccessRole)),\n    [user, resolvedAppSelectorMenus, hamburgerMenuAccessRole]\n  );\n\n  return (\n    <ChatBotProvider>\n      <ActionProvider>\n        <div className={classes.root}>\n          {!effectiveShellHidden && (\n            <SiteHeader\n              className={classes.header}\n              siteName={resolvedSiteName}\n              appContent={appContent}\n              userAvatar={userAvatar}\n              breadCrumbRoot={navRoot}\n              setAppSwitcherOpen={(type, bool) => handleAppSwitcher(type, bool)}\n              breadCrumbAltLabelList={breadCrumbAltLabelList}\n              currentLocation={currentLocation}\n              switcherData={switcherData}\n              selectedItem={selectedItem}\n              switcherWidth={switcherWidth}\n              hideAppLaunch={hideAppMenu}\n              languages={resolvedLanguages}\n              hideLanguageSwitcher={hideLanguageSwitcher}\n              backgroundColor={projectSwitcherColor}\n              hideHelpCenter={hideHelpCenter}\n            />\n          )}\n\n          <div style={{ display: 'flex' }} className={classes.sidebar}>\n            {!effectiveShellHidden && mobile && (\n              <NavigationSidebar\n                className={classes.sidebar}\n                data={menus}\n                navMenuHoverOn={navMenuHoverOn}\n                user={user}\n                useGlobalState={true}\n                leftMenuLoading={\n                  leftMenuLoading ||\n                  menuContext?.leftMenuLoading ||\n                  menuContext?.leftMenuStale\n                }\n              />\n            )}\n            {expander && (\n              <div>\n                <Suspense fallback={null}>\n                  <UtilitySideBar\n                    title={inquiryTitle || sidebarTitle}\n                    resizable={utilitySidebarResizable}\n                    utilitySidebarToggleOverride={utilitySidebarToggleOverride}\n                    onUtilitySidebarToggleExpandClick={\n                      onUtilitySidebarToggleExpandClick\n                    }\n                    sidebarHidden={effectiveShellHidden}\n                    {...props}\n                  />\n                </Suspense>\n              </div>\n            )}\n          </div>\n\n          <div className={classes.content}>\n            {!effectiveShellHidden && subheader}\n            <UtilityBar\n              className={clsx(className)}\n              gutters={false}\n              hideToggle={hideToggle}\n              expander={expander}\n              secondExtended={secondExtended}\n              toggleOne={toggleOne}\n              toggleTwo={toggleTwo}\n              closePrimary={closePrimary}\n              closeSecondary={closeSecondary}\n              expanded={panelExpanded}\n              expandedSecondary={panelExpandedSecondary}\n              setExpanded={setPanelExpanded}\n              setExpandedSecondary={setPanelExpandedSecondary}\n            />\n\n            <ErrorBoundary>\n              <PageActionWrapper>\n                <Suspense fallback={<PageLoading />}>\n                  <Switch>\n                    {children}\n                    <UdpRoutes\n                      homeRoute={homeRoute}\n                      homeRouteState={homeRouteState}\n                    />\n                  </Switch>\n                </Suspense>\n              </PageActionWrapper>\n            </ErrorBoundary>\n          </div>\n          <Drawer\n            variant='temporary'\n            anchor='left'\n            open={appSwitcherDesktop}\n            classes={\n              !mobile\n                ? {}\n                : !resolvedAppSelectorMenus\n                  ? {}\n                  : { paper: classes.paper }\n            }\n            onClose={() => handleAppSwitcher('desktop', false)}\n          >\n            {mobile && resolvedAppSelectorMenus && (\n              <Suspense fallback={null}>\n                <FUIAppSwitcher\n                  onClose={() => handleAppSwitcher('desktop', false)}\n                  favoriteMenu={favoriteMenu}\n                  builderMenu={builderMenu}\n                  appMenu={appMenu}\n                  unityUrl={unityUrl}\n                  user={user}\n                  header={\n                    appSwitcherHeader && typeof appSwitcherHeader === 'function'\n                      ? appSwitcherHeader(() => {\n                          handleAppSwitcher('desktop', false);\n                        })\n                      : appSwitcherHeader\n                  }\n                />\n              </Suspense>\n            )}\n            {(!mobile || (mobile && !resolvedAppSelectorMenus)) && (\n              <NavigationSidebar\n                toggle={false}\n                className={classes.sidebar}\n                data={menus}\n                navMenuHoverOn={navMenuHoverOn}\n                user={user}\n                useGlobalState={true}\n                leftMenuLoading={\n                  leftMenuLoading ||\n                  menuContext?.leftMenuLoading ||\n                  menuContext?.leftMenuStale\n                }\n              />\n            )}\n          </Drawer>\n\n          <Drawer\n            variant='temporary'\n            anchor='right'\n            open={appSwitcherMobile}\n            classes={{ paper: classes.paper }}\n            onClose={() => handleAppSwitcher('mobile', false)}\n          >\n            <Suspense fallback={null}>\n              <FUIAppSwitcher\n                onClose={() => handleAppSwitcher('mobile', false)}\n                favoriteMenu={favoriteMenu}\n                builderMenu={builderMenu}\n                appMenu={appMenu}\n                unityUrl={unityUrl}\n                user={user}\n                header={\n                  appSwitcherHeader && typeof appSwitcherHeader === 'function'\n                    ? appSwitcherHeader(() => {\n                        handleAppSwitcher('mobile', false);\n                      })\n                    : appSwitcherHeader\n                }\n              />\n            </Suspense>\n          </Drawer>\n        </div>\n      </ActionProvider>\n    </ChatBotProvider>\n  );\n};\n\nShell.propTypes = {\n  /**\n   * The newest propTypes have been added but older ones are missing @todo: add missing propTypes for Shell.\n   */\n\n  /**\n   * The array used to map for label and functions to list items.\n   */\n  switcherData: PropTypes.array,\n  /**\n   * The active label displayed.\n   */\n  selectedItem: PropTypes.string,\n  /**\n   *  Provides a method set the selector width. Default is 100.\n   */\n  switcherWidth: PropTypes.number,\n  /**\n   * Children nodes\n   */\n  children: PropTypes.oneOfType([\n    PropTypes.arrayOf(PropTypes.node),\n    PropTypes.node\n  ]).isRequired,\n\n  /**\n   * @deprecated Site header is now populated from the current product's `name` via `useProductsStore`. Only set this prop to explicitly override the product name.\n   */\n  siteName: PropTypes.string,\n\n  /**\n   * Component to render for the user Avatar\n   */\n  userAvatar: PropTypes.element,\n\n  appContent: PropTypes.element,\n\n  leftMenu: PropTypes.array,\n\n  appSelectorMenus: PropTypes.array,\n\n  className: PropTypes.object,\n\n  /**\n   * @deprecated The breadcrumb root falls back to the i18n-translated default (`'home'`). Only set this prop to override the translated root label.\n   */\n  navRoot: PropTypes.oneOfType([\n    PropTypes.string,\n    PropTypes.element,\n    PropTypes.node\n  ]),\n\n  /**\n   * Should the shell use mock data\n   */\n  useMockData: PropTypes.bool,\n\n  mockMenus: PropTypes.array,\n\n  unityUrl: PropTypes.string,\n\n  expander: PropTypes.bool,\n\n  sidebarTitle: PropTypes.string,\n\n  navMenuHoverOn: PropTypes.bool,\n\n  toggleOne: PropTypes.bool,\n\n  toggleTwo: PropTypes.bool,\n\n  closePrimary: PropTypes.bool,\n\n  closeSecondary: PropTypes.bool,\n\n  panelExpanded: PropTypes.bool,\n\n  panelExpandedSecondary: PropTypes.bool,\n\n  setPanelExpanded: PropTypes.func,\n\n  setPanelExpandedSecondary: PropTypes.func,\n\n  breadCrumbAltLabelList: PropTypes.array,\n\n  currentLocation: PropTypes.object,\n\n  utilitySidebarResizable: PropTypes.bool,\n\n  utilitySidebarToggleOverride: PropTypes.bool,\n\n  onUtilitySidebarToggleExpandClick: PropTypes.func,\n\n  hideLayout: PropTypes.bool,\n\n  languages: PropTypes.arrayOf(PropTypes.object),\n\n  /**\n   * Passes the background color on the project switcher (default: theme secondary)\n   */\n  projectSwitcherColor: PropTypes.string,\n  /**\n   * Map of widget identifiers to React.lazy components.\n   * Internally merged with UdpPagesLazy. Preferred over getWidget/isValidWidget.\n   */\n  widgets: PropTypes.object,\n  /** @deprecated Use `widgets` prop instead */\n  getWidget: PropTypes.func,\n  /** @deprecated Use `widgets` prop instead */\n  isValidWidget: PropTypes.func,\n  currentTenant: PropTypes.object,\n  hamburgerMenuAccessRole: PropTypes.string\n};\n"],"mappings":"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"}