{"version":3,"file":"WorkflowContainer.mjs","names":["React","useCallback","useEffect","useState","useLocation","useAxiosGet","UtilitySideBar","makeStyles","WorkflowTreeMenu","TreeViewModeEnums","DndProvider","HTML5Backend","useShellStore","NodeLoader","APP_RIBBON_SPACE","useBuildEnvironment","WorkflowContent","transformWorkflowPlayTree","updateWorkflowPlayNodeState","useUpdateSearchParams","useUser","apiMutate","useSetLocationState","useTranslation","ConfigService","useStyles","theme","root","flex","minHeight","appRibbonSpace","display","gridTemplateAreas","map","line","join","gridTemplateColumns","gridTemplateRows","sidebar","gridArea","marginRight","spacing","content","flexDirection","position","zIndex","height","overflowY","menuContent","marginTop","overflowX","loader","marginLeft","loadingContent","alignItems","justifyContent","WorkflowContainer","props","$","_c","playId","taskId","autoCollapseNav","t0","undefined","buildEnv","t1","t2","classes","location","updateSearchParams","user","setLocationState","t","t3","Symbol","for","menuItemsList","setMenuItemsList","selectedNode","setSelectedNode","sidebarExpanded","setSidebarExpanded","reloadFromPage","setReloadFromPage","workflow","setWorkflow","state","searchParamStr","search","t4","udpPlayId","pathname","searchParams","URLSearchParams","t5","replace","urlPlayId","has","get","udpTaskId","t6","reloadWorkflow","builderV1ApiUrl","data","workflowPlay","loading","workflowPlayLoading","t7","t8","securityV1ApiUrl","currentTenantId","users","t9","t10","tenantV1ApiUrl","config","UNITY_PRODUCT_ID","groups","setSubHeaderActionHasChildren","setNavigationExpanded","t11","handleReloadWorkflow","t12","node","menuIndex","isSelectable","properties","playSceneId","handleSelectedNode","handleDropNode","_temp","t13","_temp2","handleSidebarExpandClick","t14","t15","t16","t17","label","defaultValue","t18","t19","prevNode","foundNode","workflowPlayNode","children","find","child","id","updatedNode","t20","t21","list","updatedMenu","push","t22","t23","menu","matchingTaskNode","child_0","firstSelectableMenuItem","_temp3","t24","t25","t26","t27","t28","t29","nodeContainer","parentId","length","menuItems","index","Classic","t30","t31","t32","t33","t34","t35","t36","sourceNode","targetNode","sourceNodeMenuIndex","targetNodeMenuIndex","expanded","item"],"sources":["../../src/workflow/WorkflowContainer.jsx"],"sourcesContent":["import React, { useCallback, useEffect, useState } from 'react';\nimport { useLocation } from 'react-router-dom';\nimport { useAxiosGet } from '../utilities/useAxiosGet';\nimport { UtilitySideBar } from '../UI/utilityDisplay/UtilitySideBar';\nimport { makeStyles } from '@material-ui/core';\nimport { WorkflowTreeMenu } from './menus/WorkflowTreeMenu';\nimport { TreeViewModeEnums } from '../enums/unitySystemEnums';\nimport { DndProvider } from 'react-dnd';\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport { useShellStore } from '../stores/shellStore';\nimport { NodeLoader } from '../UI/feedback/NodeLoader';\nimport {\n  APP_RIBBON_SPACE,\n  useBuildEnvironment\n} from '../shell/ui/useBuildEnvironment';\nimport { WorkflowContent } from './WorkflowContent';\nimport {\n  transformWorkflowPlayTree,\n  updateWorkflowPlayNodeState\n} from '../utilities/workflow/workflowUtilities';\nimport { useUpdateSearchParams } from '../hooks/useUpdateSearchParams';\nimport { useUser } from '../utilities/auth/useUser';\nimport { apiMutate } from '../utilities/useAxiosMutate';\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    minHeight: ({ appRibbonSpace }) => `calc(100vh - ${appRibbonSpace + 56}px)`,\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  },\n  content: {\n    gridArea: 'content',\n    display: 'flex',\n    flexDirection: 'column',\n    position: 'relative',\n    zIndex: 1,\n    height: ({ appRibbonSpace }) => `calc(100vh - ${appRibbonSpace + 56}px)`,\n    overflowY: 'auto'\n  },\n  menuContent: {\n    marginTop: theme.spacing(1),\n    height: ({ appRibbonSpace }) => `calc(100vh - ${appRibbonSpace + 116}px)`,\n    overflowX: 'hidden'\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\nexport const WorkflowContainer = (props) => {\n  const { playId, taskId, autoCollapseNav = true } = props;\n  const buildEnv = useBuildEnvironment();\n  const classes = useStyles({\n    ...props,\n    appRibbonSpace: buildEnv ? APP_RIBBON_SPACE : 0\n  });\n  const location = useLocation();\n  const updateSearchParams = useUpdateSearchParams();\n  const user = useUser();\n  const setLocationState = useSetLocationState();\n  const { t } = useTranslation();\n\n  const [menuItemsList, setMenuItemsList] = useState([]); // holds a list of trees\n  const [selectedNode, setSelectedNode] = useState(null);\n  const [sidebarExpanded, setSidebarExpanded] = useState(true);\n  const [reloadFromPage, setReloadFromPage] = useState(false);\n  const [workflow, setWorkflow] = useState(false);\n\n  const state = location.state;\n  let searchParamStr = location.search;\n  let searchParams = new URLSearchParams(searchParamStr);\n  const urlPlayId = location.pathname.replace('/workflowtask/', '');\n  const udpPlayId =\n    playId ||\n    urlPlayId ||\n    (state\n      ? state.playId\n      : searchParams.has('playId') === true\n      ? searchParams.get('playId')\n      : '');\n\n  const udpTaskId =\n    taskId ||\n    (state\n      ? state.taskId\n      : searchParams.has('taskId') === true\n      ? searchParams.get('taskId')\n      : '');\n\n  const [{ data: workflowPlay, loading: workflowPlayLoading }, reloadWorkflow] =\n    useAxiosGet(\n      ConfigService.builderV1ApiUrl,\n      `workflow/play/${udpPlayId}`,\n      {},\n      !!!udpPlayId,\n      false\n    );\n\n  const [{ data: users }] = useAxiosGet(\n    ConfigService.securityV1ApiUrl,\n    `users?tenantId=${user?.currentTenantId || ''}`,\n    {},\n    !!!user?.currentTenantId\n  );\n\n  const [{ data: groups }] = useAxiosGet(\n    ConfigService.tenantV1ApiUrl,\n    `groups?tenantId=${user?.currentTenantId || ''}&productId=${\n      ConfigService.config.UNITY_PRODUCT_ID\n    }`,\n    {},\n    !!!user?.currentTenantId\n  );\n\n  // const getNodeState = useCallback(\n  //   async (nodeId) =>\n  //     apiMutate(\n  //       ConfigService.builderV1ApiUrl,\n  //       `workflow/play/${udpPlayId}/node/${nodeId}/state`,\n  //       {\n  //         method: 'get'\n  //       }\n  //     ),\n  //   [udpPlayId]\n  // );\n\n  const { setSubHeaderActionHasChildren, setNavigationExpanded } =\n    useShellStore();\n\n  const handleReloadWorkflow = useCallback(async () => {\n    setReloadFromPage(true);\n    await reloadWorkflow();\n    setReloadFromPage(false);\n  }, [reloadWorkflow]);\n\n  const handleSelectedNode = useCallback(\n    async (node, menuIndex) => {\n      if (node.isSelectable) {\n        setSelectedNode(node);\n        await handleReloadWorkflow();\n        if (node?.properties?.playSceneId) {\n          updateSearchParams({ taskId: node.properties.playSceneId });\n        }\n      }\n    },\n    [updateSearchParams, handleReloadWorkflow]\n  );\n\n  const handleDropNode = useCallback(\n    (sourceNode, targetNode, sourceNodeMenuIndex, targetNodeMenuIndex) => {\n      // TODO: Implement if we need to for next Phase\n    },\n    []\n  );\n\n  const handleSidebarExpandClick = useCallback(() => {\n    setSidebarExpanded((expanded) => !expanded);\n  }, []);\n\n  useEffect(() => {\n    if (workflowPlay) {\n      setWorkflow(workflowPlay);\n    }\n  }, [workflowPlay]);\n\n  // Setting location state label so that if this page was saved to favorites\n  // we can determine the bread crumb\n  useEffect(() => {\n    setLocationState({\n      label: t('workflow.container.title', { defaultValue: 'Workflow' })\n    });\n  }, [setLocationState, t]);\n\n  // this is used for updating the state node for page use\n  useEffect(() => {\n    if (workflow) {\n      setSelectedNode((prevNode) => {\n        if (!!prevNode) {\n          const foundNode = workflow.workflowPlayNode?.children?.find(\n            (child) => child.id === prevNode.id\n          );\n          if (!!foundNode) {\n            const updatedNode = { ...prevNode };\n            // TODO: using this to update state for now but may need to update\n            // other properties of the selected node when we pull workflow tree\n            updatedNode.properties.state = foundNode.state;\n            return updatedNode;\n          } else {\n            return prevNode;\n          }\n        }\n      });\n    }\n  }, [workflow]);\n\n  useEffect(() => {\n    if (workflow) {\n      const list = [];\n      const updatedMenu = transformWorkflowPlayTree(workflow.workflowPlayNode);\n      if (updatedMenu) {\n        list.push(updatedMenu);\n      }\n      setMenuItemsList(list);\n    }\n  }, [workflow]);\n\n  useEffect(() => {\n    if (!selectedNode) {\n      const menu = menuItemsList[0];\n      // Use Task Id to find the first matching node in tree\n      if (menu) {\n        if (!!udpTaskId) {\n          const matchingTaskNode = menu.children.find(\n            (child) => child?.properties?.playSceneId === udpTaskId\n          );\n          setSelectedNode(matchingTaskNode || menu.children[0] || null);\n        } else {\n          const firstSelectableMenuItem = menu?.children?.find(\n            (item) => item.isSelectable\n          );\n          setSelectedNode(firstSelectableMenuItem || null);\n        }\n        if (autoCollapseNav) {\n          setNavigationExpanded(false);\n        }\n      }\n    }\n  }, [\n    udpTaskId,\n    menuItemsList,\n    selectedNode,\n    setNavigationExpanded,\n    autoCollapseNav\n  ]);\n\n  useEffect(() => {\n    setSubHeaderActionHasChildren(false);\n  }, [setSubHeaderActionHasChildren]);\n\n  // useEffect(() => {\n  //   if (selectedNode) {\n  //     const getState = async () => {\n  //       const response = await getNodeState(selectedNode.id);\n  //       if (response.status === 200) {\n  //         setMenuItemsList((prevMenuList) => {\n  //           let updatedList = [];\n  //           prevMenuList.forEach((menu) => {\n  //             const updatedMenu = updateWorkflowPlayNodeState(\n  //               menu,\n  //               selectedNode.id,\n  //               response.data\n  //             );\n  //             updatedList.push(updatedMenu);\n  //           });\n  //           return updatedList;\n  //         });\n  //       }\n  //     };\n  //     getState();\n  //   }\n  // }, [selectedNode, getNodeState]);\n\n  return (\n    <DndProvider backend={HTML5Backend}>\n      <div className={classes.root}>\n        <div className={classes.sidebar}>\n          <UtilitySideBar\n            title={t('workflow.container.title', { defaultValue: 'Workflow' })}\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={playId}>\n              {menuItemsList?.length > 0 &&\n                (!workflowPlayLoading || reloadFromPage) &&\n                menuItemsList.map((menuItems, index) => (\n                  <div key={menuItems.id} className={classes.nodeContainer}>\n                    <WorkflowTreeMenu\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              {workflowPlayLoading && !reloadFromPage && (\n                <div className={classes.loader}>\n                  <NodeLoader loading={workflowPlayLoading} />\n                </div>\n              )}\n            </div>\n          </UtilitySideBar>\n        </div>\n        <div className={classes.content}>\n          <WorkflowContent\n            selectedNode={selectedNode}\n            workflow={workflow}\n            reloadWorkflow={handleReloadWorkflow}\n            users={users}\n            groups={groups}\n          />\n        </div>\n      </div>\n    </DndProvider>\n  );\n};\n\nexport default WorkflowContainer;\n"],"mappings":"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"}