{"version":3,"file":"ActionProvider.mjs","names":["React","useCallback","useEffect","useMemo","useReducer","useState","createPortal","ActionContext","ActionDispatchContext","ActionWrapper","apiMutate","NodeActionEnums","useAuthedUser","useAxiosGet","useDefaultFormValues","ActionLoadingContext","ActionLoadingDispatchContext","LoadingOverlay","useHistory","usePromotedLookupMethods","useCatalogStore","useActionStore","useShellStore","ConfigService","usePromotedMethodEntities","emptyAction","action","actionId","payload","actionPanels","catalog","catalogPromise","catalogEntities","catalogPromotedEntities","menuListState","menuList","handleRemoveMenuItem","selectedMenuIndex","modal","open","title","inquiryParams","selectedNode","selectedNodeParent","refreshTree","showInquiryHeaderActions","sideSheet","splitScreen","type","params","pageSplitScreen","pageContainerSplitScreen","setCurrentEntityName","newRouteEmptyAction","selectedNodeObj","emptyActionLoading","loading","waitingToExecute","ActionProvider","props","domRoot","children","user","history","apiCatalogId","setApiCatalogId","foreignKeyData","setForeignKeyData","actionPanel","setActionPanel","currentEntityName","currentLocationPathname","setCurrentLocationPathname","location","pathname","state","currentContainerId","setCurrentApiCatalogId","data","tpacb","tpacbLoading","integrationV1ApiUrl","currentTenantId","config","UNITY_PRODUCT_ID","actionState","dispatch","reducerAction","containerIdToUse","containerId","updatedActionPanels","initialContainerId","updatedInquiryParams","Error","actionLoadingState","dispatchActionLoading","selectedAction","entityName","catalogObject","integrationV2ApiUrl","entityAttributes","properties","defaultFormValues","crudTableFormData","setCrudTableFormData","crudTableEditionData","crudData","nodeObj","actionTypeId","Update","executeAction","id","method","inquiryActions","find","ap","panelActions","pa","listen","actionLoading"],"sources":["../../../src/utilities/provider/ActionProvider.jsx"],"sourcesContent":["import React, {\n  useCallback,\n  useEffect,\n  useMemo,\n  useReducer,\n  useState\n} from 'react';\nimport { createPortal } from 'react-dom';\nimport { ActionContext } from '../../contexts/ActionContext';\nimport { ActionDispatchContext } from '../../contexts/ActionDispatchContext';\nimport { ActionWrapper } from '../../actions/ActionWrapper';\nimport { apiMutate } from '../useAxiosMutate';\nimport { NodeActionEnums } from '../../enums/unitySystemEnums';\nimport { useAuthedUser } from '../auth/useAuthedUser';\nimport { useAxiosGet } from '../useAxiosGet';\nimport useDefaultFormValues from '../crud/useDefaultFormValues';\nimport { ActionLoadingContext } from '../../contexts/ActionLoadingContext';\nimport { ActionLoadingDispatchContext } from '../../contexts/ActionLoadingDispatchContext';\nimport LoadingOverlay from '../../UI/loading/LoadingOverlay';\nimport { useHistory } from 'react-router-dom';\nimport { usePromotedLookupMethods } from '../../hooks/usePromotedLookupMethods';\nimport { useCatalogStore } from '../../stores/catalogStore';\nimport { useActionStore } from '../../stores/actionStore';\nimport { useShellStore } from '../../stores/shellStore';\nimport { ConfigService } from '../../configService';\nimport { usePromotedMethodEntities } from '../../hooks/usePromotedMethodEntities';\n\nconst emptyAction = {\n  action: {\n    actionId: '',\n    payload: null\n  },\n  actionPanels: {},\n  catalog: null,\n  catalogPromise: null,\n  catalogEntities: [],\n  catalogPromotedEntities: [],\n  menuListState: {\n    menuList: [],\n    handleRemoveMenuItem: () => {},\n    selectedMenuIndex: null\n  },\n  modal: {\n    open: false,\n    action: null,\n    title: ''\n  },\n  inquiryParams: {\n    0: {\n      selectedNode: null,\n      selectedNodeParent: null,\n      refreshTree: null\n    }\n  },\n  showInquiryHeaderActions: true,\n  sideSheet: {\n    open: false,\n    action: null\n  },\n  splitScreen: {\n    open: false,\n    action: null,\n    type: null,\n    params: null\n  },\n  pageSplitScreen: {\n    open: false,\n    action: null,\n    type: null,\n    params: null\n  },\n  pageContainerSplitScreen: {\n    open: false,\n    action: null,\n    type: null,\n    params: null\n  },\n  setCurrentEntityName: null\n};\n\nconst newRouteEmptyAction = {\n  action: {\n    actionId: '',\n    payload: null\n  },\n  actionPanels: {},\n  menuListState: {\n    menuList: [],\n    handleRemoveMenuItem: () => {},\n    selectedMenuIndex: null\n  },\n  modal: {\n    open: false,\n    action: null,\n    title: ''\n  },\n  selectedNodeObj: null,\n  inquiryParams: {\n    0: {\n      selectedNode: null,\n      selectedNodeParent: null,\n      refreshTree: null\n    }\n  },\n  showInquiryHeaderActions: true,\n  sideSheet: {\n    open: false,\n    action: null\n  },\n  splitScreen: {\n    open: false,\n    action: null,\n    type: null,\n    params: null\n  },\n  pageSplitScreen: {\n    open: false,\n    action: null,\n    type: null,\n    params: null\n  },\n  pageContainerSplitScreen: {\n    open: false,\n    action: null,\n    type: null,\n    params: null\n  }\n};\n\nconst emptyActionLoading = {\n  loading: false,\n  waitingToExecute: ''\n};\n\nexport const ActionProvider = (props) => {\n  const { domRoot, children } = props;\n  const user = useAuthedUser();\n  const history = useHistory();\n\n  const [apiCatalogId, setApiCatalogId] = useState(null);\n  const [foreignKeyData, setForeignKeyData] = useState([]);\n  const [actionPanel, setActionPanel] = useState(null);\n  const [currentEntityName, setCurrentEntityName] = useState(null);\n  const [currentLocationPathname, setCurrentLocationPathname] = useState(\n    history?.location?.pathname\n  );\n  usePromotedMethodEntities(apiCatalogId);\n\n  const selectedNode = useActionStore((state) => state.selectedNode);\n  const currentContainerId = useShellStore((state) => state.currentContainerId);\n\n  // Set the lookup api method Id for the application\n  usePromotedLookupMethods(apiCatalogId);\n\n  const setCurrentApiCatalogId = useCatalogStore(\n    (state) => state.setCurrentApiCatalogId\n  );\n\n  const [{ data: tpacb, loading: tpacbLoading }] = useAxiosGet(\n    ConfigService.integrationV1ApiUrl,\n    `tenantProductApiCatalogBase/tenant/${user?.currentTenantId}/product/${ConfigService.config.UNITY_PRODUCT_ID}`,\n    {},\n    !user?.currentTenantId,\n    false\n  );\n\n\n\n  const [actionState, dispatch] = useReducer((state, reducerAction) => {\n    switch (reducerAction.type) {\n      case 'SET_ACTION_PANELS':\n        let containerIdToUse = 0;\n        if (reducerAction.containerId) {\n          containerIdToUse = reducerAction.containerId;\n        }\n\n        const updatedActionPanels = { ...state.actionPanels };\n        updatedActionPanels[containerIdToUse] = reducerAction.actionPanels;\n        state = {\n          ...state,\n          actionPanels: updatedActionPanels\n        };\n        break;\n      case 'OPEN_SIDESHEET':\n        state = {\n          ...state,\n          sideSheet: reducerAction.sideSheet\n        };\n        break;\n      case 'OPEN_MODAL':\n        state = {\n          ...state,\n          modal: reducerAction.modal\n        };\n        break;\n      case 'CLOSE_ALL_SPLIT_SCREENS':\n        state = {\n          ...state,\n          splitScreen: { open: false, action: null, type: null, params: null },\n          pageSplitScreen: {\n            open: false,\n            action: null,\n            type: null,\n            params: null\n          },\n          pageContainerSplitScreen: {\n            open: false,\n            action: null,\n            type: null,\n            params: null\n          }\n        };\n        break;\n      case 'OPEN_SPLIT_SCREEN':\n        state = {\n          ...state,\n          splitScreen: reducerAction.splitScreen\n        };\n        break;\n      case 'OPEN_PAGE_SPLIT_SCREEN':\n        state = {\n          ...state,\n          pageSplitScreen: reducerAction.pageSplitScreen\n        };\n        break;\n      case 'OPEN_PAGE_CONTAINER_SPLIT_SCREEN':\n        state = {\n          ...state,\n          pageContainerSplitScreen: reducerAction.pageContainerSplitScreen\n        };\n        break;\n      case 'SET_CATALOG_ENTITIES':\n        state = {\n          ...state,\n          catalogEntities: reducerAction.catalogEntities\n        };\n        break;\n      case 'SET_CATALOG_PROMOTED_ENTITIES':\n        state = {\n          ...state,\n          catalogPromotedEntities: reducerAction.catalogPromotedEntities\n        };\n        break;\n      case 'SET_INQUIRY_PARAMS':\n        let initialContainerId = 0;\n        if (reducerAction.containerId) {\n          initialContainerId = reducerAction.containerId;\n        }\n\n        const updatedInquiryParams = { ...state.inquiryParams };\n        updatedInquiryParams[initialContainerId] = reducerAction.inquiryParams;\n        state = {\n          ...state,\n          inquiryParams: updatedInquiryParams\n        };\n        break;\n      case 'SET_SHOW_INQUIRY_HEADER_ACTIONS':\n        state = {\n          ...state,\n          showInquiryHeaderActions: reducerAction.showInquiryHeaderActions\n        };\n        break;\n      case 'SET_MENU_LIST_STATE':\n        state = {\n          ...state,\n          menuListState: reducerAction.menuListState\n        };\n        break;\n      case 'SET_ACTION_STATE_FOR_NEW_ROUTE':\n        state = {\n          ...state,\n          ...newRouteEmptyAction\n        };\n        break;\n      default:\n        throw new Error(`Unknown action type ${reducerAction.type}`);\n    }\n    state = {\n      ...state,\n      setCurrentEntityName: setCurrentEntityName\n    };\n    return state;\n  }, emptyAction);\n\n  const [actionLoadingState, dispatchActionLoading] = useReducer(\n    (state, reducerAction) => {\n      switch (reducerAction.type) {\n        case 'SET_ACTION_LOADING':\n          state = {\n            ...state,\n            loading: reducerAction.loading\n          };\n          break;\n        case 'SET_ACTION_WAITING_TO_EXECUTE':\n          state = {\n            ...state,\n            waitingToExecute: reducerAction.actionId\n          };\n          break;\n        default:\n          throw new Error(`Unknown action loading type ${reducerAction.type}`);\n      }\n      return state;\n    },\n    emptyActionLoading\n  );\n  const action = useMemo(() => {\n    let selectedAction = null;\n    if (actionState) {\n      if (actionState.modal?.action) {\n        selectedAction = actionState.modal.action;\n      }\n      if (actionState.sideSheet?.action) {\n        selectedAction = actionState.sideSheet.action;\n      }\n      if (actionState.splitScreen?.action) {\n        selectedAction = actionState.splitScreen.action;\n      }\n      if (actionState.pageSplitScreen?.action) {\n        selectedAction = actionState.pageSplitScreen.action;\n      }\n      if (actionState.pageContainerSplitScreen?.action) {\n        selectedAction = actionState.pageContainerSplitScreen.action;\n      }\n    }\n\n    return selectedAction;\n  }, [actionState]);\n\n  const entityName = useMemo(() => {\n    return actionPanel ? actionPanel.entityName : currentEntityName;\n  }, [actionPanel, currentEntityName]);\n\n  const [{ data: catalogObject }] = useAxiosGet(\n    ConfigService.integrationV2ApiUrl,\n    `apiCatalog/${apiCatalogId}/catalogObject/${entityName}`,\n    {},\n    !!!apiCatalogId || !!!entityName,\n    false\n  );\n\n  const entityAttributes = useMemo(() => {\n    return catalogObject?.properties ?? [];\n  }, [catalogObject]);\n\n  const { defaultFormValues } = useDefaultFormValues(entityAttributes);\n  const [crudTableFormData, setCrudTableFormData] = useState(defaultFormValues);\n\n  const crudTableEditionData = useMemo(() => {\n    let crudData = null;\n    if (\n      selectedNode?.nodeObj &&\n      action &&\n      action.actionTypeId === NodeActionEnums.Update\n    ) {\n      crudData = selectedNode.nodeObj;\n      setCrudTableFormData(selectedNode.nodeObj);\n    } else {\n      setCrudTableFormData(defaultFormValues);\n    }\n\n    return crudData;\n  }, [action, selectedNode]);\n\n  const executeAction = useCallback(\n    async (data, id) =>\n      apiMutate(\n        ConfigService.integrationV1ApiUrl,\n        `apimethod/executeQueryWithParameters/${id}`,\n        {\n          method: 'post'\n        },\n        data\n      ),\n    []\n  );\n\n  const inquiryActions = (\n    <ActionWrapper\n      action={action}\n      actionState={actionState}\n      actionPanel={actionPanel}\n      dispatch={dispatch}\n      apiCatalogId={apiCatalogId}\n      executeAction={executeAction}\n      splitScreenBody={children}\n      entityAttributes={entityAttributes}\n      foreignKeyData={foreignKeyData}\n      setForeignKeyData={setForeignKeyData}\n      crudTableEditionData={crudTableEditionData}\n      crudTableFormData={crudTableFormData}\n    />\n  );\n\n  useEffect(() => {\n    if (tpacb) {\n      setApiCatalogId(tpacb.apiCatalogId);\n      setCurrentApiCatalogId(tpacb.apiCatalogId);\n    }\n  }, [tpacb, setCurrentApiCatalogId]);\n\n  useEffect(() => {\n    if (action && actionState) {\n      setActionPanel(\n        actionState?.actionPanels[currentContainerId || 0]?.find((ap) =>\n          ap.panelActions.find((pa) => pa.actionId === action.actionId)\n        )\n      );\n    }\n  }, [action, actionState, currentContainerId]);\n\n  useEffect(\n    () =>\n      dispatchActionLoading({\n        type: 'SET_ACTION_LOADING',\n        loading:  tpacbLoading\n      }),\n    [tpacbLoading]\n  );\n\n  // listening to route changes to reset specific properties in the action state\n  useEffect(() => {\n    if (history) {\n      return history.listen((location) => {\n        if (currentLocationPathname !== location.pathname) {\n          setCurrentLocationPathname(location.pathname);\n          dispatch({\n            type: 'SET_ACTION_STATE_FOR_NEW_ROUTE'\n          });\n        }\n      });\n    }\n  }, [history, currentLocationPathname]);\n\n  const actionLoading = useMemo(\n    () => <LoadingOverlay open={!!actionLoadingState.waitingToExecute} />,\n    [actionLoadingState]\n  );\n\n  return (\n    <>\n      {actionLoading}\n      <ActionContext.Provider value={actionState}>\n        <ActionDispatchContext.Provider value={dispatch}>\n          <ActionLoadingContext.Provider value={actionLoadingState}>\n            <ActionLoadingDispatchContext.Provider\n              value={dispatchActionLoading}\n            >\n              {domRoot ? createPortal(inquiryActions, domRoot) : inquiryActions}\n            </ActionLoadingDispatchContext.Provider>\n          </ActionLoadingContext.Provider>\n        </ActionDispatchContext.Provider>\n      </ActionContext.Provider>\n    </>\n  );\n};\n"],"mappings":"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"}