@corva/ui 3.78.0-rc.0 → 3.79.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.
- package/cjs-bundle/components/AddComment/Popover.js +1 -1
- package/cjs-bundle/components/AddComment/Popover.js.map +1 -1
- package/cjs-bundle/components/AddComment/components/Content.js +1 -1
- package/cjs-bundle/components/AddComment/components/Content.js.map +1 -1
- package/cjs-bundle/components/BICOffsetPickerDialog/index.js +1 -1
- package/cjs-bundle/components/BICOffsetPickerDialog/index.js.map +1 -1
- package/cjs-bundle/components/Casing/CasingTableV2/components/CasingJoints/Editor.js +1 -1
- package/cjs-bundle/components/Casing/CasingTableV2/components/CasingJoints/Editor.js.map +1 -1
- package/cjs-bundle/components/Casing/CasingTableV2/components/Component.js +1 -1
- package/cjs-bundle/components/Casing/CasingTableV2/components/Component.js.map +1 -1
- package/cjs-bundle/components/Casing/CasingTableV2/components/DrillPipe/Editor.js +1 -1
- package/cjs-bundle/components/Casing/CasingTableV2/components/DrillPipe/Editor.js.map +1 -1
- package/cjs-bundle/components/CollapsableSidebar.js +1 -1
- package/cjs-bundle/components/CollapsableSidebar.js.map +1 -1
- package/cjs-bundle/components/DevCenter/AppsDataProvider/AppsDataProvider.js +1 -1
- package/cjs-bundle/components/DevCenter/AppsDataProvider/AppsDataProvider.js.map +1 -1
- package/cjs-bundle/components/DevCenter/AppsDataProvider/effects/constants.js.map +1 -1
- package/cjs-bundle/components/DevCenter/AppsDataProvider/effects/dataResolvers.js +1 -1
- package/cjs-bundle/components/DevCenter/AppsDataProvider/effects/dataResolvers.js.map +1 -1
- package/cjs-bundle/components/DevCenter/AppsDataProvider/effects/useAppsData.js +1 -1
- package/cjs-bundle/components/DevCenter/AppsDataProvider/effects/useAppsData.js.map +1 -1
- package/cjs-bundle/components/DevCenter/AppsDataProvider/effects/utils.js +1 -1
- package/cjs-bundle/components/DevCenter/AppsDataProvider/effects/utils.js.map +1 -1
- package/cjs-bundle/components/DevCenter/DevCenterAppContainer/DevCenterAppContainer.js +1 -1
- package/cjs-bundle/components/DevCenter/DevCenterAppContainer/DevCenterAppContainer.js.map +1 -1
- package/cjs-bundle/components/DevCenter/DevCenterAppContainer/components/AppSettingsDialog/AppSettingsDialog.js +1 -1
- package/cjs-bundle/components/DevCenter/DevCenterAppContainer/components/AppSettingsDialog/AppSettingsDialog.js.map +1 -1
- package/cjs-bundle/components/DevCenter/DevCenterAppContainer/components/DevCenterAppDialogs.js.map +1 -1
- package/cjs-bundle/components/DevCenter/DevCenterAppContainer/components/DevCenterAppView/DevCenterAppView.js.map +1 -1
- package/cjs-bundle/components/DevCenter/DevCenterAppContainer/constants.js +1 -1
- package/cjs-bundle/components/DevCenter/DevCenterAppContainer/constants.js.map +1 -1
- package/cjs-bundle/components/DevCenter/DevCenterAppContainer/effects/useAnnotationsData.js +1 -1
- package/cjs-bundle/components/DevCenter/DevCenterAppContainer/effects/useAnnotationsData.js.map +1 -1
- package/cjs-bundle/components/DevCenter/DevCenterAppContainer/effects/useDevCenterAppProps.js.map +1 -1
- package/cjs-bundle/components/DevCenter/DevCenterAppContainer/getAppDataEntryFromContext.js +2 -0
- package/cjs-bundle/components/DevCenter/DevCenterAppContainer/getAppDataEntryFromContext.js.map +1 -0
- package/cjs-bundle/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedApp.js +1 -1
- package/cjs-bundle/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedApp.js.map +1 -1
- package/cjs-bundle/components/DocumentViewer/DocumentViewer.js +1 -1
- package/cjs-bundle/components/DocumentViewer/DocumentViewer.js.map +1 -1
- package/cjs-bundle/components/Drillstring/BHAComponentsTable/components/Agitator/Editor.js +1 -1
- package/cjs-bundle/components/Drillstring/BHAComponentsTable/components/Agitator/Editor.js.map +1 -1
- package/cjs-bundle/components/Drillstring/BHAComponentsTable/components/Bit/Editor.js +1 -1
- package/cjs-bundle/components/Drillstring/BHAComponentsTable/components/Bit/Editor.js.map +1 -1
- package/cjs-bundle/components/Drillstring/BHAComponentsTable/components/Component.js +1 -1
- package/cjs-bundle/components/Drillstring/BHAComponentsTable/components/Component.js.map +1 -1
- package/cjs-bundle/components/Drillstring/BHAComponentsTable/components/DrillCollar/Editor.js +1 -1
- package/cjs-bundle/components/Drillstring/BHAComponentsTable/components/DrillCollar/Editor.js.map +1 -1
- package/cjs-bundle/components/Drillstring/BHAComponentsTable/components/DrillPipe/Editor.js +1 -1
- package/cjs-bundle/components/Drillstring/BHAComponentsTable/components/DrillPipe/Editor.js.map +1 -1
- package/cjs-bundle/components/Drillstring/BHAComponentsTable/components/Jar/Editor.js +1 -1
- package/cjs-bundle/components/Drillstring/BHAComponentsTable/components/Jar/Editor.js.map +1 -1
- package/cjs-bundle/components/Drillstring/BHAComponentsTable/components/Lwd/Editor.js +1 -1
- package/cjs-bundle/components/Drillstring/BHAComponentsTable/components/Lwd/Editor.js.map +1 -1
- package/cjs-bundle/components/Drillstring/BHAComponentsTable/components/Mwd/Editor.js +1 -1
- package/cjs-bundle/components/Drillstring/BHAComponentsTable/components/Mwd/Editor.js.map +1 -1
- package/cjs-bundle/components/Drillstring/BHAComponentsTable/components/Pdm/Editor.js +1 -1
- package/cjs-bundle/components/Drillstring/BHAComponentsTable/components/Pdm/Editor.js.map +1 -1
- package/cjs-bundle/components/Drillstring/BHAComponentsTable/components/Rss/Editor.js +1 -1
- package/cjs-bundle/components/Drillstring/BHAComponentsTable/components/Rss/Editor.js.map +1 -1
- package/cjs-bundle/components/Drillstring/BHAComponentsTable/components/Stabilizer/Editor.js +1 -1
- package/cjs-bundle/components/Drillstring/BHAComponentsTable/components/Stabilizer/Editor.js.map +1 -1
- package/cjs-bundle/components/Drillstring/BHAComponentsTable/components/Sub/Editor.js +1 -1
- package/cjs-bundle/components/Drillstring/BHAComponentsTable/components/Sub/Editor.js.map +1 -1
- package/cjs-bundle/components/Drillstring/BHAComponentsTable/components/Ur/Editor.js +1 -1
- package/cjs-bundle/components/Drillstring/BHAComponentsTable/components/Ur/Editor.js.map +1 -1
- package/cjs-bundle/components/Drillstring/BHAComponentsTable/components/shared/ConfirmationPopup.js +1 -1
- package/cjs-bundle/components/Drillstring/BHAComponentsTable/components/shared/ConfirmationPopup.js.map +1 -1
- package/cjs-bundle/components/FeedItem/FeedItem.js +1 -1
- package/cjs-bundle/components/FeedItem/FeedItem.js.map +1 -1
- package/cjs-bundle/components/OffsetWellPickerV2/components/Filter/ToggleMapButton.js +1 -1
- package/cjs-bundle/components/OffsetWellPickerV2/components/Filter/ToggleMapButton.js.map +1 -1
- package/cjs-bundle/components/OffsetWellPickerV2/components/Table/MetricsAddMenu.js +1 -1
- package/cjs-bundle/components/OffsetWellPickerV2/components/Table/MetricsAddMenu.js.map +1 -1
- package/cjs-bundle/components/OffsetWellPickerV3/components/CustomSelectionView/components/Table/MetricsAddMenu.js +1 -1
- package/cjs-bundle/components/OffsetWellPickerV3/components/CustomSelectionView/components/Table/MetricsAddMenu.js.map +1 -1
- package/cjs-bundle/components/OffsetWellPickerV3/components/CustomSelectionView/index.js +1 -1
- package/cjs-bundle/components/OffsetWellPickerV3/components/CustomSelectionView/index.js.map +1 -1
- package/cjs-bundle/components/OffsetWellPickerV3/components/OffsetWellSelectionView/index.js +1 -1
- package/cjs-bundle/components/OffsetWellPickerV3/components/OffsetWellSelectionView/index.js.map +1 -1
- package/cjs-bundle/components/OffsetWellPickerV3/components/TabSelection/ToggleMapButton.js +1 -1
- package/cjs-bundle/components/OffsetWellPickerV3/components/TabSelection/ToggleMapButton.js.map +1 -1
- package/cjs-bundle/components/OffsetWellPickerV3/components/TabSelection/index.js +1 -1
- package/cjs-bundle/components/OffsetWellPickerV3/components/TabSelection/index.js.map +1 -1
- package/cjs-bundle/components/OffsetWellPickerV3/components/WellHubView/index.js +1 -1
- package/cjs-bundle/components/OffsetWellPickerV3/components/WellHubView/index.js.map +1 -1
- package/cjs-bundle/components/OffsetWellPickerV3/components/shared/OffsetWellTableHead.js +1 -1
- package/cjs-bundle/components/OffsetWellPickerV3/components/shared/OffsetWellTableHead.js.map +1 -1
- package/cjs-bundle/components/OffsetWellPickerV5/components/Filter/components/CustomDateFields/CustomDateFields.js +1 -1
- package/cjs-bundle/components/OffsetWellPickerV5/components/Filter/components/CustomDateFields/CustomDateFields.js.map +1 -1
- package/cjs-bundle/components/OffsetWellPickerV5/components/OffsetWellPickerContent/OffsetWellPickerContent.js +1 -1
- package/cjs-bundle/components/OffsetWellPickerV5/components/OffsetWellPickerContent/OffsetWellPickerContent.js.map +1 -1
- package/cjs-bundle/components/PadOffsetsPicker/StagesSelector.js +1 -1
- package/cjs-bundle/components/PadOffsetsPicker/StagesSelector.js.map +1 -1
- package/cjs-bundle/components/PadOffsetsPickerV2/PadOffsetsPickerV2.js +1 -1
- package/cjs-bundle/components/PadOffsetsPickerV2/PadOffsetsPickerV2.js.map +1 -1
- package/components/AddComment/Popover.js +1 -1
- package/components/AddComment/Popover.js.map +1 -1
- package/components/AddComment/components/Content.js +1 -1
- package/components/AddComment/components/Content.js.map +1 -1
- package/components/BICOffsetPickerDialog/index.js +1 -1
- package/components/BICOffsetPickerDialog/index.js.map +1 -1
- package/components/Casing/CasingTableV2/components/CasingJoints/Editor.js +1 -1
- package/components/Casing/CasingTableV2/components/CasingJoints/Editor.js.map +1 -1
- package/components/Casing/CasingTableV2/components/Component.js +1 -1
- package/components/Casing/CasingTableV2/components/Component.js.map +1 -1
- package/components/Casing/CasingTableV2/components/DrillPipe/Editor.js +1 -1
- package/components/Casing/CasingTableV2/components/DrillPipe/Editor.js.map +1 -1
- package/components/CollapsableSidebar.js +1 -1
- package/components/CollapsableSidebar.js.map +1 -1
- package/components/DevCenter/AppsDataProvider/AppsDataProvider.d.ts +3 -21
- package/components/DevCenter/AppsDataProvider/AppsDataProvider.d.ts.map +1 -1
- package/components/DevCenter/AppsDataProvider/AppsDataProvider.js +1 -1
- package/components/DevCenter/AppsDataProvider/AppsDataProvider.js.map +1 -1
- package/components/DevCenter/AppsDataProvider/effects/__tests__/mocks/assetDashboard/wellAssetDashboard/appWithDefaultSettings.d.ts +22 -2
- package/components/DevCenter/AppsDataProvider/effects/__tests__/mocks/assetDashboard/wellAssetDashboard/appWithDefaultSettings.d.ts.map +1 -1
- package/components/DevCenter/AppsDataProvider/effects/__tests__/mocks/generalDashboard/completion/appWithFracFleetId.d.ts +23 -2
- package/components/DevCenter/AppsDataProvider/effects/__tests__/mocks/generalDashboard/completion/appWithFracFleetId.d.ts.map +1 -1
- package/components/DevCenter/AppsDataProvider/effects/__tests__/mocks/generalDashboard/completion/appWithPadId.d.ts +20 -2
- package/components/DevCenter/AppsDataProvider/effects/__tests__/mocks/generalDashboard/completion/appWithPadId.d.ts.map +1 -1
- package/components/DevCenter/AppsDataProvider/effects/__tests__/mocks/generalDashboard/drilling/appWithActiveWellId.d.ts +27 -2
- package/components/DevCenter/AppsDataProvider/effects/__tests__/mocks/generalDashboard/drilling/appWithActiveWellId.d.ts.map +1 -1
- package/components/DevCenter/AppsDataProvider/effects/__tests__/mocks/generalDashboard/drilling/appWithRigId.d.ts +49 -3
- package/components/DevCenter/AppsDataProvider/effects/__tests__/mocks/generalDashboard/drilling/appWithRigId.d.ts.map +1 -1
- package/components/DevCenter/AppsDataProvider/effects/__tests__/utils.test.d.ts +2 -0
- package/components/DevCenter/AppsDataProvider/effects/__tests__/utils.test.d.ts.map +1 -0
- package/components/DevCenter/AppsDataProvider/effects/constants.d.ts +2 -7
- package/components/DevCenter/AppsDataProvider/effects/constants.d.ts.map +1 -1
- package/components/DevCenter/AppsDataProvider/effects/constants.js.map +1 -1
- package/components/DevCenter/AppsDataProvider/effects/dataResolvers.d.ts +14 -10
- package/components/DevCenter/AppsDataProvider/effects/dataResolvers.d.ts.map +1 -1
- package/components/DevCenter/AppsDataProvider/effects/dataResolvers.js +1 -1
- package/components/DevCenter/AppsDataProvider/effects/dataResolvers.js.map +1 -1
- package/components/DevCenter/AppsDataProvider/effects/index.d.ts.map +1 -1
- package/components/DevCenter/AppsDataProvider/effects/useAppsData.d.ts +5 -5
- package/components/DevCenter/AppsDataProvider/effects/useAppsData.d.ts.map +1 -1
- package/components/DevCenter/AppsDataProvider/effects/useAppsData.js +1 -1
- package/components/DevCenter/AppsDataProvider/effects/useAppsData.js.map +1 -1
- package/components/DevCenter/AppsDataProvider/effects/utils.d.ts +33 -54
- package/components/DevCenter/AppsDataProvider/effects/utils.d.ts.map +1 -1
- package/components/DevCenter/AppsDataProvider/effects/utils.js +1 -1
- package/components/DevCenter/AppsDataProvider/effects/utils.js.map +1 -1
- package/components/DevCenter/AppsDataProvider/index.d.ts +1 -0
- package/components/DevCenter/AppsDataProvider/index.d.ts.map +1 -1
- package/components/DevCenter/AppsDataProvider/types.d.ts +216 -0
- package/components/DevCenter/AppsDataProvider/types.d.ts.map +1 -0
- package/components/DevCenter/DevCenterAppContainer/DevCenterAppContainer.d.ts.map +1 -1
- package/components/DevCenter/DevCenterAppContainer/DevCenterAppContainer.js +1 -1
- package/components/DevCenter/DevCenterAppContainer/DevCenterAppContainer.js.map +1 -1
- package/components/DevCenter/DevCenterAppContainer/__tests__/getAppDataEntryFromContext.test.d.ts +2 -0
- package/components/DevCenter/DevCenterAppContainer/__tests__/getAppDataEntryFromContext.test.d.ts.map +1 -0
- package/components/DevCenter/DevCenterAppContainer/components/AppSettingsDialog/AppSettingsDialog.d.ts.map +1 -1
- package/components/DevCenter/DevCenterAppContainer/components/AppSettingsDialog/AppSettingsDialog.js +1 -1
- package/components/DevCenter/DevCenterAppContainer/components/AppSettingsDialog/AppSettingsDialog.js.map +1 -1
- package/components/DevCenter/DevCenterAppContainer/components/DevCenterAppDialogs.d.ts +1 -1
- package/components/DevCenter/DevCenterAppContainer/components/DevCenterAppDialogs.d.ts.map +1 -1
- package/components/DevCenter/DevCenterAppContainer/components/DevCenterAppDialogs.js.map +1 -1
- package/components/DevCenter/DevCenterAppContainer/components/DevCenterAppView/DevCenterAppView.d.ts +5 -3
- package/components/DevCenter/DevCenterAppContainer/components/DevCenterAppView/DevCenterAppView.d.ts.map +1 -1
- package/components/DevCenter/DevCenterAppContainer/components/DevCenterAppView/DevCenterAppView.js.map +1 -1
- package/components/DevCenter/DevCenterAppContainer/constants.d.ts +0 -2
- package/components/DevCenter/DevCenterAppContainer/constants.d.ts.map +1 -1
- package/components/DevCenter/DevCenterAppContainer/constants.js +1 -1
- package/components/DevCenter/DevCenterAppContainer/constants.js.map +1 -1
- package/components/DevCenter/DevCenterAppContainer/effects/useAnnotationsData.d.ts +1 -1
- package/components/DevCenter/DevCenterAppContainer/effects/useAnnotationsData.d.ts.map +1 -1
- package/components/DevCenter/DevCenterAppContainer/effects/useAnnotationsData.js +1 -1
- package/components/DevCenter/DevCenterAppContainer/effects/useAnnotationsData.js.map +1 -1
- package/components/DevCenter/DevCenterAppContainer/effects/useDevCenterAppProps.d.ts +7 -1
- package/components/DevCenter/DevCenterAppContainer/effects/useDevCenterAppProps.d.ts.map +1 -1
- package/components/DevCenter/DevCenterAppContainer/effects/useDevCenterAppProps.js.map +1 -1
- package/components/DevCenter/DevCenterAppContainer/getAppDataEntryFromContext.d.ts +12 -0
- package/components/DevCenter/DevCenterAppContainer/getAppDataEntryFromContext.d.ts.map +1 -0
- package/components/DevCenter/DevCenterAppContainer/getAppDataEntryFromContext.js +2 -0
- package/components/DevCenter/DevCenterAppContainer/getAppDataEntryFromContext.js.map +1 -0
- package/components/DevCenter/DevCenterAppContainer/types.d.ts +1 -6
- package/components/DevCenter/DevCenterAppContainer/types.d.ts.map +1 -1
- package/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedApp.js +1 -1
- package/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedApp.js.map +1 -1
- package/components/DocumentViewer/DocumentViewer.js +1 -1
- package/components/DocumentViewer/DocumentViewer.js.map +1 -1
- package/components/Drillstring/BHAComponentsTable/components/Agitator/Editor.js +1 -1
- package/components/Drillstring/BHAComponentsTable/components/Agitator/Editor.js.map +1 -1
- package/components/Drillstring/BHAComponentsTable/components/Bit/Editor.js +1 -1
- package/components/Drillstring/BHAComponentsTable/components/Bit/Editor.js.map +1 -1
- package/components/Drillstring/BHAComponentsTable/components/Component.js +1 -1
- package/components/Drillstring/BHAComponentsTable/components/Component.js.map +1 -1
- package/components/Drillstring/BHAComponentsTable/components/DrillCollar/Editor.js +1 -1
- package/components/Drillstring/BHAComponentsTable/components/DrillCollar/Editor.js.map +1 -1
- package/components/Drillstring/BHAComponentsTable/components/DrillPipe/Editor.js +1 -1
- package/components/Drillstring/BHAComponentsTable/components/DrillPipe/Editor.js.map +1 -1
- package/components/Drillstring/BHAComponentsTable/components/Jar/Editor.js +1 -1
- package/components/Drillstring/BHAComponentsTable/components/Jar/Editor.js.map +1 -1
- package/components/Drillstring/BHAComponentsTable/components/Lwd/Editor.js +1 -1
- package/components/Drillstring/BHAComponentsTable/components/Lwd/Editor.js.map +1 -1
- package/components/Drillstring/BHAComponentsTable/components/Mwd/Editor.js +1 -1
- package/components/Drillstring/BHAComponentsTable/components/Mwd/Editor.js.map +1 -1
- package/components/Drillstring/BHAComponentsTable/components/Pdm/Editor.js +1 -1
- package/components/Drillstring/BHAComponentsTable/components/Pdm/Editor.js.map +1 -1
- package/components/Drillstring/BHAComponentsTable/components/Rss/Editor.js +1 -1
- package/components/Drillstring/BHAComponentsTable/components/Rss/Editor.js.map +1 -1
- package/components/Drillstring/BHAComponentsTable/components/Stabilizer/Editor.js +1 -1
- package/components/Drillstring/BHAComponentsTable/components/Stabilizer/Editor.js.map +1 -1
- package/components/Drillstring/BHAComponentsTable/components/Sub/Editor.js +1 -1
- package/components/Drillstring/BHAComponentsTable/components/Sub/Editor.js.map +1 -1
- package/components/Drillstring/BHAComponentsTable/components/Ur/Editor.js +1 -1
- package/components/Drillstring/BHAComponentsTable/components/Ur/Editor.js.map +1 -1
- package/components/Drillstring/BHAComponentsTable/components/shared/ConfirmationPopup.js +1 -1
- package/components/Drillstring/BHAComponentsTable/components/shared/ConfirmationPopup.js.map +1 -1
- package/components/FeedItem/FeedItem.js +1 -1
- package/components/FeedItem/FeedItem.js.map +1 -1
- package/components/OffsetWellPickerV2/components/Filter/ToggleMapButton.js +1 -1
- package/components/OffsetWellPickerV2/components/Filter/ToggleMapButton.js.map +1 -1
- package/components/OffsetWellPickerV2/components/Table/MetricsAddMenu.js +1 -1
- package/components/OffsetWellPickerV2/components/Table/MetricsAddMenu.js.map +1 -1
- package/components/OffsetWellPickerV3/components/CustomSelectionView/components/Table/MetricsAddMenu.js +1 -1
- package/components/OffsetWellPickerV3/components/CustomSelectionView/components/Table/MetricsAddMenu.js.map +1 -1
- package/components/OffsetWellPickerV3/components/CustomSelectionView/index.js +1 -1
- package/components/OffsetWellPickerV3/components/CustomSelectionView/index.js.map +1 -1
- package/components/OffsetWellPickerV3/components/OffsetWellSelectionView/index.js +1 -1
- package/components/OffsetWellPickerV3/components/OffsetWellSelectionView/index.js.map +1 -1
- package/components/OffsetWellPickerV3/components/TabSelection/ToggleMapButton.js +1 -1
- package/components/OffsetWellPickerV3/components/TabSelection/ToggleMapButton.js.map +1 -1
- package/components/OffsetWellPickerV3/components/TabSelection/index.js +1 -1
- package/components/OffsetWellPickerV3/components/TabSelection/index.js.map +1 -1
- package/components/OffsetWellPickerV3/components/WellHubView/index.js +1 -1
- package/components/OffsetWellPickerV3/components/WellHubView/index.js.map +1 -1
- package/components/OffsetWellPickerV3/components/shared/OffsetWellTableHead.js +1 -1
- package/components/OffsetWellPickerV3/components/shared/OffsetWellTableHead.js.map +1 -1
- package/components/OffsetWellPickerV5/components/Filter/components/CustomDateFields/CustomDateFields.js +1 -1
- package/components/OffsetWellPickerV5/components/Filter/components/CustomDateFields/CustomDateFields.js.map +1 -1
- package/components/OffsetWellPickerV5/components/OffsetWellPickerContent/OffsetWellPickerContent.js +1 -1
- package/components/OffsetWellPickerV5/components/OffsetWellPickerContent/OffsetWellPickerContent.js.map +1 -1
- package/components/PadOffsetsPicker/StagesSelector.js +1 -1
- package/components/PadOffsetsPicker/StagesSelector.js.map +1 -1
- package/components/PadOffsetsPickerV2/PadOffsetsPickerV2.js +1 -1
- package/components/PadOffsetsPickerV2/PadOffsetsPickerV2.js.map +1 -1
- package/mcp-server/server.mjs +6 -6
- package/package.json +1 -1
- package/tsconfig.tsbuildinfo +1 -1
package/components/DevCenter/DevCenterAppContainer/components/DevCenterAppView/DevCenterAppView.d.ts
CHANGED
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
import type { ComponentType, FC } from 'react';
|
|
2
|
-
import type {
|
|
2
|
+
import type { AppDataAssets, AppDataEntry } from '../../../AppsDataProvider/types';
|
|
3
|
+
import type { DevCenterAppResource, LayoutEnvironment } from '../../types';
|
|
3
4
|
import type { AppAvailabilityFlags } from '../../utils';
|
|
4
|
-
export declare const getNoActiveWellMessage: (rigName
|
|
5
|
+
export declare const getNoActiveWellMessage: (rigName?: string | null) => string;
|
|
5
6
|
export declare const EMPTY_STATE_TEST_ID = "DevCenterAppView_EmptyState";
|
|
6
7
|
export declare const LOADER_TEST_ID = "DevCenterAppView_Loader";
|
|
8
|
+
type AppViewData = AppDataAssets & Pick<AppDataEntry, 'settings'>;
|
|
7
9
|
type Props = {
|
|
8
10
|
/** A third-party app bundle. Its props are assembled dynamically by the host. */
|
|
9
11
|
AppComponent: ComponentType<any> | null;
|
|
10
12
|
app: DevCenterAppResource;
|
|
11
|
-
appData:
|
|
13
|
+
appData: AppViewData;
|
|
12
14
|
appProps: Record<string, unknown>;
|
|
13
15
|
availability?: AppAvailabilityFlags;
|
|
14
16
|
isCLIApp: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DevCenterAppView.d.ts","sourceRoot":"","sources":["../../../../../../src/components/DevCenter/DevCenterAppContainer/components/DevCenterAppView/DevCenterAppView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAE/C,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"DevCenterAppView.d.ts","sourceRoot":"","sources":["../../../../../../src/components/DevCenter/DevCenterAppContainer/components/DevCenterAppView/DevCenterAppView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAE/C,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,KAAK,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAcxD,eAAO,MAAM,sBAAsB,aAAc,MAAM,GAAG,IAAI,KAAG,MAChC,CAAC;AAOlC,eAAO,MAAM,mBAAmB,gCAAgC,CAAC;AACjE,eAAO,MAAM,cAAc,4BAA4B,CAAC;AAExD,KAAK,WAAW,GAAG,aAAa,GAAG,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AAElE,KAAK,KAAK,GAAG;IACX,iFAAiF;IAEjF,YAAY,EAAE,aAAa,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IACxC,GAAG,EAAE,oBAAoB,CAAC;IAC1B,OAAO,EAAE,WAAW,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,iBAAiB,EAAE,iBAAiB,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,CAAC;AAEF,QAAA,MAAM,gBAAgB,EAAE,EAAE,CAAC,KAAK,CAiK/B,CAAC;eAEa,gBAAgB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DevCenterAppView.js","sources":["../../../../../../src/components/DevCenter/DevCenterAppContainer/components/DevCenterAppView/DevCenterAppView.tsx"],"sourcesContent":["import type { ComponentType, FC } from 'react';\n\nimport type { AppDataEntry, DevCenterAppResource, LayoutEnvironment } from '../../types';\nimport type { AppAvailabilityFlags } from '../../utils';\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\nconst DEFAULT_AVAILABILITY: AppAvailabilityFlags = {\n hasProductSubscription: true,\n isAppSubscribedForAsset: true,\n};\n\nexport const EMPTY_STATE_TEST_ID = 'DevCenterAppView_EmptyState';\nexport const LOADER_TEST_ID = 'DevCenterAppView_Loader';\n\ntype Props = {\n /** A third-party app bundle. Its props are assembled dynamically by the host. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- see the note above\n AppComponent: ComponentType<any> | null;\n app: DevCenterAppResource;\n appData: AppDataEntry;\n appProps: Record<string, unknown>;\n availability?: AppAvailabilityFlags;\n isCLIApp: boolean;\n isLoading: boolean;\n isMultiRig: boolean;\n layoutEnvironment: LayoutEnvironment | null;\n openIntercom: () => void;\n segment: string;\n toggleAppSettingsDialog: () => void;\n onError?: (error: Error) => void;\n};\n\nconst DevCenterAppView: FC<Props> = ({\n AppComponent,\n app,\n appData,\n appProps,\n availability = DEFAULT_AVAILABILITY,\n isCLIApp,\n isLoading,\n isMultiRig,\n layoutEnvironment,\n openIntercom,\n segment,\n toggleAppSettingsDialog,\n onError,\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={EMPTY_STATE_TEST_ID}\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={LOADER_TEST_ID} />\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={EMPTY_STATE_TEST_ID}\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={EMPTY_STATE_TEST_ID}\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={EMPTY_STATE_TEST_ID}\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={EMPTY_STATE_TEST_ID}\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={EMPTY_STATE_TEST_ID}\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?.length) {\n return (\n <AppMessageWrapper logo={app.headerLogo}>\n <EmptyState\n testId={EMPTY_STATE_TEST_ID}\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={EMPTY_STATE_TEST_ID}\n image=\"assetHasNoData\"\n subTitle={actions}\n title=\"Asset unavailable\"\n />\n </AppMessageWrapper>\n );\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\nexport default DevCenterAppView;\n"],"names":["getNoActiveWellMessage","rigName","concat","DEFAULT_AVAILABILITY","hasProductSubscription","isAppSubscribedForAsset","EMPTY_STATE_TEST_ID","LOADER_TEST_ID","DevCenterAppView","_ref","_appCommons$appSettin","AppComponent","app","appData","appProps","_ref$availability","availability","isCLIApp","isLoading","isMultiRig","layoutEnvironment","openIntercom","segment","toggleAppSettingsDialog","onError","appCommons","useAppCommonsInternal","effectiveSettings","appSettings","settings","package","_jsx","AppMessageWrapper","logo","headerLogo","children","EmptyState","testId","title","subTitle","image","showHeader","LoaderLogo","className","styles","loader","_ref2","subtitle","_app$settings","_appData$wells","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 type { ComponentType, FC } from 'react';\n\nimport type { AppDataAssets, AppDataEntry } from '../../../AppsDataProvider/types';\nimport type { DevCenterAppResource, LayoutEnvironment } from '../../types';\nimport type { AppAvailabilityFlags } from '../../utils';\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 | null): string =>\n `${rigName} has no active well`;\n\nconst DEFAULT_AVAILABILITY: AppAvailabilityFlags = {\n hasProductSubscription: true,\n isAppSubscribedForAsset: true,\n};\n\nexport const EMPTY_STATE_TEST_ID = 'DevCenterAppView_EmptyState';\nexport const LOADER_TEST_ID = 'DevCenterAppView_Loader';\n\ntype AppViewData = AppDataAssets & Pick<AppDataEntry, 'settings'>;\n\ntype Props = {\n /** A third-party app bundle. Its props are assembled dynamically by the host. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- see the note above\n AppComponent: ComponentType<any> | null;\n app: DevCenterAppResource;\n appData: AppViewData;\n appProps: Record<string, unknown>;\n availability?: AppAvailabilityFlags;\n isCLIApp: boolean;\n isLoading: boolean;\n isMultiRig: boolean;\n layoutEnvironment: LayoutEnvironment | null;\n openIntercom: () => void;\n segment: string;\n toggleAppSettingsDialog: () => void;\n onError?: (error: Error) => void;\n};\n\nconst DevCenterAppView: FC<Props> = ({\n AppComponent,\n app,\n appData,\n appProps,\n availability = DEFAULT_AVAILABILITY,\n isCLIApp,\n isLoading,\n isMultiRig,\n layoutEnvironment,\n openIntercom,\n segment,\n toggleAppSettingsDialog,\n onError,\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={EMPTY_STATE_TEST_ID}\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={LOADER_TEST_ID} />\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={EMPTY_STATE_TEST_ID}\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={EMPTY_STATE_TEST_ID}\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={EMPTY_STATE_TEST_ID}\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={EMPTY_STATE_TEST_ID}\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={EMPTY_STATE_TEST_ID}\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?.length) {\n return (\n <AppMessageWrapper logo={app.headerLogo}>\n <EmptyState\n testId={EMPTY_STATE_TEST_ID}\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={EMPTY_STATE_TEST_ID}\n image=\"assetHasNoData\"\n subTitle={actions}\n title=\"Asset unavailable\"\n />\n </AppMessageWrapper>\n );\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\nexport default DevCenterAppView;\n"],"names":["getNoActiveWellMessage","rigName","concat","DEFAULT_AVAILABILITY","hasProductSubscription","isAppSubscribedForAsset","EMPTY_STATE_TEST_ID","LOADER_TEST_ID","DevCenterAppView","_ref","_appCommons$appSettin","AppComponent","app","appData","appProps","_ref$availability","availability","isCLIApp","isLoading","isMultiRig","layoutEnvironment","openIntercom","segment","toggleAppSettingsDialog","onError","appCommons","useAppCommonsInternal","effectiveSettings","appSettings","settings","package","_jsx","AppMessageWrapper","logo","headerLogo","children","EmptyState","testId","title","subTitle","image","showHeader","LoaderLogo","className","styles","loader","_ref2","subtitle","_app$settings","_appData$wells","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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"}
|
|
@@ -3,8 +3,6 @@ export declare const PAGE_NAME = "DevCenter_AppContainer";
|
|
|
3
3
|
/** A CLI app on a phone takes the whole 12-column dashboard grid. */
|
|
4
4
|
export declare const MOBILE_CLI_APP_GRID_WIDTH = 12;
|
|
5
5
|
export declare const HOME_PATH_PREFIX = "/home";
|
|
6
|
-
/** The asset records the container forwards from the app-data context to the app bundle. */
|
|
7
|
-
export declare const APP_DATA_ASSET_KEYS: string[];
|
|
8
6
|
export declare const TOOLTIP_TITLES: {
|
|
9
7
|
addAnnotation: string;
|
|
10
8
|
reportBug: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/components/DevCenter/DevCenterAppContainer/constants.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,eAAO,MAAM,SAAS,2BAA2B,CAAC;AAElD,qEAAqE;AACrE,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAE5C,eAAO,MAAM,gBAAgB,UAAU,CAAC;AAExC,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../src/components/DevCenter/DevCenterAppContainer/constants.ts"],"names":[],"mappings":"AAAA,oFAAoF;AACpF,eAAO,MAAM,SAAS,2BAA2B,CAAC;AAElD,qEAAqE;AACrE,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAE5C,eAAO,MAAM,gBAAgB,UAAU,CAAC;AAExC,eAAO,MAAM,cAAc;IACzB,aAAa;IACb,SAAS;IACT,UAAU;CACX,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e="DevCenter_AppContainer",n=12,t="/home",
|
|
1
|
+
var e="DevCenter_AppContainer",n=12,t="/home",o={addAnnotation:"Add Annotation",reportBug:"Report A Bug",helpCenter:"Help Center"};export{t as HOME_PATH_PREFIX,n as MOBILE_CLI_APP_GRID_WIDTH,e as PAGE_NAME,o as TOOLTIP_TITLES};
|
|
2
2
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sources":["../../../../src/components/DevCenter/DevCenterAppContainer/constants.ts"],"sourcesContent":["/** Test-id prefix and analytics page name for everything this container renders. */\nexport const PAGE_NAME = 'DevCenter_AppContainer';\n\n/** A CLI app on a phone takes the whole 12-column dashboard grid. */\nexport const MOBILE_CLI_APP_GRID_WIDTH = 12;\n\nexport const HOME_PATH_PREFIX = '/home';\n\
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../../../../src/components/DevCenter/DevCenterAppContainer/constants.ts"],"sourcesContent":["/** Test-id prefix and analytics page name for everything this container renders. */\nexport const PAGE_NAME = 'DevCenter_AppContainer';\n\n/** A CLI app on a phone takes the whole 12-column dashboard grid. */\nexport const MOBILE_CLI_APP_GRID_WIDTH = 12;\n\nexport const HOME_PATH_PREFIX = '/home';\n\nexport const TOOLTIP_TITLES = {\n addAnnotation: 'Add Annotation',\n reportBug: 'Report A Bug',\n helpCenter: 'Help Center',\n};\n"],"names":["PAGE_NAME","MOBILE_CLI_APP_GRID_WIDTH","HOME_PATH_PREFIX","TOOLTIP_TITLES","addAnnotation","reportBug","helpCenter"],"mappings":"AACO,IAAMA,EAAY,yBAGZC,EAA4B,GAE5BC,EAAmB,QAEnBC,EAAiB,CAC5BC,cAAe,iBACfC,UAAW,eACXC,WAAY"}
|
|
@@ -6,7 +6,7 @@ type UseAnnotationsDataParams = {
|
|
|
6
6
|
};
|
|
7
7
|
type UseAnnotationsDataReturn = {
|
|
8
8
|
appLastAnnotation: AppLastAnnotation | null;
|
|
9
|
-
assetCompanyId: number |
|
|
9
|
+
assetCompanyId: number | null;
|
|
10
10
|
assetIdForAnnotation: number | undefined;
|
|
11
11
|
isAppSupportsAnnotations: boolean;
|
|
12
12
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAnnotationsData.d.ts","sourceRoot":"","sources":["../../../../../src/components/DevCenter/DevCenterAppContainer/effects/useAnnotationsData.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,0BAA0B,EAC1B,oBAAoB,EACrB,MAAM,UAAU,CAAC;AAKlB,KAAK,wBAAwB,GAAG;IAC9B,GAAG,EAAE,oBAAoB,CAAC;IAC1B,OAAO,EAAE,YAAY,CAAC;IACtB,mCAAmC,CAAC,EAAE,0BAA0B,EAAE,GAAG,IAAI,CAAC;CAC3E,CAAC;
|
|
1
|
+
{"version":3,"file":"useAnnotationsData.d.ts","sourceRoot":"","sources":["../../../../../src/components/DevCenter/DevCenterAppContainer/effects/useAnnotationsData.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,0BAA0B,EAC1B,oBAAoB,EACrB,MAAM,UAAU,CAAC;AAKlB,KAAK,wBAAwB,GAAG;IAC9B,GAAG,EAAE,oBAAoB,CAAC;IAC1B,OAAO,EAAE,YAAY,CAAC;IACtB,mCAAmC,CAAC,EAAE,0BAA0B,EAAE,GAAG,IAAI,CAAC;CAC3E,CAAC;AASF,KAAK,wBAAwB,GAAG;IAC9B,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC5C,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,wBAAwB,EAAE,OAAO,CAAC;CACnC,CAAC;AAEF,QAAA,MAAM,kBAAkB,2DAIrB,wBAAwB,KAAG,wBA+C7B,CAAC;eAEa,kBAAkB"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{useMemo as n}from"react";import{DEV_CENTER_CLI_APP_ID as t}from"../../../../constants/devcenter.js";import"../../../../constants/goals.js";import{SEGMENTS as o}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"../../../../constants/corvaCompanyId.js";import"lodash";import"../../../GradientManager/configuration/constants.js";var a=function(
|
|
1
|
+
import{useMemo as n}from"react";import{DEV_CENTER_CLI_APP_ID as t}from"../../../../constants/devcenter.js";import"../../../../constants/goals.js";import{SEGMENTS as o}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"../../../../constants/corvaCompanyId.js";import"lodash";import"../../../GradientManager/configuration/constants.js";var a=function(n){var t=Number(n);return Number.isSafeInteger(t)&&t>0?t:null},s=function(s){var i,r,p,l,e,d=s.app,u=s.appData,c=s.currentDashboardAppsLastAnnotations,m=null==d||null===(i=d.package)||void 0===i||null===(r=i.manifest)||void 0===r||null===(p=r.application)||void 0===p||null===(l=p.ui)||void 0===l?void 0:l.disable_platform_annotations,v=u.well,f=u.rig,j=(null==v?void 0:v.asset_id)||(null==f?void 0:f.asset_id),g=a(null==v?void 0:v.companyId)||a(null==v?void 0:v.company_id)||a(null==f?void 0:f.company_id),_=!(!d.package||m||d.id===t||!j||!g||(null===(e=d.segment)||void 0===e?void 0:e[0])!==o.DRILLING),I=n((function(){var n;if(!c||!_)return null;var t=c.find((function(n){return n.id===d.id}));return null!=t&&null!==(n=t.last_app_annotation)&&void 0!==n&&n.data?t.last_app_annotation:null}),[d.id,c,_]);return{assetIdForAnnotation:j,assetCompanyId:g,isAppSupportsAnnotations:_,appLastAnnotation:I}};export{s as default};
|
|
2
2
|
//# sourceMappingURL=useAnnotationsData.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAnnotationsData.js","sources":["../../../../../src/components/DevCenter/DevCenterAppContainer/effects/useAnnotationsData.ts"],"sourcesContent":["import { useMemo } from 'react';\n\nimport type {\n AppDataEntry,\n AppLastAnnotation,\n DashboardAppLastAnnotation,\n DevCenterAppResource,\n} from '../types';\n\nimport { DEV_CENTER_CLI_APP_ID } from '~/constants';\nimport { SEGMENTS } from '~/constants/segment';\n\ntype UseAnnotationsDataParams = {\n app: DevCenterAppResource;\n appData: AppDataEntry;\n currentDashboardAppsLastAnnotations?: DashboardAppLastAnnotation[] | null;\n};\n\n
|
|
1
|
+
{"version":3,"file":"useAnnotationsData.js","sources":["../../../../../src/components/DevCenter/DevCenterAppContainer/effects/useAnnotationsData.ts"],"sourcesContent":["import { useMemo } from 'react';\n\nimport type {\n AppDataEntry,\n AppLastAnnotation,\n DashboardAppLastAnnotation,\n DevCenterAppResource,\n} from '../types';\n\nimport { DEV_CENTER_CLI_APP_ID } from '~/constants';\nimport { SEGMENTS } from '~/constants/segment';\n\ntype UseAnnotationsDataParams = {\n app: DevCenterAppResource;\n appData: AppDataEntry;\n currentDashboardAppsLastAnnotations?: DashboardAppLastAnnotation[] | null;\n};\n\n// Annotation components require numeric company IDs; JSON:API relationship IDs are strings.\nconst getAnnotationCompanyId = (value: string | number | null | undefined) => {\n const companyId = Number(value);\n\n return Number.isSafeInteger(companyId) && companyId > 0 ? companyId : null;\n};\n\ntype UseAnnotationsDataReturn = {\n appLastAnnotation: AppLastAnnotation | null;\n assetCompanyId: number | null;\n assetIdForAnnotation: number | undefined;\n isAppSupportsAnnotations: boolean;\n};\n\nconst useAnnotationsData = ({\n app,\n appData,\n currentDashboardAppsLastAnnotations,\n}: UseAnnotationsDataParams): UseAnnotationsDataReturn => {\n const isPlatformAnnotationsDisabled =\n app?.package?.manifest?.application?.ui?.disable_platform_annotations;\n\n const { well, rig } = appData;\n\n // Legacy external producers use company_id. Preserve fallback per field so a well's asset\n // can still use the rig company when the well has no company relationship.\n const assetIdForAnnotation = well?.asset_id || rig?.asset_id;\n const assetCompanyId =\n getAnnotationCompanyId(well?.companyId) ||\n getAnnotationCompanyId(well?.company_id) ||\n getAnnotationCompanyId(rig?.company_id);\n\n // `assetCompanyId` is part of the predicate, not just `assetIdForAnnotation`: `AnnotationsList`\n // declares both `assetId` and `assetCompanyId` as required and sends the company id on every\n // read and write. Gating on the asset id alone let both headers show the annotations action for\n // an asset that carries an `asset_id` but no `company_id`, and clicking it only toggled state\n // while `DevCenterAppDialogs` rendered nothing.\n const isAppSupportsAnnotations =\n !!app.package &&\n !isPlatformAnnotationsDisabled &&\n app.id !== DEV_CENTER_CLI_APP_ID &&\n !!assetIdForAnnotation &&\n !!assetCompanyId &&\n app.segment?.[0] === SEGMENTS.DRILLING;\n\n const appLastAnnotation = useMemo(() => {\n if (!currentDashboardAppsLastAnnotations || !isAppSupportsAnnotations) {\n return null;\n }\n\n const annotation = currentDashboardAppsLastAnnotations.find(item => item.id === app.id);\n if (!annotation?.last_app_annotation?.data) {\n return null;\n }\n\n // Additional check for broken items on api, required api serializer fixing\n return annotation.last_app_annotation;\n }, [app.id, currentDashboardAppsLastAnnotations, isAppSupportsAnnotations]);\n\n return {\n assetIdForAnnotation,\n assetCompanyId,\n isAppSupportsAnnotations,\n appLastAnnotation,\n };\n};\n\nexport default useAnnotationsData;\n"],"names":["getAnnotationCompanyId","value","companyId","Number","isSafeInteger","useAnnotationsData","_ref","_app$package","_app$package$manifest","_app$package$manifest2","_app$package$manifest3","_app$segment","app","appData","currentDashboardAppsLastAnnotations","isPlatformAnnotationsDisabled","package","manifest","application","ui","disable_platform_annotations","well","rig","assetIdForAnnotation","asset_id","assetCompanyId","company_id","isAppSupportsAnnotations","id","DEV_CENTER_CLI_APP_ID","segment","SEGMENTS","DRILLING","appLastAnnotation","useMemo","_annotation$last_app_","annotation","find","item","last_app_annotation","data"],"mappings":"upBAmBA,IAAMA,EAAyB,SAACC,GAC9B,IAAMC,EAAYC,OAAOF,GAEzB,OAAOE,OAAOC,cAAcF,IAAcA,EAAY,EAAIA,EAAY,IACxE,EASMG,EAAqB,SAI+BC,GAAA,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAHxDC,IAAAA,IACAC,IAAAA,QACAC,IAAAA,oCAEMC,EACJH,SAAY,QAAZA,EAAAA,EAAKI,eAAO,IAAAT,GAAU,QAAVC,EAAZD,EAAcU,gBAAQ,IAAAT,GAAa,QAAbC,EAAtBD,EAAwBU,mBAAW,IAAAT,GAAI,QAAJC,EAAnCD,EAAqCU,UAAE,IAAAT,OAAvCE,EAAAF,EAAyCU,6BAEnCC,EAAcR,EAAdQ,KAAMC,EAAQT,EAARS,IAIRC,GAAuBF,aAAAA,EAAAA,EAAMG,YAAYF,aAAAA,EAAAA,EAAKE,UAC9CC,EACJzB,EAAuBqB,aAAAA,EAAAA,EAAMnB,YAC7BF,EAAuBqB,aAAAA,EAAAA,EAAMK,aAC7B1B,EAAuBsB,aAAG,EAAHA,EAAKI,YAOxBC,KACFf,EAAII,SACLD,GACDH,EAAIgB,KAAOC,IACTN,IACAE,IACS,UAAXb,EAAIkB,eAAO,IAAAnB,OAAA,EAAXA,EAAc,MAAOoB,EAASC,UAE1BC,EAAoBC,GAAQ,WAAM,IAAAC,EACtC,IAAKrB,IAAwCa,EAC3C,OAAO,KAGT,IAAMS,EAAatB,EAAoCuB,MAAK,SAAAC,GAAI,OAAIA,EAAKV,KAAOhB,EAAIgB,MACpF,OAAKQ,SAA+B,QAArBD,EAAVC,EAAYG,2BAAmB,IAAAJ,GAA/BA,EAAiCK,KAK/BJ,EAAWG,oBAJT,IAKV,GAAE,CAAC3B,EAAIgB,GAAId,EAAqCa,IAEjD,MAAO,CACLJ,qBAAAA,EACAE,eAAAA,EACAE,yBAAAA,EACAM,kBAAAA,EAEJ"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Dispatch, SetStateAction } from 'react';
|
|
2
|
+
import type { AppDataAssets } from '../../AppsDataProvider/types';
|
|
2
3
|
import type { AppCoordinates, AppLastAnnotation, ChatActions, DevCenterAppResource, DevCenterCurrentUser, DevCenterMenuItem, DevCenterRouter, LayoutEnvironment, RegisterAITools, SetIsFullscreenModalMode, UpdateDashboardAppLastAnnotation } from '../types';
|
|
3
4
|
type UseDevCenterAppPropsParams = {
|
|
4
5
|
app: DevCenterAppResource;
|
|
@@ -9,7 +10,7 @@ type UseDevCenterAppPropsParams = {
|
|
|
9
10
|
coordinates: AppCoordinates | null | undefined;
|
|
10
11
|
currentUser: DevCenterCurrentUser;
|
|
11
12
|
devCenterRouter: DevCenterRouter;
|
|
12
|
-
filteredAppData:
|
|
13
|
+
filteredAppData: AppDataAssets;
|
|
13
14
|
isMaximized: boolean;
|
|
14
15
|
layoutEnvironment: LayoutEnvironment | null | undefined;
|
|
15
16
|
onSettingChange: (key: string, value: unknown) => void;
|
|
@@ -61,6 +62,11 @@ export declare const useDevCenterAppProps: ({ app, appLastAnnotation, appTimesta
|
|
|
61
62
|
onSettingChange: (key: string, value: unknown) => void;
|
|
62
63
|
toggleAnnotationsList: () => void;
|
|
63
64
|
updateCurrentDashboardAppLastAnnotation: UpdateDashboardAppLastAnnotation | undefined;
|
|
65
|
+
fracFleet?: import("../../AppsDataProvider/types").AppDataFracFleet | undefined;
|
|
66
|
+
interventionUnit?: import("../../AppsDataProvider/types").AppDataInterventionUnit | undefined;
|
|
67
|
+
rig?: import("../../AppsDataProvider/types").AppDataRig | undefined;
|
|
68
|
+
well?: import("../../AppsDataProvider/types").AppDataWell | undefined;
|
|
69
|
+
wells?: import("../../AppsDataProvider/types").AppDataCompletionWell[] | undefined;
|
|
64
70
|
};
|
|
65
71
|
isNative: boolean;
|
|
66
72
|
layoutEnvironment: LayoutEnvironment | null | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDevCenterAppProps.d.ts","sourceRoot":"","sources":["../../../../../src/components/DevCenter/DevCenterAppContainer/effects/useDevCenterAppProps.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAEtD,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EACjB,WAAW,EACX,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,wBAAwB,EACxB,gCAAgC,EACjC,MAAM,UAAU,CAAC;AAIlB,KAAK,0BAA0B,GAAG;IAChC,GAAG,EAAE,oBAAoB,CAAC;IAC1B,6FAA6F;IAC7F,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC5C,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,WAAW,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,CAAC;IAC5C,WAAW,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,CAAC;IAC/C,WAAW,EAAE,oBAAoB,CAAC;IAClC,eAAe,EAAE,eAAe,CAAC;IACjC,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"useDevCenterAppProps.d.ts","sourceRoot":"","sources":["../../../../../src/components/DevCenter/DevCenterAppContainer/effects/useDevCenterAppProps.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAEtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EACjB,WAAW,EACX,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,eAAe,EACf,wBAAwB,EACxB,gCAAgC,EACjC,MAAM,UAAU,CAAC;AAIlB,KAAK,0BAA0B,GAAG;IAChC,GAAG,EAAE,oBAAoB,CAAC;IAC1B,6FAA6F;IAC7F,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC5C,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,WAAW,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,CAAC;IAC5C,WAAW,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,CAAC;IAC/C,WAAW,EAAE,oBAAoB,CAAC;IAClC,eAAe,EAAE,eAAe,CAAC;IACjC,eAAe,EAAE,aAAa,CAAC;IAC/B,WAAW,EAAE,OAAO,CAAC;IACrB,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,CAAC;IACxD,eAAe,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACvD,gBAAgB,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3C,eAAe,EAAE,eAAe,GAAG,SAAS,CAAC;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,wBAAwB,EAAE,wBAAwB,CAAC;IACnD,cAAc,EAAE,CAAC,WAAW,EAAE,OAAO,KAAK,IAAI,CAAC;IAC/C,gBAAgB,EAAE,QAAQ,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;IAChE,qBAAqB,EAAE,QAAQ,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;IACrE,qBAAqB,EAAE,MAAM,IAAI,CAAC;IAClC,uBAAuB,EAAE,MAAM,IAAI,CAAC;IACpC,uCAAuC,EAAE,gCAAgC,GAAG,SAAS,CAAC;CACvF,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,gYAsB9B,0BAA0B;;;;2BA1CJ,MAAM,SAAS,OAAO,KAAK,IAAI;8BAC5B,OAAO,KAAK,IAAI;;;;kCAIZ,OAAO,KAAK,IAAI;;;mCAIf,IAAI;;;;;;;;;;;;;;;;qCADN,IAAI;;;;;;;;;;;;;;CA6FhC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDevCenterAppProps.js","sources":["../../../../../src/components/DevCenter/DevCenterAppContainer/effects/useDevCenterAppProps.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport type { Dispatch, SetStateAction } from 'react';\n\nimport type {\n AppCoordinates,\n AppLastAnnotation,\n ChatActions,\n DevCenterAppResource,\n DevCenterCurrentUser,\n DevCenterMenuItem,\n DevCenterRouter,\n LayoutEnvironment,\n RegisterAITools,\n SetIsFullscreenModalMode,\n UpdateDashboardAppLastAnnotation,\n} from '../types';\n\nimport { isNativeDetected } from '~/utils/mobileDetect';\n\ntype UseDevCenterAppPropsParams = {\n app: DevCenterAppResource;\n /** The entry `useAnnotationsData` resolved, or `null` when the app has no annotation yet. */\n appLastAnnotation: AppLastAnnotation | null;\n appTimestamp: number | undefined;\n chatActions: ChatActions | null | undefined;\n coordinates: AppCoordinates | null | undefined;\n currentUser: DevCenterCurrentUser;\n devCenterRouter: DevCenterRouter;\n filteredAppData:
|
|
1
|
+
{"version":3,"file":"useDevCenterAppProps.js","sources":["../../../../../src/components/DevCenter/DevCenterAppContainer/effects/useDevCenterAppProps.ts"],"sourcesContent":["import { useMemo } from 'react';\nimport type { Dispatch, SetStateAction } from 'react';\n\nimport type { AppDataAssets } from '../../AppsDataProvider/types';\n\nimport type {\n AppCoordinates,\n AppLastAnnotation,\n ChatActions,\n DevCenterAppResource,\n DevCenterCurrentUser,\n DevCenterMenuItem,\n DevCenterRouter,\n LayoutEnvironment,\n RegisterAITools,\n SetIsFullscreenModalMode,\n UpdateDashboardAppLastAnnotation,\n} from '../types';\n\nimport { isNativeDetected } from '~/utils/mobileDetect';\n\ntype UseDevCenterAppPropsParams = {\n app: DevCenterAppResource;\n /** The entry `useAnnotationsData` resolved, or `null` when the app has no annotation yet. */\n appLastAnnotation: AppLastAnnotation | null;\n appTimestamp: number | undefined;\n chatActions: ChatActions | null | undefined;\n coordinates: AppCoordinates | null | undefined;\n currentUser: DevCenterCurrentUser;\n devCenterRouter: DevCenterRouter;\n filteredAppData: AppDataAssets;\n isMaximized: boolean;\n layoutEnvironment: LayoutEnvironment | null | undefined;\n onSettingChange: (key: string, value: unknown) => void;\n onSettingsChange: (value: unknown) => void;\n registerAITools: RegisterAITools | undefined;\n segment: string;\n setIsFullscreenModalMode: SetIsFullscreenModalMode;\n setIsMaximized: (isMaximized: boolean) => void;\n setMainMenuItems: Dispatch<SetStateAction<DevCenterMenuItem[]>>;\n setSecondaryMenuItems: Dispatch<SetStateAction<DevCenterMenuItem[]>>;\n toggleAnnotationsList: () => void;\n toggleAppSettingsDialog: () => void;\n updateCurrentDashboardAppLastAnnotation: UpdateDashboardAppLastAnnotation | undefined;\n};\n\n/**\n * Builds the prop bag handed to the app bundle.\n *\n * Memoised on purpose: the bundle is third-party code that may memoise on prop identity, and\n * the nested `appHeaderProps` object was previously reallocated on every render of the\n * container, so nothing downstream could ever hit a memo.\n */\nexport const useDevCenterAppProps = ({\n app,\n appLastAnnotation,\n appTimestamp,\n chatActions,\n coordinates,\n currentUser,\n devCenterRouter,\n filteredAppData,\n isMaximized,\n layoutEnvironment,\n onSettingChange,\n onSettingsChange,\n registerAITools,\n segment,\n setIsFullscreenModalMode,\n setIsMaximized,\n setMainMenuItems,\n setSecondaryMenuItems,\n toggleAnnotationsList,\n toggleAppSettingsDialog,\n updateCurrentDashboardAppLastAnnotation,\n}: UseDevCenterAppPropsParams) =>\n useMemo(\n () => ({\n coordinates,\n currentUser,\n devCenterRouter,\n onSettingChange,\n onSettingsChange,\n registerAITools,\n segment,\n setIsFullscreenModalMode,\n setIsMaximized,\n setMainMenuItems,\n setSecondaryMenuItems,\n toggleAppSettingsDialog,\n // Only the V1 `AppHeader` reads this nested bag; AppHeader V3 takes the same values from\n // `AppCommonsProvider` instead. It exists for apps whose manifest has not set\n // `use_app_header_v3`, and stops being read once none are left.\n appHeaderProps: {\n app,\n appLastAnnotation,\n appSettings: app.settings,\n coordinates,\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 app,\n appLastAnnotation,\n appTimestamp,\n chatActions,\n coordinates,\n currentUser,\n devCenterRouter,\n filteredAppData,\n isMaximized,\n layoutEnvironment,\n onSettingChange,\n onSettingsChange,\n registerAITools,\n segment,\n setIsFullscreenModalMode,\n setIsMaximized,\n setMainMenuItems,\n setSecondaryMenuItems,\n toggleAnnotationsList,\n toggleAppSettingsDialog,\n updateCurrentDashboardAppLastAnnotation,\n ]\n );\n"],"names":["useDevCenterAppProps","_ref","app","appLastAnnotation","appTimestamp","chatActions","coordinates","currentUser","devCenterRouter","filteredAppData","isMaximized","layoutEnvironment","onSettingChange","onSettingsChange","registerAITools","segment","setIsFullscreenModalMode","setIsMaximized","setMainMenuItems","setSecondaryMenuItems","toggleAnnotationsList","toggleAppSettingsDialog","updateCurrentDashboardAppLastAnnotation","useMemo","appHeaderProps","_objectSpread","appSettings","settings","isNative","isNativeDetected","timestamp"],"mappings":"ytBAqDaA,IAAAA,EAAuB,SAAHC,GAAA,IAC/BC,IAAAA,IACAC,IAAAA,kBACAC,IAAAA,aACAC,IAAAA,YACAC,IAAAA,YACAC,IAAAA,YACAC,IAAAA,gBACAC,IAAAA,gBACAC,IAAAA,YACAC,IAAAA,kBACAC,IAAAA,gBACAC,IAAAA,iBACAC,IAAAA,gBACAC,IAAAA,QACAC,IAAAA,yBACAC,IAAAA,eACAC,IAAAA,iBACAC,IAAAA,sBACAC,IAAAA,sBACAC,IAAAA,wBACAC,IAAAA,wCAAuC,OAEvCC,GACE,WAAA,MAAO,CACLjB,YAAAA,EACAC,YAAAA,EACAC,gBAAAA,EACAI,gBAAAA,EACAC,iBAAAA,EACAC,gBAAAA,EACAC,QAAAA,EACAC,yBAAAA,EACAC,eAAAA,EACAC,iBAAAA,EACAC,sBAAAA,EACAE,wBAAAA,EAIAG,eAAcC,EAAA,CACZvB,IAAAA,EACAC,kBAAAA,EACAuB,YAAaxB,EAAIyB,SACjBrB,YAAAA,EACAC,YAAAA,EACAG,YAAAA,EACAC,kBAAAA,EACAC,gBAAAA,EACAQ,sBAAAA,EACAE,wCAAAA,GACGb,GAELmB,SAAUC,EACVlB,kBAAAA,EACAmB,UAAW1B,EACXC,YAAAA,EACA,GACF,CACEH,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GAEH"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { AppDataDictionary, AppDataEntry } from '../AppsDataProvider/types';
|
|
2
|
+
/** External apps also use the public AppContext to provide one app resource directly. */
|
|
3
|
+
export type LegacySingleAppContext = {
|
|
4
|
+
app: Record<string, unknown>;
|
|
5
|
+
} & Record<string, unknown>;
|
|
6
|
+
export type AppContextValue = AppDataDictionary | LegacySingleAppContext | undefined;
|
|
7
|
+
/**
|
|
8
|
+
* AppsDataProvider and iframe hosts key their dictionaries by numeric dashboard-app IDs. External
|
|
9
|
+
* single-app providers have an `app` root instead, so the public context can keep both modes.
|
|
10
|
+
*/
|
|
11
|
+
export declare const getAppDataEntryFromContext: (contextValue: AppContextValue, appDataKey: number | undefined) => AppDataEntry;
|
|
12
|
+
//# sourceMappingURL=getAppDataEntryFromContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getAppDataEntryFromContext.d.ts","sourceRoot":"","sources":["../../../../src/components/DevCenter/DevCenterAppContainer/getAppDataEntryFromContext.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAIjF,yFAAyF;AACzF,MAAM,MAAM,sBAAsB,GAAG;IACnC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC9B,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE5B,MAAM,MAAM,eAAe,GAAG,iBAAiB,GAAG,sBAAsB,GAAG,SAAS,CAAC;AAOrF;;;GAGG;AACH,eAAO,MAAM,0BAA0B,iBACvB,eAAe,cACjB,MAAM,GAAG,SAAS,KAC7B,YAMF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getAppDataEntryFromContext.js","sources":["../../../../src/components/DevCenter/DevCenterAppContainer/getAppDataEntryFromContext.ts"],"sourcesContent":["import type { AppDataDictionary, AppDataEntry } from '../AppsDataProvider/types';\n\nconst LOADING_APP_DATA: AppDataEntry = { isLoading: true };\n\n/** External apps also use the public AppContext to provide one app resource directly. */\nexport type LegacySingleAppContext = {\n app: Record<string, unknown>;\n} & Record<string, unknown>;\n\nexport type AppContextValue = AppDataDictionary | LegacySingleAppContext | undefined;\n\nconst isLegacySingleAppContext = (\n contextValue: AppContextValue\n): contextValue is LegacySingleAppContext =>\n !!contextValue && Object.prototype.hasOwnProperty.call(contextValue, 'app');\n\n/**\n * AppsDataProvider and iframe hosts key their dictionaries by numeric dashboard-app IDs. External\n * single-app providers have an `app` root instead, so the public context can keep both modes.\n */\nexport const getAppDataEntryFromContext = (\n contextValue: AppContextValue,\n appDataKey: number | undefined\n): AppDataEntry => {\n if (!appDataKey || !contextValue || isLegacySingleAppContext(contextValue)) {\n return LOADING_APP_DATA;\n }\n\n return contextValue[appDataKey] ?? LOADING_APP_DATA;\n};\n"],"names":["LOADING_APP_DATA","isLoading","getAppDataEntryFromContext","contextValue","appDataKey","_contextValue$appData","Object","prototype","hasOwnProperty","call","isLegacySingleAppContext"],"mappings":"AAEA,IAAMA,EAAiC,CAAEC,WAAW,GAkBvCC,EAA6B,SACxCC,EACAC,GACiB,IAAAC,EACjB,OAAKD,GAAeD,IAbW,SAC/BA,GAA6B,QAE3BA,GAAgBG,OAAOC,UAAUC,eAAeC,KAAKN,EAAc,MAAM,CAUvCO,CAAyBP,YAI7DE,EAAOF,EAAaC,kBAHXJ,CAIX"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ReactNode } from 'react';
|
|
2
2
|
import type { User } from '../../../types';
|
|
3
|
+
export type { AppDataEntry } from '../AppsDataProvider/types';
|
|
3
4
|
/**
|
|
4
5
|
* The DC platform passes app/settings payloads straight from the API and hands them to app
|
|
5
6
|
* bundles unchanged. Their shapes are owned by the manifest, not by this component, so the
|
|
@@ -80,11 +81,6 @@ export type DevCenterMenuItem = {
|
|
|
80
81
|
icon?: ReactNode;
|
|
81
82
|
to?: string;
|
|
82
83
|
};
|
|
83
|
-
/** One entry of the app-data context, keyed by dashboard-app id. */
|
|
84
|
-
export type AppDataEntry = {
|
|
85
|
-
isLoading?: boolean;
|
|
86
|
-
appHash?: string;
|
|
87
|
-
} & PlatformPayload;
|
|
88
84
|
/**
|
|
89
85
|
* Widened over both consumers: `DcFullscreenElemsCoordinatorProvider` calls it with a second
|
|
90
86
|
* `isModal` argument, `NonPriorityMenus` awaits the result.
|
|
@@ -131,5 +127,4 @@ export type AppLastAnnotation = NonNullable<DashboardAppLastAnnotation['last_app
|
|
|
131
127
|
export type RegisterAITools = (...args: never[]) => unknown;
|
|
132
128
|
/** Owned by `corva-web-frontend`'s chat module; forwarded to the app bundle unread. */
|
|
133
129
|
export type ChatActions = PlatformPayload;
|
|
134
|
-
export {};
|
|
135
130
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/DevCenter/DevCenterAppContainer/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAE3C;;;;;GAKG;AAEH,KAAK,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAE3C,gFAAgF;AAChF,MAAM,MAAM,oBAAoB,GAAG;IACjC;;;;OAIG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,qEAAqE;IACrE,GAAG,EAAE;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,eAAe,CAAC;IACtC,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE;YACT,WAAW,CAAC,EAAE;gBACZ,EAAE,CAAC,EAAE;oBAAE,eAAe,CAAC,EAAE,OAAO,CAAC;oBAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;iBAAE,GAAG,eAAe,CAAC;aACnF,GAAG,eAAe,CAAC;SACrB,GAAG,eAAe,CAAC;KACrB,GAAG,eAAe,CAAC;IACpB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,YAAY,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACtC,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzC,GAAG,eAAe,CAAC;AAEpB;;;GAGG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE;QACR,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB;;;;WAIG;QACH,KAAK,CAAC,EAAE;YAAE,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,GAAG,eAAe,CAAC;KAC9C,GAAG,eAAe,CAAC;IACpB,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,uBAAuB,KAAK,IAAI,CAAC;CAC5D,GAAG,eAAe,CAAC;AAEpB;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,IAAI,GAAG;IACxC,OAAO,EAAE;QAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,eAAe,CAAC;CAC5D,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/components/DevCenter/DevCenterAppContainer/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"@babel/runtime/helpers/defineProperty";import n from"@babel/runtime/helpers/slicedToArray";import t from"@babel/runtime/helpers/objectWithoutProperties";import{useMemo as o,useRef as r,useState as i,useEffect as a,useContext as p,useCallback as s}from"react";import{flushSync as
|
|
1
|
+
import e from"@babel/runtime/helpers/defineProperty";import n from"@babel/runtime/helpers/slicedToArray";import t from"@babel/runtime/helpers/objectWithoutProperties";import{useMemo as o,useRef as r,useState as i,useEffect as a,useContext as p,useCallback as s}from"react";import{flushSync as l}from"react-dom";import c from"classnames";import{withRouter as d}from"react-router-dom";import{noop as u}from"lodash";import m from"query-string";import v from"prop-types";import{APP_IFRAME_ATTRIBUTE as f,IsolatedPage as C}from"./IsolatedPage.js";import{ISOLATED_PAGE_APP_CONTAINER_ID as b}from"./constants.js";import{useFullscreenModes as g}from"./useFullscreenModes.js";import h from"./DevCenterIsolatedApp.module.scss.js";import A from"../AppContext.js";import j from"../../../permissions/PermissionsContext.js";import"../../../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{getUserUnits as y,subscribeForUserUnitsUpdates as w}from"../../../utils/index.js";import"../AppHeader/AppHeader.js";import"../AppSideBar/AppSideBar.js";import"../AppsDataProvider/effects/utils.js";import"@babel/runtime/helpers/toConsumableArray";import{createDevCenterRouter as x,isCorvaApp as M,isIsolationEnabledInPackageManifest as S,isAppMaximized as I}from"../../../utils/devcenter.js";import{jsx as L}from"react/jsx-runtime";import P from"../DevCenterAppContainer/DevCenterAppContainer.js";import"../NavigationBar/NavigationBar.js";import"../SideBar/SideBar.js";import"../AppSettingsPopover/AppSettingsPopover.js";import"../AppFilterPanelLayout/AppFilterPanelLayout.js";import"../DevCenterRouterContext/DevCenterRouterContext.js";import"../DevCenterRouterContext/UniversalLink/UniversalLink.js";import"./DevCenterIsolatedAppPage.js";import{getAppVersion as R}from"../DevCenterAppContainer/utils.js";import{isInsideNewMobileApp as D}from"../../../utils/mobileDetect.js";var F=["isIsolationFeatureEnabled","onAppFullscreenTransparentMode","onIsMaximizedChange","onInnerContainerMouseEnter","onInnerContainerMouseLeave","onAppContainerClick","setInnerContainerRefFn","onAppRemove","onSettingChange","onSettingsChange","updateCurrentDashboardAppLastAnnotation","apiRateLimiterConfig","trackApiRateLimiterException"];function O(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);n&&(o=o.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,o)}return t}function E(n){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?O(Object(o),!0).forEach((function(t){e(n,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(o)):O(Object(o)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(o,e))}))}return n}var T={};function B(e){var d,v,O,B,k,W,z,_=e.isIsolationFeatureEnabled,N=void 0!==_&&_,q=e.onAppFullscreenTransparentMode,U=void 0===q?u:q,H=e.onIsMaximizedChange,V=void 0===H?u:H,G=e.onInnerContainerMouseEnter,J=void 0===G?u:G,K=e.onInnerContainerMouseLeave,Q=void 0===K?u:K,X=e.onAppContainerClick,Y=void 0===X?u:X,Z=e.setInnerContainerRefFn,$=void 0===Z?u:Z,ee=e.onAppRemove,ne=void 0===ee?void 0:ee,te=e.onSettingChange,oe=void 0===te?u:te,re=e.onSettingsChange,ie=void 0===re?u:re,ae=e.updateCurrentDashboardAppLastAnnotation,pe=void 0===ae?u:ae,se=e.apiRateLimiterConfig,le=void 0===se?T:se,ce=e.trackApiRateLimiterException,de=t(e,F),ue=o((function(){return x(de.history)}),[null===(d=de.history)||void 0===d?void 0:d.location]),me=M(null==de||null===(v=de.app)||void 0===v?void 0:v.app)&&!S(null==de||null===(O=de.app)||void 0===O?void 0:O.package)||!N,ve=me?P:C,fe=null===(B=de.app)||void 0===B||null===(k=B.app)||void 0===k?void 0:k.app_key,Ce=R(de.app),be="".concat(fe,"-").concat(Ce),ge=r(),he=r(),Ae=r(),je=r(!1),ye=r(!1),we=I(m.parse(null===(W=de.history)||void 0===W||null===(z=W.location)||void 0===z?void 0:z.search),de.app.id),xe=r(we);xe.current=we;var Me=i(y()),Se=n(Me,2),Ie=Se[0],Le=Se[1];a((function(){var e=w((function(e){return Le(e)}));return function(){return e()}}),[]);var Pe=p(A),Re=j();function De(){U({appId:de.app.id,isModeEnabled:!1}),document.body.classList.remove("dc-isolated-app__body-overflow",h.compensateScroll)}var Fe=s((function(e){var n,t,o,r,i,a=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!N||me||xe.current&&!je.current||je.current===e){var p;a&&ye.current!==a&&(ye.current=a,null===(p=he.current)||void 0===p||p.classList.add(h.containerMaximizedTransparentModal))}else{var s,c=e?"add":"remove";if(null===(n=he.current)||void 0===n||n.classList[c](h.containerMaximizedTransparent),a||"remove"===c)null===(s=he.current)||void 0===s||s.classList[c](h.containerMaximizedTransparentModal);ge.current=null===(t=he.current)||void 0===t||null===(o=t.querySelector("[".concat(f,"]")))||void 0===o||null===(r=o.contentWindow)||void 0===r?void 0:r.document;var d=null===(i=ge.current)||void 0===i?void 0:i.getElementById(b);if(d){if(e){var u=Ae.current.getBoundingClientRect(),m=u.top,v=u.left,C=u.width,g=u.height,A=window.innerWidth!==document.body.clientWidth;l((function(){U({appId:de.app.id,isModeEnabled:!0})})),d.setAttribute("style","\n top: ".concat(m,"px;\n left: ").concat(v,"px;\n width: ").concat(C,"px;\n height: ").concat(g,"px;\n position: absolute;\n ")),document.body.classList.add("dc-isolated-app__body-overflow",A&&h.compensateScroll)}else l((function(){U({appId:de.app.id,isModeEnabled:!1})})),d.setAttribute("style",""),document.body.classList.remove("dc-isolated-app__body-overflow",h.compensateScroll);je.current=e,ye.current=a}}}),[N,me,xe]);a((function(){return De}),[]),a((function(){we&&je.current&&Fe(!1)}),[we]);var Oe=g({containerRef:Ae,appInstanceId:de.app.id,isMaximized:we}),Ee=Oe.isBrowserFullscreen,Te=Oe.enterBrowserFullscreen,Be=Oe.exitBrowserFullscreen,ke=Oe.isSeparateWindow,We=Oe.openSeparateWindow,ze=Oe.closeSeparateWindow,_e=Oe.setSeparateWindowTitle,Ne=s((function(e){he.current=e,$(e)}),[]);return L("div",{className:c("dc-isolated-app",h.fixedSizeContainer),ref:Ae,children:L("div",{ref:Ne,onMouseEnter:J,onMouseLeave:Q,"data-testid":"".concat("DevCenter_AppContainer","_").concat(de.app.app.name),className:c(h.container,D&&h.newMobileAppContainer,we&&h.containerMaximized),children:L(ve,E(E({},de),{},{isBrowserFullscreen:Ee,enterBrowserFullscreen:Te,exitBrowserFullscreen:Be,isSeparateWindow:ke,openSeparateWindow:We,closeSeparateWindow:ze,setSeparateWindowTitle:_e,isNonIsolatedApp:me,appContextValue:Pe,devCenterRouter:ue,globalNotificationToastsAPI:window[Symbol.for("notificationToasts")],globalMixpanelEventTracker:window[Symbol.for("logToMixpanel")],onAppContainerClick:Y,onAppRemove:ne,onIsMaximizedChange:V,onSettingChange:oe,onSettingsChange:ie,permissionsContextValue:Re,setIsFullscreenModalMode:Fe,userUnits:Ie,trackApiRateLimiterException:ce,updateCurrentDashboardAppLastAnnotation:pe,apiRateLimiterConfig:le}),be)})})}B.propTypes={app:v.shape({id:v.number,app:v.shape({name:v.string})}).isRequired,currentUser:v.shape({}).isRequired,isIsolationFeatureEnabled:v.bool,onAppContainerClick:v.func,onAppFullscreenTransparentMode:v.func,onAppRemove:v.func,onInnerContainerMouseEnter:v.func,onInnerContainerMouseLeave:v.func,onIsMaximizedChange:v.func,onSettingChange:v.func,onSettingsChange:v.func,setInnerContainerRefFn:v.func,updateCurrentDashboardAppLastAnnotation:v.func,apiRateLimiterConfig:v.object};var k=d(B);export{k as DevCenterIsolatedApp};
|
|
2
2
|
//# sourceMappingURL=DevCenterIsolatedApp.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DevCenterIsolatedApp.js","sources":["../../../../src/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedApp.js"],"sourcesContent":["import { useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport { flushSync } from 'react-dom';\nimport classNames from 'classnames';\nimport { withRouter } from 'react-router-dom';\nimport { noop } from 'lodash';\nimport queryString from 'query-string';\nimport PropTypes from 'prop-types';\n\nimport { APP_IFRAME_ATTRIBUTE, IsolatedPage } from './IsolatedPage';\nimport { ISOLATED_PAGE_APP_CONTAINER_ID } from './constants';\nimport { useFullscreenModes } from './useFullscreenModes';\n\nimport styles from './DevCenterIsolatedApp.module.scss';\n\nimport AppContext from '~/components/DevCenter/AppContext';\nimport { usePermissionsContext } from '~/permissions';\nimport { devcenter as devCenterUtils, getUserUnits, subscribeForUserUnitsUpdates } from '~/utils';\nimport { DevCenterAppContainer } from '~/components/DevCenter';\nimport { getAppVersion } from '~/components/DevCenter/DevCenterAppContainer/utils';\nimport { isInsideNewMobileApp } from '~/utils/mobileDetect';\n\nconst PAGE_NAME = 'DevCenter_AppContainer';\nconst DEFAULT_API_RATE_LIMITER_CONFIG = {};\n\nfunction DevCenterIsolatedAppComponent({\n isIsolationFeatureEnabled = false,\n onAppFullscreenTransparentMode = noop,\n onIsMaximizedChange = noop,\n onInnerContainerMouseEnter = noop,\n onInnerContainerMouseLeave = noop,\n onAppContainerClick = noop,\n setInnerContainerRefFn = noop,\n onAppRemove = undefined,\n onSettingChange = noop,\n onSettingsChange = noop,\n updateCurrentDashboardAppLastAnnotation = noop,\n apiRateLimiterConfig = DEFAULT_API_RATE_LIMITER_CONFIG,\n trackApiRateLimiterException,\n ...props\n}) {\n const devCenterRouter = useMemo(\n () => devCenterUtils.createDevCenterRouter(props.history),\n [props.history?.location]\n );\n\n const isNonIsolatedApp =\n (devCenterUtils.isCorvaApp(props?.app?.app) &&\n !devCenterUtils.isIsolationEnabledInPackageManifest(props?.app?.package)) ||\n !isIsolationFeatureEnabled;\n\n const DCAppComponent = isNonIsolatedApp ? DevCenterAppContainer : IsolatedPage;\n\n // Key to force iframe recreation when app version changes.\n // This ensures global dependencies are re-initialized for the new version.\n const appKey = props.app?.app?.app_key;\n const appVersion = getAppVersion(props.app);\n const iframeKey = `${appKey}-${appVersion}`;\n\n const appIframeDocument = useRef();\n const containerRef = useRef();\n const fixedSizeContainerRef = useRef();\n const fullscreenModeRef = useRef(false);\n const fullscreenModalModeRef = useRef(false);\n\n const isAppMaximized = devCenterUtils.isAppMaximized(\n queryString.parse(props.history?.location?.search),\n props.app.id\n );\n\n // save to ref to not re-create setIsFullscreenModalMode callback on change and reduce the amoount of DC apps re-renders\n const isAppMaximizedRef = useRef(isAppMaximized);\n isAppMaximizedRef.current = isAppMaximized;\n\n const [userUnits, setUserUnits] = useState(getUserUnits());\n\n useEffect(() => {\n const unsubscribeFn = subscribeForUserUnitsUpdates(newUserUnits => setUserUnits(newUserUnits));\n\n return () => unsubscribeFn();\n }, []);\n\n const appContextValue = useContext(AppContext);\n const permissionsContextValue = usePermissionsContext();\n\n /*\n What is fullscreen modal mode?\n\n Our apps, are shown in isolated iFrames. Because of it, when an app has some modal\n and opens it - it's opened inside of its iframe, instead of opening at the center of the screen.\n\n To make app modals & other elements be opened at the center of the screen, as if they are not inside of an iframe,\n we use some hacks.\n\n When the app wants to open a fullscreen element, we make its iframe fullscreen, but with transparent background,\n and we set width/height & position of that app iframe to inner app container that is located inside of the iframe.\n So when iframe's fullscreen element is opened, it looks like it's a part of the platform, and the app which shows the element, looks like\n usual, not in fullscreen\n\n So the platform provides this setIsFullscreenModalMode function to DC apps.\n When DC app wants to open a modal that should be opened at the center of the screen - it needs to\n call setIsFullscreenModalMode(true) first. And when it closes the modal - setIsFullscreenModalMode(false)\n\n Two things are important about this\n - all these styles that make this invisible background work should be applied at once\n - enter and exit from the mode, shouldn't trigger even a single re-render, as it may impact\n some elements inside the DC app\n\n There's a second parameter to `setIsFullscreenModalMode`: `isModal`. It should be used when a fullscreen overlay is displayed\n (Modal, for instance) that should cover everything on screen.\n\n What it does - it basically sets the stretched element's z-index to a very high value, so it covers every other UI element in CWF\n */\n\n function handleAppFullscreenTransparentModeExit() {\n onAppFullscreenTransparentMode({ appId: props.app.id, isModeEnabled: false });\n document.body.classList.remove('dc-isolated-app__body-overflow', styles.compensateScroll);\n }\n\n const setIsFullscreenModalMode = useCallback(\n function setIsFullscreenModalMode(nextIsFullscreenModalModeValue, isModal = false) {\n // When an app is already in fullscreen mode, no need to use this\n // invisible fullscreen mode to make elements take the whole screen\n if (\n !isIsolationFeatureEnabled ||\n isNonIsolatedApp ||\n (isAppMaximizedRef.current && !fullscreenModeRef.current) ||\n fullscreenModeRef.current === nextIsFullscreenModalModeValue\n ) {\n // Adding modal class if modal is opened when non-modal is already open\n if (isModal && fullscreenModalModeRef.current !== isModal) {\n fullscreenModalModeRef.current = isModal;\n containerRef.current?.classList.add(styles.containerMaximizedTransparentModal);\n }\n\n return;\n }\n\n const classesEditMethod = nextIsFullscreenModalModeValue ? 'add' : 'remove';\n\n containerRef.current?.classList[classesEditMethod](styles.containerMaximizedTransparent);\n\n if (isModal || classesEditMethod === 'remove') {\n containerRef.current?.classList[classesEditMethod](\n styles.containerMaximizedTransparentModal\n );\n }\n\n appIframeDocument.current = containerRef.current?.querySelector(\n `[${APP_IFRAME_ATTRIBUTE}]`\n )?.contentWindow?.document;\n\n const isolatedPageAppContainer = appIframeDocument.current?.getElementById(\n ISOLATED_PAGE_APP_CONTAINER_ID\n );\n\n if (!isolatedPageAppContainer) {\n return;\n }\n\n if (nextIsFullscreenModalModeValue) {\n // 1. BATCH ALL READS FIRST - prevents layout thrashing\n const { top, left, width, height } = fixedSizeContainerRef.current.getBoundingClientRect();\n const isBodyScrollVisible = window.innerWidth !== document.body.clientWidth;\n\n // 2. Flush React state updates synchronously to prevent deferred renders\n flushSync(() => {\n onAppFullscreenTransparentMode({ appId: props.app.id, isModeEnabled: true });\n });\n\n // 3. BATCH ALL DOM WRITES - after reads and React flush\n isolatedPageAppContainer.setAttribute(\n 'style',\n `\n top: ${top}px;\n left: ${left}px;\n width: ${width}px;\n height: ${height}px;\n position: absolute;\n `\n );\n document.body.classList.add(\n 'dc-isolated-app__body-overflow',\n isBodyScrollVisible && styles.compensateScroll\n );\n } else {\n // Flush React state updates synchronously before DOM writes\n flushSync(() => {\n onAppFullscreenTransparentMode({ appId: props.app.id, isModeEnabled: false });\n });\n\n // DOM writes after React flush\n isolatedPageAppContainer.setAttribute('style', '');\n document.body.classList.remove('dc-isolated-app__body-overflow', styles.compensateScroll);\n }\n fullscreenModeRef.current = nextIsFullscreenModalModeValue;\n fullscreenModalModeRef.current = isModal;\n },\n [isIsolationFeatureEnabled, isNonIsolatedApp, isAppMaximizedRef]\n );\n\n useEffect(() => {\n return handleAppFullscreenTransparentModeExit;\n }, []);\n\n useEffect(() => {\n if (isAppMaximized && fullscreenModeRef.current) {\n setIsFullscreenModalMode(false);\n }\n }, [isAppMaximized]);\n\n const {\n isBrowserFullscreen,\n enterBrowserFullscreen,\n exitBrowserFullscreen,\n isSeparateWindow,\n openSeparateWindow,\n closeSeparateWindow,\n setSeparateWindowTitle,\n } = useFullscreenModes({\n containerRef: fixedSizeContainerRef,\n appInstanceId: props.app.id,\n isMaximized: isAppMaximized,\n });\n\n /**\n * This should be the same function as calling react-intersection-observer's ref setter actually triggers re-render.\n * Which in its turn causes infinite re-render loop.\n */\n const setContainerRefs = useCallback(node => {\n containerRef.current = node;\n setInnerContainerRefFn(node);\n }, []);\n\n return (\n <div\n className={classNames('dc-isolated-app', styles.fixedSizeContainer)}\n ref={fixedSizeContainerRef}\n >\n <div\n ref={setContainerRefs}\n onMouseEnter={onInnerContainerMouseEnter}\n onMouseLeave={onInnerContainerMouseLeave}\n data-testid={`${PAGE_NAME}_${props.app.app.name}`}\n className={classNames(\n styles.container,\n isInsideNewMobileApp && styles.newMobileAppContainer,\n isAppMaximized && styles.containerMaximized\n )}\n >\n <DCAppComponent\n key={iframeKey}\n {...props}\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 appContextValue={appContextValue}\n devCenterRouter={devCenterRouter}\n globalNotificationToastsAPI={window[Symbol.for('notificationToasts')]}\n globalMixpanelEventTracker={window[Symbol.for('logToMixpanel')]}\n onAppContainerClick={onAppContainerClick}\n onAppRemove={onAppRemove}\n onIsMaximizedChange={onIsMaximizedChange}\n onSettingChange={onSettingChange}\n onSettingsChange={onSettingsChange}\n permissionsContextValue={permissionsContextValue}\n setIsFullscreenModalMode={setIsFullscreenModalMode}\n userUnits={userUnits}\n trackApiRateLimiterException={trackApiRateLimiterException}\n updateCurrentDashboardAppLastAnnotation={updateCurrentDashboardAppLastAnnotation}\n apiRateLimiterConfig={apiRateLimiterConfig}\n />\n </div>\n </div>\n );\n}\n\nDevCenterIsolatedAppComponent.propTypes = {\n app: PropTypes.shape({\n id: PropTypes.number,\n app: PropTypes.shape({\n name: PropTypes.string,\n }),\n }).isRequired,\n currentUser: PropTypes.shape({}).isRequired,\n isIsolationFeatureEnabled: PropTypes.bool,\n onAppContainerClick: PropTypes.func,\n onAppFullscreenTransparentMode: PropTypes.func,\n onAppRemove: PropTypes.func,\n onInnerContainerMouseEnter: PropTypes.func,\n onInnerContainerMouseLeave: PropTypes.func,\n onIsMaximizedChange: PropTypes.func,\n onSettingChange: PropTypes.func,\n onSettingsChange: PropTypes.func,\n setInnerContainerRefFn: PropTypes.func,\n updateCurrentDashboardAppLastAnnotation: PropTypes.func,\n apiRateLimiterConfig: PropTypes.object,\n};\n\nexport const DevCenterIsolatedApp = withRouter(DevCenterIsolatedAppComponent);\n"],"names":["DEFAULT_API_RATE_LIMITER_CONFIG","DevCenterIsolatedAppComponent","_ref","_props$history","_props$app","_props$app2","_props$app3","_props$app3$app","_props$history2","_props$history2$locat","_ref$isIsolationFeatu","isIsolationFeatureEnabled","_ref$onAppFullscreenT","onAppFullscreenTransparentMode","noop","_ref$onIsMaximizedCha","onIsMaximizedChange","_ref$onInnerContainer","onInnerContainerMouseEnter","_ref$onInnerContainer2","onInnerContainerMouseLeave","_ref$onAppContainerCl","onAppContainerClick","_ref$setInnerContaine","setInnerContainerRefFn","_ref$onAppRemove","onAppRemove","undefined","_ref$onSettingChange","onSettingChange","_ref$onSettingsChange","onSettingsChange","_ref$updateCurrentDas","updateCurrentDashboardAppLastAnnotation","_ref$apiRateLimiterCo","apiRateLimiterConfig","trackApiRateLimiterException","props","_objectWithoutProperties","_excluded","devCenterRouter","useMemo","devCenterUtils","history","location","isNonIsolatedApp","app","package","DCAppComponent","DevCenterAppContainer","IsolatedPage","appKey","app_key","appVersion","getAppVersion","iframeKey","concat","appIframeDocument","useRef","containerRef","fixedSizeContainerRef","fullscreenModeRef","fullscreenModalModeRef","isAppMaximized","queryString","parse","search","id","isAppMaximizedRef","current","_useState","useState","getUserUnits","_useState2","_slicedToArray","userUnits","setUserUnits","useEffect","unsubscribeFn","subscribeForUserUnitsUpdates","newUserUnits","appContextValue","useContext","AppContext","permissionsContextValue","usePermissionsContext","handleAppFullscreenTransparentModeExit","appId","isModeEnabled","document","body","classList","remove","styles","compensateScroll","setIsFullscreenModalMode","useCallback","nextIsFullscreenModalModeValue","_containerRef$current2","_containerRef$current4","_containerRef$current5","_containerRef$current6","_appIframeDocument$cu","isModal","_containerRef$current","add","containerMaximizedTransparentModal","_containerRef$current3","classesEditMethod","containerMaximizedTransparent","querySelector","APP_IFRAME_ATTRIBUTE","contentWindow","isolatedPageAppContainer","getElementById","ISOLATED_PAGE_APP_CONTAINER_ID","_fixedSizeContainerRe","getBoundingClientRect","top","left","width","height","isBodyScrollVisible","window","innerWidth","clientWidth","flushSync","setAttribute","_useFullscreenModes","useFullscreenModes","appInstanceId","isMaximized","isBrowserFullscreen","enterBrowserFullscreen","exitBrowserFullscreen","isSeparateWindow","openSeparateWindow","closeSeparateWindow","setSeparateWindowTitle","setContainerRefs","node","_jsx","className","classNames","fixedSizeContainer","ref","children","onMouseEnter","onMouseLeave","PAGE_NAME","name","container","isInsideNewMobileApp","newMobileAppContainer","containerMaximized","_objectSpread","globalNotificationToastsAPI","Symbol","for","globalMixpanelEventTracker","propTypes","PropTypes","shape","number","string","isRequired","currentUser","bool","func","object","DevCenterIsolatedApp","withRouter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DevCenterIsolatedApp.js","sources":["../../../../src/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedApp.js"],"sourcesContent":["import { useCallback, useContext, useEffect, useMemo, useRef, useState } from 'react';\nimport { flushSync } from 'react-dom';\nimport classNames from 'classnames';\nimport { withRouter } from 'react-router-dom';\nimport { noop } from 'lodash';\nimport queryString from 'query-string';\nimport PropTypes from 'prop-types';\n\nimport { APP_IFRAME_ATTRIBUTE, IsolatedPage } from './IsolatedPage';\nimport { ISOLATED_PAGE_APP_CONTAINER_ID } from './constants';\nimport { useFullscreenModes } from './useFullscreenModes';\n\nimport styles from './DevCenterIsolatedApp.module.scss';\n\nimport AppContext from '~/components/DevCenter/AppContext';\nimport { usePermissionsContext } from '~/permissions';\nimport { devcenter as devCenterUtils, getUserUnits, subscribeForUserUnitsUpdates } from '~/utils';\nimport { DevCenterAppContainer } from '~/components/DevCenter';\nimport { getAppVersion } from '~/components/DevCenter/DevCenterAppContainer/utils';\nimport { isInsideNewMobileApp } from '~/utils/mobileDetect';\n\nconst PAGE_NAME = 'DevCenter_AppContainer';\nconst DEFAULT_API_RATE_LIMITER_CONFIG = {};\n\nfunction DevCenterIsolatedAppComponent({\n isIsolationFeatureEnabled = false,\n onAppFullscreenTransparentMode = noop,\n onIsMaximizedChange = noop,\n onInnerContainerMouseEnter = noop,\n onInnerContainerMouseLeave = noop,\n onAppContainerClick = noop,\n setInnerContainerRefFn = noop,\n onAppRemove = undefined,\n onSettingChange = noop,\n onSettingsChange = noop,\n updateCurrentDashboardAppLastAnnotation = noop,\n apiRateLimiterConfig = DEFAULT_API_RATE_LIMITER_CONFIG,\n trackApiRateLimiterException,\n ...props\n}) {\n const devCenterRouter = useMemo(\n () => devCenterUtils.createDevCenterRouter(props.history),\n [props.history?.location]\n );\n\n const isNonIsolatedApp =\n (devCenterUtils.isCorvaApp(props?.app?.app) &&\n !devCenterUtils.isIsolationEnabledInPackageManifest(props?.app?.package)) ||\n !isIsolationFeatureEnabled;\n\n const DCAppComponent = isNonIsolatedApp ? DevCenterAppContainer : IsolatedPage;\n\n // Key to force iframe recreation when app version changes.\n // This ensures global dependencies are re-initialized for the new version.\n const appKey = props.app?.app?.app_key;\n const appVersion = getAppVersion(props.app);\n const iframeKey = `${appKey}-${appVersion}`;\n\n const appIframeDocument = useRef();\n const containerRef = useRef();\n const fixedSizeContainerRef = useRef();\n const fullscreenModeRef = useRef(false);\n const fullscreenModalModeRef = useRef(false);\n\n const isAppMaximized = devCenterUtils.isAppMaximized(\n queryString.parse(props.history?.location?.search),\n props.app.id\n );\n\n // save to ref to not re-create setIsFullscreenModalMode callback on change and reduce the amoount of DC apps re-renders\n const isAppMaximizedRef = useRef(isAppMaximized);\n isAppMaximizedRef.current = isAppMaximized;\n\n const [userUnits, setUserUnits] = useState(getUserUnits());\n\n useEffect(() => {\n const unsubscribeFn = subscribeForUserUnitsUpdates(newUserUnits => setUserUnits(newUserUnits));\n\n return () => unsubscribeFn();\n }, []);\n\n const appContextValue = useContext(AppContext);\n const permissionsContextValue = usePermissionsContext();\n\n /*\n What is fullscreen modal mode?\n\n Our apps, are shown in isolated iFrames. Because of it, when an app has some modal\n and opens it - it's opened inside of its iframe, instead of opening at the center of the screen.\n\n To make app modals & other elements be opened at the center of the screen, as if they are not inside of an iframe,\n we use some hacks.\n\n When the app wants to open a fullscreen element, we make its iframe fullscreen, but with transparent background,\n and we set width/height & position of that app iframe to inner app container that is located inside of the iframe.\n So when iframe's fullscreen element is opened, it looks like it's a part of the platform, and the app which shows the element, looks like\n usual, not in fullscreen\n\n So the platform provides this setIsFullscreenModalMode function to DC apps.\n When DC app wants to open a modal that should be opened at the center of the screen - it needs to\n call setIsFullscreenModalMode(true) first. And when it closes the modal - setIsFullscreenModalMode(false)\n\n Two things are important about this\n - all these styles that make this invisible background work should be applied at once\n - enter and exit from the mode, shouldn't trigger even a single re-render, as it may impact\n some elements inside the DC app\n\n There's a second parameter to `setIsFullscreenModalMode`: `isModal`. It should be used when a fullscreen overlay is displayed\n (Modal, for instance) that should cover everything on screen.\n\n What it does - it basically sets the stretched element's z-index to a very high value, so it covers every other UI element in CWF\n */\n\n function handleAppFullscreenTransparentModeExit() {\n onAppFullscreenTransparentMode({ appId: props.app.id, isModeEnabled: false });\n document.body.classList.remove('dc-isolated-app__body-overflow', styles.compensateScroll);\n }\n\n const setIsFullscreenModalMode = useCallback(\n function setIsFullscreenModalMode(nextIsFullscreenModalModeValue, isModal = false) {\n // When an app is already in fullscreen mode, no need to use this\n // invisible fullscreen mode to make elements take the whole screen\n if (\n !isIsolationFeatureEnabled ||\n isNonIsolatedApp ||\n (isAppMaximizedRef.current && !fullscreenModeRef.current) ||\n fullscreenModeRef.current === nextIsFullscreenModalModeValue\n ) {\n // Adding modal class if modal is opened when non-modal is already open\n if (isModal && fullscreenModalModeRef.current !== isModal) {\n fullscreenModalModeRef.current = isModal;\n containerRef.current?.classList.add(styles.containerMaximizedTransparentModal);\n }\n\n return;\n }\n\n const classesEditMethod = nextIsFullscreenModalModeValue ? 'add' : 'remove';\n\n containerRef.current?.classList[classesEditMethod](styles.containerMaximizedTransparent);\n\n if (isModal || classesEditMethod === 'remove') {\n containerRef.current?.classList[classesEditMethod](\n styles.containerMaximizedTransparentModal\n );\n }\n\n appIframeDocument.current = containerRef.current?.querySelector(\n `[${APP_IFRAME_ATTRIBUTE}]`\n )?.contentWindow?.document;\n\n const isolatedPageAppContainer = appIframeDocument.current?.getElementById(\n ISOLATED_PAGE_APP_CONTAINER_ID\n );\n\n if (!isolatedPageAppContainer) {\n return;\n }\n\n if (nextIsFullscreenModalModeValue) {\n // 1. BATCH ALL READS FIRST - prevents layout thrashing\n const { top, left, width, height } = fixedSizeContainerRef.current.getBoundingClientRect();\n const isBodyScrollVisible = window.innerWidth !== document.body.clientWidth;\n\n // 2. Flush React state updates synchronously to prevent deferred renders\n flushSync(() => {\n onAppFullscreenTransparentMode({ appId: props.app.id, isModeEnabled: true });\n });\n\n // 3. BATCH ALL DOM WRITES - after reads and React flush\n isolatedPageAppContainer.setAttribute(\n 'style',\n `\n top: ${top}px;\n left: ${left}px;\n width: ${width}px;\n height: ${height}px;\n position: absolute;\n `\n );\n document.body.classList.add(\n 'dc-isolated-app__body-overflow',\n isBodyScrollVisible && styles.compensateScroll\n );\n } else {\n // Flush React state updates synchronously before DOM writes\n flushSync(() => {\n onAppFullscreenTransparentMode({ appId: props.app.id, isModeEnabled: false });\n });\n\n // DOM writes after React flush\n isolatedPageAppContainer.setAttribute('style', '');\n document.body.classList.remove('dc-isolated-app__body-overflow', styles.compensateScroll);\n }\n fullscreenModeRef.current = nextIsFullscreenModalModeValue;\n fullscreenModalModeRef.current = isModal;\n },\n [isIsolationFeatureEnabled, isNonIsolatedApp, isAppMaximizedRef]\n );\n\n useEffect(() => {\n return handleAppFullscreenTransparentModeExit;\n }, []);\n\n useEffect(() => {\n if (isAppMaximized && fullscreenModeRef.current) {\n setIsFullscreenModalMode(false);\n }\n }, [isAppMaximized]);\n\n const {\n isBrowserFullscreen,\n enterBrowserFullscreen,\n exitBrowserFullscreen,\n isSeparateWindow,\n openSeparateWindow,\n closeSeparateWindow,\n setSeparateWindowTitle,\n } = useFullscreenModes({\n containerRef: fixedSizeContainerRef,\n appInstanceId: props.app.id,\n isMaximized: isAppMaximized,\n });\n\n /**\n * This should be the same function as calling react-intersection-observer's ref setter actually triggers re-render.\n * Which in its turn causes infinite re-render loop.\n */\n const setContainerRefs = useCallback(node => {\n containerRef.current = node;\n setInnerContainerRefFn(node);\n }, []);\n\n return (\n <div\n className={classNames('dc-isolated-app', styles.fixedSizeContainer)}\n ref={fixedSizeContainerRef}\n >\n <div\n ref={setContainerRefs}\n onMouseEnter={onInnerContainerMouseEnter}\n onMouseLeave={onInnerContainerMouseLeave}\n data-testid={`${PAGE_NAME}_${props.app.app.name}`}\n className={classNames(\n styles.container,\n isInsideNewMobileApp && styles.newMobileAppContainer,\n isAppMaximized && styles.containerMaximized\n )}\n >\n <DCAppComponent\n key={iframeKey}\n {...props}\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 appContextValue={appContextValue}\n devCenterRouter={devCenterRouter}\n globalNotificationToastsAPI={window[Symbol.for('notificationToasts')]}\n globalMixpanelEventTracker={window[Symbol.for('logToMixpanel')]}\n onAppContainerClick={onAppContainerClick}\n onAppRemove={onAppRemove}\n onIsMaximizedChange={onIsMaximizedChange}\n onSettingChange={onSettingChange}\n onSettingsChange={onSettingsChange}\n permissionsContextValue={permissionsContextValue}\n setIsFullscreenModalMode={setIsFullscreenModalMode}\n userUnits={userUnits}\n trackApiRateLimiterException={trackApiRateLimiterException}\n updateCurrentDashboardAppLastAnnotation={updateCurrentDashboardAppLastAnnotation}\n apiRateLimiterConfig={apiRateLimiterConfig}\n />\n </div>\n </div>\n );\n}\n\nDevCenterIsolatedAppComponent.propTypes = {\n app: PropTypes.shape({\n id: PropTypes.number,\n app: PropTypes.shape({\n name: PropTypes.string,\n }),\n }).isRequired,\n currentUser: PropTypes.shape({}).isRequired,\n isIsolationFeatureEnabled: PropTypes.bool,\n onAppContainerClick: PropTypes.func,\n onAppFullscreenTransparentMode: PropTypes.func,\n onAppRemove: PropTypes.func,\n onInnerContainerMouseEnter: PropTypes.func,\n onInnerContainerMouseLeave: PropTypes.func,\n onIsMaximizedChange: PropTypes.func,\n onSettingChange: PropTypes.func,\n onSettingsChange: PropTypes.func,\n setInnerContainerRefFn: PropTypes.func,\n updateCurrentDashboardAppLastAnnotation: PropTypes.func,\n apiRateLimiterConfig: PropTypes.object,\n};\n\nexport const DevCenterIsolatedApp = withRouter(DevCenterIsolatedAppComponent);\n"],"names":["DEFAULT_API_RATE_LIMITER_CONFIG","DevCenterIsolatedAppComponent","_ref","_props$history","_props$app","_props$app2","_props$app3","_props$app3$app","_props$history2","_props$history2$locat","_ref$isIsolationFeatu","isIsolationFeatureEnabled","_ref$onAppFullscreenT","onAppFullscreenTransparentMode","noop","_ref$onIsMaximizedCha","onIsMaximizedChange","_ref$onInnerContainer","onInnerContainerMouseEnter","_ref$onInnerContainer2","onInnerContainerMouseLeave","_ref$onAppContainerCl","onAppContainerClick","_ref$setInnerContaine","setInnerContainerRefFn","_ref$onAppRemove","onAppRemove","undefined","_ref$onSettingChange","onSettingChange","_ref$onSettingsChange","onSettingsChange","_ref$updateCurrentDas","updateCurrentDashboardAppLastAnnotation","_ref$apiRateLimiterCo","apiRateLimiterConfig","trackApiRateLimiterException","props","_objectWithoutProperties","_excluded","devCenterRouter","useMemo","devCenterUtils","history","location","isNonIsolatedApp","app","package","DCAppComponent","DevCenterAppContainer","IsolatedPage","appKey","app_key","appVersion","getAppVersion","iframeKey","concat","appIframeDocument","useRef","containerRef","fixedSizeContainerRef","fullscreenModeRef","fullscreenModalModeRef","isAppMaximized","queryString","parse","search","id","isAppMaximizedRef","current","_useState","useState","getUserUnits","_useState2","_slicedToArray","userUnits","setUserUnits","useEffect","unsubscribeFn","subscribeForUserUnitsUpdates","newUserUnits","appContextValue","useContext","AppContext","permissionsContextValue","usePermissionsContext","handleAppFullscreenTransparentModeExit","appId","isModeEnabled","document","body","classList","remove","styles","compensateScroll","setIsFullscreenModalMode","useCallback","nextIsFullscreenModalModeValue","_containerRef$current2","_containerRef$current4","_containerRef$current5","_containerRef$current6","_appIframeDocument$cu","isModal","_containerRef$current","add","containerMaximizedTransparentModal","_containerRef$current3","classesEditMethod","containerMaximizedTransparent","querySelector","APP_IFRAME_ATTRIBUTE","contentWindow","isolatedPageAppContainer","getElementById","ISOLATED_PAGE_APP_CONTAINER_ID","_fixedSizeContainerRe","getBoundingClientRect","top","left","width","height","isBodyScrollVisible","window","innerWidth","clientWidth","flushSync","setAttribute","_useFullscreenModes","useFullscreenModes","appInstanceId","isMaximized","isBrowserFullscreen","enterBrowserFullscreen","exitBrowserFullscreen","isSeparateWindow","openSeparateWindow","closeSeparateWindow","setSeparateWindowTitle","setContainerRefs","node","_jsx","className","classNames","fixedSizeContainer","ref","children","onMouseEnter","onMouseLeave","PAGE_NAME","name","container","isInsideNewMobileApp","newMobileAppContainer","containerMaximized","_objectSpread","globalNotificationToastsAPI","Symbol","for","globalMixpanelEventTracker","propTypes","PropTypes","shape","number","string","isRequired","currentUser","bool","func","object","DevCenterIsolatedApp","withRouter"],"mappings":"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"}
|