{"version":3,"file":"MenuPage.mjs","names":["React","useCallback","useEffect","useMemo","useState","useHistory","useLocation","Prompt","useAxiosGet","UtilitySideBar","makeStyles","PageContainer","transformMenuPageTree","BaseTreeMenu","TreeViewModeEnums","DndProvider","HTML5Backend","useUser","useShellStore","NodeLoader","APP_RIBBON_SPACE","useBuildEnvironment","useSetLocationState","useTranslation","ConfigService","useStyles","theme","root","flex","height","minHeight","display","gridTemplateAreas","map","line","join","gridTemplateColumns","gridTemplateRows","sidebar","gridArea","marginRight","spacing","flexDirection","content","position","zIndex","overflowY","menuContent","marginTop","marginBottom","overflowX","loader","marginLeft","loadingContent","alignItems","justifyContent","EMPTY_HEADERS","findNodeById","nodes","id","node","String","children","found","MenuPage","props","$","_c","buildEnv","t0","t1","appRibbonSpace","classes","history","location","user","t","setLocationState","innerMenuOverride","mainContent","menuTitle","allowMissingPageParam","t2","searchParamsTransformer","undefined","sidebarExpanded","setSidebarExpanded","hasUnsavedChanges","setHasUnsavedChanges","setSubHeaderActionHasChildren","setNavigationExpanded","t3","pathname","replace","innerMenuId","t4","tenantV1ApiUrl","data","fetchedInnerMenu","loading","menuLoading","innerMenu","t5","bb0","t6","Symbol","for","menuItemInstanceStructureViews","reduce","_temp","menuItemsList","search","URLSearchParams","get","pageId","t7","bb1","length","t8","selectedNode","properties","page","pageData","pageLoading","t9","params","menuIndex","result","searchParams","toString","buildSearchString","t10","node_0","menuIndex_0","firstNode","set","searchString","push","handleSelectedNode","t11","_temp2","handleSidebarExpandClick","handleDropNode","_temp3","t12","currentUrlId","newParams","t13","t14","t15","t16","t17","t18","state","label","name","t19","t20","t21","defaultValue","t22","t23","t24","nodeContainer","parentId","menuItems","index","Classic","t25","t26","t27","t28","t29","entityName","entity","pbiReportCode","pbiReportForUnity","requiredFieldsMap","requiredFieldMapping","udpTagId","queryId","inquiryTreeId","t30","t31","t32","acc","menuInstance","updatedMenu","expanded"],"sources":["../../src/menuPage/MenuPage.jsx"],"sourcesContent":["import React, { useCallback, useEffect, useMemo, useState } from 'react';\nimport { useHistory, useLocation, Prompt } from 'react-router-dom';\nimport { useAxiosGet } from '../utilities/useAxiosGet';\nimport { UtilitySideBar } from '../UI/utilityDisplay/UtilitySideBar';\nimport { makeStyles } from '@material-ui/core';\nimport { PageContainer } from '../page/PageContainer';\nimport { transformMenuPageTree } from '../utilities/tree/TreeUtilities';\nimport { BaseTreeMenu } from '../treeMenu/BaseTreeMenu';\nimport { TreeViewModeEnums } from '../enums/unitySystemEnums';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useUser } from '../utilities/auth/useUser';\nimport { useShellStore } from '../stores/shellStore';\nimport { NodeLoader } from '../UI/feedback/NodeLoader';\nimport {\n  APP_RIBBON_SPACE,\n  useBuildEnvironment\n} from '../shell/ui/useBuildEnvironment';\nimport { useSetLocationState } from '../hooks/useSetLocationState';\nimport { useTranslation } from 'react-i18next';\nimport { ConfigService } from '../configService';\n\nconst useStyles = makeStyles((theme) => ({\n  root: {\n    flex: 1,\n    height: '100%',\n    minHeight: 0,\n    display: 'grid',\n    gridTemplateAreas: ['sidebar content'].map((line) => `\"${line}\"`).join(' '),\n    gridTemplateColumns: 'auto 1fr',\n    gridTemplateRows: 'auto 1fr'\n  },\n  sidebar: {\n    gridArea: 'sidebar',\n    marginRight: theme.spacing(1),\n    display: 'flex',\n    flexDirection: 'column',\n    minHeight: 0\n  },\n  content: {\n    gridArea: 'content',\n    display: 'flex',\n    flexDirection: 'column',\n    position: 'relative',\n    zIndex: 1,\n    height: `100%`,\n    minHeight: 0,\n    overflowY: 'auto'\n  },\n  menuContent: {\n    marginTop: theme.spacing(1),\n    marginBottom: theme.spacing(4),\n    flex: 1,\n    minHeight: 0,\n    overflowX: 'hidden',\n    overflowY: 'auto'\n  },\n  loader: {\n    marginRight: theme.spacing(1),\n    marginLeft: theme.spacing(1)\n  },\n  loadingContent: {\n    flex: 1,\n    display: 'flex',\n    flexDirection: 'column',\n    alignItems: 'center',\n    justifyContent: 'center'\n  }\n}));\n\n// Define a stable constant for empty headers to prevent useEffect loops\nconst EMPTY_HEADERS = {};\n\n// Helper to find a node deep in the tree (Moved outside to ensure stability)\nconst findNodeById = (nodes, id) => {\n  if (!nodes || !id) return null;\n  for (const node of nodes) {\n    if (String(node.id) === String(id)) return node;\n    if (node.children) {\n      const found = findNodeById(node.children, id);\n      if (found) return found;\n    }\n  }\n  return null;\n};\n\nconst MenuPage = (props) => {\n  const buildEnv = useBuildEnvironment();\n  const classes = useStyles({\n    ...props,\n    appRibbonSpace: buildEnv ? APP_RIBBON_SPACE : 0\n  });\n  const history = useHistory();\n  const location = useLocation();\n  const user = useUser();\n  const { t } = useTranslation();\n  const setLocationState = useSetLocationState();\n\n  const {\n    innerMenuOverride,\n    mainContent,\n    menuTitle,\n    allowMissingPageParam = false,\n    searchParamsTransformer\n  } = props;\n\n  // --- STATE ---\n  const [sidebarExpanded, setSidebarExpanded] = useState(true);\n  const [hasUnsavedChanges, setHasUnsavedChanges] = useState(false);\n  const { setSubHeaderActionHasChildren, setNavigationExpanded } =\n    useShellStore();\n\n  // --- DATA FETCHING ---\n  const innerMenuId = location.pathname.replace('/menupage/', '');\n\n  const [{ data: fetchedInnerMenu, loading: menuLoading }] = useAxiosGet(\n    ConfigService.tenantV1ApiUrl,\n    `menus/${innerMenuId}`,\n    EMPTY_HEADERS,\n    !innerMenuId || innerMenuOverride, //If no innerMenuId or an override dont make api call\n    false\n  );\n\n  const innerMenu = innerMenuOverride ?? fetchedInnerMenu;\n\n  // --- MEMOIZED DATA ---\n  const menuItemsList = useMemo(() => {\n    if (!innerMenu) return [];\n\n    return (\n      innerMenu.menuItemInstanceStructureViews?.reduce((acc, menuInstance) => {\n        const updatedMenu = transformMenuPageTree(menuInstance);\n        if (updatedMenu) acc.push(updatedMenu);\n        return acc;\n      }, []) ?? []\n    );\n  }, [innerMenu]);\n\n  // --- CORE REFACTOR: DERIVE SELECTED NODE ---\n  const pageId = new URLSearchParams(location.search).get('page');\n\n  const selectedNode = useMemo(() => {\n    if (!menuItemsList.length) return null;\n\n    // 1. Try to find the node requested in URL\n    const found = findNodeById(menuItemsList, pageId);\n    if (found) return found;\n\n    // 2. Default to first item\n    // Even if allowMissingPageParam is true, we still want to RETURN the node for rendering,\n    // we just don't want the Redirector useEffect to force it into the URL.\n    return menuItemsList[0];\n  }, [menuItemsList, pageId]);\n\n  // Fetch Page Data based on the derived node\n  const [{ data: pageData, loading: pageLoading }] = useAxiosGet(\n    ConfigService.tenantV1ApiUrl,\n    `page/${selectedNode?.properties?.page?.id}`,\n    EMPTY_HEADERS,\n    !selectedNode?.properties?.page?.id,\n    false\n  );\n\n  // --- ACTIONS ---\n\n  const buildSearchString = useCallback(\n    (params, node, menuIndex) => {\n      if (typeof searchParamsTransformer === 'function') {\n        const result = searchParamsTransformer({\n          searchParams: params,\n          node,\n          menuIndex,\n          location\n        });\n        if (result === null) return '';\n        if (result instanceof URLSearchParams) return result.toString();\n        if (typeof result === 'string') return result;\n        if (result !== undefined) return String(result);\n      }\n      return params.toString();\n    },\n    [location, searchParamsTransformer]\n  );\n\n  const handleSelectedNode = useCallback(\n    (node, menuIndex) => {\n      // 1. Check if we are \"selecting\" the current node to clear query params if needed\n      if (allowMissingPageParam) {\n        const firstNode = menuItemsList?.[0];\n        if (firstNode && String(node?.id) === String(firstNode.id)) {\n          if (location.search) {\n            history.replace({ pathname: location.pathname, search: '' });\n          }\n          setHasUnsavedChanges(false);\n          return;\n        }\n      }\n\n      // 2. Build URL\n      const searchParams = new URLSearchParams(location.search);\n      searchParams.set('page', node.id);\n      const searchString = buildSearchString(searchParams, node, menuIndex);\n\n      // 3. Navigate (The URL change will trigger the re-render & selectedNode update)\n      history.push({\n        pathname: location.pathname,\n        search: searchString\n      });\n\n      // Note: We don't set 'selectedNode' manually anymore. It is derived.\n    },\n    [history, location, allowMissingPageParam, menuItemsList, buildSearchString]\n  );\n\n  const handleSidebarExpandClick = useCallback(() => {\n    setSidebarExpanded((expanded) => !expanded);\n  }, []);\n\n  const handleDropNode = useCallback(() => {\n    // TODO: Implement if we need to for next Phase\n  }, []);\n\n  // --- EFFECTS ---\n\n  // 1. URL SYNCHRONIZATION (The \"Redirector\")\n  // Ensures URL matches the selected node (e.g. on initial load or default selection)\n  useEffect(() => {\n    if (selectedNode && !allowMissingPageParam) {\n      const currentUrlId = new URLSearchParams(location.search).get('page');\n\n      if (String(selectedNode.id) !== String(currentUrlId)) {\n        const newParams = new URLSearchParams(location.search);\n        newParams.set('page', selectedNode.id);\n\n        history.replace({\n          pathname: location.pathname,\n          search: newParams.toString()\n        });\n      }\n    }\n  }, [selectedNode?.id, location.search, history, allowMissingPageParam]);\n\n  // 2. UI CLEANUP (The \"Reactor\")\n  // Runs only when the ACTUAL selected ID changes to reset UI state\n  useEffect(() => {\n    if (selectedNode?.id) {\n      setNavigationExpanded(false);\n      setHasUnsavedChanges(false);\n      setSubHeaderActionHasChildren(false);\n    }\n  }, [selectedNode?.id, setNavigationExpanded, setSubHeaderActionHasChildren]);\n\n  // 3. BREADCRUMB / LABEL SYNC\n  useEffect(() => {\n    if (innerMenu && location.state?.label !== t(innerMenu?.name)) {\n      setLocationState({ label: t(innerMenu?.name) });\n    }\n  }, [setLocationState, t, innerMenu, location.state?.label]);\n\n  // --- RENDER ---\n  return (\n    <DndProvider backend={HTML5Backend}>\n      <Prompt\n        when={hasUnsavedChanges}\n        message={t('menuPage.unsavedChangesPrompt', {\n          defaultValue:\n            'You have unsaved changes. Are you sure you want to leave this page?'\n        })}\n      />\n      <div className={classes.root}>\n        <div className={classes.sidebar}>\n          <UtilitySideBar\n            title={innerMenu?.name || menuTitle}\n            isUsingChildren={true}\n            resizable={true}\n            removePadding={true}\n            removeTopLayoutUnit={true}\n            onUtilitySidebarToggleExpandClick={handleSidebarExpandClick}\n            collapsedWidth={64}\n          >\n            <div className={classes.menuContent} key={innerMenuId}>\n              {menuItemsList?.length > 0 &&\n                !menuLoading &&\n                menuItemsList.map((menuItems, index) => (\n                  <div key={menuItems.id} className={classes.nodeContainer}>\n                    <BaseTreeMenu\n                      menuItems={menuItems}\n                      onSelectNode={handleSelectedNode}\n                      onDropNode={handleDropNode}\n                      menuIndex={index}\n                      selectedNodeId={selectedNode?.id}\n                      selectedNodeParentId={selectedNode?.parentId}\n                      sidebarExpanded={sidebarExpanded}\n                      treeViewMode={TreeViewModeEnums.Classic}\n                    />\n                  </div>\n                ))}\n              {menuLoading && (\n                <div className={classes.loader}>\n                  <NodeLoader loading={menuLoading} />\n                </div>\n              )}\n            </div>\n          </UtilitySideBar>\n        </div>\n        <div className={classes.content}>\n          {mainContent\n            ? typeof mainContent === 'function'\n              ? mainContent({ selectedNode, menuItemsList })\n              : mainContent\n            : selectedNode?.properties?.page?.id && (\n                <PageContainer\n                  user={user}\n                  key={selectedNode?.id}\n                  pageData={pageData}\n                  pageLoading={pageLoading}\n                  widgetParams={{\n                    pageId: pageData?.pageId,\n                    entityName:\n                      selectedNode?.properties?.page?.entity?.entityName,\n                    pbiReportCode:\n                      selectedNode?.properties?.page?.pbiReportCode,\n                    pbiReportForUnity:\n                      selectedNode?.properties?.page?.pbiReportForUnity,\n                    requiredFieldsMap:\n                      selectedNode?.properties?.page?.requiredFieldMapping,\n                    udpTagId: selectedNode?.properties?.page?.udpTagId,\n                    queryId: selectedNode?.properties?.page?.queryId,\n                    inquiryTreeId:\n                      selectedNode?.properties?.page?.inquiryTreeId,\n                    setHasUnsavedChanges: setHasUnsavedChanges\n                  }}\n                  disableMargins={true}\n                  fromMenu={true}\n                />\n              )}\n        </div>\n      </div>\n    </DndProvider>\n  );\n};\n\nexport default MenuPage;\n"],"mappings":"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"}