@corva/ui 3.75.0-0 → 3.75.0-1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/cjs-bundle/components/DevCenter/DevCenterAppContainer/DevCenterAppContainer.js +1 -1
  2. package/cjs-bundle/components/DevCenter/DevCenterAppContainer/DevCenterAppContainer.js.map +1 -1
  3. package/cjs-bundle/components/DevCenter/DevCenterAppContainer/components/AppSettingsDialog/AppSettingsDialog.js +1 -1
  4. package/cjs-bundle/components/DevCenter/DevCenterAppContainer/components/AppSettingsDialog/AppSettingsDialog.js.map +1 -1
  5. package/cjs-bundle/components/DevCenter/DevCenterAppContainer/components/DcFullscreenElemsCoordinatorProvider/DcFullscreenElemsCoordinatorProvider.js +1 -1
  6. package/cjs-bundle/components/DevCenter/DevCenterAppContainer/components/DcFullscreenElemsCoordinatorProvider/DcFullscreenElemsCoordinatorProvider.js.map +1 -1
  7. package/cjs-bundle/components/DevCenter/DevCenterAppContainer/components/DevCenterAppView/DevCenterAppView.js.map +1 -1
  8. package/cjs-bundle/components/DevCenter/DevCenterAppContainer/components/NonPriorityMenus/NonPriorityMenus.js.map +1 -1
  9. package/cjs-bundle/components/DevCenter/DevCenterAppContainer/constants.js +2 -0
  10. package/cjs-bundle/components/DevCenter/DevCenterAppContainer/constants.js.map +1 -0
  11. package/cjs-bundle/componentsV2/AppCommonsProvider/AppCommonsContext.js.map +1 -1
  12. package/components/DevCenter/DevCenterAppContainer/DevCenterAppContainer.d.ts +63 -39
  13. package/components/DevCenter/DevCenterAppContainer/DevCenterAppContainer.d.ts.map +1 -1
  14. package/components/DevCenter/DevCenterAppContainer/DevCenterAppContainer.js +1 -1
  15. package/components/DevCenter/DevCenterAppContainer/DevCenterAppContainer.js.map +1 -1
  16. package/components/DevCenter/DevCenterAppContainer/components/AppSettingsDialog/AppSettingsDialog.d.ts +1 -1
  17. package/components/DevCenter/DevCenterAppContainer/components/AppSettingsDialog/AppSettingsDialog.js +1 -1
  18. package/components/DevCenter/DevCenterAppContainer/components/AppSettingsDialog/AppSettingsDialog.js.map +1 -1
  19. package/components/DevCenter/DevCenterAppContainer/components/DcFullscreenElemsCoordinatorProvider/DcFullscreenElemsCoordinatorProvider.d.ts +1 -1
  20. package/components/DevCenter/DevCenterAppContainer/components/DcFullscreenElemsCoordinatorProvider/DcFullscreenElemsCoordinatorProvider.d.ts.map +1 -1
  21. package/components/DevCenter/DevCenterAppContainer/components/DcFullscreenElemsCoordinatorProvider/DcFullscreenElemsCoordinatorProvider.js +1 -1
  22. package/components/DevCenter/DevCenterAppContainer/components/DcFullscreenElemsCoordinatorProvider/DcFullscreenElemsCoordinatorProvider.js.map +1 -1
  23. package/components/DevCenter/DevCenterAppContainer/components/DevCenterAppView/DevCenterAppView.d.ts +1 -1
  24. package/components/DevCenter/DevCenterAppContainer/components/DevCenterAppView/DevCenterAppView.d.ts.map +1 -1
  25. package/components/DevCenter/DevCenterAppContainer/components/DevCenterAppView/DevCenterAppView.js.map +1 -1
  26. package/components/DevCenter/DevCenterAppContainer/components/NonPriorityMenus/NonPriorityMenus.d.ts +1 -1
  27. package/components/DevCenter/DevCenterAppContainer/components/NonPriorityMenus/NonPriorityMenus.d.ts.map +1 -1
  28. package/components/DevCenter/DevCenterAppContainer/components/NonPriorityMenus/NonPriorityMenus.js.map +1 -1
  29. package/components/DevCenter/DevCenterAppContainer/constants.d.ts +13 -0
  30. package/components/DevCenter/DevCenterAppContainer/constants.d.ts.map +1 -0
  31. package/components/DevCenter/DevCenterAppContainer/constants.js +2 -0
  32. package/components/DevCenter/DevCenterAppContainer/constants.js.map +1 -0
  33. package/components/DevCenter/DevCenterAppContainer/index.d.ts +2 -0
  34. package/components/DevCenter/DevCenterAppContainer/index.d.ts.map +1 -1
  35. package/components/DevCenter/DevCenterAppContainer/types.d.ts +113 -0
  36. package/components/DevCenter/DevCenterAppContainer/types.d.ts.map +1 -0
  37. package/components/Drillstring/BHAComponentDetail/constants.d.ts +2 -2
  38. package/componentsV2/AppCommonsProvider/AppCommonsContext.d.ts +2 -2
  39. package/componentsV2/AppCommonsProvider/AppCommonsContext.d.ts.map +1 -1
  40. package/componentsV2/AppCommonsProvider/AppCommonsContext.js.map +1 -1
  41. package/mcp-server/server.mjs +2 -2
  42. package/package.json +1 -1
  43. package/tsconfig.tsbuildinfo +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"DevCenterAppContainer.js","sources":["../../../../src/components/DevCenter/DevCenterAppContainer/DevCenterAppContainer.js"],"sourcesContent":["/* eslint-disable react/prop-types */\nimport { useContext, useMemo, useState } from 'react';\nimport classNames from 'classnames';\nimport { noop, pick, pickBy } from 'lodash';\nimport { useTheme } from '@material-ui/core';\nimport { BugReport as BugReportIcon } from '@material-ui/icons';\n\nimport AppContext from '../AppContext';\nimport { DevCenterRouterContext } from '../DevCenterRouterContext';\n\nimport { useAnnotationsData, useAnnotationsList, useAppMaximized, useAppSettings } from './effects';\nimport {\n AppActions,\n AppSettingsDialog,\n DcFullscreenElemsCoordinatorProvider,\n DevCenterAppView,\n FullscreenButton,\n NonPriorityMenus,\n} from './components';\nimport RestoreAppSizeButton from './components/RestoreAppSizeButton';\nimport { getAppAvailability, getAppVersion } from './utils';\nimport PriorityMenus from './components/PriorityMenus';\nimport { CommentsSwitchButton, CommentsSwitchProvider } from './components/CommentsSwitch';\n\nimport styles from './DevCenterAppContainer.scss';\n\nimport { isInsideNewMobileApp, isMobileDetected, isNativeDetected } from '~/utils/mobileDetect';\nimport AnnotationIcon from '~components/Icons/AnnotationIcon';\nimport { AnnotationsList, AnnotationsProvider } from '~/components/Annotations';\nimport { ToastContainer } from '~/components/Toaster';\nimport { useDevCenterApp } from '~/effects';\nimport { DEV_CENTER_CLI_APP_ID } from '~/constants';\nimport {\n getAppName,\n getAppSegment,\n getTimestampFromQuery,\n isDCAppMultiRig,\n} from '~/utils/devcenter';\nimport { showSuccessNotification } from '~/utils';\nimport { HelpCenterIcon } from '~/components/HelpCenter';\nimport { ButtonIcon, Tooltip } from '~/componentsV2';\nimport { AppCommonsProvider } from '~/componentsV2/AppCommonsProvider';\n\nconst isMobileView = isNativeDetected || isMobileDetected;\nconst PAGE_NAME = 'DevCenter_AppContainer';\n\nconst isHomePage = router => !!router?.location?.pathname?.startsWith('/home');\n\nfunction DevCenterAppContainer({\n CLIAppComponent,\n CLIAppSettings,\n app,\n appId,\n className,\n coordinates,\n currentDashboardAppsLastAnnotations,\n currentUser,\n devCenterRouter,\n disableAppAssetSelection,\n isActionsDisabled,\n isBrowserFullscreen,\n enterBrowserFullscreen,\n exitBrowserFullscreen,\n isSeparateWindow,\n openSeparateWindow,\n closeSeparateWindow,\n setSeparateWindowTitle,\n // [REACT-18-MIGRATION-TAG] PLT-3099: the platform's isolation decision, passed only by the\n // in-process branch of DevCenterIsolatedApp; iframe mounts leave it false.\n isNonIsolatedApp = false,\n isSettingsDialogHidden,\n layoutEnvironment,\n onAppContainerClick = noop,\n onAppRemove,\n onReportBugClick,\n onCloneDashboard,\n onHelpCenterClick,\n onIsMaximizedChange,\n onSettingChange,\n onSettingsChange,\n openIntercom = noop,\n registerAITools,\n setIsFullscreenModalMode = noop,\n timestamp,\n updateCurrentDashboardAppLastAnnotation,\n dashboardMeta,\n reloadApp = undefined,\n chatActions,\n}) {\n const appsData = useContext(AppContext);\n const theme = useTheme();\n const [mainMenuItems, setMainMenuItems] = useState([]);\n const [secondaryMenuItems, setSecondaryMenuItems] = useState([]);\n const appData = appsData?.[appId || app.id] ?? {\n isLoading: true,\n };\n const application = app.package?.manifest?.application;\n const segment = getAppSegment(app);\n const appIsChiplessDashboard = !!dashboardMeta?.isChiplessDashboard;\n const isMultiRig = isDCAppMultiRig({\n uiSettings: application?.ui,\n isChiplessDashboard: appIsChiplessDashboard,\n });\n const areCommentsEnabled = !!application?.ui?.enable_comments;\n const appName = getAppName(app);\n const { isMaximized, setIsMaximized } = useAppMaximized({\n onIsMaximizedChange,\n devCenterRouter,\n appId,\n });\n\n // Note: we need to pass timestamp directly for apps that are embedded in isolated apps\n const appTimestamp = timestamp || getTimestampFromQuery(devCenterRouter.location.query?.query);\n const isCLIApp = app.id === DEV_CENTER_CLI_APP_ID;\n const updatedCoordinates = isCLIApp && isMobileView ? { ...coordinates, w: 12 } : coordinates;\n const version = getAppVersion(app);\n\n const {\n isLoading: isAppLoading,\n AppSettings,\n AppComponent,\n } = useDevCenterApp({\n CLIAppComponent,\n CLIAppSettings,\n app,\n version,\n });\n\n const { isAppSettingsDialogOpened, toggleAppSettingsDialog } = useAppSettings({\n setIsFullscreenModalMode,\n });\n const { isAnnotationsListOpened, toggleAnnotationsList } = useAnnotationsList();\n\n const isLoading = isAppLoading || !currentUser || (!isMultiRig && appData.isLoading);\n\n const { appLastAnnotation, assetCompanyId, assetIdForAnnotation, isAppSupportsAnnotations } =\n useAnnotationsData({\n app,\n appData,\n currentDashboardAppsLastAnnotations,\n });\n\n const filteredAppData = pickBy(\n pick(appData, ['well', 'rig', 'fracFleet', 'wells', 'interventionUnit']),\n Boolean\n );\n\n const simplifiedSecondaryMenuItems = useMemo(\n () =>\n secondaryMenuItems?.map(item => ({\n ...item,\n onClick: () => {\n item.onClick?.();\n if (item.to) {\n devCenterRouter.push(item.to);\n }\n },\n })),\n [secondaryMenuItems, devCenterRouter]\n );\n\n const appHeadersV3Enabled = !!app?.package?.manifest?.application?.ui?.use_app_header_v3;\n const isInsideHomePage = isHomePage(devCenterRouter);\n\n // ⚠️⚠️⚠️ When adding/changing providers, also add them to/change /src/testing/AppTestWrapper\n return (\n <DevCenterRouterContext.Provider value={devCenterRouter}>\n <DcFullscreenElemsCoordinatorProvider setIsFullscreenModalMode={setIsFullscreenModalMode}>\n <AppCommonsProvider\n maximized={isMaximized}\n setMaximized={setIsMaximized}\n appId={app?.app?.id}\n app={app}\n appSettings={app.settings}\n onSettingChange={onSettingChange}\n onSettingsChange={onSettingsChange}\n appHeadersV3Enabled={appHeadersV3Enabled}\n isBrowserFullscreen={isBrowserFullscreen}\n enterBrowserFullscreen={enterBrowserFullscreen}\n exitBrowserFullscreen={exitBrowserFullscreen}\n isSeparateWindow={isSeparateWindow}\n openSeparateWindow={openSeparateWindow}\n closeSeparateWindow={closeSeparateWindow}\n setSeparateWindowTitle={setSeparateWindowTitle}\n isNonIsolatedApp={isNonIsolatedApp}\n disableAppAssetSelection={disableAppAssetSelection}\n isMultiRig={isMultiRig}\n currentUser={currentUser}\n appData={appData}\n layoutEnvironment={layoutEnvironment}\n appSettingsComponent={AppSettings}\n dashboardMeta={dashboardMeta}\n toggleAnnotationsList={isAppSupportsAnnotations ? toggleAnnotationsList : undefined}\n onHelpCenterClick={onHelpCenterClick}\n secondaryMenuItems={simplifiedSecondaryMenuItems}\n onAppRemove={onAppRemove}\n isInsideNewMobileApp={isInsideNewMobileApp}\n globalOffsetWells={dashboardMeta?.globalOffsetWells}\n globalOffsetWellsVersion={dashboardMeta?.globalOffsetWellsVersion}\n globalOffsetWellsToken={dashboardMeta?.globalOffsetWellsToken}\n reloadApp={reloadApp}\n {...filteredAppData}\n >\n <CommentsSwitchProvider>\n <div\n className={classNames(\n 'dc-app-container',\n isInsideNewMobileApp && 'dc-app-container--inside-new-mobile-app',\n isInsideHomePage && 'dc-app-container--inside-home-page',\n className,\n // This class is applied so that DC apps developers can style their content\n // when an app is in fullscreen\n isMaximized && 'dc-app-container__maximized',\n theme.isLightTheme && 'dc-app-container__light-theme',\n styles.container\n )}\n data-testid={`${PAGE_NAME}_${appName}`}\n // It's important to call it without native event because it's passed through iframe\n onClick={() => onAppContainerClick()}\n >\n <ToastContainer />\n <div className={styles.containerContent}>\n <DevCenterAppView\n AppComponent={AppComponent}\n app={app}\n appData={filteredAppData}\n isAppLoading={isAppLoading}\n availability={getAppAvailability(\n app.availability,\n currentUser.company.with_subscription\n )}\n isCLIApp={isCLIApp}\n isLoading={isLoading}\n isMultiRig={isMultiRig}\n layoutEnvironment={layoutEnvironment}\n openIntercom={openIntercom}\n segment={segment}\n toggleAppSettingsDialog={toggleAppSettingsDialog}\n appProps={{\n coordinates: updatedCoordinates,\n currentUser,\n devCenterRouter,\n onSettingChange,\n onSettingsChange,\n registerAITools,\n segment,\n setIsFullscreenModalMode,\n setIsMaximized,\n setMainMenuItems,\n setSecondaryMenuItems,\n toggleAppSettingsDialog,\n // TODO remove when componentsV2 AppHeader is used everywhere\n appHeaderProps: {\n app,\n appLastAnnotation,\n appSettings: app.settings,\n coordinates: updatedCoordinates,\n currentUser,\n isMaximized,\n layoutEnvironment,\n onSettingChange,\n toggleAnnotationsList,\n updateCurrentDashboardAppLastAnnotation,\n ...filteredAppData,\n },\n isNative: isNativeDetected,\n layoutEnvironment,\n timestamp: appTimestamp,\n chatActions,\n }}\n />\n </div>\n {isAppSettingsDialogOpened && (\n <AppSettingsDialog\n AppSettingsComponent={AppSettings}\n app={app}\n appData={appData}\n appName={appName}\n currentUser={currentUser}\n disableAppAssetSelection={disableAppAssetSelection}\n isMultiRig={isMultiRig}\n isSettingsDialogHidden={isSettingsDialogHidden}\n layoutEnvironment={layoutEnvironment}\n onAppRemove={onAppRemove}\n onCloneDashboard={onCloneDashboard}\n onSettingChange={onSettingChange}\n onSettingsChange={onSettingsChange}\n openIntercom={openIntercom}\n rigId={appData.rig?.id ?? null}\n timestamp={appTimestamp}\n toggleAppSettingsDialog={toggleAppSettingsDialog}\n />\n )}\n {isAnnotationsListOpened && (\n <AnnotationsProvider>\n <AnnotationsList\n appId={app.app.id}\n appSettings={app.settings}\n appTitle={appName}\n assetCompanyId={assetCompanyId}\n assetId={assetIdForAnnotation}\n currentUser={currentUser}\n onClose={toggleAnnotationsList}\n showSuccessNotification={showSuccessNotification}\n />\n </AnnotationsProvider>\n )}\n {isMaximized && !appHeadersV3Enabled && (\n <RestoreAppSizeButton setIsMaximized={setIsMaximized} />\n )}\n\n {!isActionsDisabled && (!appHeadersV3Enabled || isLoading) && (\n <AppActions>\n {areCommentsEnabled && <CommentsSwitchButton currentUser={currentUser} />}\n\n {isAppSupportsAnnotations && (\n <Tooltip title=\"Add Annotation\" placement=\"top\" disabled={!!isMobileView}>\n <ButtonIcon\n size=\"small\"\n type=\"tertiaryBg\"\n onClick={toggleAnnotationsList}\n testId={`${PAGE_NAME}_addAnnotation`}\n >\n <AnnotationIcon />\n </ButtonIcon>\n </Tooltip>\n )}\n\n {onReportBugClick && !isCLIApp && (\n <Tooltip title=\"Report A Bug\" placement=\"top\" disabled={!!isMobileView}>\n <ButtonIcon size=\"small\" type=\"tertiaryBg\" onClick={() => onReportBugClick()}>\n <BugReportIcon />\n </ButtonIcon>\n </Tooltip>\n )}\n\n <Tooltip\n placement=\"top\"\n disabled={!!isMobileView || isCLIApp}\n title=\"Help Center\"\n >\n <ButtonIcon\n testId={`${PAGE_NAME}_helpContent`}\n onClick={() => onHelpCenterClick()}\n disabled={isCLIApp}\n size=\"small\"\n type=\"tertiaryBg\"\n >\n <HelpCenterIcon\n appId={app.app.id}\n helpContentUpdatedAt={app.help_content_updated_at}\n />\n </ButtonIcon>\n </Tooltip>\n\n {isMobileView && !isMaximized && !isInsideNewMobileApp ? (\n <FullscreenButton setIsMaximized={setIsMaximized} />\n ) : (\n <>\n <PriorityMenus\n menuItems={mainMenuItems}\n devCenterRouter={devCenterRouter}\n isMobileView={isMobileView}\n />\n <NonPriorityMenus\n devCenterRouter={devCenterRouter}\n isMaximized={isMaximized}\n isMobileView={isMobileView}\n menuItems={secondaryMenuItems}\n setIsFullscreenModalMode={setIsFullscreenModalMode}\n setIsMaximized={setIsMaximized}\n toggleAppSettingsDialog={toggleAppSettingsDialog}\n />\n </>\n )}\n </AppActions>\n )}\n </div>\n </CommentsSwitchProvider>\n </AppCommonsProvider>\n </DcFullscreenElemsCoordinatorProvider>\n </DevCenterRouterContext.Provider>\n );\n}\n\nexport default DevCenterAppContainer;\n"],"names":["isMobileView","isNativeDetected","isMobileDetected","PAGE_NAME","DevCenterAppContainer","_ref","_appsData","_app$package","_app$package$manifest","_application$ui","_devCenterRouter$loca","_app$package2","_app$package2$manifes","_app$package2$manifes2","_app$package2$manifes3","_app$app","_appData$rig$id","_appData$rig","router","_router$location","_router$location$path","CLIAppComponent","CLIAppSettings","app","appId","className","coordinates","currentDashboardAppsLastAnnotations","currentUser","devCenterRouter","disableAppAssetSelection","isActionsDisabled","isBrowserFullscreen","enterBrowserFullscreen","exitBrowserFullscreen","isSeparateWindow","openSeparateWindow","closeSeparateWindow","setSeparateWindowTitle","_ref$isNonIsolatedApp","isNonIsolatedApp","isSettingsDialogHidden","layoutEnvironment","_ref$onAppContainerCl","onAppContainerClick","noop","onAppRemove","onReportBugClick","onCloneDashboard","onHelpCenterClick","onIsMaximizedChange","onSettingChange","onSettingsChange","_ref$openIntercom","openIntercom","registerAITools","_ref$setIsFullscreenM","setIsFullscreenModalMode","timestamp","updateCurrentDashboardAppLastAnnotation","dashboardMeta","_ref$reloadApp","reloadApp","undefined","chatActions","appsData","useContext","AppContext","theme","useTheme","useState","_useState2","_slicedToArray","_useState","mainMenuItems","setMainMenuItems","_useState4","_useState3","secondaryMenuItems","setSecondaryMenuItems","appData","id","isLoading","application","package","manifest","segment","getAppSegment","appIsChiplessDashboard","isChiplessDashboard","isMultiRig","isDCAppMultiRig","uiSettings","ui","areCommentsEnabled","enable_comments","appName","getAppName","_useAppMaximized","useAppMaximized","isMaximized","setIsMaximized","appTimestamp","getTimestampFromQuery","location","query","isCLIApp","DEV_CENTER_CLI_APP_ID","updatedCoordinates","w","version","getAppVersion","_useDevCenterApp","useDevCenterApp","isAppLoading","AppSettings","AppComponent","_useAppSettings","useAppSettings","isAppSettingsDialogOpened","toggleAppSettingsDialog","_useAnnotationsList","useAnnotationsList","isAnnotationsListOpened","toggleAnnotationsList","_useAnnotationsData","useAnnotationsData","appLastAnnotation","assetCompanyId","assetIdForAnnotation","isAppSupportsAnnotations","filteredAppData","pickBy","pick","Boolean","simplifiedSecondaryMenuItems","useMemo","map","item","_objectSpread","onClick","_item$onClick","call","to","push","appHeadersV3Enabled","use_app_header_v3","isInsideHomePage","pathname","startsWith","_jsx","DevCenterRouterContext","Provider","value","children","DcFullscreenElemsCoordinatorProvider","AppCommonsProvider","maximized","setMaximized","appSettings","settings","appSettingsComponent","isInsideNewMobileApp","globalOffsetWells","globalOffsetWellsVersion","globalOffsetWellsToken","CommentsSwitchProvider","_jsxs","classNames","isLightTheme","styles","container","ToastContainer","containerContent","DevCenterAppView","availability","getAppAvailability","company","with_subscription","appProps","appHeaderProps","isNative","AppSettingsDialog","AppSettingsComponent","rigId","rig","AnnotationsProvider","AnnotationsList","appTitle","assetId","onClose","showSuccessNotification","RestoreAppSizeButton","AppActions","CommentsSwitchButton","Tooltip","title","placement","disabled","ButtonIcon","size","type","testId","concat","AnnotationIcon","BugReportIcon","HelpCenterIcon","helpContentUpdatedAt","help_content_updated_at","_Fragment","PriorityMenus","menuItems","NonPriorityMenus","FullscreenButton"],"mappings":"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"}
1
+ {"version":3,"file":"DevCenterAppContainer.js","sources":["../../../../src/components/DevCenter/DevCenterAppContainer/DevCenterAppContainer.tsx"],"sourcesContent":["import { useContext, useMemo, useState } from 'react';\nimport type { ComponentType } from 'react';\nimport classNames from 'classnames';\nimport { noop, pick, pickBy } from 'lodash';\nimport { useTheme } from '@material-ui/core';\nimport { BugReport as BugReportIcon } from '@material-ui/icons';\n\nimport AppContext from '../AppContext';\nimport { DevCenterRouterContext } from '../DevCenterRouterContext';\n\nimport { useAnnotationsData, useAnnotationsList, useAppMaximized, useAppSettings } from './effects';\nimport {\n AppActions,\n AppSettingsDialog,\n DcFullscreenElemsCoordinatorProvider,\n DevCenterAppView,\n FullscreenButton,\n NonPriorityMenus,\n} from './components';\nimport RestoreAppSizeButton from './components/RestoreAppSizeButton';\nimport { getAppAvailability, getAppVersion } from './utils';\nimport {\n APP_DATA_ASSET_KEYS,\n HOME_PATH_PREFIX,\n MOBILE_CLI_APP_GRID_WIDTH,\n PAGE_NAME,\n TOOLTIP_TITLES,\n} from './constants';\nimport type {\n AppCoordinates,\n AppDataEntry,\n DashboardAppLastAnnotation,\n DevCenterAppResource,\n DevCenterCurrentUser,\n DevCenterMenuItem,\n DevCenterRouter,\n LayoutEnvironment,\n SetIsFullscreenModalMode,\n UpdateDashboardAppLastAnnotation,\n} from './types';\nimport type { FullscreenModes } from '../../../types';\n// Relative on purpose: a `~/` alias does not resolve from the published `.d.ts`.\nimport type { GlobalOffsetWell } from '../../../componentsV2/AppCommonsProvider/AppCommonsContext';\nimport PriorityMenus from './components/PriorityMenus';\nimport { CommentsSwitchButton, CommentsSwitchProvider } from './components/CommentsSwitch';\n\nimport styles from './DevCenterAppContainer.scss';\n\nimport { isInsideNewMobileApp, isMobileDetected, isNativeDetected } from '~/utils/mobileDetect';\nimport AnnotationIcon from '~/components/Icons/AnnotationIcon';\nimport { AnnotationsList, AnnotationsProvider } from '~/components/Annotations';\nimport { ToastContainer } from '~/components/Toaster';\nimport { useDevCenterApp } from '~/effects';\nimport { DEV_CENTER_CLI_APP_ID } from '~/constants';\nimport {\n getAppName,\n getAppSegment,\n getTimestampFromQuery,\n isDCAppMultiRig,\n} from '~/utils/devcenter';\nimport { HelpCenterIcon } from '~/components/HelpCenter';\nimport { ButtonIcon, Tooltip } from '~/componentsV2';\nimport { AppCommonsProvider } from '~/componentsV2/AppCommonsProvider';\n\n/**\n * `Partial<FullscreenModes>` carries the seven browser-fullscreen and separate-window members.\n * `AppCommonsProvider` derives `isExpanded` from them and republishes them to the app bundle,\n * so dropping them silently disables both features — and nothing type-checks it, because every\n * member is optional on the provider.\n */\nexport type DevCenterAppContainerProps = Partial<FullscreenModes> & {\n app: DevCenterAppResource;\n currentUser: DevCenterCurrentUser;\n /** Platform router. Not React Router — the DC shell supplies its own. */\n devCenterRouter: DevCenterRouter;\n\n /**\n * Slots for the CLI app bundle's own components. `any` rather than a narrower prop type on\n * purpose: this accepts arbitrary app components, and any narrowing would reject the concretely\n * typed ones consumers pass.\n */\n CLIAppComponent?: ComponentType<any> | null;\n CLIAppSettings?: ComponentType<any> | null;\n /** Defaults to `app.id` when omitted. */\n appId?: number;\n className?: string | null;\n /** Owned by `corva-web-frontend`'s chat module; forwarded to the app bundle unread. */\n chatActions?: Record<string, any> | null;\n coordinates?: AppCoordinates | null;\n currentDashboardAppsLastAnnotations?: DashboardAppLastAnnotation[] | null;\n dashboardMeta?: {\n isMultiAsset?: boolean;\n isMultiWell?: boolean;\n isChiplessDashboard?: boolean;\n globalOffsetWells?: GlobalOffsetWell[];\n globalOffsetWellsVersion?: number;\n globalOffsetWellsToken?: number;\n };\n disableAppAssetSelection?: boolean;\n isActionsDisabled?: boolean;\n /**\n * [REACT-18-MIGRATION-TAG] PLT-3099: the platform's isolation decision, passed only by the\n * in-process branch of DevCenterIsolatedApp; iframe mounts leave it false.\n */\n isNonIsolatedApp?: boolean;\n isSettingsDialogHidden?: boolean;\n layoutEnvironment?: LayoutEnvironment | null;\n onAppContainerClick?: () => void;\n onAppRemove?: () => void;\n onCloneDashboard?: () => void;\n onHelpCenterClick?: () => void;\n onIsMaximizedChange?: (isMaximized: boolean) => void;\n onReportBugClick?: (() => void) | null;\n onSettingChange?: (key: string, value: unknown) => void;\n onSettingsChange?: (value: unknown) => void;\n openIntercom?: () => void;\n /** `AppToolRegisterFn` from `@corva/fe-ai-tools`, which this package does not depend on. */\n registerAITools?: any;\n reloadApp?: () => void;\n setIsFullscreenModalMode?: SetIsFullscreenModalMode;\n timestamp?: number | null;\n updateCurrentDashboardAppLastAnnotation?: UpdateDashboardAppLastAnnotation;\n};\n\nconst isMobileView = isNativeDetected || isMobileDetected;\nconst isHomePage = (router: DevCenterRouter) =>\n !!router.location.pathname?.startsWith(HOME_PATH_PREFIX);\n\nconst DevCenterAppContainer = ({\n CLIAppComponent,\n CLIAppSettings,\n app,\n appId,\n className,\n coordinates,\n currentDashboardAppsLastAnnotations,\n currentUser,\n devCenterRouter,\n disableAppAssetSelection,\n isActionsDisabled,\n isBrowserFullscreen,\n enterBrowserFullscreen,\n exitBrowserFullscreen,\n isSeparateWindow,\n openSeparateWindow,\n closeSeparateWindow,\n setSeparateWindowTitle,\n isNonIsolatedApp = false,\n isSettingsDialogHidden,\n layoutEnvironment,\n onAppContainerClick = noop,\n onAppRemove,\n onReportBugClick,\n onCloneDashboard,\n onHelpCenterClick,\n onIsMaximizedChange,\n onSettingChange = noop,\n onSettingsChange = noop,\n openIntercom = noop,\n registerAITools,\n setIsFullscreenModalMode = noop,\n timestamp,\n updateCurrentDashboardAppLastAnnotation,\n dashboardMeta,\n reloadApp,\n chatActions,\n}: DevCenterAppContainerProps) => {\n const appsData = useContext(AppContext) as Record<string, AppDataEntry> | undefined;\n const theme = useTheme();\n const [mainMenuItems, setMainMenuItems] = useState<DevCenterMenuItem[]>([]);\n const [secondaryMenuItems, setSecondaryMenuItems] = useState<DevCenterMenuItem[]>([]);\n // `||`, not `??`: DevCenterEmbeddedApp uses 0 as its unset sentinel for appId.\n const appDataKey = appId || app.id;\n const appData: AppDataEntry = (appDataKey ? appsData?.[appDataKey] : undefined) ?? {\n isLoading: true,\n };\n const application = app.package?.manifest?.application;\n const segment = getAppSegment(app);\n const isChiplessDashboard = !!dashboardMeta?.isChiplessDashboard;\n const isMultiRig = isDCAppMultiRig({\n uiSettings: application?.ui,\n isChiplessDashboard: isChiplessDashboard,\n });\n const isCommentsEnabled = !!application?.ui?.enable_comments;\n const appName = getAppName(app);\n const { isMaximized, setIsMaximized } = useAppMaximized({\n onIsMaximizedChange,\n devCenterRouter,\n appId,\n });\n\n // Isolated apps are mounted without the router query the timestamp normally comes from,\n // so the host passes it as a prop instead.\n const appTimestamp = timestamp || getTimestampFromQuery(devCenterRouter.location.query?.query);\n const isCLIApp = app.id === DEV_CENTER_CLI_APP_ID;\n const updatedCoordinates =\n isCLIApp && isMobileView ? { ...coordinates, w: MOBILE_CLI_APP_GRID_WIDTH } : coordinates;\n const version = getAppVersion(app);\n\n const {\n isLoading: isAppLoading,\n AppSettings,\n AppComponent,\n } = useDevCenterApp({\n CLIAppComponent,\n CLIAppSettings,\n app,\n version,\n });\n\n const { isAppSettingsDialogOpened, toggleAppSettingsDialog } = useAppSettings({\n setIsFullscreenModalMode,\n });\n const { isAnnotationsListOpened, toggleAnnotationsList } = useAnnotationsList();\n\n const isLoading = !!(isAppLoading || !currentUser || (!isMultiRig && appData.isLoading));\n\n const {\n appLastAnnotation,\n assetCompanyId,\n assetIdForAnnotation,\n isAppSupportsAnnotations: isAnnotationsSupported,\n } = useAnnotationsData({\n app,\n appData,\n currentDashboardAppsLastAnnotations,\n });\n\n const filteredAppData = pickBy(pick(appData, APP_DATA_ASSET_KEYS), Boolean);\n\n const simplifiedSecondaryMenuItems = useMemo(\n () =>\n secondaryMenuItems.map(item => ({\n ...item,\n onClick: () => {\n item.onClick?.();\n if (item.to) {\n devCenterRouter.push(item.to);\n }\n },\n })),\n [secondaryMenuItems, devCenterRouter]\n );\n\n const isAppHeadersV3Enabled = !!application?.ui?.use_app_header_v3;\n const isInsideHomePage = isHomePage(devCenterRouter);\n\n // Called without the native event: this crosses an iframe boundary, where a DOM event\n // cannot be serialised.\n const handleAppContainerClick = () => onAppContainerClick();\n\n const handleReportBugClick = () => onReportBugClick?.();\n\n const handleHelpCenterClick = () => onHelpCenterClick?.();\n\n // ⚠️⚠️⚠️ When adding/changing providers, also add them to/change /src/testing/AppTestWrapper\n return (\n <DevCenterRouterContext.Provider value={devCenterRouter}>\n <DcFullscreenElemsCoordinatorProvider setIsFullscreenModalMode={setIsFullscreenModalMode}>\n <AppCommonsProvider\n maximized={isMaximized}\n setMaximized={setIsMaximized}\n appId={app.app.id}\n app={app}\n appSettings={app.settings}\n onSettingChange={onSettingChange}\n onSettingsChange={onSettingsChange}\n appHeadersV3Enabled={isAppHeadersV3Enabled}\n isBrowserFullscreen={isBrowserFullscreen}\n enterBrowserFullscreen={enterBrowserFullscreen}\n exitBrowserFullscreen={exitBrowserFullscreen}\n isSeparateWindow={isSeparateWindow}\n openSeparateWindow={openSeparateWindow}\n closeSeparateWindow={closeSeparateWindow}\n setSeparateWindowTitle={setSeparateWindowTitle}\n isNonIsolatedApp={isNonIsolatedApp}\n disableAppAssetSelection={disableAppAssetSelection}\n isMultiRig={isMultiRig}\n currentUser={currentUser}\n appData={appData}\n layoutEnvironment={layoutEnvironment}\n appSettingsComponent={AppSettings}\n dashboardMeta={dashboardMeta}\n toggleAnnotationsList={isAnnotationsSupported ? toggleAnnotationsList : undefined}\n onHelpCenterClick={onHelpCenterClick}\n secondaryMenuItems={simplifiedSecondaryMenuItems}\n onAppRemove={onAppRemove}\n isInsideNewMobileApp={isInsideNewMobileApp}\n globalOffsetWells={dashboardMeta?.globalOffsetWells}\n globalOffsetWellsVersion={dashboardMeta?.globalOffsetWellsVersion}\n globalOffsetWellsToken={dashboardMeta?.globalOffsetWellsToken}\n reloadApp={reloadApp}\n {...filteredAppData}\n >\n <CommentsSwitchProvider>\n <article\n className={classNames(\n 'dc-app-container',\n isInsideNewMobileApp && 'dc-app-container--inside-new-mobile-app',\n isInsideHomePage && 'dc-app-container--inside-home-page',\n className,\n // This class is applied so that DC apps developers can style their content\n // when an app is in fullscreen\n isMaximized && 'dc-app-container__maximized',\n theme.isLightTheme && 'dc-app-container__light-theme',\n styles.container\n )}\n data-testid={`${PAGE_NAME}_${appName}`}\n onClick={handleAppContainerClick}\n >\n <ToastContainer />\n <div className={styles.containerContent}>\n <DevCenterAppView\n AppComponent={AppComponent}\n app={app}\n appData={filteredAppData}\n availability={getAppAvailability(\n app.availability,\n currentUser.company.with_subscription\n )}\n isCLIApp={isCLIApp}\n isLoading={isLoading}\n isMultiRig={isMultiRig}\n layoutEnvironment={layoutEnvironment ?? null}\n openIntercom={openIntercom}\n segment={segment}\n toggleAppSettingsDialog={toggleAppSettingsDialog}\n appProps={{\n coordinates: updatedCoordinates,\n currentUser,\n devCenterRouter,\n onSettingChange,\n onSettingsChange,\n registerAITools,\n segment,\n setIsFullscreenModalMode,\n setIsMaximized,\n setMainMenuItems,\n setSecondaryMenuItems,\n toggleAppSettingsDialog,\n // TODO remove when componentsV2 AppHeader is used everywhere\n appHeaderProps: {\n app,\n appLastAnnotation,\n appSettings: app.settings,\n coordinates: updatedCoordinates,\n currentUser,\n isMaximized,\n layoutEnvironment,\n onSettingChange,\n toggleAnnotationsList,\n updateCurrentDashboardAppLastAnnotation,\n ...filteredAppData,\n },\n isNative: isNativeDetected,\n layoutEnvironment,\n timestamp: appTimestamp,\n chatActions,\n }}\n />\n </div>\n {isAppSettingsDialogOpened && (\n <AppSettingsDialog\n AppSettingsComponent={AppSettings}\n app={app}\n appData={appData}\n appName={appName}\n currentUser={currentUser}\n disableAppAssetSelection={disableAppAssetSelection}\n isMultiRig={isMultiRig}\n isSettingsDialogHidden={isSettingsDialogHidden}\n layoutEnvironment={layoutEnvironment}\n onAppRemove={onAppRemove}\n onCloneDashboard={onCloneDashboard}\n onSettingsChange={onSettingsChange}\n openIntercom={openIntercom}\n rigId={appData.rig?.id ?? null}\n toggleAppSettingsDialog={toggleAppSettingsDialog}\n />\n )}\n {isAnnotationsListOpened && (\n <AnnotationsProvider>\n <AnnotationsList\n appId={app.app.id}\n appSettings={app.settings}\n appTitle={appName}\n assetCompanyId={assetCompanyId}\n assetId={assetIdForAnnotation}\n currentUser={currentUser}\n onClose={toggleAnnotationsList}\n />\n </AnnotationsProvider>\n )}\n {isMaximized && !isAppHeadersV3Enabled && (\n <RestoreAppSizeButton setIsMaximized={setIsMaximized} />\n )}\n\n {!isActionsDisabled && (!isAppHeadersV3Enabled || isLoading) && (\n <AppActions>\n {isCommentsEnabled && <CommentsSwitchButton currentUser={currentUser} />}\n\n {isAnnotationsSupported && (\n <Tooltip\n title={TOOLTIP_TITLES.addAnnotation}\n placement=\"top\"\n disabled={!!isMobileView}\n >\n <ButtonIcon\n size=\"small\"\n type=\"tertiaryBg\"\n onClick={toggleAnnotationsList}\n testId={`${PAGE_NAME}_addAnnotation`}\n >\n <AnnotationIcon />\n </ButtonIcon>\n </Tooltip>\n )}\n\n {onReportBugClick && !isCLIApp && (\n <Tooltip\n title={TOOLTIP_TITLES.reportBug}\n placement=\"top\"\n disabled={!!isMobileView}\n >\n <ButtonIcon size=\"small\" type=\"tertiaryBg\" onClick={handleReportBugClick}>\n <BugReportIcon />\n </ButtonIcon>\n </Tooltip>\n )}\n\n <Tooltip\n placement=\"top\"\n disabled={!!isMobileView || isCLIApp}\n title={TOOLTIP_TITLES.helpCenter}\n >\n <ButtonIcon\n testId={`${PAGE_NAME}_helpContent`}\n onClick={handleHelpCenterClick}\n disabled={isCLIApp}\n size=\"small\"\n type=\"tertiaryBg\"\n >\n <HelpCenterIcon\n appId={app.app.id}\n helpContentUpdatedAt={app.help_content_updated_at}\n />\n </ButtonIcon>\n </Tooltip>\n\n {isMobileView && !isMaximized && !isInsideNewMobileApp ? (\n <FullscreenButton setIsMaximized={setIsMaximized} />\n ) : (\n <>\n <PriorityMenus\n menuItems={mainMenuItems}\n devCenterRouter={devCenterRouter}\n isMobileView={isMobileView}\n />\n <NonPriorityMenus\n devCenterRouter={devCenterRouter}\n isMaximized={isMaximized}\n isMobileView={isMobileView}\n menuItems={secondaryMenuItems}\n setIsFullscreenModalMode={setIsFullscreenModalMode}\n setIsMaximized={setIsMaximized}\n toggleAppSettingsDialog={toggleAppSettingsDialog}\n />\n </>\n )}\n </AppActions>\n )}\n </article>\n </CommentsSwitchProvider>\n </AppCommonsProvider>\n </DcFullscreenElemsCoordinatorProvider>\n </DevCenterRouterContext.Provider>\n );\n};\n\nexport default DevCenterAppContainer;\n"],"names":["isMobileView","isNativeDetected","isMobileDetected","DevCenterAppContainer","_ref","_ref2","_app$package","_app$package$manifest","_application$ui","_devCenterRouter$loca","_application$ui2","_appData$rig$id","_appData$rig","_router$location$path","CLIAppComponent","CLIAppSettings","app","appId","className","coordinates","currentDashboardAppsLastAnnotations","currentUser","devCenterRouter","disableAppAssetSelection","isActionsDisabled","isBrowserFullscreen","enterBrowserFullscreen","exitBrowserFullscreen","isSeparateWindow","openSeparateWindow","closeSeparateWindow","setSeparateWindowTitle","_ref$isNonIsolatedApp","isNonIsolatedApp","isSettingsDialogHidden","layoutEnvironment","_ref$onAppContainerCl","onAppContainerClick","noop","onAppRemove","onReportBugClick","onCloneDashboard","onHelpCenterClick","onIsMaximizedChange","_ref$onSettingChange","onSettingChange","_ref$onSettingsChange","onSettingsChange","_ref$openIntercom","openIntercom","registerAITools","_ref$setIsFullscreenM","setIsFullscreenModalMode","timestamp","updateCurrentDashboardAppLastAnnotation","dashboardMeta","reloadApp","chatActions","appsData","useContext","AppContext","theme","useTheme","useState","_useState2","_slicedToArray","_useState","mainMenuItems","setMainMenuItems","_useState4","_useState3","secondaryMenuItems","setSecondaryMenuItems","appDataKey","id","appData","undefined","isLoading","application","package","manifest","segment","getAppSegment","isChiplessDashboard","isMultiRig","isDCAppMultiRig","uiSettings","ui","isCommentsEnabled","enable_comments","appName","getAppName","_useAppMaximized","useAppMaximized","isMaximized","setIsMaximized","appTimestamp","getTimestampFromQuery","location","query","isCLIApp","DEV_CENTER_CLI_APP_ID","updatedCoordinates","w","MOBILE_CLI_APP_GRID_WIDTH","version","getAppVersion","_useDevCenterApp","useDevCenterApp","isAppLoading","AppSettings","AppComponent","_useAppSettings","useAppSettings","isAppSettingsDialogOpened","toggleAppSettingsDialog","_useAnnotationsList","useAnnotationsList","isAnnotationsListOpened","toggleAnnotationsList","_useAnnotationsData","useAnnotationsData","appLastAnnotation","assetCompanyId","assetIdForAnnotation","isAnnotationsSupported","isAppSupportsAnnotations","filteredAppData","pickBy","pick","APP_DATA_ASSET_KEYS","Boolean","simplifiedSecondaryMenuItems","useMemo","map","item","_objectSpread","onClick","_item$onClick","call","to","push","isAppHeadersV3Enabled","use_app_header_v3","isInsideHomePage","pathname","startsWith","HOME_PATH_PREFIX","_jsx","DevCenterRouterContext","Provider","value","children","DcFullscreenElemsCoordinatorProvider","AppCommonsProvider","maximized","setMaximized","appSettings","settings","appHeadersV3Enabled","appSettingsComponent","isInsideNewMobileApp","globalOffsetWells","globalOffsetWellsVersion","globalOffsetWellsToken","CommentsSwitchProvider","_jsxs","classNames","isLightTheme","styles","container","PAGE_NAME","ToastContainer","containerContent","DevCenterAppView","availability","getAppAvailability","company","with_subscription","appProps","appHeaderProps","isNative","AppSettingsDialog","AppSettingsComponent","rigId","rig","AnnotationsProvider","AnnotationsList","appTitle","assetId","onClose","RestoreAppSizeButton","AppActions","CommentsSwitchButton","Tooltip","title","TOOLTIP_TITLES","addAnnotation","placement","disabled","ButtonIcon","size","type","testId","concat","AnnotationIcon","reportBug","BugReportIcon","helpCenter","HelpCenterIcon","helpContentUpdatedAt","help_content_updated_at","_Fragment","PriorityMenus","menuItems","NonPriorityMenus","FullscreenButton"],"mappings":"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"}
@@ -26,7 +26,7 @@ declare namespace AppSettingsDialog {
26
26
  disableAppAssetSelection: import("prop-types").Requireable<boolean>;
27
27
  isMultiRig: import("prop-types").Validator<boolean>;
28
28
  isSettingsDialogHidden: import("prop-types").Requireable<boolean>;
29
- layoutEnvironment: import("prop-types").Validator<NonNullable<import("prop-types").InferProps<{}>>>;
29
+ layoutEnvironment: import("prop-types").Requireable<import("prop-types").InferProps<{}>>;
30
30
  onAppRemove: import("prop-types").Requireable<(...args: any[]) => any>;
31
31
  onCloneDashboard: import("prop-types").Requireable<(...args: any[]) => any>;
32
32
  onSettingsChange: import("prop-types").Validator<(...args: any[]) => any>;
@@ -1,2 +1,2 @@
1
- import o from"@babel/runtime/helpers/defineProperty";import s from"@babel/runtime/helpers/slicedToArray";import{useState as i,useRef as n,useEffect as t}from"react";import{func as e,shape as c,string as r,bool as p}from"prop-types";import{cloneDeep as m,debounce as a,mapValues as l,keyBy as u,noop as d}from"lodash";import{FormControl as j,InputLabel as g,Select as I,MenuItem as f}from"@material-ui/core";import{ArrowForward as v}from"@material-ui/icons";import h from"../../../../EmptyState/EmptyState.js";import{getIsSustainabilityApp as C}from"../../utils.js";import A from"./components/RemoveAppButton.js";import{SettingsAccordion as b}from"./components/SettingsAccordion.js";import{useStyles as y}from"./styles.js";import"@babel/runtime/helpers/objectWithoutProperties";import"@material-ui/pickers";import"@date-io/moment";import"moment";import"../../../../../config/theme/index.js";import{jsxs as S,jsx as O,Fragment as D}from"react/jsx-runtime";import P from"../../../../../hocs/withAssetEditorLockHOC.js";import k from"../../../../ErrorBoundary/ErrorBoundary.js";import R from"../../../../ErrorBoundary/DevCenterAppErrorView/DevCenterAppErrorView.js";import E from"../../../../Button/components/Button/index.js";import"moment-timezone";import"classnames";import"../../../../Button/components/LiveButton/components/LiveButtonStateIndicator/index.js";import"../../../../Button/components/LiveButton/styles.js";import"@icon-park/react/es/all";import"../../../../../icons/IconParkProvider.js";import"../../../../../icons/customIcons/icons/AddMessage.js";import"../../../../../icons/customIcons/icons/DragOne.js";import"../../../../../icons/customIcons/icons/Attention.js";import"../../../../../icons/customIcons/icons/Collapse.js";import"../../../../../icons/customIcons/icons/Dashboard.js";import"../../../../../icons/customIcons/icons/Expand.js";import"../../../../../icons/customIcons/icons/FolderClosed.js";import"../../../../../icons/customIcons/icons/FolderClosedFilled.js";import"../../../../../icons/customIcons/icons/FolderOpened.js";import"../../../../../icons/customIcons/icons/GreaterOrEqual.js";import"../../../../../icons/customIcons/icons/LessOrEqual.js";import"../../../../../icons/customIcons/icons/Search.js";import"../../../../../icons/customIcons/icons/SearchOne.js";import"../../../../../icons/customIcons/icons/Wellhub.js";import"../../../../../icons/customIcons/icons/MultiRuler.js";import"../../../../../icons/customIcons/icons/Checkbox.js";import"../../../../../icons/customIcons/icons/CheckboxChecked.js";import"../../../../../icons/customIcons/icons/CheckboxIndeterminate.js";import"../../../../../icons/customIcons/icons/Radio.js";import"../../../../../icons/customIcons/icons/RadioChecked.js";import"../../../../../icons/customIcons/icons/SimulFrac.js";import"../../../../../icons/customIcons/icons/ZipperFrac.js";import"../../../../../icons/customIcons/icons/CautionFilled.js";import"../../../../../icons/customIcons/icons/MoreApp.js";import"../../../../../icons/customIcons/icons/Pad.js";import"../../../../../icons/customIcons/icons/DrilloutUnit.js";import"../../../../../icons/customIcons/icons/FracFleet.js";import"../../../../../icons/customIcons/icons/Global.js";import"../../../../../icons/customIcons/icons/Program.js";import"../../../../../icons/customIcons/icons/Rig.js";import"../../../../../icons/customIcons/icons/Well.js";import"../../../../../icons/customIcons/icons/Gap.js";import"../../../../../icons/customIcons/icons/Pin.js";import"../../../../../icons/customIcons/icons/CloseOneFilled.js";import"../../../../../icons/customIcons/icons/AttentionFilled.js";import"../../../../../icons/customIcons/icons/CheckOneFilled.js";import"../../../../../icons/customIcons/icons/Archive.js";import"../../../../../icons/customIcons/icons/ArchiveCancel.js";import"../../../../../icons/customIcons/icons/Unarchive.js";import"../../../../../icons/customIcons/icons/Archived.js";import"../../../../../icons/customIcons/icons/InterventionUnit.js";import"../../../../../icons/customIcons/icons/CloudDelete.js";import"../../../../../icons/customIcons/icons/Lasso.js";import"../../../../../icons/customIcons/icons/Radius.js";import"../../../../../icons/customIcons/icons/ErrorOps.js";import"../../../../../icons/customIcons/icons/DataTypeOps.js";import"../../../../../icons/customIcons/icons/FalsePositiveOps.js";import"../../../../../icons/customIcons/icons/CalibrationOps.js";import"../../../../../icons/customIcons/icons/CriticalOps.js";import"../../../../../icons/customIcons/icons/Company.js";import"../../../../../icons/customIcons/icons/ArchiveOne.js";import"../../../../../icons/customIcons/icons/ParseBotFusion.js";import"../../../../../icons/customIcons/icons/Connect.js";import"../../../../../icons/customIcons/icons/PuzzleOne.js";import"../../../../../icons/customIcons/icons/Feed.js";import"../../../../../icons/customIcons/icons/Prompt.js";import"../../../../../icons/customIcons/icons/Companies.js";import"../../../../../icons/customIcons/icons/ClipboardAi.js";import"../../../../../icons/customIcons/icons/Key.js";import"../../../../../icons/customIcons/icons/AtSignCrossed.js";import"../../../../../icons/customIcons/icons/MappingManual.js";import"../../../../../icons/customIcons/icons/Mapping.js";import"../../../../../icons/customIcons/icons/Metrics.js";import"../../../../../icons/customIcons/icons/Drops.js";import"../../../../../icons/customIcons/icons/ClipboardSearch.js";import"../../../../../icons/customIcons/icons/Template.js";import"../../../../../icons/customIcons/icons/ClipboardMetrics.js";import"../../../../../icons/customIcons/icons/ClipboardBuilder.js";import"../../../../../icons/customIcons/icons/UnitConversion.js";import"../../../../../icons/customIcons/icons/NPT.js";import"../../../../../icons/customIcons/icons/GuidedFrac.js";import N from"../../../../Modal/Modal.js";import{DEV_CENTER_CLI_APP_ID as w}from"../../../../../constants/devcenter.js";import"../../../../../constants/goals.js";import{SEGMENTS as x,SEGMENT_TO_ASSET_TYPE as M}from"../../../../../constants/segment.js";import"../../../../../constants/alerts.js";import"../../../../../constants/apps.js";import"../../../../../constants/drillstring.js";import"../../../../../constants/completion.js";import"../../../../../constants/appPackages.js";import"../../../../../constants/notifications.js";import"../../../../../constants/feed.js";import"../../../../../constants/bha.js";import{ASSET_TYPES as B}from"../../../../../constants/assetTypes.js";import"../../../../../constants/corvaCompanyId.js";import"../../../../GradientManager/configuration/constants.js";import T from"../../../../AssetEditorV2/index.js";import V from"../../../../AppVersionsSelect/AppVersionsSelect.js";import F from"../../../../DisabledSettingsMessage/DisabledSettingsMessage.js";import q from"../../../../ConfirmationDialog.js";import"../../../../../utils/index.js";import{AppIcon as H}from"../../../../AppIcon/AppIcon.js";import{getAppSegment as U}from"../../../../../utils/devcenter.js";import L from"../../../../../permissions/usePermissions.js";import{PERMISSIONS as G}from"../../../../../permissions/constants/index.js";import"../../../../../permissions/withPermissionsHOC.js";import"@babel/runtime/helpers/asyncToGenerator";import"@babel/runtime/regenerator";import"../../../../../clients/jsonApi/index.js";import"../../../../../permissions/ProvidePermissions.js";import"../../../../../permissions/PermissionsContext.js";import{isInsideNewMobileApp as _}from"../../../../../utils/mobileDetect.js";import{HideInNativeApp as z}from"../../../../../componentsV2/HideInNativeApp/index.js";import{isReact18Host as W}from"../../../../../componentsV2/AppHeader/V3/VersionSelect/VersionSelect.constants.js";import{showSuccessNotification as K}from"../../../../../utils/notificationToasts.js";function Z(o,s){var i=Object.keys(o);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(o);s&&(n=n.filter((function(s){return Object.getOwnPropertyDescriptor(o,s).enumerable}))),i.push.apply(i,n)}return i}function J(s){for(var i=1;i<arguments.length;i++){var n=null!=arguments[i]?arguments[i]:{};i%2?Z(Object(n),!0).forEach((function(i){o(s,i,n[i])})):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(n)):Z(Object(n)).forEach((function(o){Object.defineProperty(s,o,Object.getOwnPropertyDescriptor(n,o))}))}return s}var Q="DC_appSettings",X=P(T),Y=function(){return null};function $(e){var c,r,p,d,P,Z,$,io=e.AppSettingsComponent,no=void 0===io?oo:io,to=e.app,eo=e.appData,co=e.appName,ro=e.currentUser,po=e.disableAppAssetSelection,mo=void 0!==po&&po,ao=e.isMultiRig,lo=e.isSettingsDialogHidden,uo=void 0!==lo&&lo,jo=e.layoutEnvironment,go=e.onAppRemove,Io=e.onCloneDashboard,fo=void 0===Io?so:Io,vo=e.onSettingsChange,ho=e.openIntercom,Co=e.rigId,Ao=e.toggleAppSettingsDialog,bo=(null==to||null===(c=to.segment)||void 0===c?void 0:c.length)>1,yo=i(U(to)),So=s(yo,2),Oo=So[0],Do=So[1],Po=Oo===x.COMPLETION,ko=M[Oo],Ro=jo&&"asset"===jo.type,Eo=L([G.getCanReadAppPackages(to.app.id)]),No=s(Eo,1)[0],wo=No.active,xo=No.loading,Mo=i(!1),Bo=s(Mo,2),To=Bo[0],Vo=Bo[1],Fo=i(!0),qo=s(Fo,2),Ho=qo[0],Uo=qo[1],Lo=!(mo||_||ao||Ro&&Po),Go=!_&&!uo&&go,_o=n(Co);t((function(){Ho||Uo(!0)}),[Ho]);var zo=i((function(){var o;return J(J({},m(to.settings)),{},{package:to.settings.package||(null==to||null===(o=to.package)||void 0===o?void 0:o.version)})})),Wo=s(zo,2),Ko=Wo[0],Zo=Wo[1],Jo=C(null==to||null===(r=to.app)||void 0===r?void 0:r.id),Qo=i(""),Xo=s(Qo,2),Yo=Xo[0],$o=Xo[1],os=n(null),ss=n(null),is=xo||wo||Boolean(null===(p=os.current)||void 0===p?void 0:p.clientHeight),ns=Boolean(null===(d=ss.current)||void 0===d?void 0:d.clientHeight),ts=is&&ns,es=y({isCompletionApp:Po,isSustainabilityApp:Jo,isAccordionRequired:ts,isRemoveButtonVisible:Go}),cs=to.id===w,rs=function(s,i){return Zo((function(n){return J(J({},n),{},o({},s,i))}))},ps=function(o){return Zo((function(s){return J(J({},s),o)}))},ms=Ro?X:T;t((function(){a(Vo,200)(!0)}),[]);var as=S("div",{className:es.modalTitleContainer,children:[O(H,{className:es.appIcon,segment:[Oo],iconUrl:null==to||null===(P=to.app)||void 0===P||null===(Z=P.icon)||void 0===Z?void 0:Z.url,height:48,width:48}),S("div",{children:[O("div",{children:"".concat(co," Settings")}),O(z,{children:S("div",{"data-testid":"".concat(Q,"_appstoreLink"),className:es.appStoreButton,onClick:function(){var o,s;return window.open((s=null==to||null===(o=to.app)||void 0===o?void 0:o.id,"/app-store/app/".concat(s)),"_top")},children:["Open in Appstore ",O(v,{className:es.arrowIcon})]})})]})]}),ls=S("div",{className:es.modalActions,children:[Go&&O(A,{appName:co,onAppRemove:go}),S("div",{children:[O(E,{"data-testid":"".concat(Q,"_cancel"),variation:"secondary",onClick:Ao,children:"Cancel"}),uo&&O(E,{variation:"primary",onClick:function(){return fo()},children:"Copy Dashboard"}),!uo&&O(E,{"data-testid":"".concat(Q,"_save"),className:es.saveButton,variation:"primary",onClick:function(){if(!Ko.package&&!cs)return $o("Please select app version");if(Lo&&!Ro){var o=null==ko?void 0:ko.primaryAsset.assetType.id,s=null==ko?void 0:ko.primaryAsset.assetType.label;if(o&&!Ko[o])return $o("Please select ".concat(s))}return vo(Ko),K("Successfully saved"),Ao()},children:"Save"})]})]});return O(N,{actions:ls,closeIconClassName:es.closeIcon,contentContainerClassName:es.modalContainer,modalTitleClassName:es.modalTitle,onClose:Ao,open:!0,title:as,children:S(k,{ErrorView:R,openIntercom:ho,children:[O(q,{open:!!Yo,isShowCancel:!1,title:"Validation failed",text:Yo,handleOk:function(){return $o("")},classes:{confirmation:es.confirmationText}}),uo&&O(F,{}),!uo&&To&&!ns&&!is&&O(h,{image:h.IMAGES.UnderConstruction,title:"No app settings"}),!uo&&S(D,{children:[S(b,{defaultExpanded:!0,className:es.assetAccordion,accordionDetailsRef:os,isAccordionRequired:ts,summary:"Asset",children:[bo&&S(j,{className:es.segmentSelector,children:[O(g,{children:"Segment"}),O(I,{value:Oo,onChange:function(o){var s=o.target.value;_o.current=null,Uo(!1),Do(s),Zo(J(J({package:Ko.package,segment:s},l(u(B,"id"),(function(){return null}))),{},{assets:null}))},children:to.segment.map((function(o){return O(f,{className:es.segmentMenuItem,value:o,children:o},o)}))})]}),Lo&&Ho&&O(ms,{appKey:cs?null:to.app.app_key,appType:ko,defaultValue:_o.current,secondaryDefaultValue:+(null==eo||null===($=eo.well)||void 0===$?void 0:$.id),isHiddenMultipleAssetsToggle:!0,isHiddenTitle:!0,isNullable:Ro,label:"Asset",onSettingsChange:ps,settings:Ko}),O(V,{className:es.appVersionSelect,appId:to.app.id,value:Ko.package,onChange:function(o,s,i){return i&&W()?ps({package:o,react18AutoSwitchDisabled:!0}):rs("package",o)}})]}),O(k,{ErrorView:Y,openIntercom:ho,children:O(b,{accordionDetailsRef:ss,className:es.accordion,defaultExpanded:!0,isAccordionRequired:ts,summary:"App Settings",children:no&&O(no,{app:to,appData:eo,settings:Ko,onSettingChange:rs,onSettingsChange:ps,layoutEnvironment:jo,currentUser:ro})})})]})]})})}$.propTypes={AppSettingsComponent:e,app:c({}).isRequired,appData:c({}).isRequired,appName:r.isRequired,currentUser:c({}).isRequired,disableAppAssetSelection:p,isMultiRig:p.isRequired,isSettingsDialogHidden:p,layoutEnvironment:c({}).isRequired,onAppRemove:e,onCloneDashboard:e,onSettingsChange:e.isRequired,toggleAppSettingsDialog:e.isRequired};var oo=function(){return null},so=d;export{Q as PAGE_NAME,$ as default};
1
+ import o from"@babel/runtime/helpers/defineProperty";import s from"@babel/runtime/helpers/slicedToArray";import{useState as i,useRef as n,useEffect as t}from"react";import{func as e,shape as c,string as r,bool as p}from"prop-types";import{cloneDeep as m,debounce as a,mapValues as l,keyBy as u,noop as d}from"lodash";import{FormControl as j,InputLabel as g,Select as I,MenuItem as f}from"@material-ui/core";import{ArrowForward as v}from"@material-ui/icons";import h from"../../../../EmptyState/EmptyState.js";import{getIsSustainabilityApp as C}from"../../utils.js";import A from"./components/RemoveAppButton.js";import{SettingsAccordion as b}from"./components/SettingsAccordion.js";import{useStyles as y}from"./styles.js";import"@babel/runtime/helpers/objectWithoutProperties";import"@material-ui/pickers";import"@date-io/moment";import"moment";import"../../../../../config/theme/index.js";import{jsxs as S,jsx as O,Fragment as D}from"react/jsx-runtime";import P from"../../../../../hocs/withAssetEditorLockHOC.js";import k from"../../../../ErrorBoundary/ErrorBoundary.js";import R from"../../../../ErrorBoundary/DevCenterAppErrorView/DevCenterAppErrorView.js";import E from"../../../../Button/components/Button/index.js";import"moment-timezone";import"classnames";import"../../../../Button/components/LiveButton/components/LiveButtonStateIndicator/index.js";import"../../../../Button/components/LiveButton/styles.js";import"@icon-park/react/es/all";import"../../../../../icons/IconParkProvider.js";import"../../../../../icons/customIcons/icons/AddMessage.js";import"../../../../../icons/customIcons/icons/DragOne.js";import"../../../../../icons/customIcons/icons/Attention.js";import"../../../../../icons/customIcons/icons/Collapse.js";import"../../../../../icons/customIcons/icons/Dashboard.js";import"../../../../../icons/customIcons/icons/Expand.js";import"../../../../../icons/customIcons/icons/FolderClosed.js";import"../../../../../icons/customIcons/icons/FolderClosedFilled.js";import"../../../../../icons/customIcons/icons/FolderOpened.js";import"../../../../../icons/customIcons/icons/GreaterOrEqual.js";import"../../../../../icons/customIcons/icons/LessOrEqual.js";import"../../../../../icons/customIcons/icons/Search.js";import"../../../../../icons/customIcons/icons/SearchOne.js";import"../../../../../icons/customIcons/icons/Wellhub.js";import"../../../../../icons/customIcons/icons/MultiRuler.js";import"../../../../../icons/customIcons/icons/Checkbox.js";import"../../../../../icons/customIcons/icons/CheckboxChecked.js";import"../../../../../icons/customIcons/icons/CheckboxIndeterminate.js";import"../../../../../icons/customIcons/icons/Radio.js";import"../../../../../icons/customIcons/icons/RadioChecked.js";import"../../../../../icons/customIcons/icons/SimulFrac.js";import"../../../../../icons/customIcons/icons/ZipperFrac.js";import"../../../../../icons/customIcons/icons/CautionFilled.js";import"../../../../../icons/customIcons/icons/MoreApp.js";import"../../../../../icons/customIcons/icons/Pad.js";import"../../../../../icons/customIcons/icons/DrilloutUnit.js";import"../../../../../icons/customIcons/icons/FracFleet.js";import"../../../../../icons/customIcons/icons/Global.js";import"../../../../../icons/customIcons/icons/Program.js";import"../../../../../icons/customIcons/icons/Rig.js";import"../../../../../icons/customIcons/icons/Well.js";import"../../../../../icons/customIcons/icons/Gap.js";import"../../../../../icons/customIcons/icons/Pin.js";import"../../../../../icons/customIcons/icons/CloseOneFilled.js";import"../../../../../icons/customIcons/icons/AttentionFilled.js";import"../../../../../icons/customIcons/icons/CheckOneFilled.js";import"../../../../../icons/customIcons/icons/Archive.js";import"../../../../../icons/customIcons/icons/ArchiveCancel.js";import"../../../../../icons/customIcons/icons/Unarchive.js";import"../../../../../icons/customIcons/icons/Archived.js";import"../../../../../icons/customIcons/icons/InterventionUnit.js";import"../../../../../icons/customIcons/icons/CloudDelete.js";import"../../../../../icons/customIcons/icons/Lasso.js";import"../../../../../icons/customIcons/icons/Radius.js";import"../../../../../icons/customIcons/icons/ErrorOps.js";import"../../../../../icons/customIcons/icons/DataTypeOps.js";import"../../../../../icons/customIcons/icons/FalsePositiveOps.js";import"../../../../../icons/customIcons/icons/CalibrationOps.js";import"../../../../../icons/customIcons/icons/CriticalOps.js";import"../../../../../icons/customIcons/icons/Company.js";import"../../../../../icons/customIcons/icons/ArchiveOne.js";import"../../../../../icons/customIcons/icons/ParseBotFusion.js";import"../../../../../icons/customIcons/icons/Connect.js";import"../../../../../icons/customIcons/icons/PuzzleOne.js";import"../../../../../icons/customIcons/icons/Feed.js";import"../../../../../icons/customIcons/icons/Prompt.js";import"../../../../../icons/customIcons/icons/Companies.js";import"../../../../../icons/customIcons/icons/ClipboardAi.js";import"../../../../../icons/customIcons/icons/Key.js";import"../../../../../icons/customIcons/icons/AtSignCrossed.js";import"../../../../../icons/customIcons/icons/MappingManual.js";import"../../../../../icons/customIcons/icons/Mapping.js";import"../../../../../icons/customIcons/icons/Metrics.js";import"../../../../../icons/customIcons/icons/Drops.js";import"../../../../../icons/customIcons/icons/ClipboardSearch.js";import"../../../../../icons/customIcons/icons/Template.js";import"../../../../../icons/customIcons/icons/ClipboardMetrics.js";import"../../../../../icons/customIcons/icons/ClipboardBuilder.js";import"../../../../../icons/customIcons/icons/UnitConversion.js";import"../../../../../icons/customIcons/icons/NPT.js";import"../../../../../icons/customIcons/icons/GuidedFrac.js";import N from"../../../../Modal/Modal.js";import{DEV_CENTER_CLI_APP_ID as w}from"../../../../../constants/devcenter.js";import"../../../../../constants/goals.js";import{SEGMENTS as x,SEGMENT_TO_ASSET_TYPE as M}from"../../../../../constants/segment.js";import"../../../../../constants/alerts.js";import"../../../../../constants/apps.js";import"../../../../../constants/drillstring.js";import"../../../../../constants/completion.js";import"../../../../../constants/appPackages.js";import"../../../../../constants/notifications.js";import"../../../../../constants/feed.js";import"../../../../../constants/bha.js";import{ASSET_TYPES as B}from"../../../../../constants/assetTypes.js";import"../../../../../constants/corvaCompanyId.js";import"../../../../GradientManager/configuration/constants.js";import T from"../../../../AssetEditorV2/index.js";import V from"../../../../AppVersionsSelect/AppVersionsSelect.js";import F from"../../../../DisabledSettingsMessage/DisabledSettingsMessage.js";import q from"../../../../ConfirmationDialog.js";import"../../../../../utils/index.js";import{AppIcon as H}from"../../../../AppIcon/AppIcon.js";import{getAppSegment as U}from"../../../../../utils/devcenter.js";import L from"../../../../../permissions/usePermissions.js";import{PERMISSIONS as G}from"../../../../../permissions/constants/index.js";import"../../../../../permissions/withPermissionsHOC.js";import"@babel/runtime/helpers/asyncToGenerator";import"@babel/runtime/regenerator";import"../../../../../clients/jsonApi/index.js";import"../../../../../permissions/ProvidePermissions.js";import"../../../../../permissions/PermissionsContext.js";import{isInsideNewMobileApp as _}from"../../../../../utils/mobileDetect.js";import{HideInNativeApp as z}from"../../../../../componentsV2/HideInNativeApp/index.js";import{isReact18Host as W}from"../../../../../componentsV2/AppHeader/V3/VersionSelect/VersionSelect.constants.js";import{showSuccessNotification as K}from"../../../../../utils/notificationToasts.js";function Z(o,s){var i=Object.keys(o);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(o);s&&(n=n.filter((function(s){return Object.getOwnPropertyDescriptor(o,s).enumerable}))),i.push.apply(i,n)}return i}function J(s){for(var i=1;i<arguments.length;i++){var n=null!=arguments[i]?arguments[i]:{};i%2?Z(Object(n),!0).forEach((function(i){o(s,i,n[i])})):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(n)):Z(Object(n)).forEach((function(o){Object.defineProperty(s,o,Object.getOwnPropertyDescriptor(n,o))}))}return s}var Q="DC_appSettings",X=P(T),Y=function(){return null};function $(e){var c,r,p,d,P,Z,$,io=e.AppSettingsComponent,no=void 0===io?oo:io,to=e.app,eo=e.appData,co=e.appName,ro=e.currentUser,po=e.disableAppAssetSelection,mo=void 0!==po&&po,ao=e.isMultiRig,lo=e.isSettingsDialogHidden,uo=void 0!==lo&&lo,jo=e.layoutEnvironment,go=e.onAppRemove,Io=e.onCloneDashboard,fo=void 0===Io?so:Io,vo=e.onSettingsChange,ho=e.openIntercom,Co=e.rigId,Ao=e.toggleAppSettingsDialog,bo=(null==to||null===(c=to.segment)||void 0===c?void 0:c.length)>1,yo=i(U(to)),So=s(yo,2),Oo=So[0],Do=So[1],Po=Oo===x.COMPLETION,ko=M[Oo],Ro=jo&&"asset"===jo.type,Eo=L([G.getCanReadAppPackages(to.app.id)]),No=s(Eo,1)[0],wo=No.active,xo=No.loading,Mo=i(!1),Bo=s(Mo,2),To=Bo[0],Vo=Bo[1],Fo=i(!0),qo=s(Fo,2),Ho=qo[0],Uo=qo[1],Lo=!(mo||_||ao||Ro&&Po),Go=!_&&!uo&&go,_o=n(Co);t((function(){Ho||Uo(!0)}),[Ho]);var zo=i((function(){var o;return J(J({},m(to.settings)),{},{package:to.settings.package||(null==to||null===(o=to.package)||void 0===o?void 0:o.version)})})),Wo=s(zo,2),Ko=Wo[0],Zo=Wo[1],Jo=C(null==to||null===(r=to.app)||void 0===r?void 0:r.id),Qo=i(""),Xo=s(Qo,2),Yo=Xo[0],$o=Xo[1],os=n(null),ss=n(null),is=xo||wo||Boolean(null===(p=os.current)||void 0===p?void 0:p.clientHeight),ns=Boolean(null===(d=ss.current)||void 0===d?void 0:d.clientHeight),ts=is&&ns,es=y({isCompletionApp:Po,isSustainabilityApp:Jo,isAccordionRequired:ts,isRemoveButtonVisible:Go}),cs=to.id===w,rs=function(s,i){return Zo((function(n){return J(J({},n),{},o({},s,i))}))},ps=function(o){return Zo((function(s){return J(J({},s),o)}))},ms=Ro?X:T;t((function(){a(Vo,200)(!0)}),[]);var as=S("div",{className:es.modalTitleContainer,children:[O(H,{className:es.appIcon,segment:[Oo],iconUrl:null==to||null===(P=to.app)||void 0===P||null===(Z=P.icon)||void 0===Z?void 0:Z.url,height:48,width:48}),S("div",{children:[O("div",{children:"".concat(co," Settings")}),O(z,{children:S("div",{"data-testid":"".concat(Q,"_appstoreLink"),className:es.appStoreButton,onClick:function(){var o,s;return window.open((s=null==to||null===(o=to.app)||void 0===o?void 0:o.id,"/app-store/app/".concat(s)),"_top")},children:["Open in Appstore ",O(v,{className:es.arrowIcon})]})})]})]}),ls=S("div",{className:es.modalActions,children:[Go&&O(A,{appName:co,onAppRemove:go}),S("div",{children:[O(E,{"data-testid":"".concat(Q,"_cancel"),variation:"secondary",onClick:Ao,children:"Cancel"}),uo&&O(E,{variation:"primary",onClick:function(){return fo()},children:"Copy Dashboard"}),!uo&&O(E,{"data-testid":"".concat(Q,"_save"),className:es.saveButton,variation:"primary",onClick:function(){if(!Ko.package&&!cs)return $o("Please select app version");if(Lo&&!Ro){var o=null==ko?void 0:ko.primaryAsset.assetType.id,s=null==ko?void 0:ko.primaryAsset.assetType.label;if(o&&!Ko[o])return $o("Please select ".concat(s))}return vo(Ko),K("Successfully saved"),Ao()},children:"Save"})]})]});return O(N,{actions:ls,closeIconClassName:es.closeIcon,contentContainerClassName:es.modalContainer,modalTitleClassName:es.modalTitle,onClose:Ao,open:!0,title:as,children:S(k,{ErrorView:R,openIntercom:ho,children:[O(q,{open:!!Yo,isShowCancel:!1,title:"Validation failed",text:Yo,handleOk:function(){return $o("")},classes:{confirmation:es.confirmationText}}),uo&&O(F,{}),!uo&&To&&!ns&&!is&&O(h,{image:h.IMAGES.UnderConstruction,title:"No app settings"}),!uo&&S(D,{children:[S(b,{defaultExpanded:!0,className:es.assetAccordion,accordionDetailsRef:os,isAccordionRequired:ts,summary:"Asset",children:[bo&&S(j,{className:es.segmentSelector,children:[O(g,{children:"Segment"}),O(I,{value:Oo,onChange:function(o){var s=o.target.value;_o.current=null,Uo(!1),Do(s),Zo(J(J({package:Ko.package,segment:s},l(u(B,"id"),(function(){return null}))),{},{assets:null}))},children:to.segment.map((function(o){return O(f,{className:es.segmentMenuItem,value:o,children:o},o)}))})]}),Lo&&Ho&&O(ms,{appKey:cs?null:to.app.app_key,appType:ko,defaultValue:_o.current,secondaryDefaultValue:+(null==eo||null===($=eo.well)||void 0===$?void 0:$.id),isHiddenMultipleAssetsToggle:!0,isHiddenTitle:!0,isNullable:Ro,label:"Asset",onSettingsChange:ps,settings:Ko}),O(V,{className:es.appVersionSelect,appId:to.app.id,value:Ko.package,onChange:function(o,s,i){return i&&W()?ps({package:o,react18AutoSwitchDisabled:!0}):rs("package",o)}})]}),O(k,{ErrorView:Y,openIntercom:ho,children:O(b,{accordionDetailsRef:ss,className:es.accordion,defaultExpanded:!0,isAccordionRequired:ts,summary:"App Settings",children:no&&O(no,{app:to,appData:eo,settings:Ko,onSettingChange:rs,onSettingsChange:ps,layoutEnvironment:jo,currentUser:ro})})})]})]})})}$.propTypes={AppSettingsComponent:e,app:c({}).isRequired,appData:c({}).isRequired,appName:r.isRequired,currentUser:c({}).isRequired,disableAppAssetSelection:p,isMultiRig:p.isRequired,isSettingsDialogHidden:p,layoutEnvironment:c({}),onAppRemove:e,onCloneDashboard:e,onSettingsChange:e.isRequired,toggleAppSettingsDialog:e.isRequired};var oo=function(){return null},so=d;export{Q as PAGE_NAME,$ as default};
2
2
  //# sourceMappingURL=AppSettingsDialog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AppSettingsDialog.js","sources":["../../../../../../src/components/DevCenter/DevCenterAppContainer/components/AppSettingsDialog/AppSettingsDialog.js"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport { bool, func, shape, string } from 'prop-types';\nimport { cloneDeep, debounce, keyBy, mapValues, noop } from 'lodash';\nimport { FormControl, InputLabel, MenuItem, Select } from '@material-ui/core';\nimport { ArrowForward as ArrowIcon } from '@material-ui/icons';\n\nimport EmptyState from '../../../../EmptyState';\nimport { getIsSustainabilityApp } from '../../utils';\n\nimport { RemoveAppButton, SettingsAccordion } from './components';\nimport { useStyles } from './styles';\n\nimport { withAssetEditorLockHOC } from '~/hocs';\nimport ErrorBoundary, { DevCenterAppErrorView } from '~/components/ErrorBoundary';\nimport Button from '~/components/Button';\nimport Modal from '~/components/Modal';\nimport { ASSET_TYPES, DEV_CENTER_CLI_APP_ID } from '~/constants';\nimport AssetEditor from '~/components/AssetEditorV2';\nimport AppVersionsSelect from '~/components/AppVersionsSelect';\nimport { DisabledSettingsMessage } from '~/components/DisabledSettingsMessage';\nimport ConfirmationDialog from '~/components/ConfirmationDialog';\nimport { SEGMENT_TO_ASSET_TYPE, SEGMENTS } from '~/constants/segment';\nimport { showSuccessNotification } from '~/utils';\nimport AppIcon from '~/components/AppIcon';\nimport { getAppSegment } from '~/utils/devcenter';\nimport { PERMISSIONS, usePermissions } from '~/permissions';\nimport { isInsideNewMobileApp } from '~/utils/mobileDetect';\nimport { HideInNativeApp } from '~/componentsV2/HideInNativeApp';\n// [REACT-18-MIGRATION-TAG] PLT-3099\nimport { isReact18Host } from '~/componentsV2/AppHeader/V3/VersionSelect/VersionSelect.constants';\n\nexport const PAGE_NAME = 'DC_appSettings';\n\nconst getAppPageUrl = appId => `/app-store/app/${appId}`;\nconst AssetEditorWithLock = withAssetEditorLockHOC(AssetEditor);\n\nconst AppSettingsErrorView = () => null;\n\nfunction AppSettingsDialog({\n AppSettingsComponent = DEFAULT_APP_SETTINGS_DIALOG_APP_SETTINGS_COMPONENT,\n app,\n appData,\n appName,\n currentUser,\n disableAppAssetSelection = false,\n isMultiRig,\n isSettingsDialogHidden = false,\n layoutEnvironment,\n onAppRemove,\n onCloneDashboard = DEFAULT_APP_SETTINGS_DIALOG_ON_CLONE_DASHBOARD,\n onSettingsChange,\n openIntercom,\n rigId,\n toggleAppSettingsDialog,\n}) {\n const hasSegmentSelector = app?.segment?.length > 1;\n const [appSegmentSetting, setAppSegmentSetting] = useState(getAppSegment(app));\n const isCompletionSegment = appSegmentSetting === SEGMENTS.COMPLETION;\n const assetEditorAppType = SEGMENT_TO_ASSET_TYPE[appSegmentSetting];\n const isAssetPage = layoutEnvironment && layoutEnvironment.type === 'asset';\n const [{ active: canReadAppPackages, loading: isPermissionsLoading }] = usePermissions([\n PERMISSIONS.getCanReadAppPackages(app.app.id),\n ]);\n\n const [isMounted, setIsMounted] = useState(false);\n const [isAssetSelectorRendered, setIsAssetSelectorRendered] = useState(true);\n const isAssetSelectorVisible =\n !disableAppAssetSelection &&\n !isInsideNewMobileApp &&\n !isMultiRig &&\n !(isAssetPage && isCompletionSegment);\n const isRemoveButtonVisible = !isInsideNewMobileApp && !isSettingsDialogHidden && onAppRemove;\n\n // NOTE: Keep in ref to have a way to reset default value\n // of asset selector when changing app segment\n const defaultRigId = useRef(rigId);\n\n useEffect(() => {\n if (!isAssetSelectorRendered) setIsAssetSelectorRendered(true);\n }, [isAssetSelectorRendered]);\n\n const [appSettings, setAppSettings] = useState(() => ({\n ...cloneDeep(app.settings),\n package: app.settings.package || app?.package?.version,\n }));\n\n const handleChangeAppSegment = ({ target: { value: nextSegment } }) => {\n defaultRigId.current = null;\n setIsAssetSelectorRendered(false);\n\n setAppSegmentSetting(nextSegment);\n setAppSettings({\n package: appSettings.package,\n segment: nextSegment,\n // NOTE: we need to reset asset ids when segment is changed\n ...mapValues(keyBy(ASSET_TYPES, 'id'), () => null),\n assets: null,\n });\n };\n\n const isSustainabilityApp = getIsSustainabilityApp(app?.app?.id);\n\n const [validationError, setValidationError] = useState('');\n const platformAppSettingsRef = useRef(null);\n const customAppSettingsRef = useRef(null);\n\n const hasPlatformAppSettings =\n isPermissionsLoading ||\n canReadAppPackages ||\n Boolean(platformAppSettingsRef.current?.clientHeight);\n const hasCustomAppSettings = Boolean(customAppSettingsRef.current?.clientHeight);\n const isAccordionRequired = hasPlatformAppSettings && hasCustomAppSettings;\n\n const styles = useStyles({\n isCompletionApp: isCompletionSegment,\n isSustainabilityApp,\n isAccordionRequired,\n isRemoveButtonVisible,\n });\n\n const isCLIApp = app.id === DEV_CENTER_CLI_APP_ID;\n\n const onSave = () => {\n const isNoPackageError = !appSettings.package && !isCLIApp;\n if (isNoPackageError) return setValidationError('Please select app version');\n if (isAssetSelectorVisible && !isAssetPage) {\n const appTypeKey = assetEditorAppType?.primaryAsset.assetType.id;\n const appTypeLabel = assetEditorAppType?.primaryAsset.assetType.label;\n if (appTypeKey && !appSettings[appTypeKey])\n return setValidationError(`Please select ${appTypeLabel}`);\n }\n\n onSettingsChange(appSettings);\n showSuccessNotification('Successfully saved');\n return toggleAppSettingsDialog();\n };\n\n const onAppSettingChange = (name, value) =>\n setAppSettings(prevSettings => ({\n ...prevSettings,\n [name]: value,\n }));\n\n const onAppSettingsChange = newSettings =>\n setAppSettings(prevSettings => ({ ...prevSettings, ...newSettings }));\n\n const AssetEditorComponent = isAssetPage ? AssetEditorWithLock : AssetEditor;\n\n useEffect(() => {\n const debouncedSetIsMounted = debounce(setIsMounted, 200);\n debouncedSetIsMounted(true);\n }, []);\n\n const modalTitle = (\n <div className={styles.modalTitleContainer}>\n <AppIcon\n className={styles.appIcon}\n segment={[appSegmentSetting]}\n iconUrl={app?.app?.icon?.url}\n height={48}\n width={48}\n />\n <div>\n <div>{`${appName} Settings`}</div>\n <HideInNativeApp>\n <div\n data-testid={`${PAGE_NAME}_appstoreLink`}\n className={styles.appStoreButton}\n onClick={() => window.open(getAppPageUrl(app?.app?.id), '_top')}\n >\n Open in Appstore <ArrowIcon className={styles.arrowIcon} />\n </div>\n </HideInNativeApp>\n </div>\n </div>\n );\n\n const modalActions = (\n <div className={styles.modalActions}>\n {isRemoveButtonVisible && <RemoveAppButton appName={appName} onAppRemove={onAppRemove} />}\n <div>\n <Button\n data-testid={`${PAGE_NAME}_cancel`}\n variation=\"secondary\"\n onClick={toggleAppSettingsDialog}\n >\n Cancel\n </Button>\n {isSettingsDialogHidden && (\n <Button variation=\"primary\" onClick={() => onCloneDashboard()}>\n Copy Dashboard\n </Button>\n )}\n {!isSettingsDialogHidden && (\n <Button\n data-testid={`${PAGE_NAME}_save`}\n className={styles.saveButton}\n variation=\"primary\"\n onClick={onSave}\n >\n Save\n </Button>\n )}\n </div>\n </div>\n );\n\n return (\n <Modal\n actions={modalActions}\n closeIconClassName={styles.closeIcon}\n contentContainerClassName={styles.modalContainer}\n modalTitleClassName={styles.modalTitle}\n onClose={toggleAppSettingsDialog}\n open\n title={modalTitle}\n >\n <ErrorBoundary ErrorView={DevCenterAppErrorView} openIntercom={openIntercom}>\n <ConfirmationDialog\n open={!!validationError}\n isShowCancel={false}\n title=\"Validation failed\"\n text={validationError}\n handleOk={() => setValidationError('')}\n classes={{ confirmation: styles.confirmationText }}\n />\n {isSettingsDialogHidden && <DisabledSettingsMessage />}\n {!isSettingsDialogHidden &&\n isMounted &&\n !hasCustomAppSettings &&\n !hasPlatformAppSettings && (\n <EmptyState image={EmptyState.IMAGES.UnderConstruction} title=\"No app settings\" />\n )}\n {!isSettingsDialogHidden && (\n <>\n <SettingsAccordion\n defaultExpanded\n className={styles.assetAccordion}\n accordionDetailsRef={platformAppSettingsRef}\n isAccordionRequired={isAccordionRequired}\n summary=\"Asset\"\n >\n {hasSegmentSelector && (\n <FormControl className={styles.segmentSelector}>\n <InputLabel>Segment</InputLabel>\n <Select value={appSegmentSetting} onChange={handleChangeAppSegment}>\n {app.segment.map(segmentItem => (\n <MenuItem\n className={styles.segmentMenuItem}\n key={segmentItem}\n value={segmentItem}\n >\n {segmentItem}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n )}\n {isAssetSelectorVisible && isAssetSelectorRendered && (\n <AssetEditorComponent\n appKey={isCLIApp ? null : app.app.app_key}\n appType={assetEditorAppType}\n defaultValue={defaultRigId.current}\n secondaryDefaultValue={+appData?.well?.id}\n isHiddenMultipleAssetsToggle\n isHiddenTitle\n isNullable={isAssetPage}\n label=\"Asset\"\n onSettingsChange={onAppSettingsChange}\n settings={appSettings}\n />\n )}\n <AppVersionsSelect\n className={styles.appVersionSelect}\n appId={app.app.id}\n value={appSettings.package}\n onChange={(value, appPackage, isUserChange) =>\n // [REACT-18-MIGRATION-TAG] PLT-3099: a genuine user pick on a React-18 host\n // opts the app out of the auto-switch; the auto-preselect must not (isUserChange).\n isUserChange && isReact18Host()\n ? onAppSettingsChange({ package: value, react18AutoSwitchDisabled: true })\n : onAppSettingChange('package', value)\n }\n />\n </SettingsAccordion>\n <ErrorBoundary ErrorView={AppSettingsErrorView} openIntercom={openIntercom}>\n <SettingsAccordion\n accordionDetailsRef={customAppSettingsRef}\n className={styles.accordion}\n defaultExpanded\n isAccordionRequired={isAccordionRequired}\n summary=\"App Settings\"\n >\n {AppSettingsComponent && (\n <AppSettingsComponent\n app={app}\n appData={appData}\n settings={appSettings}\n onSettingChange={onAppSettingChange}\n onSettingsChange={onAppSettingsChange}\n layoutEnvironment={layoutEnvironment}\n currentUser={currentUser}\n />\n )}\n </SettingsAccordion>\n </ErrorBoundary>\n </>\n )}\n </ErrorBoundary>\n </Modal>\n );\n}\n\nAppSettingsDialog.propTypes = {\n AppSettingsComponent: func,\n app: shape({}).isRequired,\n appData: shape({}).isRequired,\n appName: string.isRequired,\n currentUser: shape({}).isRequired,\n disableAppAssetSelection: bool,\n isMultiRig: bool.isRequired,\n isSettingsDialogHidden: bool,\n layoutEnvironment: shape({}).isRequired,\n onAppRemove: func,\n onCloneDashboard: func,\n onSettingsChange: func.isRequired,\n toggleAppSettingsDialog: func.isRequired,\n};\n\nconst DEFAULT_APP_SETTINGS_DIALOG_APP_SETTINGS_COMPONENT = () => null;\nconst DEFAULT_APP_SETTINGS_DIALOG_ON_CLONE_DASHBOARD = noop;\n\nexport default AppSettingsDialog;\n"],"names":["PAGE_NAME","AssetEditorWithLock","withAssetEditorLockHOC","AssetEditor","AppSettingsErrorView","AppSettingsDialog","_ref","_app$segment","_app$app","_platformAppSettingsR","_customAppSettingsRef","_app$app2","_app$app2$icon","_appData$well","_ref$AppSettingsCompo","AppSettingsComponent","DEFAULT_APP_SETTINGS_DIALOG_APP_SETTINGS_COMPONENT","app","appData","appName","currentUser","_ref$disableAppAssetS","disableAppAssetSelection","isMultiRig","_ref$isSettingsDialog","isSettingsDialogHidden","layoutEnvironment","onAppRemove","_ref$onCloneDashboard","onCloneDashboard","DEFAULT_APP_SETTINGS_DIALOG_ON_CLONE_DASHBOARD","onSettingsChange","openIntercom","rigId","toggleAppSettingsDialog","hasSegmentSelector","segment","length","_useState","useState","getAppSegment","_useState2","_slicedToArray","appSegmentSetting","setAppSegmentSetting","isCompletionSegment","SEGMENTS","COMPLETION","assetEditorAppType","SEGMENT_TO_ASSET_TYPE","isAssetPage","type","_usePermissions","usePermissions","PERMISSIONS","getCanReadAppPackages","id","_usePermissions2$","canReadAppPackages","active","isPermissionsLoading","loading","_useState4","_useState3","isMounted","setIsMounted","_useState6","_useState5","isAssetSelectorRendered","setIsAssetSelectorRendered","isAssetSelectorVisible","isInsideNewMobileApp","isRemoveButtonVisible","defaultRigId","useRef","useEffect","_useState7","_app$package","_objectSpread","cloneDeep","settings","package","version","_useState8","appSettings","setAppSettings","isSustainabilityApp","getIsSustainabilityApp","_useState10","_useState9","validationError","setValidationError","platformAppSettingsRef","customAppSettingsRef","hasPlatformAppSettings","Boolean","current","clientHeight","hasCustomAppSettings","isAccordionRequired","styles","useStyles","isCompletionApp","isCLIApp","DEV_CENTER_CLI_APP_ID","onAppSettingChange","name","value","prevSettings","_defineProperty","onAppSettingsChange","newSettings","AssetEditorComponent","debounce","debouncedSetIsMounted","modalTitle","_jsxs","className","modalTitleContainer","children","_jsx","AppIcon","appIcon","iconUrl","icon","url","height","width","concat","HideInNativeApp","appStoreButton","onClick","_app$app3","appId","window","open","ArrowIcon","arrowIcon","modalActions","RemoveAppButton","Button","variation","saveButton","appTypeKey","primaryAsset","assetType","appTypeLabel","label","showSuccessNotification","Modal","actions","closeIconClassName","closeIcon","contentContainerClassName","modalContainer","modalTitleClassName","onClose","title","ErrorBoundary","ErrorView","DevCenterAppErrorView","ConfirmationDialog","isShowCancel","text","handleOk","classes","confirmation","confirmationText","DisabledSettingsMessage","EmptyState","image","IMAGES","UnderConstruction","_Fragment","SettingsAccordion","defaultExpanded","assetAccordion","accordionDetailsRef","summary","FormControl","segmentSelector","InputLabel","Select","onChange","_ref2","nextSegment","target","mapValues","keyBy","ASSET_TYPES","assets","map","segmentItem","MenuItem","segmentMenuItem","appKey","app_key","appType","defaultValue","secondaryDefaultValue","well","isHiddenMultipleAssetsToggle","isHiddenTitle","isNullable","AppVersionsSelect","appVersionSelect","appPackage","isUserChange","isReact18Host","react18AutoSwitchDisabled","accordion","onSettingChange","propTypes","func","shape","isRequired","string","bool","noop"],"mappings":"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"}
1
+ {"version":3,"file":"AppSettingsDialog.js","sources":["../../../../../../src/components/DevCenter/DevCenterAppContainer/components/AppSettingsDialog/AppSettingsDialog.js"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport { bool, func, shape, string } from 'prop-types';\nimport { cloneDeep, debounce, keyBy, mapValues, noop } from 'lodash';\nimport { FormControl, InputLabel, MenuItem, Select } from '@material-ui/core';\nimport { ArrowForward as ArrowIcon } from '@material-ui/icons';\n\nimport EmptyState from '../../../../EmptyState';\nimport { getIsSustainabilityApp } from '../../utils';\n\nimport { RemoveAppButton, SettingsAccordion } from './components';\nimport { useStyles } from './styles';\n\nimport { withAssetEditorLockHOC } from '~/hocs';\nimport ErrorBoundary, { DevCenterAppErrorView } from '~/components/ErrorBoundary';\nimport Button from '~/components/Button';\nimport Modal from '~/components/Modal';\nimport { ASSET_TYPES, DEV_CENTER_CLI_APP_ID } from '~/constants';\nimport AssetEditor from '~/components/AssetEditorV2';\nimport AppVersionsSelect from '~/components/AppVersionsSelect';\nimport { DisabledSettingsMessage } from '~/components/DisabledSettingsMessage';\nimport ConfirmationDialog from '~/components/ConfirmationDialog';\nimport { SEGMENT_TO_ASSET_TYPE, SEGMENTS } from '~/constants/segment';\nimport { showSuccessNotification } from '~/utils';\nimport AppIcon from '~/components/AppIcon';\nimport { getAppSegment } from '~/utils/devcenter';\nimport { PERMISSIONS, usePermissions } from '~/permissions';\nimport { isInsideNewMobileApp } from '~/utils/mobileDetect';\nimport { HideInNativeApp } from '~/componentsV2/HideInNativeApp';\n// [REACT-18-MIGRATION-TAG] PLT-3099\nimport { isReact18Host } from '~/componentsV2/AppHeader/V3/VersionSelect/VersionSelect.constants';\n\nexport const PAGE_NAME = 'DC_appSettings';\n\nconst getAppPageUrl = appId => `/app-store/app/${appId}`;\nconst AssetEditorWithLock = withAssetEditorLockHOC(AssetEditor);\n\nconst AppSettingsErrorView = () => null;\n\nfunction AppSettingsDialog({\n AppSettingsComponent = DEFAULT_APP_SETTINGS_DIALOG_APP_SETTINGS_COMPONENT,\n app,\n appData,\n appName,\n currentUser,\n disableAppAssetSelection = false,\n isMultiRig,\n isSettingsDialogHidden = false,\n layoutEnvironment,\n onAppRemove,\n onCloneDashboard = DEFAULT_APP_SETTINGS_DIALOG_ON_CLONE_DASHBOARD,\n onSettingsChange,\n openIntercom,\n rigId,\n toggleAppSettingsDialog,\n}) {\n const hasSegmentSelector = app?.segment?.length > 1;\n const [appSegmentSetting, setAppSegmentSetting] = useState(getAppSegment(app));\n const isCompletionSegment = appSegmentSetting === SEGMENTS.COMPLETION;\n const assetEditorAppType = SEGMENT_TO_ASSET_TYPE[appSegmentSetting];\n const isAssetPage = layoutEnvironment && layoutEnvironment.type === 'asset';\n const [{ active: canReadAppPackages, loading: isPermissionsLoading }] = usePermissions([\n PERMISSIONS.getCanReadAppPackages(app.app.id),\n ]);\n\n const [isMounted, setIsMounted] = useState(false);\n const [isAssetSelectorRendered, setIsAssetSelectorRendered] = useState(true);\n const isAssetSelectorVisible =\n !disableAppAssetSelection &&\n !isInsideNewMobileApp &&\n !isMultiRig &&\n !(isAssetPage && isCompletionSegment);\n const isRemoveButtonVisible = !isInsideNewMobileApp && !isSettingsDialogHidden && onAppRemove;\n\n // NOTE: Keep in ref to have a way to reset default value\n // of asset selector when changing app segment\n const defaultRigId = useRef(rigId);\n\n useEffect(() => {\n if (!isAssetSelectorRendered) setIsAssetSelectorRendered(true);\n }, [isAssetSelectorRendered]);\n\n const [appSettings, setAppSettings] = useState(() => ({\n ...cloneDeep(app.settings),\n package: app.settings.package || app?.package?.version,\n }));\n\n const handleChangeAppSegment = ({ target: { value: nextSegment } }) => {\n defaultRigId.current = null;\n setIsAssetSelectorRendered(false);\n\n setAppSegmentSetting(nextSegment);\n setAppSettings({\n package: appSettings.package,\n segment: nextSegment,\n // NOTE: we need to reset asset ids when segment is changed\n ...mapValues(keyBy(ASSET_TYPES, 'id'), () => null),\n assets: null,\n });\n };\n\n const isSustainabilityApp = getIsSustainabilityApp(app?.app?.id);\n\n const [validationError, setValidationError] = useState('');\n const platformAppSettingsRef = useRef(null);\n const customAppSettingsRef = useRef(null);\n\n const hasPlatformAppSettings =\n isPermissionsLoading ||\n canReadAppPackages ||\n Boolean(platformAppSettingsRef.current?.clientHeight);\n const hasCustomAppSettings = Boolean(customAppSettingsRef.current?.clientHeight);\n const isAccordionRequired = hasPlatformAppSettings && hasCustomAppSettings;\n\n const styles = useStyles({\n isCompletionApp: isCompletionSegment,\n isSustainabilityApp,\n isAccordionRequired,\n isRemoveButtonVisible,\n });\n\n const isCLIApp = app.id === DEV_CENTER_CLI_APP_ID;\n\n const onSave = () => {\n const isNoPackageError = !appSettings.package && !isCLIApp;\n if (isNoPackageError) return setValidationError('Please select app version');\n if (isAssetSelectorVisible && !isAssetPage) {\n const appTypeKey = assetEditorAppType?.primaryAsset.assetType.id;\n const appTypeLabel = assetEditorAppType?.primaryAsset.assetType.label;\n if (appTypeKey && !appSettings[appTypeKey])\n return setValidationError(`Please select ${appTypeLabel}`);\n }\n\n onSettingsChange(appSettings);\n showSuccessNotification('Successfully saved');\n return toggleAppSettingsDialog();\n };\n\n const onAppSettingChange = (name, value) =>\n setAppSettings(prevSettings => ({\n ...prevSettings,\n [name]: value,\n }));\n\n const onAppSettingsChange = newSettings =>\n setAppSettings(prevSettings => ({ ...prevSettings, ...newSettings }));\n\n const AssetEditorComponent = isAssetPage ? AssetEditorWithLock : AssetEditor;\n\n useEffect(() => {\n const debouncedSetIsMounted = debounce(setIsMounted, 200);\n debouncedSetIsMounted(true);\n }, []);\n\n const modalTitle = (\n <div className={styles.modalTitleContainer}>\n <AppIcon\n className={styles.appIcon}\n segment={[appSegmentSetting]}\n iconUrl={app?.app?.icon?.url}\n height={48}\n width={48}\n />\n <div>\n <div>{`${appName} Settings`}</div>\n <HideInNativeApp>\n <div\n data-testid={`${PAGE_NAME}_appstoreLink`}\n className={styles.appStoreButton}\n onClick={() => window.open(getAppPageUrl(app?.app?.id), '_top')}\n >\n Open in Appstore <ArrowIcon className={styles.arrowIcon} />\n </div>\n </HideInNativeApp>\n </div>\n </div>\n );\n\n const modalActions = (\n <div className={styles.modalActions}>\n {isRemoveButtonVisible && <RemoveAppButton appName={appName} onAppRemove={onAppRemove} />}\n <div>\n <Button\n data-testid={`${PAGE_NAME}_cancel`}\n variation=\"secondary\"\n onClick={toggleAppSettingsDialog}\n >\n Cancel\n </Button>\n {isSettingsDialogHidden && (\n <Button variation=\"primary\" onClick={() => onCloneDashboard()}>\n Copy Dashboard\n </Button>\n )}\n {!isSettingsDialogHidden && (\n <Button\n data-testid={`${PAGE_NAME}_save`}\n className={styles.saveButton}\n variation=\"primary\"\n onClick={onSave}\n >\n Save\n </Button>\n )}\n </div>\n </div>\n );\n\n return (\n <Modal\n actions={modalActions}\n closeIconClassName={styles.closeIcon}\n contentContainerClassName={styles.modalContainer}\n modalTitleClassName={styles.modalTitle}\n onClose={toggleAppSettingsDialog}\n open\n title={modalTitle}\n >\n <ErrorBoundary ErrorView={DevCenterAppErrorView} openIntercom={openIntercom}>\n <ConfirmationDialog\n open={!!validationError}\n isShowCancel={false}\n title=\"Validation failed\"\n text={validationError}\n handleOk={() => setValidationError('')}\n classes={{ confirmation: styles.confirmationText }}\n />\n {isSettingsDialogHidden && <DisabledSettingsMessage />}\n {!isSettingsDialogHidden &&\n isMounted &&\n !hasCustomAppSettings &&\n !hasPlatformAppSettings && (\n <EmptyState image={EmptyState.IMAGES.UnderConstruction} title=\"No app settings\" />\n )}\n {!isSettingsDialogHidden && (\n <>\n <SettingsAccordion\n defaultExpanded\n className={styles.assetAccordion}\n accordionDetailsRef={platformAppSettingsRef}\n isAccordionRequired={isAccordionRequired}\n summary=\"Asset\"\n >\n {hasSegmentSelector && (\n <FormControl className={styles.segmentSelector}>\n <InputLabel>Segment</InputLabel>\n <Select value={appSegmentSetting} onChange={handleChangeAppSegment}>\n {app.segment.map(segmentItem => (\n <MenuItem\n className={styles.segmentMenuItem}\n key={segmentItem}\n value={segmentItem}\n >\n {segmentItem}\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n )}\n {isAssetSelectorVisible && isAssetSelectorRendered && (\n <AssetEditorComponent\n appKey={isCLIApp ? null : app.app.app_key}\n appType={assetEditorAppType}\n defaultValue={defaultRigId.current}\n secondaryDefaultValue={+appData?.well?.id}\n isHiddenMultipleAssetsToggle\n isHiddenTitle\n isNullable={isAssetPage}\n label=\"Asset\"\n onSettingsChange={onAppSettingsChange}\n settings={appSettings}\n />\n )}\n <AppVersionsSelect\n className={styles.appVersionSelect}\n appId={app.app.id}\n value={appSettings.package}\n onChange={(value, appPackage, isUserChange) =>\n // [REACT-18-MIGRATION-TAG] PLT-3099: a genuine user pick on a React-18 host\n // opts the app out of the auto-switch; the auto-preselect must not (isUserChange).\n isUserChange && isReact18Host()\n ? onAppSettingsChange({ package: value, react18AutoSwitchDisabled: true })\n : onAppSettingChange('package', value)\n }\n />\n </SettingsAccordion>\n <ErrorBoundary ErrorView={AppSettingsErrorView} openIntercom={openIntercom}>\n <SettingsAccordion\n accordionDetailsRef={customAppSettingsRef}\n className={styles.accordion}\n defaultExpanded\n isAccordionRequired={isAccordionRequired}\n summary=\"App Settings\"\n >\n {AppSettingsComponent && (\n <AppSettingsComponent\n app={app}\n appData={appData}\n settings={appSettings}\n onSettingChange={onAppSettingChange}\n onSettingsChange={onAppSettingsChange}\n layoutEnvironment={layoutEnvironment}\n currentUser={currentUser}\n />\n )}\n </SettingsAccordion>\n </ErrorBoundary>\n </>\n )}\n </ErrorBoundary>\n </Modal>\n );\n}\n\nAppSettingsDialog.propTypes = {\n AppSettingsComponent: func,\n app: shape({}).isRequired,\n appData: shape({}).isRequired,\n appName: string.isRequired,\n currentUser: shape({}).isRequired,\n disableAppAssetSelection: bool,\n isMultiRig: bool.isRequired,\n isSettingsDialogHidden: bool,\n layoutEnvironment: shape({}),\n onAppRemove: func,\n onCloneDashboard: func,\n onSettingsChange: func.isRequired,\n toggleAppSettingsDialog: func.isRequired,\n};\n\nconst DEFAULT_APP_SETTINGS_DIALOG_APP_SETTINGS_COMPONENT = () => null;\nconst DEFAULT_APP_SETTINGS_DIALOG_ON_CLONE_DASHBOARD = noop;\n\nexport default AppSettingsDialog;\n"],"names":["PAGE_NAME","AssetEditorWithLock","withAssetEditorLockHOC","AssetEditor","AppSettingsErrorView","AppSettingsDialog","_ref","_app$segment","_app$app","_platformAppSettingsR","_customAppSettingsRef","_app$app2","_app$app2$icon","_appData$well","_ref$AppSettingsCompo","AppSettingsComponent","DEFAULT_APP_SETTINGS_DIALOG_APP_SETTINGS_COMPONENT","app","appData","appName","currentUser","_ref$disableAppAssetS","disableAppAssetSelection","isMultiRig","_ref$isSettingsDialog","isSettingsDialogHidden","layoutEnvironment","onAppRemove","_ref$onCloneDashboard","onCloneDashboard","DEFAULT_APP_SETTINGS_DIALOG_ON_CLONE_DASHBOARD","onSettingsChange","openIntercom","rigId","toggleAppSettingsDialog","hasSegmentSelector","segment","length","_useState","useState","getAppSegment","_useState2","_slicedToArray","appSegmentSetting","setAppSegmentSetting","isCompletionSegment","SEGMENTS","COMPLETION","assetEditorAppType","SEGMENT_TO_ASSET_TYPE","isAssetPage","type","_usePermissions","usePermissions","PERMISSIONS","getCanReadAppPackages","id","_usePermissions2$","canReadAppPackages","active","isPermissionsLoading","loading","_useState4","_useState3","isMounted","setIsMounted","_useState6","_useState5","isAssetSelectorRendered","setIsAssetSelectorRendered","isAssetSelectorVisible","isInsideNewMobileApp","isRemoveButtonVisible","defaultRigId","useRef","useEffect","_useState7","_app$package","_objectSpread","cloneDeep","settings","package","version","_useState8","appSettings","setAppSettings","isSustainabilityApp","getIsSustainabilityApp","_useState10","_useState9","validationError","setValidationError","platformAppSettingsRef","customAppSettingsRef","hasPlatformAppSettings","Boolean","current","clientHeight","hasCustomAppSettings","isAccordionRequired","styles","useStyles","isCompletionApp","isCLIApp","DEV_CENTER_CLI_APP_ID","onAppSettingChange","name","value","prevSettings","_defineProperty","onAppSettingsChange","newSettings","AssetEditorComponent","debounce","debouncedSetIsMounted","modalTitle","_jsxs","className","modalTitleContainer","children","_jsx","AppIcon","appIcon","iconUrl","icon","url","height","width","concat","HideInNativeApp","appStoreButton","onClick","_app$app3","appId","window","open","ArrowIcon","arrowIcon","modalActions","RemoveAppButton","Button","variation","saveButton","appTypeKey","primaryAsset","assetType","appTypeLabel","label","showSuccessNotification","Modal","actions","closeIconClassName","closeIcon","contentContainerClassName","modalContainer","modalTitleClassName","onClose","title","ErrorBoundary","ErrorView","DevCenterAppErrorView","ConfirmationDialog","isShowCancel","text","handleOk","classes","confirmation","confirmationText","DisabledSettingsMessage","EmptyState","image","IMAGES","UnderConstruction","_Fragment","SettingsAccordion","defaultExpanded","assetAccordion","accordionDetailsRef","summary","FormControl","segmentSelector","InputLabel","Select","onChange","_ref2","nextSegment","target","mapValues","keyBy","ASSET_TYPES","assets","map","segmentItem","MenuItem","segmentMenuItem","appKey","app_key","appType","defaultValue","secondaryDefaultValue","well","isHiddenMultipleAssetsToggle","isHiddenTitle","isNullable","AppVersionsSelect","appVersionSelect","appPackage","isUserChange","isReact18Host","react18AutoSwitchDisabled","accordion","onSettingChange","propTypes","func","shape","isRequired","string","bool","noop"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { Dispatch, FC, ReactNode, SetStateAction } from 'react';
2
2
  interface Props {
3
- setIsFullscreenModalMode: (arg: SetStateAction<boolean>, isModal?: boolean) => void;
3
+ setIsFullscreenModalMode: (value: boolean, isModal?: boolean) => void | Promise<void>;
4
4
  children: ReactNode | ReactNode[];
5
5
  }
6
6
  interface ElementInfo {
@@ -1 +1 @@
1
- {"version":3,"file":"DcFullscreenElemsCoordinatorProvider.d.ts","sourceRoot":"","sources":["../../../../../../src/components/DevCenter/DevCenterAppContainer/components/DcFullscreenElemsCoordinatorProvider/DcFullscreenElemsCoordinatorProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EACR,EAAE,EACF,SAAS,EACT,cAAc,EAIf,MAAM,OAAO,CAAC;AASf,UAAU,KAAK;IACb,wBAAwB,EAAE,CAAC,GAAG,EAAE,cAAc,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IACpF,QAAQ,EAAE,SAAS,GAAG,SAAS,EAAE,CAAC;CACnC;AAED,UAAU,WAAW;IACnB,WAAW,EAAE,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/C,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,UAAU,GAAG;IACX,WAAW,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9D,YAAY,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CAClE;AAgBD;;;;;;;;;;;;;;GAcG;AAEH,eAAO,MAAM,oCAAoC,EAAE,EAAE,CAAC,KAAK,CAkI1D,CAAC;AAEF,wBAAgB,+BAA+B,eAE9C"}
1
+ {"version":3,"file":"DcFullscreenElemsCoordinatorProvider.d.ts","sourceRoot":"","sources":["../../../../../../src/components/DevCenter/DevCenterAppContainer/components/DcFullscreenElemsCoordinatorProvider/DcFullscreenElemsCoordinatorProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,QAAQ,EACR,EAAE,EACF,SAAS,EACT,cAAc,EAIf,MAAM,OAAO,CAAC;AASf,UAAU,KAAK;IACb,wBAAwB,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtF,QAAQ,EAAE,SAAS,GAAG,SAAS,EAAE,CAAC;CACnC;AAED,UAAU,WAAW;IACnB,WAAW,EAAE,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IAC/C,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,UAAU,GAAG;IACX,WAAW,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;IAC9D,YAAY,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,OAAO,KAAK,IAAI,CAAC;CAClE;AA6BD;;;;;;;;;;;;;;GAcG;AAEH,eAAO,MAAM,oCAAoC,EAAE,EAAE,CAAC,KAAK,CA8H1D,CAAC;AAEF,wBAAgB,+BAA+B,eAE9C"}
@@ -1,2 +1,2 @@
1
- import n from"@babel/runtime/helpers/asyncToGenerator";import r from"@babel/runtime/regenerator";import{createContext as e,useRef as t,useMemo as u,useContext as c}from"react";import{jsx as i}from"react/jsx-runtime";var o;!function(n){n.CLOSED="CLOSED",n.OPENNING="OPENNING",n.OPENED="OPENED",n.CLOSING="CLOSING"}(o||(o={}));var a=e(null),s=function(e){var c=e.setIsFullscreenModalMode,s=e.children,l={name:o.CLOSED,currentElementInfo:null},f=t({}),m=function(){return Object.keys(f.current).some((function(n){var r=f.current[n].name;return r===o.OPENNING||r===o.OPENED}))},p=u((function(){function e(n){return t.apply(this,arguments)}function t(){return(t=n(r.mark((function n(e){var t,u;return r.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return t=e.transitionFn,u=e.plannedAfterTransitionFinishCb,n.prev=1,n.next=4,t();case 4:n.next=9;break;case 6:n.prev=6,n.t0=n.catch(1),console.error("Transition error: ",n.t0);case 9:u();case 10:case"end":return n.stop()}}),n,null,[[1,6]])})))).apply(this,arguments)}function u(n){var r=n.id;f.current[r]={name:o.OPENED,currentElementInfo:n},f.current[r].currentElementInfo.setIsOpened(!0)}function i(n,r){var t=n.id;f.current[t]={name:o.OPENNING,currentElementInfo:null},e({transitionFn:function(){return c(!0,r)},plannedAfterTransitionFinishCb:function(){u(n)}})}function a(t){var u;f.current[t].name=o.CLOSING,e({transitionFn:(u=n(r.mark((function n(){var e;return r.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:null===(e=f.current[t].currentElementInfo)||void 0===e||e.setIsOpened(!1),f.current[t].currentElementInfo=null,m()||c(!1);case 3:case"end":return n.stop()}}),n)}))),function(){return u.apply(this,arguments)}),plannedAfterTransitionFinishCb:function(){f.current[t]&&(f.current[t].name=o.CLOSED)}})}return{requestOpen:function(n){var r,e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],t=n.id;switch(null!==(r=f.current)&&void 0!==r&&r[t]||(f.current[t]=l),f.current[n.id].name){case o.CLOSED:i(n,e);break;case o.OPENNING:case o.OPENED:u(n);break;case o.CLOSING:i(n,e)}},requestClose:function(n){var r,e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],t=n.id;if(null!==(r=f.current)&&void 0!==r&&r[t]||(f.current[t]=l),e)return delete f.current[t],void(m()||c(!1));a(t)}}}),[c]);return i(a.Provider,{value:p,children:s})};function l(){return c(a)}export{s as DcFullscreenElemsCoordinatorProvider,l as useDcFullscreenElemsCoordinator};
1
+ import n from"@babel/runtime/helpers/asyncToGenerator";import r from"@babel/runtime/regenerator";import{createContext as e,useRef as t,useMemo as u,useContext as c}from"react";import{jsx as i}from"react/jsx-runtime";var o;!function(n){n.CLOSED="CLOSED",n.OPENNING="OPENNING",n.OPENED="OPENED",n.CLOSING="CLOSING"}(o||(o={}));var a=function(){return{name:o.CLOSED,currentElementInfo:null}},s=e(null),l=function(e){var c=e.setIsFullscreenModalMode,l=e.children,f=t({}),m=function(){return Object.keys(f.current).some((function(n){var r=f.current[n].name;return r===o.OPENNING||r===o.OPENED}))},p=u((function(){function e(n){return t.apply(this,arguments)}function t(){return(t=n(r.mark((function n(e){var t,u;return r.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return t=e.transitionFn,u=e.plannedAfterTransitionFinishCb,n.prev=1,n.next=4,t();case 4:n.next=9;break;case 6:n.prev=6,n.t0=n.catch(1),console.error("Transition error: ",n.t0);case 9:u();case 10:case"end":return n.stop()}}),n,null,[[1,6]])})))).apply(this,arguments)}function u(n){var r=n.id;f.current[r]={name:o.OPENED,currentElementInfo:n},f.current[r].currentElementInfo.setIsOpened(!0)}function i(n,r){var t=n.id;f.current[t]={name:o.OPENNING,currentElementInfo:null},e({transitionFn:function(){return c(!0,r)},plannedAfterTransitionFinishCb:function(){u(n)}})}function s(t){var u;f.current[t].name=o.CLOSING,e({transitionFn:(u=n(r.mark((function n(){var e;return r.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:null===(e=f.current[t].currentElementInfo)||void 0===e||e.setIsOpened(!1),f.current[t].currentElementInfo=null,m()||c(!1);case 3:case"end":return n.stop()}}),n)}))),function(){return u.apply(this,arguments)}),plannedAfterTransitionFinishCb:function(){f.current[t]&&(f.current[t].name=o.CLOSED)}})}return{requestOpen:function(n){var r,e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],t=n.id;switch(null!==(r=f.current)&&void 0!==r&&r[t]||(f.current[t]=a()),f.current[n.id].name){case o.CLOSED:i(n,e);break;case o.OPENNING:case o.OPENED:u(n);break;case o.CLOSING:i(n,e)}},requestClose:function(n){var r,e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],t=n.id;if(null!==(r=f.current)&&void 0!==r&&r[t]||(f.current[t]=a()),e)return delete f.current[t],void(m()||c(!1));s(t)}}}),[c]);return i(s.Provider,{value:p,children:l})};function f(){return c(s)}export{l as DcFullscreenElemsCoordinatorProvider,f as useDcFullscreenElemsCoordinator};
2
2
  //# sourceMappingURL=DcFullscreenElemsCoordinatorProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DcFullscreenElemsCoordinatorProvider.js","sources":["../../../../../../src/components/DevCenter/DevCenterAppContainer/components/DcFullscreenElemsCoordinatorProvider/DcFullscreenElemsCoordinatorProvider.tsx"],"sourcesContent":["import {\n createContext,\n Dispatch,\n FC,\n ReactNode,\n SetStateAction,\n useContext,\n useMemo,\n useRef,\n} from 'react';\n\nenum STATES {\n CLOSED = 'CLOSED',\n OPENNING = 'OPENNING',\n OPENED = 'OPENED',\n CLOSING = 'CLOSING',\n}\n\ninterface Props {\n setIsFullscreenModalMode: (arg: SetStateAction<boolean>, isModal?: boolean) => void;\n children: ReactNode | ReactNode[];\n}\n\ninterface ElementInfo {\n setIsOpened: Dispatch<SetStateAction<boolean>>;\n id: string;\n}\n\ninterface Api {\n requestOpen: (elInfo: ElementInfo, isModal?: boolean) => void;\n requestClose: (elInfo: ElementInfo, isUnmount?: boolean) => void;\n}\n\ninterface StartTransitionProps {\n transitionFn: () => void;\n plannedAfterTransitionFinishCb: () => void;\n}\n\ntype State = {\n [id in string]: {\n name: STATES;\n currentElementInfo: null | ElementInfo;\n };\n};\n\nconst DcFullscreenElemsCoordinator = createContext<Api | null>(null);\n\n/**\n * Component designed to manage fullscreen elements inside of iframe(such as tooltips, popovers, modals).\n * State changes flow:\n *\n * ↓closed↓\n * ↓openning↓\n * {call transitionFn} stretches iframe to fullscreen(returns promise).\n * {call plannedAfterTransitionFinishCb} just open planned element by default.\n * ↓opened↓\n * ↓closing transition↓\n * {call transitionFn} shrinks iframe to app size. In some cases another element could be opened. We don't want to call transitionFn in this case\n * {call plannedAfterTransitionFinishCb} just go to closed state of element.\n *\n * At any of these states a element can request to open\\close itself. See requestOpen/requestClose for more details\n */\n\nexport const DcFullscreenElemsCoordinatorProvider: FC<Props> = ({\n setIsFullscreenModalMode,\n children,\n}) => {\n const initialElementState: { name: STATES; currentElementInfo: ElementInfo | null } = {\n name: STATES.CLOSED,\n currentElementInfo: null,\n };\n const state = useRef<State>({});\n\n const getIsSomeElemOpeningOrOpened = () => {\n return Object.keys(state.current).some(elemId => {\n const elemState = state.current[elemId].name;\n return elemState === STATES.OPENNING || elemState === STATES.OPENED;\n });\n };\n\n const api = useMemo(() => {\n async function startTransition({\n transitionFn,\n plannedAfterTransitionFinishCb,\n }: StartTransitionProps) {\n try {\n await transitionFn();\n } catch (err) {\n console.error('Transition error: ', err);\n }\n plannedAfterTransitionFinishCb();\n }\n\n function goToOpenedState(elementInfo: ElementInfo) {\n const { id } = elementInfo;\n state.current[id] = {\n name: STATES.OPENED,\n currentElementInfo: elementInfo,\n };\n state.current[id].currentElementInfo!.setIsOpened(true);\n }\n\n function goToOpenningState(elementInfo: ElementInfo, isModal: boolean) {\n const { id } = elementInfo;\n state.current[id] = {\n name: STATES.OPENNING,\n currentElementInfo: null,\n };\n\n startTransition({\n transitionFn: () => setIsFullscreenModalMode(true, isModal),\n plannedAfterTransitionFinishCb: () => {\n goToOpenedState(elementInfo);\n },\n });\n }\n\n function goToClosingState(id: string) {\n state.current[id].name = STATES.CLOSING;\n\n startTransition({\n // current element is in closing state, so if any other is opening or opened\n // then don't change full screen mode to avoid shrinking of opened element\n transitionFn: async () => {\n state.current[id].currentElementInfo?.setIsOpened(false);\n state.current[id].currentElementInfo = null;\n\n if (!getIsSomeElemOpeningOrOpened()) {\n setIsFullscreenModalMode(false);\n }\n },\n plannedAfterTransitionFinishCb: () => {\n // element may be unmounted before this callback runs\n if (state.current[id]) {\n state.current[id].name = STATES.CLOSED;\n }\n },\n });\n }\n\n const requestOpen = (elementInfo: ElementInfo, isModal: boolean = false) => {\n const { id } = elementInfo;\n if (!state.current?.[id]) {\n state.current[id] = initialElementState;\n }\n\n switch (state.current[elementInfo.id].name) {\n case STATES.CLOSED:\n goToOpenningState(elementInfo, isModal);\n break;\n case STATES.OPENNING:\n goToOpenedState(elementInfo);\n break;\n case STATES.OPENED:\n goToOpenedState(elementInfo);\n break;\n case STATES.CLOSING:\n goToOpenningState(elementInfo, isModal);\n break;\n default:\n }\n };\n\n const requestClose = (elementInfo: ElementInfo, isUnmount: boolean = false) => {\n const { id } = elementInfo;\n if (!state.current?.[id]) {\n state.current[id] = initialElementState;\n }\n\n if (isUnmount) {\n delete state.current[id];\n\n if (!getIsSomeElemOpeningOrOpened()) {\n setIsFullscreenModalMode(false);\n }\n\n return;\n }\n\n goToClosingState(id);\n };\n\n return {\n requestOpen,\n requestClose,\n };\n }, [setIsFullscreenModalMode]);\n\n return (\n <DcFullscreenElemsCoordinator.Provider value={api}>\n {children}\n </DcFullscreenElemsCoordinator.Provider>\n );\n};\n\nexport function useDcFullscreenElemsCoordinator() {\n return useContext(DcFullscreenElemsCoordinator);\n}\n"],"names":["STATES","DcFullscreenElemsCoordinator","createContext","DcFullscreenElemsCoordinatorProvider","_ref","setIsFullscreenModalMode","children","initialElementState","name","CLOSED","currentElementInfo","state","useRef","getIsSomeElemOpeningOrOpened","Object","keys","current","some","elemId","elemState","OPENNING","OPENED","api","useMemo","startTransition","_x","_startTransition","apply","this","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee2","_ref2","transitionFn","plannedAfterTransitionFinishCb","wrap","_context2","prev","next","t0","console","error","stop","goToOpenedState","elementInfo","id","setIsOpened","goToOpenningState","isModal","goToClosingState","_transitionFn","CLOSING","_callee","_state$current$id$cur","_context","requestOpen","_state$current","requestClose","_state$current2","isUnmount","_jsx","Provider","value","useDcFullscreenElemsCoordinator","useContext"],"mappings":"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"}
1
+ {"version":3,"file":"DcFullscreenElemsCoordinatorProvider.js","sources":["../../../../../../src/components/DevCenter/DevCenterAppContainer/components/DcFullscreenElemsCoordinatorProvider/DcFullscreenElemsCoordinatorProvider.tsx"],"sourcesContent":["import {\n createContext,\n Dispatch,\n FC,\n ReactNode,\n SetStateAction,\n useContext,\n useMemo,\n useRef,\n} from 'react';\n\nenum STATES {\n CLOSED = 'CLOSED',\n OPENNING = 'OPENNING',\n OPENED = 'OPENED',\n CLOSING = 'CLOSING',\n}\n\ninterface Props {\n setIsFullscreenModalMode: (value: boolean, isModal?: boolean) => void | Promise<void>;\n children: ReactNode | ReactNode[];\n}\n\ninterface ElementInfo {\n setIsOpened: Dispatch<SetStateAction<boolean>>;\n id: string;\n}\n\ninterface Api {\n requestOpen: (elInfo: ElementInfo, isModal?: boolean) => void;\n requestClose: (elInfo: ElementInfo, isUnmount?: boolean) => void;\n}\n\ninterface StartTransitionProps {\n transitionFn: () => void;\n plannedAfterTransitionFinishCb: () => void;\n}\n\ntype ElementState = {\n name: STATES;\n currentElementInfo: null | ElementInfo;\n};\n\ntype State = {\n [id in string]: ElementState;\n};\n\n/**\n * A factory, not a shared constant. Element states are mutated in place — `goToClosingState`\n * writes `name` and `currentElementInfo` straight into the entry — so seeding two elements from\n * one object would make them share it: closing one would leave the next to start in `CLOSING`\n * instead of `CLOSED`, and its `requestOpen` would then never reach the branch that opens it.\n */\nconst createInitialElementState = (): ElementState => ({\n name: STATES.CLOSED,\n currentElementInfo: null,\n});\n\nconst DcFullscreenElemsCoordinator = createContext<Api | null>(null);\n\n/**\n * Component designed to manage fullscreen elements inside of iframe(such as tooltips, popovers, modals).\n * State changes flow:\n *\n * ↓closed↓\n * ↓openning↓\n * {call transitionFn} stretches iframe to fullscreen(returns promise).\n * {call plannedAfterTransitionFinishCb} just open planned element by default.\n * ↓opened↓\n * ↓closing transition↓\n * {call transitionFn} shrinks iframe to app size. In some cases another element could be opened. We don't want to call transitionFn in this case\n * {call plannedAfterTransitionFinishCb} just go to closed state of element.\n *\n * At any of these states a element can request to open\\close itself. See requestOpen/requestClose for more details\n */\n\nexport const DcFullscreenElemsCoordinatorProvider: FC<Props> = ({\n setIsFullscreenModalMode,\n children,\n}) => {\n const state = useRef<State>({});\n\n const getIsSomeElemOpeningOrOpened = () => {\n return Object.keys(state.current).some(elemId => {\n const elemState = state.current[elemId].name;\n return elemState === STATES.OPENNING || elemState === STATES.OPENED;\n });\n };\n\n const api = useMemo(() => {\n async function startTransition({\n transitionFn,\n plannedAfterTransitionFinishCb,\n }: StartTransitionProps) {\n try {\n await transitionFn();\n } catch (err) {\n console.error('Transition error: ', err);\n }\n plannedAfterTransitionFinishCb();\n }\n\n function goToOpenedState(elementInfo: ElementInfo) {\n const { id } = elementInfo;\n state.current[id] = {\n name: STATES.OPENED,\n currentElementInfo: elementInfo,\n };\n state.current[id].currentElementInfo!.setIsOpened(true);\n }\n\n function goToOpenningState(elementInfo: ElementInfo, isModal: boolean) {\n const { id } = elementInfo;\n state.current[id] = {\n name: STATES.OPENNING,\n currentElementInfo: null,\n };\n\n startTransition({\n transitionFn: () => setIsFullscreenModalMode(true, isModal),\n plannedAfterTransitionFinishCb: () => {\n goToOpenedState(elementInfo);\n },\n });\n }\n\n function goToClosingState(id: string) {\n state.current[id].name = STATES.CLOSING;\n\n startTransition({\n // current element is in closing state, so if any other is opening or opened\n // then don't change full screen mode to avoid shrinking of opened element\n transitionFn: async () => {\n state.current[id].currentElementInfo?.setIsOpened(false);\n state.current[id].currentElementInfo = null;\n\n if (!getIsSomeElemOpeningOrOpened()) {\n setIsFullscreenModalMode(false);\n }\n },\n plannedAfterTransitionFinishCb: () => {\n // element may be unmounted before this callback runs\n if (state.current[id]) {\n state.current[id].name = STATES.CLOSED;\n }\n },\n });\n }\n\n const requestOpen = (elementInfo: ElementInfo, isModal: boolean = false) => {\n const { id } = elementInfo;\n if (!state.current?.[id]) {\n state.current[id] = createInitialElementState();\n }\n\n switch (state.current[elementInfo.id].name) {\n case STATES.CLOSED:\n goToOpenningState(elementInfo, isModal);\n break;\n case STATES.OPENNING:\n goToOpenedState(elementInfo);\n break;\n case STATES.OPENED:\n goToOpenedState(elementInfo);\n break;\n case STATES.CLOSING:\n goToOpenningState(elementInfo, isModal);\n break;\n default:\n }\n };\n\n const requestClose = (elementInfo: ElementInfo, isUnmount: boolean = false) => {\n const { id } = elementInfo;\n if (!state.current?.[id]) {\n state.current[id] = createInitialElementState();\n }\n\n if (isUnmount) {\n delete state.current[id];\n\n if (!getIsSomeElemOpeningOrOpened()) {\n setIsFullscreenModalMode(false);\n }\n\n return;\n }\n\n goToClosingState(id);\n };\n\n return {\n requestOpen,\n requestClose,\n };\n }, [setIsFullscreenModalMode]);\n\n return (\n <DcFullscreenElemsCoordinator.Provider value={api}>\n {children}\n </DcFullscreenElemsCoordinator.Provider>\n );\n};\n\nexport function useDcFullscreenElemsCoordinator() {\n return useContext(DcFullscreenElemsCoordinator);\n}\n"],"names":["STATES","createInitialElementState","name","CLOSED","currentElementInfo","DcFullscreenElemsCoordinator","createContext","DcFullscreenElemsCoordinatorProvider","_ref","setIsFullscreenModalMode","children","state","useRef","getIsSomeElemOpeningOrOpened","Object","keys","current","some","elemId","elemState","OPENNING","OPENED","api","useMemo","startTransition","_x","_startTransition","apply","this","arguments","_asyncToGenerator","_regeneratorRuntime","mark","_callee2","_ref2","transitionFn","plannedAfterTransitionFinishCb","wrap","_context2","prev","next","t0","console","error","stop","goToOpenedState","elementInfo","id","setIsOpened","goToOpenningState","isModal","goToClosingState","_transitionFn","CLOSING","_callee","_state$current$id$cur","_context","requestOpen","_state$current","requestClose","_state$current2","isUnmount","_jsx","Provider","value","useDcFullscreenElemsCoordinator","useContext"],"mappings":"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"}
@@ -18,7 +18,7 @@ interface DevCenterAppViewProps {
18
18
  openIntercom: () => void;
19
19
  segment: string;
20
20
  toggleAppSettingsDialog: () => void;
21
- onError: (error: Error) => void;
21
+ onError?: (error: Error) => void;
22
22
  }
23
23
  declare function DevCenterAppView({ AppComponent, app, appData, appProps, availability, isCLIApp, isLoading, isMultiRig, layoutEnvironment, openIntercom, segment, toggleAppSettingsDialog, onError, }: DevCenterAppViewProps): import("react/jsx-runtime").JSX.Element;
24
24
  export default DevCenterAppView;
@@ -1 +1 @@
1
- {"version":3,"file":"DevCenterAppView.d.ts","sourceRoot":"","sources":["../../../../../../src/components/DevCenter/DevCenterAppContainer/components/DevCenterAppView/DevCenterAppView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAc1B,eAAO,MAAM,sBAAsB,YAAa,MAAM,KAAG,MAAyC,CAAC;AAGnG,UAAU,qBAAqB;IAC7B,YAAY,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IAC9C,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,YAAY,CAAC,EAAE;QAAE,sBAAsB,EAAE,OAAO,CAAC;QAAC,uBAAuB,EAAE,OAAO,CAAA;KAAE,CAAC;IACrF,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,iBAAiB,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC5C,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,uBAAuB,EAAE,MAAM,IAAI,CAAC;IACpC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACjC;AAED,iBAAS,gBAAgB,CAAC,EACxB,YAAY,EACZ,GAAG,EACH,OAAO,EACP,QAAQ,EACR,YAAuD,EACvD,QAAQ,EACR,SAAS,EACT,UAAU,EACV,iBAAiB,EACjB,YAAY,EACZ,OAAO,EACP,uBAAuB,EACvB,OAAO,GACR,EAAE,qBAAqB,2CAoJvB;eAOc,gBAAgB"}
1
+ {"version":3,"file":"DevCenterAppView.d.ts","sourceRoot":"","sources":["../../../../../../src/components/DevCenter/DevCenterAppContainer/components/DevCenterAppView/DevCenterAppView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAc1B,eAAO,MAAM,sBAAsB,YAAa,MAAM,KAAG,MAAyC,CAAC;AAGnG,UAAU,qBAAqB;IAC7B,YAAY,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IAC9C,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC9B,YAAY,CAAC,EAAE;QAAE,sBAAsB,EAAE,OAAO,CAAC;QAAC,uBAAuB,EAAE,OAAO,CAAA;KAAE,CAAC;IACrF,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,iBAAiB,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC5C,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,uBAAuB,EAAE,MAAM,IAAI,CAAC;IACpC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED,iBAAS,gBAAgB,CAAC,EACxB,YAAY,EACZ,GAAG,EACH,OAAO,EACP,QAAQ,EACR,YAAuD,EACvD,QAAQ,EACR,SAAS,EACT,UAAU,EACV,iBAAiB,EACjB,YAAY,EACZ,OAAO,EACP,uBAAuB,EACvB,OAAO,GACR,EAAE,qBAAqB,2CAoJvB;eAOc,gBAAgB"}
@@ -1 +1 @@
1
- {"version":3,"file":"DevCenterAppView.js","sources":["../../../../../../src/components/DevCenter/DevCenterAppContainer/components/DevCenterAppView/DevCenterAppView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { AppMessageWrapper } from '../../../../../componentsV2/AppInfoMessage';\nimport { EmptyState } from '../../../../../componentsV2/EmptyState';\nimport { LoaderLogo } from '../../../../../componentsV2/LoaderLogo';\n\nimport { ChooseAssetButton } from './components/ChooseAssetButton';\n\nimport styles from './DevCenterAppView.scss';\n\nimport ErrorBoundary from '~/components/ErrorBoundary';\nimport { SEGMENTS } from '~/constants/segment';\nimport { useAppCommonsInternal } from '~/componentsV2/AppCommonsProvider';\n\nexport const getNoActiveWellMessage = (rigName: string): string => `${rigName} has no active well`;\n\n// TODO: Replace `any` with specific types once DevCenterAppContainer.js is converted to TypeScript\ninterface DevCenterAppViewProps {\n AppComponent: React.ComponentType<any> | null;\n app: Record<string, any>;\n appData: Record<string, any>;\n appProps: Record<string, any>;\n availability?: { hasProductSubscription: boolean; isAppSubscribedForAsset: boolean };\n isCLIApp: boolean;\n isLoading: boolean;\n isMultiRig: boolean;\n layoutEnvironment: { type?: string } | null;\n openIntercom: () => void;\n segment: string;\n toggleAppSettingsDialog: () => void;\n onError: (error: Error) => void;\n}\n\nfunction DevCenterAppView({\n AppComponent,\n app,\n appData,\n appProps,\n availability = DEFAULT_DEV_CENTER_APP_VIEW_AVAILABILITY,\n isCLIApp,\n isLoading,\n isMultiRig,\n layoutEnvironment,\n openIntercom,\n segment,\n toggleAppSettingsDialog,\n onError,\n}: DevCenterAppViewProps) {\n const emptyStateTestId = 'DevCenterAppView_EmptyState';\n\n // Use overridden appSettings from AppCommonsProvider (e.g. localStorage-stable settingsByAsset)\n // so server polling doesn't reset selections passed via {...app.settings} to AppComponent.\n const appCommons = useAppCommonsInternal();\n const effectiveSettings = appCommons?.appSettings ?? app.settings;\n\n if (!app.package)\n return (\n <AppMessageWrapper logo={app.headerLogo}>\n <EmptyState\n testId={emptyStateTestId}\n title=\"App package was not found\"\n subTitle=\"Please choose another version in the app settings menu or delete and add app again on your dashboard\"\n image=\"appLoadingError\"\n />\n </AppMessageWrapper>\n );\n\n if (isLoading)\n return (\n <AppMessageWrapper showHeader={false}>\n <LoaderLogo className={styles.loader} testId=\"DevCenterAppView_Loader\" />\n </AppMessageWrapper>\n );\n\n if (!(availability.hasProductSubscription && availability.isAppSubscribedForAsset)) {\n const { title, subtitle } = !availability.hasProductSubscription\n ? {\n title: 'No Subscription exists for this app.',\n subtitle: 'Contact your Corva Account rep to get access to this app.',\n }\n : {\n title: 'No Subscription exists for this asset.',\n subtitle: 'Contact your Corva Account rep to get access to this asset.',\n };\n\n return (\n <AppMessageWrapper logo={app.headerLogo}>\n <EmptyState\n testId={emptyStateTestId}\n title={title}\n subTitle={subtitle}\n image=\"noSubscription\"\n />\n </AppMessageWrapper>\n );\n }\n\n if (!AppComponent)\n return (\n <AppMessageWrapper logo={app.headerLogo}>\n <EmptyState\n testId={emptyStateTestId}\n title=\"App component was not found\"\n image=\"appLoadingError\"\n />\n </AppMessageWrapper>\n );\n\n if (!isMultiRig) {\n const actions = isCLIApp && (\n <ChooseAssetButton toggleAppSettingsDialog={toggleAppSettingsDialog} />\n );\n\n const isInterventionApp = segment === SEGMENTS.INTERVENTION;\n const primaryAsset = isInterventionApp ? appData.interventionUnit : appData.rig;\n\n if (primaryAsset && !appData.well) {\n return (\n <AppMessageWrapper logo={app.headerLogo}>\n <EmptyState\n testId={emptyStateTestId}\n title={getNoActiveWellMessage(primaryAsset?.name)}\n image=\"noActiveWell\"\n subTitle={actions}\n />\n </AppMessageWrapper>\n );\n }\n\n const isGeneralDashboard = layoutEnvironment?.type === 'general';\n const isCompletionApp = segment === SEGMENTS.COMPLETION;\n\n if (isGeneralDashboard && isCompletionApp && !appData.fracFleet) {\n return (\n <AppMessageWrapper logo={app.headerLogo}>\n <EmptyState\n testId={emptyStateTestId}\n title=\"Frac fleet was not found\"\n subTitle={actions}\n image=\"fleetHasNoPad\"\n />\n </AppMessageWrapper>\n );\n }\n\n if (\n isCompletionApp &&\n appData.fracFleet &&\n !appData.fracFleet.current_pad_id &&\n !app.settings.padId\n ) {\n // NOTE: completion app has fracFleet, that fracfleet has no current pad id and no specific pad id in settings\n return (\n <AppMessageWrapper logo={app.headerLogo}>\n <EmptyState\n testId={emptyStateTestId}\n image=\"fleetHasNoPad\"\n subTitle={actions}\n title=\"Frac fleet has no active pad\"\n />\n </AppMessageWrapper>\n );\n }\n\n if (isCompletionApp && isGeneralDashboard && (!appData.wells || appData.wells.length < 1)) {\n return (\n <AppMessageWrapper logo={app.headerLogo}>\n <EmptyState\n testId={emptyStateTestId}\n image=\"noWellsSelected\"\n subTitle={actions}\n title=\"This pad has no wells\"\n />\n </AppMessageWrapper>\n );\n }\n\n if (!appData.rig && !appData.well && !appData.settings && !appData.wells) {\n return (\n <AppMessageWrapper logo={app.headerLogo}>\n <EmptyState\n testId={emptyStateTestId}\n image=\"assetHasNoData\"\n subTitle={actions}\n title=\"Asset unavailable\"\n />\n </AppMessageWrapper>\n );\n }\n }\n return (\n <ErrorBoundary openIntercom={openIntercom} onError={onError}>\n <AppComponent app={app} {...app.settings} {...effectiveSettings} {...appData} {...appProps} />\n </ErrorBoundary>\n );\n}\n\nconst DEFAULT_DEV_CENTER_APP_VIEW_AVAILABILITY = {\n hasProductSubscription: true,\n isAppSubscribedForAsset: true,\n};\n\nexport default DevCenterAppView;\n"],"names":["getNoActiveWellMessage","rigName","concat","DevCenterAppView","_ref","_appCommons$appSettin","AppComponent","app","appData","appProps","_ref$availability","availability","DEFAULT_DEV_CENTER_APP_VIEW_AVAILABILITY","isCLIApp","isLoading","isMultiRig","layoutEnvironment","openIntercom","segment","toggleAppSettingsDialog","onError","emptyStateTestId","appCommons","useAppCommonsInternal","effectiveSettings","appSettings","settings","package","_jsx","AppMessageWrapper","logo","headerLogo","children","EmptyState","testId","title","subTitle","image","showHeader","LoaderLogo","className","styles","loader","hasProductSubscription","isAppSubscribedForAsset","_ref2","subtitle","actions","ChooseAssetButton","primaryAsset","SEGMENTS","INTERVENTION","interventionUnit","rig","well","name","isGeneralDashboard","type","isCompletionApp","COMPLETION","fracFleet","current_pad_id","padId","wells","length","ErrorBoundary","_objectSpread"],"mappings":"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"}
1
+ {"version":3,"file":"DevCenterAppView.js","sources":["../../../../../../src/components/DevCenter/DevCenterAppContainer/components/DevCenterAppView/DevCenterAppView.tsx"],"sourcesContent":["import React from 'react';\n\nimport { AppMessageWrapper } from '../../../../../componentsV2/AppInfoMessage';\nimport { EmptyState } from '../../../../../componentsV2/EmptyState';\nimport { LoaderLogo } from '../../../../../componentsV2/LoaderLogo';\n\nimport { ChooseAssetButton } from './components/ChooseAssetButton';\n\nimport styles from './DevCenterAppView.scss';\n\nimport ErrorBoundary from '~/components/ErrorBoundary';\nimport { SEGMENTS } from '~/constants/segment';\nimport { useAppCommonsInternal } from '~/componentsV2/AppCommonsProvider';\n\nexport const getNoActiveWellMessage = (rigName: string): string => `${rigName} has no active well`;\n\n// TODO: Replace `any` with specific types once DevCenterAppContainer.js is converted to TypeScript\ninterface DevCenterAppViewProps {\n AppComponent: React.ComponentType<any> | null;\n app: Record<string, any>;\n appData: Record<string, any>;\n appProps: Record<string, any>;\n availability?: { hasProductSubscription: boolean; isAppSubscribedForAsset: boolean };\n isCLIApp: boolean;\n isLoading: boolean;\n isMultiRig: boolean;\n layoutEnvironment: { type?: string } | null;\n openIntercom: () => void;\n segment: string;\n toggleAppSettingsDialog: () => void;\n onError?: (error: Error) => void;\n}\n\nfunction DevCenterAppView({\n AppComponent,\n app,\n appData,\n appProps,\n availability = DEFAULT_DEV_CENTER_APP_VIEW_AVAILABILITY,\n isCLIApp,\n isLoading,\n isMultiRig,\n layoutEnvironment,\n openIntercom,\n segment,\n toggleAppSettingsDialog,\n onError,\n}: DevCenterAppViewProps) {\n const emptyStateTestId = 'DevCenterAppView_EmptyState';\n\n // Use overridden appSettings from AppCommonsProvider (e.g. localStorage-stable settingsByAsset)\n // so server polling doesn't reset selections passed via {...app.settings} to AppComponent.\n const appCommons = useAppCommonsInternal();\n const effectiveSettings = appCommons?.appSettings ?? app.settings;\n\n if (!app.package)\n return (\n <AppMessageWrapper logo={app.headerLogo}>\n <EmptyState\n testId={emptyStateTestId}\n title=\"App package was not found\"\n subTitle=\"Please choose another version in the app settings menu or delete and add app again on your dashboard\"\n image=\"appLoadingError\"\n />\n </AppMessageWrapper>\n );\n\n if (isLoading)\n return (\n <AppMessageWrapper showHeader={false}>\n <LoaderLogo className={styles.loader} testId=\"DevCenterAppView_Loader\" />\n </AppMessageWrapper>\n );\n\n if (!(availability.hasProductSubscription && availability.isAppSubscribedForAsset)) {\n const { title, subtitle } = !availability.hasProductSubscription\n ? {\n title: 'No Subscription exists for this app.',\n subtitle: 'Contact your Corva Account rep to get access to this app.',\n }\n : {\n title: 'No Subscription exists for this asset.',\n subtitle: 'Contact your Corva Account rep to get access to this asset.',\n };\n\n return (\n <AppMessageWrapper logo={app.headerLogo}>\n <EmptyState\n testId={emptyStateTestId}\n title={title}\n subTitle={subtitle}\n image=\"noSubscription\"\n />\n </AppMessageWrapper>\n );\n }\n\n if (!AppComponent)\n return (\n <AppMessageWrapper logo={app.headerLogo}>\n <EmptyState\n testId={emptyStateTestId}\n title=\"App component was not found\"\n image=\"appLoadingError\"\n />\n </AppMessageWrapper>\n );\n\n if (!isMultiRig) {\n const actions = isCLIApp && (\n <ChooseAssetButton toggleAppSettingsDialog={toggleAppSettingsDialog} />\n );\n\n const isInterventionApp = segment === SEGMENTS.INTERVENTION;\n const primaryAsset = isInterventionApp ? appData.interventionUnit : appData.rig;\n\n if (primaryAsset && !appData.well) {\n return (\n <AppMessageWrapper logo={app.headerLogo}>\n <EmptyState\n testId={emptyStateTestId}\n title={getNoActiveWellMessage(primaryAsset?.name)}\n image=\"noActiveWell\"\n subTitle={actions}\n />\n </AppMessageWrapper>\n );\n }\n\n const isGeneralDashboard = layoutEnvironment?.type === 'general';\n const isCompletionApp = segment === SEGMENTS.COMPLETION;\n\n if (isGeneralDashboard && isCompletionApp && !appData.fracFleet) {\n return (\n <AppMessageWrapper logo={app.headerLogo}>\n <EmptyState\n testId={emptyStateTestId}\n title=\"Frac fleet was not found\"\n subTitle={actions}\n image=\"fleetHasNoPad\"\n />\n </AppMessageWrapper>\n );\n }\n\n if (\n isCompletionApp &&\n appData.fracFleet &&\n !appData.fracFleet.current_pad_id &&\n !app.settings.padId\n ) {\n // NOTE: completion app has fracFleet, that fracfleet has no current pad id and no specific pad id in settings\n return (\n <AppMessageWrapper logo={app.headerLogo}>\n <EmptyState\n testId={emptyStateTestId}\n image=\"fleetHasNoPad\"\n subTitle={actions}\n title=\"Frac fleet has no active pad\"\n />\n </AppMessageWrapper>\n );\n }\n\n if (isCompletionApp && isGeneralDashboard && (!appData.wells || appData.wells.length < 1)) {\n return (\n <AppMessageWrapper logo={app.headerLogo}>\n <EmptyState\n testId={emptyStateTestId}\n image=\"noWellsSelected\"\n subTitle={actions}\n title=\"This pad has no wells\"\n />\n </AppMessageWrapper>\n );\n }\n\n if (!appData.rig && !appData.well && !appData.settings && !appData.wells) {\n return (\n <AppMessageWrapper logo={app.headerLogo}>\n <EmptyState\n testId={emptyStateTestId}\n image=\"assetHasNoData\"\n subTitle={actions}\n title=\"Asset unavailable\"\n />\n </AppMessageWrapper>\n );\n }\n }\n return (\n <ErrorBoundary openIntercom={openIntercom} onError={onError}>\n <AppComponent app={app} {...app.settings} {...effectiveSettings} {...appData} {...appProps} />\n </ErrorBoundary>\n );\n}\n\nconst DEFAULT_DEV_CENTER_APP_VIEW_AVAILABILITY = {\n hasProductSubscription: true,\n isAppSubscribedForAsset: true,\n};\n\nexport default DevCenterAppView;\n"],"names":["getNoActiveWellMessage","rigName","concat","DevCenterAppView","_ref","_appCommons$appSettin","AppComponent","app","appData","appProps","_ref$availability","availability","DEFAULT_DEV_CENTER_APP_VIEW_AVAILABILITY","isCLIApp","isLoading","isMultiRig","layoutEnvironment","openIntercom","segment","toggleAppSettingsDialog","onError","emptyStateTestId","appCommons","useAppCommonsInternal","effectiveSettings","appSettings","settings","package","_jsx","AppMessageWrapper","logo","headerLogo","children","EmptyState","testId","title","subTitle","image","showHeader","LoaderLogo","className","styles","loader","hasProductSubscription","isAppSubscribedForAsset","_ref2","subtitle","actions","ChooseAssetButton","primaryAsset","SEGMENTS","INTERVENTION","interventionUnit","rig","well","name","isGeneralDashboard","type","isCompletionApp","COMPLETION","fracFleet","current_pad_id","padId","wells","length","ErrorBoundary","_objectSpread"],"mappings":"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"}
@@ -13,7 +13,7 @@ type NonPriorityMenusProps = {
13
13
  onClick?: () => void;
14
14
  to?: string | object;
15
15
  }[];
16
- setIsFullscreenModalMode: (value: boolean) => Promise<void>;
16
+ setIsFullscreenModalMode: (value: boolean) => void | Promise<void>;
17
17
  };
18
18
  export declare const NonPriorityMenus: ({ menuItems, isMaximized, setIsMaximized, toggleAppSettingsDialog, isMobileView, devCenterRouter, setIsFullscreenModalMode, }: NonPriorityMenusProps) => import("react/jsx-runtime").JSX.Element;
19
19
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"NonPriorityMenus.d.ts","sourceRoot":"","sources":["../../../../../../src/components/DevCenter/DevCenterAppContainer/components/NonPriorityMenus/NonPriorityMenus.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAoB,MAAM,OAAO,CAAC;AAQpD,KAAK,qBAAqB,GAAG;IAC3B,uBAAuB,EAAE,MAAM,IAAI,CAAC;IACpC,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,eAAe,EAAE;QAAE,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAA;KAAE,CAAC;IACxD,SAAS,EAAE;QACT,IAAI,CAAC,EAAE,SAAS,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;QACrB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;KACtB,EAAE,CAAC;IACJ,wBAAwB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7D,CAAC;AAEF,eAAO,MAAM,gBAAgB,kIAQ1B,qBAAqB,4CA6EvB,CAAC"}
1
+ {"version":3,"file":"NonPriorityMenus.d.ts","sourceRoot":"","sources":["../../../../../../src/components/DevCenter/DevCenterAppContainer/components/NonPriorityMenus/NonPriorityMenus.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAoB,MAAM,OAAO,CAAC;AAQpD,KAAK,qBAAqB,GAAG;IAC3B,uBAAuB,EAAE,MAAM,IAAI,CAAC;IACpC,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACzC,eAAe,EAAE;QAAE,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,CAAA;KAAE,CAAC;IACxD,SAAS,EAAE;QACT,IAAI,CAAC,EAAE,SAAS,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;QACrB,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;KACtB,EAAE,CAAC;IACJ,wBAAwB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpE,CAAC;AAEF,eAAO,MAAM,gBAAgB,kIAQ1B,qBAAqB,4CA6EvB,CAAC"}