@corva/ui 3.46.0-1 → 3.46.0-2

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.
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/defineProperty"),n=require("@babel/runtime/helpers/slicedToArray"),r=require("@babel/runtime/helpers/objectWithoutProperties"),t=require("react"),o=require("classnames"),i=require("react-router"),a=require("lodash"),s=require("prop-types"),u=require("./IsolatedPage.js"),p=require("./constants.js"),l=require("./DevCenterIsolatedApp.module.css.js"),d=require("../AppContext.js"),c=require("../../../permissions/PermissionsContext.js");require("../../../permissions/constants/index.js"),require("../../../permissions/withPermissionsHOC.js"),require("@babel/runtime/helpers/asyncToGenerator"),require("@babel/runtime/regenerator"),require("../../../clients/jsonApi/index.js"),require("../../../permissions/ProvidePermissions.js");var f=require("../../../utils/index.js");require("../AppHeader/AppHeader.js"),require("../AppSideBar/AppSideBar.js"),require("../AppsDataProvider/AppsDataProvider.js");var v=require("../DevCenterAppContainer/DevCenterAppContainer.js");require("../NavigationBar/NavigationBar.js"),require("../SideBar/SideBar.js"),require("../AppSettingsPopover/AppSettingsPopover.js"),require("../AppFilterPanelLayout/AppFilterPanelLayout.js"),require("../DevCenterRouterContext/DevCenterRouterContext.js"),require("../DevCenterRouterContext/UniversalLink/UniversalLink.js");var C=require("react/jsx-runtime");require("./DevCenterIsolatedAppPage.js");var b=require("../DevCenterAppContainer/utils.js"),m=require("../../../utils/mobileDetect.js"),A=require("../../../utils/devcenter.js");function j(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var g=j(e),q=j(n),I=j(r),M=j(o),h=j(s),x=["isIsolationFeatureEnabled","onAppFullscreenTransparentMode","onIsMaximizedChange","onInnerContainerMouseEnter","onInnerContainerMouseLeave","onAppContainerClick","setInnerContainerRefFn"];function y(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function P(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?y(Object(r),!0).forEach((function(n){g.default(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):y(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}function E(e){var n,r,o,i,a,s,j,g=e.isIsolationFeatureEnabled,h=e.onAppFullscreenTransparentMode,y=e.onIsMaximizedChange,E=e.onInnerContainerMouseEnter,R=e.onInnerContainerMouseLeave,D=e.onAppContainerClick,w=e.setInnerContainerRefFn,O=I.default(e,x),S=t.useMemo((function(){return A.createDevCenterRouter(O.router)}),[null===(n=O.router)||void 0===n?void 0:n.location]),T=A.isCorvaApp(null==O||null===(r=O.app)||void 0===r?void 0:r.app)&&!A.isIsolationEnabledInPackageManifest(null==O||null===(o=O.app)||void 0===o?void 0:o.package)||!g,F=T?v:u.IsolatedPage,L=null===(i=O.app)||void 0===i||null===(a=i.app)||void 0===a?void 0:a.app_key,_=b.getAppVersion(O.app),k="".concat(L,"-").concat(_),z=t.useRef(),U=t.useRef(),B=t.useRef(),N=t.useRef(!1),W=t.useRef(!1),H=A.isAppMaximized(null===(s=O.router)||void 0===s||null===(j=s.location)||void 0===j?void 0:j.query,O.app.id),V=t.useRef(H);V.current=H;var G=t.useState(f.getUserUnits()),J=q.default(G,2),K=J[0],Q=J[1];t.useEffect((function(){var e=f.subscribeForUserUnitsUpdates((function(e){return Q(e)}));return function(){return e()}}),[]);var X=t.useContext(d),Y=c.default();function Z(){h({appId:O.app.id,isModeEnabled:!1}),document.body.classList.remove("dc-isolated-app__body-overflow",l.compensateScroll)}var $=t.useCallback((function(e){var n,r,t,o,i,a=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!g||T||V.current&&!N.current||N.current===e){var s;a&&W.current!==a&&(W.current=a,null===(s=U.current)||void 0===s||s.classList.add(l.containerMaximizedTransparentModal))}else{var d,c=e?"add":"remove";if(null===(n=U.current)||void 0===n||n.classList[c](l.containerMaximizedTransparent),a||"remove"===c)null===(d=U.current)||void 0===d||d.classList[c](l.containerMaximizedTransparentModal);z.current=null===(r=U.current)||void 0===r||null===(t=r.querySelector("[".concat(u.APP_IFRAME_ATTRIBUTE,"]")))||void 0===t||null===(o=t.contentWindow)||void 0===o?void 0:o.document;var f=null===(i=z.current)||void 0===i?void 0:i.getElementById(p.ISOLATED_PAGE_APP_CONTAINER_ID);if(f){if(e){var v=B.current.getBoundingClientRect(),C=v.top,b=v.left,m=v.width,A=v.height;f.setAttribute("style","\n top: ".concat(C,"px;\n left: ").concat(b,"px;\n width: ").concat(m,"px;\n height: ").concat(A,"px;\n position: absolute;\n ")),h({appId:O.app.id,isModeEnabled:!0});var j=window.innerWidth!==document.body.clientWidth;document.body.classList.add("dc-isolated-app__body-overflow",j&&l.compensateScroll)}else f.setAttribute("style",""),Z();N.current=e,W.current=a}}}),[g,T,V]);t.useEffect((function(){return Z}),[]),t.useEffect((function(){H&&N.current&&$(!1)}),[H]);var ee=t.useCallback((function(e){U.current=e,w(e)}),[]);return C.jsx("div",{className:M.default("dc-isolated-app",l.fixedSizeContainer),ref:B,children:C.jsx("div",{ref:ee,onMouseEnter:E,onMouseLeave:R,"data-testid":"".concat("DevCenter_AppContainer","_").concat(O.app.app.name),className:M.default(l.container,m.isInsideNewMobileApp&&l.newMobileAppContainer,H&&l.containerMaximized),children:C.jsx(F,P(P({},O),{},{appContextValue:X,devCenterRouter:S,globalNotificationToastsAPI:window[Symbol.for("notificationToasts")],globalMixpanelEventTracker:window[Symbol.for("logToMixpanel")],onAppContainerClick:D,onIsMaximizedChange:y,permissionsContextValue:Y,setIsFullscreenModalMode:$,userUnits:K}),k)})})}E.propTypes={app:h.default.shape({id:h.default.number,app:h.default.shape({name:h.default.string})}).isRequired,currentUser:h.default.shape({}).isRequired,isIsolationFeatureEnabled:h.default.bool,onAppContainerClick:h.default.func,onAppFullscreenTransparentMode:h.default.func,onAppRemove:h.default.func,onInnerContainerMouseEnter:h.default.func,onInnerContainerMouseLeave:h.default.func,onIsMaximizedChange:h.default.func,onSettingChange:h.default.func,onSettingsChange:h.default.func,setInnerContainerRefFn:h.default.func,updateCurrentDashboardAppLastAnnotation:h.default.func},E.defaultProps={isIsolationFeatureEnabled:!1,onAppContainerClick:a.noop,onAppFullscreenTransparentMode:a.noop,onAppRemove:a.noop,onInnerContainerMouseEnter:a.noop,onInnerContainerMouseLeave:a.noop,onIsMaximizedChange:a.noop,onSettingChange:a.noop,onSettingsChange:a.noop,setInnerContainerRefFn:a.noop,updateCurrentDashboardAppLastAnnotation:a.noop};var R=i.withRouter(E);exports.DevCenterIsolatedApp=R;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/defineProperty"),n=require("@babel/runtime/helpers/slicedToArray"),r=require("@babel/runtime/helpers/objectWithoutProperties"),t=require("react"),o=require("classnames"),i=require("react-router"),a=require("lodash"),s=require("prop-types"),u=require("./IsolatedPage.js"),p=require("./constants.js"),l=require("./DevCenterIsolatedApp.module.css.js"),d=require("../AppContext.js"),c=require("../../../permissions/PermissionsContext.js");require("../../../permissions/constants/index.js"),require("../../../permissions/withPermissionsHOC.js"),require("@babel/runtime/helpers/asyncToGenerator"),require("@babel/runtime/regenerator"),require("../../../clients/jsonApi/index.js"),require("../../../permissions/ProvidePermissions.js");var f=require("../../../utils/index.js");require("../AppHeader/AppHeader.js"),require("../AppSideBar/AppSideBar.js"),require("../AppsDataProvider/AppsDataProvider.js");var v=require("../DevCenterAppContainer/DevCenterAppContainer.js");require("../NavigationBar/NavigationBar.js"),require("../SideBar/SideBar.js"),require("../AppSettingsPopover/AppSettingsPopover.js"),require("../AppFilterPanelLayout/AppFilterPanelLayout.js"),require("../DevCenterRouterContext/DevCenterRouterContext.js"),require("../DevCenterRouterContext/UniversalLink/UniversalLink.js");var C=require("react/jsx-runtime");require("./DevCenterIsolatedAppPage.js");var b=require("../DevCenterAppContainer/utils.js"),m=require("../../../utils/mobileDetect.js"),A=require("../../../utils/devcenter.js");function j(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var g=j(e),q=j(n),I=j(r),M=j(o),h=j(s),x=["isIsolationFeatureEnabled","onAppFullscreenTransparentMode","onIsMaximizedChange","onInnerContainerMouseEnter","onInnerContainerMouseLeave","onAppContainerClick","setInnerContainerRefFn"];function y(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function P(e){for(var n=1;n<arguments.length;n++){var r=null!=arguments[n]?arguments[n]:{};n%2?y(Object(r),!0).forEach((function(n){g.default(e,n,r[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):y(Object(r)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(r,n))}))}return e}function E(e){var n,r,o,i,a,s,j,g=e.isIsolationFeatureEnabled,h=e.onAppFullscreenTransparentMode,y=e.onIsMaximizedChange,E=e.onInnerContainerMouseEnter,R=e.onInnerContainerMouseLeave,D=e.onAppContainerClick,w=e.setInnerContainerRefFn,O=I.default(e,x),S=t.useMemo((function(){return A.createDevCenterRouter(O.router)}),[null===(n=O.router)||void 0===n?void 0:n.location]),T=A.isCorvaApp(null==O||null===(r=O.app)||void 0===r?void 0:r.app)&&!A.isIsolationEnabledInPackageManifest(null==O||null===(o=O.app)||void 0===o?void 0:o.package)||!g,F=T?v:u.IsolatedPage,L=null===(i=O.app)||void 0===i||null===(a=i.app)||void 0===a?void 0:a.app_key,_=b.getAppVersion(O.app),k="".concat(L,"-").concat(_),z=t.useRef(),U=t.useRef(),B=t.useRef(),N=t.useRef(!1),W=t.useRef(!1),H=A.isAppMaximized(null===(s=O.router)||void 0===s||null===(j=s.location)||void 0===j?void 0:j.query,O.app.id),V=t.useRef(H);V.current=H;var G=t.useState(f.getUserUnits()),J=q.default(G,2),K=J[0],Q=J[1];t.useEffect((function(){var e=f.subscribeForUserUnitsUpdates((function(e){return Q(e)}));return function(){return e()}}),[]);var X=t.useContext(d),Y=c.default();function Z(){h({appId:O.app.id,isModeEnabled:!1}),document.body.classList.remove("dc-isolated-app__body-overflow",l.compensateScroll)}var $=t.useCallback((function(e){var n,r,t,o,i,a=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!g||T||V.current&&!N.current||N.current===e){var s;a&&W.current!==a&&(W.current=a,null===(s=U.current)||void 0===s||s.classList.add(l.containerMaximizedTransparentModal))}else{var d,c=e?"add":"remove";if(null===(n=U.current)||void 0===n||n.classList[c](l.containerMaximizedTransparent),a||"remove"===c)null===(d=U.current)||void 0===d||d.classList[c](l.containerMaximizedTransparentModal);z.current=null===(r=U.current)||void 0===r||null===(t=r.querySelector("[".concat(u.APP_IFRAME_ATTRIBUTE,"]")))||void 0===t||null===(o=t.contentWindow)||void 0===o?void 0:o.document;var f=null===(i=z.current)||void 0===i?void 0:i.getElementById(p.ISOLATED_PAGE_APP_CONTAINER_ID);if(f){if(e){var v=B.current.getBoundingClientRect(),C=v.top,b=v.left,m=v.width,A=v.height;f.setAttribute("style","\n top: ".concat(C,"px;\n left: ").concat(b,"px;\n width: ").concat(m,"px;\n height: ").concat(A,"px;\n position: absolute;\n ")),h({appId:O.app.id,isModeEnabled:!0});var j=window.innerWidth!==document.body.clientWidth;document.body.classList.add("dc-isolated-app__body-overflow",j&&l.compensateScroll)}else f.setAttribute("style",""),Z();N.current=e,W.current=a}}}),[g,T,V]);t.useEffect((function(){return Z}),[]),t.useEffect((function(){H&&N.current&&$(!1)}),[H]);var ee=t.useCallback((function(e){U.current=e,w(e)}),[]);return C.jsx("div",{className:M.default("dc-isolated-app",l.fixedSizeContainer),ref:B,children:C.jsx("div",{ref:ee,onMouseEnter:E,onMouseLeave:R,"data-testid":"".concat("DevCenter_AppContainer","_").concat(O.app.app.name),className:M.default(l.container,m.isInsideNewMobileApp&&l.newMobileAppContainer,H&&l.containerMaximized),children:C.jsx(F,P(P({},O),{},{appContextValue:X,devCenterRouter:S,globalNotificationToastsAPI:window[Symbol.for("notificationToasts")],globalMixpanelEventTracker:window[Symbol.for("logToMixpanel")],onAppContainerClick:D,onIsMaximizedChange:y,permissionsContextValue:Y,setIsFullscreenModalMode:$,userUnits:K}),k)})})}E.propTypes={app:h.default.shape({id:h.default.number,app:h.default.shape({name:h.default.string})}).isRequired,currentUser:h.default.shape({}).isRequired,isIsolationFeatureEnabled:h.default.bool,onAppContainerClick:h.default.func,onAppFullscreenTransparentMode:h.default.func,onAppRemove:h.default.func,onInnerContainerMouseEnter:h.default.func,onInnerContainerMouseLeave:h.default.func,onIsMaximizedChange:h.default.func,onSettingChange:h.default.func,onSettingsChange:h.default.func,setInnerContainerRefFn:h.default.func,updateCurrentDashboardAppLastAnnotation:h.default.func},E.defaultProps={isIsolationFeatureEnabled:!1,onAppContainerClick:a.noop,onAppFullscreenTransparentMode:a.noop,onAppRemove:void 0,onInnerContainerMouseEnter:a.noop,onInnerContainerMouseLeave:a.noop,onIsMaximizedChange:a.noop,onSettingChange:a.noop,onSettingsChange:a.noop,setInnerContainerRefFn:a.noop,updateCurrentDashboardAppLastAnnotation:a.noop};var R=i.withRouter(E);exports.DevCenterIsolatedApp=R;
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 classNames from 'classnames';\nimport { withRouter } from 'react-router';\nimport { noop } from 'lodash';\nimport PropTypes from 'prop-types';\n\nimport { IsolatedPage, APP_IFRAME_ATTRIBUTE } from './IsolatedPage';\nimport { ISOLATED_PAGE_APP_CONTAINER_ID } from './constants';\n\nimport styles from './DevCenterIsolatedApp.module.css';\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';\n\nfunction DevCenterIsolatedAppComponent({\n isIsolationFeatureEnabled,\n onAppFullscreenTransparentMode,\n onIsMaximizedChange,\n onInnerContainerMouseEnter,\n onInnerContainerMouseLeave,\n onAppContainerClick,\n setInnerContainerRefFn,\n ...props\n}) {\n const devCenterRouter = useMemo(\n () => devCenterUtils.createDevCenterRouter(props.router),\n [props.router?.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(props.router?.location?.query, props.app.id);\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\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 const { top, left, width, height } = fixedSizeContainerRef.current.getBoundingClientRect();\n\n // We need to directly set inner iFrame container sizes together with DC platform styles\n // as passing this as props and using some effect inside of an iframe\n // results in a slight delay, which looks like a quick layout jump\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 onAppFullscreenTransparentMode({ appId: props.app.id, isModeEnabled: true });\n const isBodyScrollVisible = window.innerWidth !== document.body.clientWidth;\n document.body.classList.add(\n 'dc-isolated-app__body-overflow',\n isBodyScrollVisible && styles.compensateScroll\n );\n } else {\n isolatedPageAppContainer.setAttribute('style', '');\n handleAppFullscreenTransparentModeExit();\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 /**\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 appContextValue={appContextValue}\n devCenterRouter={devCenterRouter}\n globalNotificationToastsAPI={window[Symbol.for('notificationToasts')]}\n globalMixpanelEventTracker={window[Symbol.for('logToMixpanel')]}\n onAppContainerClick={onAppContainerClick}\n onIsMaximizedChange={onIsMaximizedChange}\n permissionsContextValue={permissionsContextValue}\n setIsFullscreenModalMode={setIsFullscreenModalMode}\n userUnits={userUnits}\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};\n\nDevCenterIsolatedAppComponent.defaultProps = {\n isIsolationFeatureEnabled: false,\n onAppContainerClick: noop,\n onAppFullscreenTransparentMode: noop,\n onAppRemove: noop,\n onInnerContainerMouseEnter: noop,\n onInnerContainerMouseLeave: noop,\n onIsMaximizedChange: noop,\n onSettingChange: noop,\n onSettingsChange: noop,\n setInnerContainerRefFn: noop,\n updateCurrentDashboardAppLastAnnotation: noop,\n};\n\nexport const DevCenterIsolatedApp = withRouter(DevCenterIsolatedAppComponent);\n"],"names":["DevCenterIsolatedAppComponent","_ref","_props$router","_props$app","_props$app2","_props$app3","_props$app3$app","_props$router2","_props$router2$locati","isIsolationFeatureEnabled","onAppFullscreenTransparentMode","onIsMaximizedChange","onInnerContainerMouseEnter","onInnerContainerMouseLeave","onAppContainerClick","setInnerContainerRefFn","props","_objectWithoutProperties","_excluded","devCenterRouter","useMemo","devCenterUtils","createDevCenterRouter","router","location","isNonIsolatedApp","isCorvaApp","app","package","DCAppComponent","DevCenterAppContainer","IsolatedPage","appKey","app_key","appVersion","getAppVersion","iframeKey","concat","appIframeDocument","useRef","containerRef","fixedSizeContainerRef","fullscreenModeRef","fullscreenModalModeRef","isAppMaximized","query","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","setAttribute","isBodyScrollVisible","window","innerWidth","clientWidth","setContainerRefs","node","_jsx","className","classNames","fixedSizeContainer","ref","children","jsx","onMouseEnter","onMouseLeave","PAGE_NAME","name","container","isInsideNewMobileApp","newMobileAppContainer","containerMaximized","_objectSpread","globalNotificationToastsAPI","Symbol","for","globalMixpanelEventTracker","propTypes","PropTypes","shape","number","string","isRequired","currentUser","bool","func","onAppRemove","onSettingChange","onSettingsChange","updateCurrentDashboardAppLastAnnotation","defaultProps","noop","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 classNames from 'classnames';\nimport { withRouter } from 'react-router';\nimport { noop } from 'lodash';\nimport PropTypes from 'prop-types';\n\nimport { IsolatedPage, APP_IFRAME_ATTRIBUTE } from './IsolatedPage';\nimport { ISOLATED_PAGE_APP_CONTAINER_ID } from './constants';\n\nimport styles from './DevCenterIsolatedApp.module.css';\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';\n\nfunction DevCenterIsolatedAppComponent({\n isIsolationFeatureEnabled,\n onAppFullscreenTransparentMode,\n onIsMaximizedChange,\n onInnerContainerMouseEnter,\n onInnerContainerMouseLeave,\n onAppContainerClick,\n setInnerContainerRefFn,\n ...props\n}) {\n const devCenterRouter = useMemo(\n () => devCenterUtils.createDevCenterRouter(props.router),\n [props.router?.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(props.router?.location?.query, props.app.id);\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\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 const { top, left, width, height } = fixedSizeContainerRef.current.getBoundingClientRect();\n\n // We need to directly set inner iFrame container sizes together with DC platform styles\n // as passing this as props and using some effect inside of an iframe\n // results in a slight delay, which looks like a quick layout jump\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 onAppFullscreenTransparentMode({ appId: props.app.id, isModeEnabled: true });\n const isBodyScrollVisible = window.innerWidth !== document.body.clientWidth;\n document.body.classList.add(\n 'dc-isolated-app__body-overflow',\n isBodyScrollVisible && styles.compensateScroll\n );\n } else {\n isolatedPageAppContainer.setAttribute('style', '');\n handleAppFullscreenTransparentModeExit();\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 /**\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 appContextValue={appContextValue}\n devCenterRouter={devCenterRouter}\n globalNotificationToastsAPI={window[Symbol.for('notificationToasts')]}\n globalMixpanelEventTracker={window[Symbol.for('logToMixpanel')]}\n onAppContainerClick={onAppContainerClick}\n onIsMaximizedChange={onIsMaximizedChange}\n permissionsContextValue={permissionsContextValue}\n setIsFullscreenModalMode={setIsFullscreenModalMode}\n userUnits={userUnits}\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};\n\nDevCenterIsolatedAppComponent.defaultProps = {\n isIsolationFeatureEnabled: false,\n onAppContainerClick: noop,\n onAppFullscreenTransparentMode: noop,\n onAppRemove: undefined,\n onInnerContainerMouseEnter: noop,\n onInnerContainerMouseLeave: noop,\n onIsMaximizedChange: noop,\n onSettingChange: noop,\n onSettingsChange: noop,\n setInnerContainerRefFn: noop,\n updateCurrentDashboardAppLastAnnotation: noop,\n};\n\nexport const DevCenterIsolatedApp = withRouter(DevCenterIsolatedAppComponent);\n"],"names":["DevCenterIsolatedAppComponent","_ref","_props$router","_props$app","_props$app2","_props$app3","_props$app3$app","_props$router2","_props$router2$locati","isIsolationFeatureEnabled","onAppFullscreenTransparentMode","onIsMaximizedChange","onInnerContainerMouseEnter","onInnerContainerMouseLeave","onAppContainerClick","setInnerContainerRefFn","props","_objectWithoutProperties","_excluded","devCenterRouter","useMemo","devCenterUtils","createDevCenterRouter","router","location","isNonIsolatedApp","isCorvaApp","app","package","DCAppComponent","DevCenterAppContainer","IsolatedPage","appKey","app_key","appVersion","getAppVersion","iframeKey","concat","appIframeDocument","useRef","containerRef","fixedSizeContainerRef","fullscreenModeRef","fullscreenModalModeRef","isAppMaximized","query","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","setAttribute","isBodyScrollVisible","window","innerWidth","clientWidth","setContainerRefs","node","_jsx","className","classNames","fixedSizeContainer","ref","children","jsx","onMouseEnter","onMouseLeave","PAGE_NAME","name","container","isInsideNewMobileApp","newMobileAppContainer","containerMaximized","_objectSpread","globalNotificationToastsAPI","Symbol","for","globalMixpanelEventTracker","propTypes","PropTypes","shape","number","string","isRequired","currentUser","bool","func","onAppRemove","onSettingChange","onSettingsChange","updateCurrentDashboardAppLastAnnotation","defaultProps","noop","undefined","DevCenterIsolatedApp","withRouter"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require('./../../../../ext-esm/tslib/tslib.es6.js'),s=require("react/jsx-runtime"),n=require("classnames"),i=require("react"),o=require("moment"),t=require("@material-ui/core"),r=require("../../../TextEndTruncated/TextEndTruncated.js"),c=require("../../../Button/Button.js"),u=require("../DqStatusIcon/DqStatusIcon.js");require("../DqStatusIcon/DqStatusIcon.constants.js");var l=require("../../../AppDqPopover/AppDqPopover.js"),a=require("../../../Menu/Menu.js"),d=require("../../../../components/AppIcon/AppIcon.js"),p=require("../../../../utils/devcenter.js"),m=require("../../../Text/Text.js"),j=require("../../../Accordion/Accordion.js"),I=require("../AppRemoveConfirmationModal/AppRemoveConfirmationModal.js"),q=require("../AssetSelector/AssetSelector.js");require("../AssetSelector/constants.js");var v=require("../../../../constants/segment.js"),x=require("../../../AppCommonsProvider/AppCommonsContext.js"),A=require("../../../UniversalLink/UniversalLink.js"),f=require("./AppTitle.constants.js"),T=require("../../../AppContainer/headerCommon.scss.js"),h=require("./AppTitle.scss.js"),C=require("../../../../icons/iconParkIcons.js"),g=require("../../../../icons/customIcons/icons/AddMessage.js");require("../../../../icons/customIcons/icons/Attention.js"),require("../../../../icons/customIcons/icons/Collapse.js"),require("../../../../icons/customIcons/icons/Dashboard.js"),require("../../../../icons/customIcons/icons/Expand.js"),require("../../../../icons/customIcons/icons/FolderClosed.js"),require("../../../../icons/customIcons/icons/FolderClosedFilled.js"),require("../../../../icons/customIcons/icons/FolderOpened.js"),require("../../../../icons/customIcons/icons/GreaterOrEqual.js"),require("../../../../icons/customIcons/icons/LessOrEqual.js"),require("../../../../icons/customIcons/icons/Search.js"),require("../../../../icons/customIcons/icons/SearchOne.js"),require("../../../../icons/customIcons/icons/Wellhub.js"),require("../../../../icons/customIcons/icons/MultiRuler.js"),require("../../../../icons/customIcons/icons/Checkbox.js"),require("../../../../icons/customIcons/icons/CheckboxChecked.js"),require("../../../../icons/customIcons/icons/CheckboxIndeterminate.js"),require("../../../../icons/customIcons/icons/Radio.js"),require("../../../../icons/customIcons/icons/RadioChecked.js"),require("../../../../icons/customIcons/icons/SimulFrac.js"),require("../../../../icons/customIcons/icons/ZipperFrac.js"),require("../../../../icons/customIcons/icons/CautionFilled.js"),require("../../../../icons/customIcons/icons/MoreApp.js"),require("../../../../icons/customIcons/icons/Pad.js"),require("../../../../icons/customIcons/icons/DrilloutUnit.js"),require("../../../../icons/customIcons/icons/FracFleet.js"),require("../../../../icons/customIcons/icons/Global.js"),require("../../../../icons/customIcons/icons/Program.js"),require("../../../../icons/customIcons/icons/Rig.js"),require("../../../../icons/customIcons/icons/Well.js"),require("../../../../icons/customIcons/icons/Gap.js"),require("../../../../icons/customIcons/icons/Pin.js"),require("../../../../icons/customIcons/icons/CloseOneFilled.js"),require("../../../../icons/customIcons/icons/AttentionFilled.js"),require("../../../../icons/customIcons/icons/CheckOneFilled.js"),require("../../../../icons/customIcons/icons/Archive.js"),require("../../../../icons/customIcons/icons/ArchiveCancel.js"),require("../../../../icons/customIcons/icons/Unarchive.js"),require("../../../../icons/customIcons/icons/Archived.js"),require("../../../../icons/customIcons/icons/InterventionUnit.js"),require("../../../../icons/customIcons/icons/CloudDelete.js"),require("../../../../icons/customIcons/icons/Lasso.js"),require("../../../../icons/customIcons/icons/Radius.js"),require("../../../../clients/subscriptions/constants.js"),require("@babel/runtime/helpers/slicedToArray"),require("@babel/runtime/helpers/asyncToGenerator"),require("@babel/runtime/helpers/defineProperty"),require("@babel/runtime/regenerator"),require("querystring"),require("uuid/v1"),require("lodash"),require("../../../../clients/subscriptions.v1.js"),require("../../../../clients/jsonApi/index.js"),require("../../../../clients/subscriptions/subscriptions-client.factory.js");var b=require("../../../../effects/useOutsideClick.js");require("../../../../utils/index.js");var k=require("../../../../effects/useWellnessAlerts.js");function M(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}require("lodash/get"),require("lodash/isEmpty"),require("lodash/sortBy"),require("../../../../constants/completion.js"),require("../../../../constants/streamSourceType.js"),require("../../../../components/DevCenter/DevCenterAppContainer/components/CommentsSwitch/CommentsSwitchContext.js");var N=M(n),S=M(o),y=function(e){return e&&"asset_id"in e?{name:e.name,id:e.asset_id}:e};exports.AppTitle=function(n){var o,M,D,E,R,F,O,z,L=n.asset,P=n.className,B=n.dqData,_=n.lastUpdate,U=n.title,w=n.disableAssetSelector,H=n.titleMenuActions,G=n.style,W=x.useAppCommonsInternal(),Y=W.app,V=W.appId,Z=W.maximized,J=W.toggleAnnotationsList,K=W.onHelpCenterClick,Q=W.secondaryMenuItems,X=W.appName,$=W.layoutEnvironment,ee=W.isInsideNewMobileApp,se=i.useState(!1),ne=se[0],ie=se[1],oe=i.useRef(),te=i.useRef(),re=i.useRef(null),ce=i.useRef(null),ue=i.useState(!1),le=ue[0],ae=ue[1],de=i.useRef(null),pe=i.useCallback((function(){return ie((function(e){return!e}))}),[]),me=i.useCallback((function(){return ae((function(e){return!e}))}),[]),je=i.useCallback((function(){clearTimeout(oe.current),clearTimeout(te.current),oe.current=setTimeout((function(){ie(!0)}),300)}),[]),Ie=i.useCallback((function(){clearTimeout(oe.current),clearTimeout(te.current),oe.current=setTimeout((function(){ie(!1)}),700)}),[]);b(ce,pe,[re.current]);var qe=(L instanceof Array&&L.length>0||!!L)&&!B&&!ee,ve=k.useWellnessAlerts({isDCApp:qe,appId:V,multiRigAssets:L instanceof Array?L:void 0,asset:L instanceof Array?void 0:y(L),maximized:Z,dashboards:[]}),xe=B||ve,Ae=(qe||!!B)&&!ee,fe=(null===(o=null==xe?void 0:xe.wellnessAlerts)||void 0===o?void 0:o.alertsData)||{},Te=function(e){if(e){if("number"==typeof e){var s=Date.now();return Math.abs(s-e)>Math.abs(s-1e3*e)?S.default.unix(e):S.default(e)}return S.default(e)}return null}(_),he=i.useCallback((function(){me(),null==J||J()}),[J,me]),Ce=i.useCallback((function(){me(),null==K||K()}),[K,me]),ge=i.useState(!1),be=ge[0],ke=ge[1],Me=i.useCallback((function(){me(),ke(!0)}),[me]),Ne=i.useCallback((function(){ke(!1)}),[]),Se=i.useMemo((function(){return[].concat(Q||[]).concat(H||[]).map((function(s){return e.__assign(e.__assign({},s),{onClick:function(){var e;me(),null===(e=s.onClick)||void 0===e||e.call(s)}})}))}),[Q,H,me]),ye=!!(null===(R=null===(E=null===(D=null===(M=Y.package)||void 0===M?void 0:M.manifest)||void 0===D?void 0:D.application)||void 0===E?void 0:E.ui)||void 0===R?void 0:R.multi_rig),De="asset"===(null==$?void 0:$.type),Ee=p.getAppSegment(Y)===v.SEGMENTS.COMPLETION,Re=!(ye||De&&Ee||w),Fe=(null==Te?void 0:Te.isValid())?"Last Update: ".concat(Te.format("MMM D YYYY, hh:mm A")):void 0,Oe=U||X;return ee?s.jsx("div",{className:N.default(h.root,P),children:s.jsx("div",{className:h.title,children:s.jsx(r.TextEndTruncated,{className:N.default(h.titleText),testId:f.AppTitleTestIds.AppNameTestId,children:Oe})})}):s.jsxs("div",{className:N.default(h.root,P),style:G,children:[Ae&&s.jsx(u.DqStatusIcon,{statusBadgeIconType:xe.statusBadgeIconType,className:h.dqBadge,onClick:pe,onMouseEnter:je,onMouseLeave:Ie,ref:re}),s.jsx(c.Button,{type:"tertiary",size:"small",className:h.title,suffix:s.jsx("div",{className:N.default(h.titleChevron,T.titleChevron,le&&h.titleChevronOpen),children:s.jsx(C.DownIcon,{size:16})}),ref:de,onClick:me,children:s.jsx(r.TextEndTruncated,{className:N.default(h.titleText,Ae&&h.withDq),testId:f.AppTitleTestIds.AppNameTestId,children:Oe})}),s.jsx(l.AppDqPopover,{open:ne,anchorEl:re.current,placement:"bottom-start",alertsData:fe,onClose:pe,contentRef:ce,onMouseEnter:je,onMouseLeave:Ie}),s.jsxs(a.Menu,{anchorEl:de.current,open:le,className:h.menuRoot,onClose:me,children:[s.jsxs(A.UniversalLink,{href:"/app-store/app/".concat(null===(F=null==Y?void 0:Y.app)||void 0===F?void 0:F.id),className:h.menuHeader,"data-testid":f.AppTitleTestIds.AppStoreLinkTestId,children:[s.jsx(d.AppIcon,{"data-testid":f.AppTitleTestIds.AppIconTestId,className:h.appIcon,segment:[p.getAppSegment(Y)],iconUrl:null===(z=null===(O=null==Y?void 0:Y.app)||void 0===O?void 0:O.icon)||void 0===z?void 0:z.url,height:40,width:40}),s.jsxs("div",{className:h.menuHeaderText,children:[s.jsx(m.Text,{children:s.jsx(r.TextEndTruncated,{testId:f.AppTitleTestIds.MenuAppNameTestId,children:X})}),s.jsx(m.Text,{size:12,color:"T6",children:"Open in Appstore"})]})]}),s.jsx("div",{className:h.divider}),Re&&s.jsx(a.Menu.Item,{size:"large",disableClickEffect:!0,className:h.assetMenuItem,children:s.jsx(j.Accordion,{title:s.jsxs("div",{className:h.accordionTitle,children:[s.jsx(C.SettingOneIcon,{size:24,className:h.accordionIcon}),"Change Asset"]}),iconPosition:"end",titleHover:!1,testId:f.AppTitleTestIds.AssetSelectorAccordionTestId,children:s.jsx(q.AssetSelector,{})})}),null==Se?void 0:Se.map((function(e,n){return s.jsxs(i.Fragment,{children:[s.jsx("div",{className:h.divider}),s.jsx(a.Menu.Item,{size:"large",onClick:e.onClick,prefix:"string"==typeof e.icon?s.jsx(t.Icon,{children:e.icon}):e.icon,testId:f.AppTitleTestIds.AdditionalSelectionTestId,children:e.title})]},n)})),K&&s.jsxs(s.Fragment,{children:[s.jsx("div",{className:h.divider}),s.jsx(a.Menu.Item,{size:"large",prefix:s.jsx(C.HelpIcon,{}),onClick:Ce,testId:f.AppTitleTestIds.HelpCenterLinkTestId,children:"Help Center"})]}),J&&s.jsxs(s.Fragment,{children:[s.jsx("div",{className:h.divider}),s.jsx(a.Menu.Item,{size:"large",prefix:s.jsx(g.AddMessageCustomIcon,{fill:"currentColor"}),onClick:he,testId:f.AppTitleTestIds.AnnotationsTestId,children:"Add Annotation"})]}),s.jsx("div",{className:h.divider}),s.jsx(a.Menu.Item,{size:"large",prefix:s.jsx(C.DeleteFourIcon,{}),type:"destructive",onClick:Me,testId:f.AppTitleTestIds.RemoveAppTestId,children:"Remove App"}),(null==Te?void 0:Te.isValid())&&s.jsxs(s.Fragment,{children:[s.jsx("div",{className:h.divider}),s.jsxs("div",{className:h.footer,children:[s.jsx(u.DqStatusIcon,{statusBadgeIconType:xe.statusBadgeIconType,className:h.footerDqBadge,ref:re}),Fe&&s.jsx(m.Text,{size:12,color:"T6",children:Fe})]})]})]}),s.jsx(I.AppRemoveConfirmationModal,{open:be,onClose:Ne})]})};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require('./../../../../ext-esm/tslib/tslib.es6.js'),s=require("react/jsx-runtime"),n=require("classnames"),i=require("react"),o=require("moment"),t=require("@material-ui/core"),r=require("../../../TextEndTruncated/TextEndTruncated.js"),c=require("../../../Button/Button.js"),u=require("../DqStatusIcon/DqStatusIcon.js");require("../DqStatusIcon/DqStatusIcon.constants.js");var l=require("../../../AppDqPopover/AppDqPopover.js"),a=require("../../../Menu/Menu.js"),d=require("../../../../components/AppIcon/AppIcon.js"),p=require("../../../../utils/devcenter.js"),m=require("../../../Text/Text.js"),j=require("../../../Accordion/Accordion.js"),I=require("../AppRemoveConfirmationModal/AppRemoveConfirmationModal.js"),q=require("../AssetSelector/AssetSelector.js");require("../AssetSelector/constants.js");var v=require("../../../../constants/segment.js"),x=require("../../../AppCommonsProvider/AppCommonsContext.js"),A=require("../../../UniversalLink/UniversalLink.js"),f=require("./AppTitle.constants.js"),h=require("../../../AppContainer/headerCommon.scss.js"),T=require("./AppTitle.scss.js"),C=require("../../../../icons/iconParkIcons.js"),g=require("../../../../icons/customIcons/icons/AddMessage.js");require("../../../../icons/customIcons/icons/Attention.js"),require("../../../../icons/customIcons/icons/Collapse.js"),require("../../../../icons/customIcons/icons/Dashboard.js"),require("../../../../icons/customIcons/icons/Expand.js"),require("../../../../icons/customIcons/icons/FolderClosed.js"),require("../../../../icons/customIcons/icons/FolderClosedFilled.js"),require("../../../../icons/customIcons/icons/FolderOpened.js"),require("../../../../icons/customIcons/icons/GreaterOrEqual.js"),require("../../../../icons/customIcons/icons/LessOrEqual.js"),require("../../../../icons/customIcons/icons/Search.js"),require("../../../../icons/customIcons/icons/SearchOne.js"),require("../../../../icons/customIcons/icons/Wellhub.js"),require("../../../../icons/customIcons/icons/MultiRuler.js"),require("../../../../icons/customIcons/icons/Checkbox.js"),require("../../../../icons/customIcons/icons/CheckboxChecked.js"),require("../../../../icons/customIcons/icons/CheckboxIndeterminate.js"),require("../../../../icons/customIcons/icons/Radio.js"),require("../../../../icons/customIcons/icons/RadioChecked.js"),require("../../../../icons/customIcons/icons/SimulFrac.js"),require("../../../../icons/customIcons/icons/ZipperFrac.js"),require("../../../../icons/customIcons/icons/CautionFilled.js"),require("../../../../icons/customIcons/icons/MoreApp.js"),require("../../../../icons/customIcons/icons/Pad.js"),require("../../../../icons/customIcons/icons/DrilloutUnit.js"),require("../../../../icons/customIcons/icons/FracFleet.js"),require("../../../../icons/customIcons/icons/Global.js"),require("../../../../icons/customIcons/icons/Program.js"),require("../../../../icons/customIcons/icons/Rig.js"),require("../../../../icons/customIcons/icons/Well.js"),require("../../../../icons/customIcons/icons/Gap.js"),require("../../../../icons/customIcons/icons/Pin.js"),require("../../../../icons/customIcons/icons/CloseOneFilled.js"),require("../../../../icons/customIcons/icons/AttentionFilled.js"),require("../../../../icons/customIcons/icons/CheckOneFilled.js"),require("../../../../icons/customIcons/icons/Archive.js"),require("../../../../icons/customIcons/icons/ArchiveCancel.js"),require("../../../../icons/customIcons/icons/Unarchive.js"),require("../../../../icons/customIcons/icons/Archived.js"),require("../../../../icons/customIcons/icons/InterventionUnit.js"),require("../../../../icons/customIcons/icons/CloudDelete.js"),require("../../../../icons/customIcons/icons/Lasso.js"),require("../../../../icons/customIcons/icons/Radius.js"),require("../../../../clients/subscriptions/constants.js"),require("@babel/runtime/helpers/slicedToArray"),require("@babel/runtime/helpers/asyncToGenerator"),require("@babel/runtime/helpers/defineProperty"),require("@babel/runtime/regenerator"),require("querystring"),require("uuid/v1"),require("lodash"),require("../../../../clients/subscriptions.v1.js"),require("../../../../clients/jsonApi/index.js"),require("../../../../clients/subscriptions/subscriptions-client.factory.js");var b=require("../../../../effects/useOutsideClick.js");require("../../../../utils/index.js");var k=require("../../../../effects/useWellnessAlerts.js");function M(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}require("lodash/get"),require("lodash/isEmpty"),require("lodash/sortBy"),require("../../../../constants/completion.js"),require("../../../../constants/streamSourceType.js"),require("../../../../components/DevCenter/DevCenterAppContainer/components/CommentsSwitch/CommentsSwitchContext.js");var N=M(n),S=M(o),y=function(e){return e&&"asset_id"in e?{name:e.name,id:e.asset_id}:e};exports.AppTitle=function(n){var o,M,D,R,E,F,O,z,L=n.asset,P=n.className,B=n.dqData,_=n.lastUpdate,U=n.title,w=n.disableAssetSelector,H=n.titleMenuActions,G=n.style,W=x.useAppCommonsInternal(),Y=W.app,V=W.appId,Z=W.maximized,J=W.toggleAnnotationsList,K=W.onHelpCenterClick,Q=W.secondaryMenuItems,X=W.appName,$=W.layoutEnvironment,ee=W.isInsideNewMobileApp,se=W.onAppRemove,ne=i.useState(!1),ie=ne[0],oe=ne[1],te=i.useRef(),re=i.useRef(),ce=i.useRef(null),ue=i.useRef(null),le=i.useState(!1),ae=le[0],de=le[1],pe=i.useRef(null),me=i.useCallback((function(){return oe((function(e){return!e}))}),[]),je=i.useCallback((function(){return de((function(e){return!e}))}),[]),Ie=i.useCallback((function(){clearTimeout(te.current),clearTimeout(re.current),te.current=setTimeout((function(){oe(!0)}),300)}),[]),qe=i.useCallback((function(){clearTimeout(te.current),clearTimeout(re.current),te.current=setTimeout((function(){oe(!1)}),700)}),[]);b(ue,me,[ce.current]);var ve=(L instanceof Array&&L.length>0||!!L)&&!B&&!ee,xe=k.useWellnessAlerts({isDCApp:ve,appId:V,multiRigAssets:L instanceof Array?L:void 0,asset:L instanceof Array?void 0:y(L),maximized:Z,dashboards:[]}),Ae=B||xe,fe=(ve||!!B)&&!ee,he=(null===(o=null==Ae?void 0:Ae.wellnessAlerts)||void 0===o?void 0:o.alertsData)||{},Te=function(e){if(e){if("number"==typeof e){var s=Date.now();return Math.abs(s-e)>Math.abs(s-1e3*e)?S.default.unix(e):S.default(e)}return S.default(e)}return null}(_),Ce=i.useCallback((function(){je(),null==J||J()}),[J,je]),ge=i.useCallback((function(){je(),null==K||K()}),[K,je]),be=i.useState(!1),ke=be[0],Me=be[1],Ne=i.useCallback((function(){je(),Me(!0)}),[je]),Se=i.useCallback((function(){Me(!1)}),[]),ye=i.useMemo((function(){return[].concat(Q||[]).concat(H||[]).map((function(s){return e.__assign(e.__assign({},s),{onClick:function(){var e;je(),null===(e=s.onClick)||void 0===e||e.call(s)}})}))}),[Q,H,je]),De=!!(null===(E=null===(R=null===(D=null===(M=Y.package)||void 0===M?void 0:M.manifest)||void 0===D?void 0:D.application)||void 0===R?void 0:R.ui)||void 0===E?void 0:E.multi_rig),Re="asset"===(null==$?void 0:$.type),Ee=p.getAppSegment(Y)===v.SEGMENTS.COMPLETION,Fe=!(De||Re&&Ee||w),Oe=(null==Te?void 0:Te.isValid())?"Last Update: ".concat(Te.format("MMM D YYYY, hh:mm A")):void 0,ze=U||X;return ee?s.jsx("div",{className:N.default(T.root,P),children:s.jsx("div",{className:T.title,children:s.jsx(r.TextEndTruncated,{className:N.default(T.titleText),testId:f.AppTitleTestIds.AppNameTestId,children:ze})})}):s.jsxs("div",{className:N.default(T.root,P),style:G,children:[fe&&s.jsx(u.DqStatusIcon,{statusBadgeIconType:Ae.statusBadgeIconType,className:T.dqBadge,onClick:me,onMouseEnter:Ie,onMouseLeave:qe,ref:ce}),s.jsx(c.Button,{type:"tertiary",size:"small",className:T.title,suffix:s.jsx("div",{className:N.default(T.titleChevron,h.titleChevron,ae&&T.titleChevronOpen),children:s.jsx(C.DownIcon,{size:16})}),ref:pe,onClick:je,children:s.jsx(r.TextEndTruncated,{className:N.default(T.titleText,fe&&T.withDq),testId:f.AppTitleTestIds.AppNameTestId,children:ze})}),s.jsx(l.AppDqPopover,{open:ie,anchorEl:ce.current,placement:"bottom-start",alertsData:he,onClose:me,contentRef:ue,onMouseEnter:Ie,onMouseLeave:qe}),s.jsxs(a.Menu,{anchorEl:pe.current,open:ae,className:T.menuRoot,onClose:je,children:[s.jsxs(A.UniversalLink,{href:"/app-store/app/".concat(null===(F=null==Y?void 0:Y.app)||void 0===F?void 0:F.id),className:T.menuHeader,"data-testid":f.AppTitleTestIds.AppStoreLinkTestId,children:[s.jsx(d.AppIcon,{"data-testid":f.AppTitleTestIds.AppIconTestId,className:T.appIcon,segment:[p.getAppSegment(Y)],iconUrl:null===(z=null===(O=null==Y?void 0:Y.app)||void 0===O?void 0:O.icon)||void 0===z?void 0:z.url,height:40,width:40}),s.jsxs("div",{className:T.menuHeaderText,children:[s.jsx(m.Text,{children:s.jsx(r.TextEndTruncated,{testId:f.AppTitleTestIds.MenuAppNameTestId,children:X})}),s.jsx(m.Text,{size:12,color:"T6",children:"Open in Appstore"})]})]}),s.jsx("div",{className:T.divider}),Fe&&s.jsx(a.Menu.Item,{size:"large",disableClickEffect:!0,className:T.assetMenuItem,children:s.jsx(j.Accordion,{title:s.jsxs("div",{className:T.accordionTitle,children:[s.jsx(C.SettingOneIcon,{size:24,className:T.accordionIcon}),"Change Asset"]}),iconPosition:"end",titleHover:!1,testId:f.AppTitleTestIds.AssetSelectorAccordionTestId,children:s.jsx(q.AssetSelector,{})})}),null==ye?void 0:ye.map((function(e,n){return s.jsxs(i.Fragment,{children:[s.jsx("div",{className:T.divider}),s.jsx(a.Menu.Item,{size:"large",onClick:e.onClick,prefix:"string"==typeof e.icon?s.jsx(t.Icon,{children:e.icon}):e.icon,testId:f.AppTitleTestIds.AdditionalSelectionTestId,children:e.title})]},n)})),K&&s.jsxs(s.Fragment,{children:[s.jsx("div",{className:T.divider}),s.jsx(a.Menu.Item,{size:"large",prefix:s.jsx(C.HelpIcon,{}),onClick:ge,testId:f.AppTitleTestIds.HelpCenterLinkTestId,children:"Help Center"})]}),J&&s.jsxs(s.Fragment,{children:[s.jsx("div",{className:T.divider}),s.jsx(a.Menu.Item,{size:"large",prefix:s.jsx(g.AddMessageCustomIcon,{fill:"currentColor"}),onClick:Ce,testId:f.AppTitleTestIds.AnnotationsTestId,children:"Add Annotation"})]}),se&&s.jsxs(s.Fragment,{children:[s.jsx("div",{className:T.divider}),s.jsx(a.Menu.Item,{size:"large",prefix:s.jsx(C.DeleteFourIcon,{}),type:"destructive",onClick:Ne,testId:f.AppTitleTestIds.RemoveAppTestId,children:"Remove App"})]}),(null==Te?void 0:Te.isValid())&&s.jsxs(s.Fragment,{children:[s.jsx("div",{className:T.divider}),s.jsxs("div",{className:T.footer,children:[s.jsx(u.DqStatusIcon,{statusBadgeIconType:Ae.statusBadgeIconType,className:T.footerDqBadge,ref:ce}),Oe&&s.jsx(m.Text,{size:12,color:"T6",children:Oe})]})]})]}),s.jsx(I.AppRemoveConfirmationModal,{open:ke,onClose:Se})]})};
2
2
  //# sourceMappingURL=AppTitle.js.map
@@ -1,2 +1,2 @@
1
- import e from"@babel/runtime/helpers/defineProperty";import n from"@babel/runtime/helpers/slicedToArray";import r from"@babel/runtime/helpers/objectWithoutProperties";import{useMemo as t,useRef as o,useState as i,useEffect as a,useContext as p,useCallback as s}from"react";import l from"classnames";import{withRouter as c}from"react-router";import{noop as u}from"lodash";import d from"prop-types";import{APP_IFRAME_ATTRIBUTE as m,IsolatedPage as v}from"./IsolatedPage.js";import{ISOLATED_PAGE_APP_CONTAINER_ID as f}from"./constants.js";import C from"./DevCenterIsolatedApp.module.css.js";import b from"../AppContext.js";import g 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 j,subscribeForUserUnitsUpdates as A}from"../../../utils/index.js";import"../AppHeader/AppHeader.js";import"../AppSideBar/AppSideBar.js";import"../AppsDataProvider/AppsDataProvider.js";import h 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{jsx as M}from"react/jsx-runtime";import"./DevCenterIsolatedAppPage.js";import{getAppVersion as y}from"../DevCenterAppContainer/utils.js";import{isInsideNewMobileApp as I}from"../../../utils/mobileDetect.js";import{createDevCenterRouter as x,isCorvaApp as P,isIsolationEnabledInPackageManifest as w,isAppMaximized as D}from"../../../utils/devcenter.js";var O=["isIsolationFeatureEnabled","onAppFullscreenTransparentMode","onIsMaximizedChange","onInnerContainerMouseEnter","onInnerContainerMouseLeave","onAppContainerClick","setInnerContainerRefFn"];function S(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function L(n){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?S(Object(t),!0).forEach((function(r){e(n,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):S(Object(t)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(t,e))}))}return n}function E(e){var c,u,d,S,E,F,T,R=e.isIsolationFeatureEnabled,k=e.onAppFullscreenTransparentMode,z=e.onIsMaximizedChange,B=e.onInnerContainerMouseEnter,_=e.onInnerContainerMouseLeave,N=e.onAppContainerClick,q=e.setInnerContainerRefFn,U=r(e,O),W=t((function(){return x(U.router)}),[null===(c=U.router)||void 0===c?void 0:c.location]),H=P(null==U||null===(u=U.app)||void 0===u?void 0:u.app)&&!w(null==U||null===(d=U.app)||void 0===d?void 0:d.package)||!R,V=H?h:v,G=null===(S=U.app)||void 0===S||null===(E=S.app)||void 0===E?void 0:E.app_key,J=y(U.app),K="".concat(G,"-").concat(J),Q=o(),X=o(),Y=o(),Z=o(!1),$=o(!1),ee=D(null===(F=U.router)||void 0===F||null===(T=F.location)||void 0===T?void 0:T.query,U.app.id),ne=o(ee);ne.current=ee;var re=i(j()),te=n(re,2),oe=te[0],ie=te[1];a((function(){var e=A((function(e){return ie(e)}));return function(){return e()}}),[]);var ae=p(b),pe=g();function se(){k({appId:U.app.id,isModeEnabled:!1}),document.body.classList.remove("dc-isolated-app__body-overflow",C.compensateScroll)}var le=s((function(e){var n,r,t,o,i,a=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!R||H||ne.current&&!Z.current||Z.current===e){var p;a&&$.current!==a&&($.current=a,null===(p=X.current)||void 0===p||p.classList.add(C.containerMaximizedTransparentModal))}else{var s,l=e?"add":"remove";if(null===(n=X.current)||void 0===n||n.classList[l](C.containerMaximizedTransparent),a||"remove"===l)null===(s=X.current)||void 0===s||s.classList[l](C.containerMaximizedTransparentModal);Q.current=null===(r=X.current)||void 0===r||null===(t=r.querySelector("[".concat(m,"]")))||void 0===t||null===(o=t.contentWindow)||void 0===o?void 0:o.document;var c=null===(i=Q.current)||void 0===i?void 0:i.getElementById(f);if(c){if(e){var u=Y.current.getBoundingClientRect(),d=u.top,v=u.left,b=u.width,g=u.height;c.setAttribute("style","\n top: ".concat(d,"px;\n left: ").concat(v,"px;\n width: ").concat(b,"px;\n height: ").concat(g,"px;\n position: absolute;\n ")),k({appId:U.app.id,isModeEnabled:!0});var j=window.innerWidth!==document.body.clientWidth;document.body.classList.add("dc-isolated-app__body-overflow",j&&C.compensateScroll)}else c.setAttribute("style",""),se();Z.current=e,$.current=a}}}),[R,H,ne]);a((function(){return se}),[]),a((function(){ee&&Z.current&&le(!1)}),[ee]);var ce=s((function(e){X.current=e,q(e)}),[]);return M("div",{className:l("dc-isolated-app",C.fixedSizeContainer),ref:Y,children:M("div",{ref:ce,onMouseEnter:B,onMouseLeave:_,"data-testid":"".concat("DevCenter_AppContainer","_").concat(U.app.app.name),className:l(C.container,I&&C.newMobileAppContainer,ee&&C.containerMaximized),children:M(V,L(L({},U),{},{appContextValue:ae,devCenterRouter:W,globalNotificationToastsAPI:window[Symbol.for("notificationToasts")],globalMixpanelEventTracker:window[Symbol.for("logToMixpanel")],onAppContainerClick:N,onIsMaximizedChange:z,permissionsContextValue:pe,setIsFullscreenModalMode:le,userUnits:oe}),K)})})}E.propTypes={app:d.shape({id:d.number,app:d.shape({name:d.string})}).isRequired,currentUser:d.shape({}).isRequired,isIsolationFeatureEnabled:d.bool,onAppContainerClick:d.func,onAppFullscreenTransparentMode:d.func,onAppRemove:d.func,onInnerContainerMouseEnter:d.func,onInnerContainerMouseLeave:d.func,onIsMaximizedChange:d.func,onSettingChange:d.func,onSettingsChange:d.func,setInnerContainerRefFn:d.func,updateCurrentDashboardAppLastAnnotation:d.func},E.defaultProps={isIsolationFeatureEnabled:!1,onAppContainerClick:u,onAppFullscreenTransparentMode:u,onAppRemove:u,onInnerContainerMouseEnter:u,onInnerContainerMouseLeave:u,onIsMaximizedChange:u,onSettingChange:u,onSettingsChange:u,setInnerContainerRefFn:u,updateCurrentDashboardAppLastAnnotation:u};var F=c(E);export{F as DevCenterIsolatedApp};
1
+ import e from"@babel/runtime/helpers/defineProperty";import n from"@babel/runtime/helpers/slicedToArray";import r from"@babel/runtime/helpers/objectWithoutProperties";import{useMemo as t,useRef as o,useState as i,useEffect as a,useContext as p,useCallback as s}from"react";import l from"classnames";import{withRouter as c}from"react-router";import{noop as u}from"lodash";import d from"prop-types";import{APP_IFRAME_ATTRIBUTE as m,IsolatedPage as v}from"./IsolatedPage.js";import{ISOLATED_PAGE_APP_CONTAINER_ID as f}from"./constants.js";import C from"./DevCenterIsolatedApp.module.css.js";import b from"../AppContext.js";import g 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 j,subscribeForUserUnitsUpdates as A}from"../../../utils/index.js";import"../AppHeader/AppHeader.js";import"../AppSideBar/AppSideBar.js";import"../AppsDataProvider/AppsDataProvider.js";import h 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{jsx as M}from"react/jsx-runtime";import"./DevCenterIsolatedAppPage.js";import{getAppVersion as y}from"../DevCenterAppContainer/utils.js";import{isInsideNewMobileApp as I}from"../../../utils/mobileDetect.js";import{createDevCenterRouter as x,isCorvaApp as P,isIsolationEnabledInPackageManifest as w,isAppMaximized as D}from"../../../utils/devcenter.js";var O=["isIsolationFeatureEnabled","onAppFullscreenTransparentMode","onIsMaximizedChange","onInnerContainerMouseEnter","onInnerContainerMouseLeave","onAppContainerClick","setInnerContainerRefFn"];function S(e,n){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var t=Object.getOwnPropertySymbols(e);n&&(t=t.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),r.push.apply(r,t)}return r}function L(n){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?S(Object(t),!0).forEach((function(r){e(n,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):S(Object(t)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(t,e))}))}return n}function E(e){var c,u,d,S,E,F,T,R=e.isIsolationFeatureEnabled,k=e.onAppFullscreenTransparentMode,z=e.onIsMaximizedChange,B=e.onInnerContainerMouseEnter,_=e.onInnerContainerMouseLeave,N=e.onAppContainerClick,q=e.setInnerContainerRefFn,U=r(e,O),W=t((function(){return x(U.router)}),[null===(c=U.router)||void 0===c?void 0:c.location]),H=P(null==U||null===(u=U.app)||void 0===u?void 0:u.app)&&!w(null==U||null===(d=U.app)||void 0===d?void 0:d.package)||!R,V=H?h:v,G=null===(S=U.app)||void 0===S||null===(E=S.app)||void 0===E?void 0:E.app_key,J=y(U.app),K="".concat(G,"-").concat(J),Q=o(),X=o(),Y=o(),Z=o(!1),$=o(!1),ee=D(null===(F=U.router)||void 0===F||null===(T=F.location)||void 0===T?void 0:T.query,U.app.id),ne=o(ee);ne.current=ee;var re=i(j()),te=n(re,2),oe=te[0],ie=te[1];a((function(){var e=A((function(e){return ie(e)}));return function(){return e()}}),[]);var ae=p(b),pe=g();function se(){k({appId:U.app.id,isModeEnabled:!1}),document.body.classList.remove("dc-isolated-app__body-overflow",C.compensateScroll)}var le=s((function(e){var n,r,t,o,i,a=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!R||H||ne.current&&!Z.current||Z.current===e){var p;a&&$.current!==a&&($.current=a,null===(p=X.current)||void 0===p||p.classList.add(C.containerMaximizedTransparentModal))}else{var s,l=e?"add":"remove";if(null===(n=X.current)||void 0===n||n.classList[l](C.containerMaximizedTransparent),a||"remove"===l)null===(s=X.current)||void 0===s||s.classList[l](C.containerMaximizedTransparentModal);Q.current=null===(r=X.current)||void 0===r||null===(t=r.querySelector("[".concat(m,"]")))||void 0===t||null===(o=t.contentWindow)||void 0===o?void 0:o.document;var c=null===(i=Q.current)||void 0===i?void 0:i.getElementById(f);if(c){if(e){var u=Y.current.getBoundingClientRect(),d=u.top,v=u.left,b=u.width,g=u.height;c.setAttribute("style","\n top: ".concat(d,"px;\n left: ").concat(v,"px;\n width: ").concat(b,"px;\n height: ").concat(g,"px;\n position: absolute;\n ")),k({appId:U.app.id,isModeEnabled:!0});var j=window.innerWidth!==document.body.clientWidth;document.body.classList.add("dc-isolated-app__body-overflow",j&&C.compensateScroll)}else c.setAttribute("style",""),se();Z.current=e,$.current=a}}}),[R,H,ne]);a((function(){return se}),[]),a((function(){ee&&Z.current&&le(!1)}),[ee]);var ce=s((function(e){X.current=e,q(e)}),[]);return M("div",{className:l("dc-isolated-app",C.fixedSizeContainer),ref:Y,children:M("div",{ref:ce,onMouseEnter:B,onMouseLeave:_,"data-testid":"".concat("DevCenter_AppContainer","_").concat(U.app.app.name),className:l(C.container,I&&C.newMobileAppContainer,ee&&C.containerMaximized),children:M(V,L(L({},U),{},{appContextValue:ae,devCenterRouter:W,globalNotificationToastsAPI:window[Symbol.for("notificationToasts")],globalMixpanelEventTracker:window[Symbol.for("logToMixpanel")],onAppContainerClick:N,onIsMaximizedChange:z,permissionsContextValue:pe,setIsFullscreenModalMode:le,userUnits:oe}),K)})})}E.propTypes={app:d.shape({id:d.number,app:d.shape({name:d.string})}).isRequired,currentUser:d.shape({}).isRequired,isIsolationFeatureEnabled:d.bool,onAppContainerClick:d.func,onAppFullscreenTransparentMode:d.func,onAppRemove:d.func,onInnerContainerMouseEnter:d.func,onInnerContainerMouseLeave:d.func,onIsMaximizedChange:d.func,onSettingChange:d.func,onSettingsChange:d.func,setInnerContainerRefFn:d.func,updateCurrentDashboardAppLastAnnotation:d.func},E.defaultProps={isIsolationFeatureEnabled:!1,onAppContainerClick:u,onAppFullscreenTransparentMode:u,onAppRemove:void 0,onInnerContainerMouseEnter:u,onInnerContainerMouseLeave:u,onIsMaximizedChange:u,onSettingChange:u,onSettingsChange:u,setInnerContainerRefFn:u,updateCurrentDashboardAppLastAnnotation:u};var F=c(E);export{F 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 classNames from 'classnames';\nimport { withRouter } from 'react-router';\nimport { noop } from 'lodash';\nimport PropTypes from 'prop-types';\n\nimport { IsolatedPage, APP_IFRAME_ATTRIBUTE } from './IsolatedPage';\nimport { ISOLATED_PAGE_APP_CONTAINER_ID } from './constants';\n\nimport styles from './DevCenterIsolatedApp.module.css';\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';\n\nfunction DevCenterIsolatedAppComponent({\n isIsolationFeatureEnabled,\n onAppFullscreenTransparentMode,\n onIsMaximizedChange,\n onInnerContainerMouseEnter,\n onInnerContainerMouseLeave,\n onAppContainerClick,\n setInnerContainerRefFn,\n ...props\n}) {\n const devCenterRouter = useMemo(\n () => devCenterUtils.createDevCenterRouter(props.router),\n [props.router?.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(props.router?.location?.query, props.app.id);\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\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 const { top, left, width, height } = fixedSizeContainerRef.current.getBoundingClientRect();\n\n // We need to directly set inner iFrame container sizes together with DC platform styles\n // as passing this as props and using some effect inside of an iframe\n // results in a slight delay, which looks like a quick layout jump\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 onAppFullscreenTransparentMode({ appId: props.app.id, isModeEnabled: true });\n const isBodyScrollVisible = window.innerWidth !== document.body.clientWidth;\n document.body.classList.add(\n 'dc-isolated-app__body-overflow',\n isBodyScrollVisible && styles.compensateScroll\n );\n } else {\n isolatedPageAppContainer.setAttribute('style', '');\n handleAppFullscreenTransparentModeExit();\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 /**\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 appContextValue={appContextValue}\n devCenterRouter={devCenterRouter}\n globalNotificationToastsAPI={window[Symbol.for('notificationToasts')]}\n globalMixpanelEventTracker={window[Symbol.for('logToMixpanel')]}\n onAppContainerClick={onAppContainerClick}\n onIsMaximizedChange={onIsMaximizedChange}\n permissionsContextValue={permissionsContextValue}\n setIsFullscreenModalMode={setIsFullscreenModalMode}\n userUnits={userUnits}\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};\n\nDevCenterIsolatedAppComponent.defaultProps = {\n isIsolationFeatureEnabled: false,\n onAppContainerClick: noop,\n onAppFullscreenTransparentMode: noop,\n onAppRemove: noop,\n onInnerContainerMouseEnter: noop,\n onInnerContainerMouseLeave: noop,\n onIsMaximizedChange: noop,\n onSettingChange: noop,\n onSettingsChange: noop,\n setInnerContainerRefFn: noop,\n updateCurrentDashboardAppLastAnnotation: noop,\n};\n\nexport const DevCenterIsolatedApp = withRouter(DevCenterIsolatedAppComponent);\n"],"names":["DevCenterIsolatedAppComponent","_ref","_props$router","_props$app","_props$app2","_props$app3","_props$app3$app","_props$router2","_props$router2$locati","isIsolationFeatureEnabled","onAppFullscreenTransparentMode","onIsMaximizedChange","onInnerContainerMouseEnter","onInnerContainerMouseLeave","onAppContainerClick","setInnerContainerRefFn","props","_objectWithoutProperties","_excluded","devCenterRouter","useMemo","devCenterUtils","router","location","isNonIsolatedApp","app","package","DCAppComponent","DevCenterAppContainer","IsolatedPage","appKey","app_key","appVersion","getAppVersion","iframeKey","concat","appIframeDocument","useRef","containerRef","fixedSizeContainerRef","fullscreenModeRef","fullscreenModalModeRef","isAppMaximized","query","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","setAttribute","isBodyScrollVisible","window","innerWidth","clientWidth","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","onAppRemove","onSettingChange","onSettingsChange","updateCurrentDashboardAppLastAnnotation","defaultProps","noop","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 classNames from 'classnames';\nimport { withRouter } from 'react-router';\nimport { noop } from 'lodash';\nimport PropTypes from 'prop-types';\n\nimport { IsolatedPage, APP_IFRAME_ATTRIBUTE } from './IsolatedPage';\nimport { ISOLATED_PAGE_APP_CONTAINER_ID } from './constants';\n\nimport styles from './DevCenterIsolatedApp.module.css';\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';\n\nfunction DevCenterIsolatedAppComponent({\n isIsolationFeatureEnabled,\n onAppFullscreenTransparentMode,\n onIsMaximizedChange,\n onInnerContainerMouseEnter,\n onInnerContainerMouseLeave,\n onAppContainerClick,\n setInnerContainerRefFn,\n ...props\n}) {\n const devCenterRouter = useMemo(\n () => devCenterUtils.createDevCenterRouter(props.router),\n [props.router?.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(props.router?.location?.query, props.app.id);\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\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 const { top, left, width, height } = fixedSizeContainerRef.current.getBoundingClientRect();\n\n // We need to directly set inner iFrame container sizes together with DC platform styles\n // as passing this as props and using some effect inside of an iframe\n // results in a slight delay, which looks like a quick layout jump\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 onAppFullscreenTransparentMode({ appId: props.app.id, isModeEnabled: true });\n const isBodyScrollVisible = window.innerWidth !== document.body.clientWidth;\n document.body.classList.add(\n 'dc-isolated-app__body-overflow',\n isBodyScrollVisible && styles.compensateScroll\n );\n } else {\n isolatedPageAppContainer.setAttribute('style', '');\n handleAppFullscreenTransparentModeExit();\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 /**\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 appContextValue={appContextValue}\n devCenterRouter={devCenterRouter}\n globalNotificationToastsAPI={window[Symbol.for('notificationToasts')]}\n globalMixpanelEventTracker={window[Symbol.for('logToMixpanel')]}\n onAppContainerClick={onAppContainerClick}\n onIsMaximizedChange={onIsMaximizedChange}\n permissionsContextValue={permissionsContextValue}\n setIsFullscreenModalMode={setIsFullscreenModalMode}\n userUnits={userUnits}\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};\n\nDevCenterIsolatedAppComponent.defaultProps = {\n isIsolationFeatureEnabled: false,\n onAppContainerClick: noop,\n onAppFullscreenTransparentMode: noop,\n onAppRemove: undefined,\n onInnerContainerMouseEnter: noop,\n onInnerContainerMouseLeave: noop,\n onIsMaximizedChange: noop,\n onSettingChange: noop,\n onSettingsChange: noop,\n setInnerContainerRefFn: noop,\n updateCurrentDashboardAppLastAnnotation: noop,\n};\n\nexport const DevCenterIsolatedApp = withRouter(DevCenterIsolatedAppComponent);\n"],"names":["DevCenterIsolatedAppComponent","_ref","_props$router","_props$app","_props$app2","_props$app3","_props$app3$app","_props$router2","_props$router2$locati","isIsolationFeatureEnabled","onAppFullscreenTransparentMode","onIsMaximizedChange","onInnerContainerMouseEnter","onInnerContainerMouseLeave","onAppContainerClick","setInnerContainerRefFn","props","_objectWithoutProperties","_excluded","devCenterRouter","useMemo","devCenterUtils","router","location","isNonIsolatedApp","app","package","DCAppComponent","DevCenterAppContainer","IsolatedPage","appKey","app_key","appVersion","getAppVersion","iframeKey","concat","appIframeDocument","useRef","containerRef","fixedSizeContainerRef","fullscreenModeRef","fullscreenModalModeRef","isAppMaximized","query","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","setAttribute","isBodyScrollVisible","window","innerWidth","clientWidth","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","onAppRemove","onSettingChange","onSettingsChange","updateCurrentDashboardAppLastAnnotation","defaultProps","noop","undefined","DevCenterIsolatedApp","withRouter"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AppTitle.d.ts","sourceRoot":"","sources":["../../../../../src/componentsV2/AppHeader/V3/AppTitle/AppTitle.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAY,SAAS,EAA0C,MAAM,OAAO,CAAC;AAMpF,OAAO,EAAE,KAAK,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAa/E,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAqB/C,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,2BAA2B,CAAC;IACrC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACpC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,gBAAgB,CAAC,EAAE,eAAe,EAAE,CAAC;IACrC,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B,CAAC;AAwBF,eAAO,MAAM,QAAQ,GAAI,iGAStB,aAAa,gBAmSf,CAAC"}
1
+ {"version":3,"file":"AppTitle.d.ts","sourceRoot":"","sources":["../../../../../src/componentsV2/AppHeader/V3/AppTitle/AppTitle.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAY,SAAS,EAA0C,MAAM,OAAO,CAAC;AAMpF,OAAO,EAAE,KAAK,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAa/E,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAqB/C,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,2BAA2B,CAAC;IACrC,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACpC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,gBAAgB,CAAC,EAAE,eAAe,EAAE,CAAC;IACrC,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;CAC7B,CAAC;AAwBF,eAAO,MAAM,QAAQ,GAAI,iGAStB,aAAa,gBAwSf,CAAC"}
@@ -1,2 +1,2 @@
1
- import{__assign as o}from'./../../../../ext-esm/tslib/tslib.es6.js';import{jsx as s,jsxs as i,Fragment as t}from"react/jsx-runtime";import n from"classnames";import{useState as e,useRef as c,useCallback as r,useMemo as m,Fragment as l}from"react";import a from"moment";import{Icon as p}from"@material-ui/core";import{TextEndTruncated as d}from"../../../TextEndTruncated/TextEndTruncated.js";import{Button as u}from"../../../Button/Button.js";import{DqStatusIcon as I}from"../DqStatusIcon/DqStatusIcon.js";import"../DqStatusIcon/DqStatusIcon.constants.js";import{AppDqPopover as f}from"../../../AppDqPopover/AppDqPopover.js";import{Menu as v}from"../../../Menu/Menu.js";import{AppIcon as j}from"../../../../components/AppIcon/AppIcon.js";import{getAppSegment as h}from"../../../../utils/devcenter.js";import{Text as A}from"../../../Text/Text.js";import{Accordion as C}from"../../../Accordion/Accordion.js";import{AppRemoveConfirmationModal as T}from"../AppRemoveConfirmationModal/AppRemoveConfirmationModal.js";import{AssetSelector as N}from"../AssetSelector/AssetSelector.js";import"../AssetSelector/constants.js";import{SEGMENTS as g}from"../../../../constants/segment.js";import{useAppCommonsInternal as b}from"../../../AppCommonsProvider/AppCommonsContext.js";import{UniversalLink as x}from"../../../UniversalLink/UniversalLink.js";import{AppTitleTestIds as y}from"./AppTitle.constants.js";import k from"../../../AppContainer/headerCommon.scss.js";import M from"./AppTitle.scss.js";import{DownIcon as D,SettingOneIcon as S,HelpIcon as q,DeleteFourIcon as E}from"../../../../icons/iconParkIcons.js";import{AddMessageCustomIcon as F}from"../../../../icons/customIcons/icons/AddMessage.js";import"../../../../icons/customIcons/icons/Attention.js";import"../../../../icons/customIcons/icons/Collapse.js";import"../../../../icons/customIcons/icons/Dashboard.js";import"../../../../icons/customIcons/icons/Expand.js";import"../../../../icons/customIcons/icons/FolderClosed.js";import"../../../../icons/customIcons/icons/FolderClosedFilled.js";import"../../../../icons/customIcons/icons/FolderOpened.js";import"../../../../icons/customIcons/icons/GreaterOrEqual.js";import"../../../../icons/customIcons/icons/LessOrEqual.js";import"../../../../icons/customIcons/icons/Search.js";import"../../../../icons/customIcons/icons/SearchOne.js";import"../../../../icons/customIcons/icons/Wellhub.js";import"../../../../icons/customIcons/icons/MultiRuler.js";import"../../../../icons/customIcons/icons/Checkbox.js";import"../../../../icons/customIcons/icons/CheckboxChecked.js";import"../../../../icons/customIcons/icons/CheckboxIndeterminate.js";import"../../../../icons/customIcons/icons/Radio.js";import"../../../../icons/customIcons/icons/RadioChecked.js";import"../../../../icons/customIcons/icons/SimulFrac.js";import"../../../../icons/customIcons/icons/ZipperFrac.js";import"../../../../icons/customIcons/icons/CautionFilled.js";import"../../../../icons/customIcons/icons/MoreApp.js";import"../../../../icons/customIcons/icons/Pad.js";import"../../../../icons/customIcons/icons/DrilloutUnit.js";import"../../../../icons/customIcons/icons/FracFleet.js";import"../../../../icons/customIcons/icons/Global.js";import"../../../../icons/customIcons/icons/Program.js";import"../../../../icons/customIcons/icons/Rig.js";import"../../../../icons/customIcons/icons/Well.js";import"../../../../icons/customIcons/icons/Gap.js";import"../../../../icons/customIcons/icons/Pin.js";import"../../../../icons/customIcons/icons/CloseOneFilled.js";import"../../../../icons/customIcons/icons/AttentionFilled.js";import"../../../../icons/customIcons/icons/CheckOneFilled.js";import"../../../../icons/customIcons/icons/Archive.js";import"../../../../icons/customIcons/icons/ArchiveCancel.js";import"../../../../icons/customIcons/icons/Unarchive.js";import"../../../../icons/customIcons/icons/Archived.js";import"../../../../icons/customIcons/icons/InterventionUnit.js";import"../../../../icons/customIcons/icons/CloudDelete.js";import"../../../../icons/customIcons/icons/Lasso.js";import"../../../../icons/customIcons/icons/Radius.js";import"../../../../clients/subscriptions/constants.js";import"@babel/runtime/helpers/slicedToArray";import"@babel/runtime/helpers/asyncToGenerator";import"@babel/runtime/helpers/defineProperty";import"@babel/runtime/regenerator";import"querystring";import"uuid/v1";import"lodash";import"../../../../clients/subscriptions.v1.js";import"../../../../clients/jsonApi/index.js";import"../../../../clients/subscriptions/subscriptions-client.factory.js";import z from"../../../../effects/useOutsideClick.js";import"../../../../utils/index.js";import{useWellnessAlerts as R}from"../../../../effects/useWellnessAlerts.js";import"lodash/get";import"lodash/isEmpty";import"lodash/sortBy";import"../../../../constants/completion.js";import"../../../../constants/streamSourceType.js";import"../../../../components/DevCenter/DevCenterAppContainer/components/CommentsSwitch/CommentsSwitchContext.js";var L=function(o){return o&&"asset_id"in o?{name:o.name,id:o.asset_id}:o},O=function(O){var P,B,U,w,H,G,Y,_,W=O.asset,V=O.className,Z=O.dqData,J=O.lastUpdate,K=O.title,Q=O.disableAssetSelector,X=O.titleMenuActions,$=O.style,oo=b(),so=oo.app,io=oo.appId,to=oo.maximized,no=oo.toggleAnnotationsList,eo=oo.onHelpCenterClick,co=oo.secondaryMenuItems,ro=oo.appName,mo=oo.layoutEnvironment,lo=oo.isInsideNewMobileApp,ao=e(!1),po=ao[0],uo=ao[1],Io=c(),fo=c(),vo=c(null),jo=c(null),ho=e(!1),Ao=ho[0],Co=ho[1],To=c(null),No=r((function(){return uo((function(o){return!o}))}),[]),go=r((function(){return Co((function(o){return!o}))}),[]),bo=r((function(){clearTimeout(Io.current),clearTimeout(fo.current),Io.current=setTimeout((function(){uo(!0)}),300)}),[]),xo=r((function(){clearTimeout(Io.current),clearTimeout(fo.current),Io.current=setTimeout((function(){uo(!1)}),700)}),[]);z(jo,No,[vo.current]);var yo=(W instanceof Array&&W.length>0||!!W)&&!Z&&!lo,ko=R({isDCApp:yo,appId:io,multiRigAssets:W instanceof Array?W:void 0,asset:W instanceof Array?void 0:L(W),maximized:to,dashboards:[]}),Mo=Z||ko,Do=(yo||!!Z)&&!lo,So=(null===(P=null==Mo?void 0:Mo.wellnessAlerts)||void 0===P?void 0:P.alertsData)||{},qo=function(o){if(o){if("number"==typeof o){var s=Date.now();return Math.abs(s-o)>Math.abs(s-1e3*o)?a.unix(o):a(o)}return a(o)}return null}(J),Eo=r((function(){go(),null==no||no()}),[no,go]),Fo=r((function(){go(),null==eo||eo()}),[eo,go]),zo=e(!1),Ro=zo[0],Lo=zo[1],Oo=r((function(){go(),Lo(!0)}),[go]),Po=r((function(){Lo(!1)}),[]),Bo=m((function(){return[].concat(co||[]).concat(X||[]).map((function(s){return o(o({},s),{onClick:function(){var o;go(),null===(o=s.onClick)||void 0===o||o.call(s)}})}))}),[co,X,go]),Uo=!!(null===(H=null===(w=null===(U=null===(B=so.package)||void 0===B?void 0:B.manifest)||void 0===U?void 0:U.application)||void 0===w?void 0:w.ui)||void 0===H?void 0:H.multi_rig),wo="asset"===(null==mo?void 0:mo.type),Ho=h(so)===g.COMPLETION,Go=!(Uo||wo&&Ho||Q),Yo=(null==qo?void 0:qo.isValid())?"Last Update: ".concat(qo.format("MMM D YYYY, hh:mm A")):void 0,_o=K||ro;return lo?s("div",{className:n(M.root,V),children:s("div",{className:M.title,children:s(d,{className:n(M.titleText),testId:y.AppNameTestId,children:_o})})}):i("div",{className:n(M.root,V),style:$,children:[Do&&s(I,{statusBadgeIconType:Mo.statusBadgeIconType,className:M.dqBadge,onClick:No,onMouseEnter:bo,onMouseLeave:xo,ref:vo}),s(u,{type:"tertiary",size:"small",className:M.title,suffix:s("div",{className:n(M.titleChevron,k.titleChevron,Ao&&M.titleChevronOpen),children:s(D,{size:16})}),ref:To,onClick:go,children:s(d,{className:n(M.titleText,Do&&M.withDq),testId:y.AppNameTestId,children:_o})}),s(f,{open:po,anchorEl:vo.current,placement:"bottom-start",alertsData:So,onClose:No,contentRef:jo,onMouseEnter:bo,onMouseLeave:xo}),i(v,{anchorEl:To.current,open:Ao,className:M.menuRoot,onClose:go,children:[i(x,{href:"/app-store/app/".concat(null===(G=null==so?void 0:so.app)||void 0===G?void 0:G.id),className:M.menuHeader,"data-testid":y.AppStoreLinkTestId,children:[s(j,{"data-testid":y.AppIconTestId,className:M.appIcon,segment:[h(so)],iconUrl:null===(_=null===(Y=null==so?void 0:so.app)||void 0===Y?void 0:Y.icon)||void 0===_?void 0:_.url,height:40,width:40}),i("div",{className:M.menuHeaderText,children:[s(A,{children:s(d,{testId:y.MenuAppNameTestId,children:ro})}),s(A,{size:12,color:"T6",children:"Open in Appstore"})]})]}),s("div",{className:M.divider}),Go&&s(v.Item,{size:"large",disableClickEffect:!0,className:M.assetMenuItem,children:s(C,{title:i("div",{className:M.accordionTitle,children:[s(S,{size:24,className:M.accordionIcon}),"Change Asset"]}),iconPosition:"end",titleHover:!1,testId:y.AssetSelectorAccordionTestId,children:s(N,{})})}),null==Bo?void 0:Bo.map((function(o,t){return i(l,{children:[s("div",{className:M.divider}),s(v.Item,{size:"large",onClick:o.onClick,prefix:"string"==typeof o.icon?s(p,{children:o.icon}):o.icon,testId:y.AdditionalSelectionTestId,children:o.title})]},t)})),eo&&i(t,{children:[s("div",{className:M.divider}),s(v.Item,{size:"large",prefix:s(q,{}),onClick:Fo,testId:y.HelpCenterLinkTestId,children:"Help Center"})]}),no&&i(t,{children:[s("div",{className:M.divider}),s(v.Item,{size:"large",prefix:s(F,{fill:"currentColor"}),onClick:Eo,testId:y.AnnotationsTestId,children:"Add Annotation"})]}),s("div",{className:M.divider}),s(v.Item,{size:"large",prefix:s(E,{}),type:"destructive",onClick:Oo,testId:y.RemoveAppTestId,children:"Remove App"}),(null==qo?void 0:qo.isValid())&&i(t,{children:[s("div",{className:M.divider}),i("div",{className:M.footer,children:[s(I,{statusBadgeIconType:Mo.statusBadgeIconType,className:M.footerDqBadge,ref:vo}),Yo&&s(A,{size:12,color:"T6",children:Yo})]})]})]}),s(T,{open:Ro,onClose:Po})]})};export{O as AppTitle};
1
+ import{__assign as o}from'./../../../../ext-esm/tslib/tslib.es6.js';import{jsx as s,jsxs as i,Fragment as t}from"react/jsx-runtime";import n from"classnames";import{useState as e,useRef as c,useCallback as r,useMemo as m,Fragment as l}from"react";import a from"moment";import{Icon as p}from"@material-ui/core";import{TextEndTruncated as d}from"../../../TextEndTruncated/TextEndTruncated.js";import{Button as u}from"../../../Button/Button.js";import{DqStatusIcon as I}from"../DqStatusIcon/DqStatusIcon.js";import"../DqStatusIcon/DqStatusIcon.constants.js";import{AppDqPopover as f}from"../../../AppDqPopover/AppDqPopover.js";import{Menu as v}from"../../../Menu/Menu.js";import{AppIcon as j}from"../../../../components/AppIcon/AppIcon.js";import{getAppSegment as h}from"../../../../utils/devcenter.js";import{Text as A}from"../../../Text/Text.js";import{Accordion as C}from"../../../Accordion/Accordion.js";import{AppRemoveConfirmationModal as T}from"../AppRemoveConfirmationModal/AppRemoveConfirmationModal.js";import{AssetSelector as N}from"../AssetSelector/AssetSelector.js";import"../AssetSelector/constants.js";import{SEGMENTS as g}from"../../../../constants/segment.js";import{useAppCommonsInternal as b}from"../../../AppCommonsProvider/AppCommonsContext.js";import{UniversalLink as x}from"../../../UniversalLink/UniversalLink.js";import{AppTitleTestIds as y}from"./AppTitle.constants.js";import k from"../../../AppContainer/headerCommon.scss.js";import M from"./AppTitle.scss.js";import{DownIcon as D,SettingOneIcon as S,HelpIcon as q,DeleteFourIcon as E}from"../../../../icons/iconParkIcons.js";import{AddMessageCustomIcon as F}from"../../../../icons/customIcons/icons/AddMessage.js";import"../../../../icons/customIcons/icons/Attention.js";import"../../../../icons/customIcons/icons/Collapse.js";import"../../../../icons/customIcons/icons/Dashboard.js";import"../../../../icons/customIcons/icons/Expand.js";import"../../../../icons/customIcons/icons/FolderClosed.js";import"../../../../icons/customIcons/icons/FolderClosedFilled.js";import"../../../../icons/customIcons/icons/FolderOpened.js";import"../../../../icons/customIcons/icons/GreaterOrEqual.js";import"../../../../icons/customIcons/icons/LessOrEqual.js";import"../../../../icons/customIcons/icons/Search.js";import"../../../../icons/customIcons/icons/SearchOne.js";import"../../../../icons/customIcons/icons/Wellhub.js";import"../../../../icons/customIcons/icons/MultiRuler.js";import"../../../../icons/customIcons/icons/Checkbox.js";import"../../../../icons/customIcons/icons/CheckboxChecked.js";import"../../../../icons/customIcons/icons/CheckboxIndeterminate.js";import"../../../../icons/customIcons/icons/Radio.js";import"../../../../icons/customIcons/icons/RadioChecked.js";import"../../../../icons/customIcons/icons/SimulFrac.js";import"../../../../icons/customIcons/icons/ZipperFrac.js";import"../../../../icons/customIcons/icons/CautionFilled.js";import"../../../../icons/customIcons/icons/MoreApp.js";import"../../../../icons/customIcons/icons/Pad.js";import"../../../../icons/customIcons/icons/DrilloutUnit.js";import"../../../../icons/customIcons/icons/FracFleet.js";import"../../../../icons/customIcons/icons/Global.js";import"../../../../icons/customIcons/icons/Program.js";import"../../../../icons/customIcons/icons/Rig.js";import"../../../../icons/customIcons/icons/Well.js";import"../../../../icons/customIcons/icons/Gap.js";import"../../../../icons/customIcons/icons/Pin.js";import"../../../../icons/customIcons/icons/CloseOneFilled.js";import"../../../../icons/customIcons/icons/AttentionFilled.js";import"../../../../icons/customIcons/icons/CheckOneFilled.js";import"../../../../icons/customIcons/icons/Archive.js";import"../../../../icons/customIcons/icons/ArchiveCancel.js";import"../../../../icons/customIcons/icons/Unarchive.js";import"../../../../icons/customIcons/icons/Archived.js";import"../../../../icons/customIcons/icons/InterventionUnit.js";import"../../../../icons/customIcons/icons/CloudDelete.js";import"../../../../icons/customIcons/icons/Lasso.js";import"../../../../icons/customIcons/icons/Radius.js";import"../../../../clients/subscriptions/constants.js";import"@babel/runtime/helpers/slicedToArray";import"@babel/runtime/helpers/asyncToGenerator";import"@babel/runtime/helpers/defineProperty";import"@babel/runtime/regenerator";import"querystring";import"uuid/v1";import"lodash";import"../../../../clients/subscriptions.v1.js";import"../../../../clients/jsonApi/index.js";import"../../../../clients/subscriptions/subscriptions-client.factory.js";import R from"../../../../effects/useOutsideClick.js";import"../../../../utils/index.js";import{useWellnessAlerts as z}from"../../../../effects/useWellnessAlerts.js";import"lodash/get";import"lodash/isEmpty";import"lodash/sortBy";import"../../../../constants/completion.js";import"../../../../constants/streamSourceType.js";import"../../../../components/DevCenter/DevCenterAppContainer/components/CommentsSwitch/CommentsSwitchContext.js";var L=function(o){return o&&"asset_id"in o?{name:o.name,id:o.asset_id}:o},O=function(O){var P,B,U,w,H,G,Y,_,W=O.asset,V=O.className,Z=O.dqData,J=O.lastUpdate,K=O.title,Q=O.disableAssetSelector,X=O.titleMenuActions,$=O.style,oo=b(),so=oo.app,io=oo.appId,to=oo.maximized,no=oo.toggleAnnotationsList,eo=oo.onHelpCenterClick,co=oo.secondaryMenuItems,ro=oo.appName,mo=oo.layoutEnvironment,lo=oo.isInsideNewMobileApp,ao=oo.onAppRemove,po=e(!1),uo=po[0],Io=po[1],fo=c(),vo=c(),jo=c(null),ho=c(null),Ao=e(!1),Co=Ao[0],To=Ao[1],No=c(null),go=r((function(){return Io((function(o){return!o}))}),[]),bo=r((function(){return To((function(o){return!o}))}),[]),xo=r((function(){clearTimeout(fo.current),clearTimeout(vo.current),fo.current=setTimeout((function(){Io(!0)}),300)}),[]),yo=r((function(){clearTimeout(fo.current),clearTimeout(vo.current),fo.current=setTimeout((function(){Io(!1)}),700)}),[]);R(ho,go,[jo.current]);var ko=(W instanceof Array&&W.length>0||!!W)&&!Z&&!lo,Mo=z({isDCApp:ko,appId:io,multiRigAssets:W instanceof Array?W:void 0,asset:W instanceof Array?void 0:L(W),maximized:to,dashboards:[]}),Do=Z||Mo,So=(ko||!!Z)&&!lo,qo=(null===(P=null==Do?void 0:Do.wellnessAlerts)||void 0===P?void 0:P.alertsData)||{},Eo=function(o){if(o){if("number"==typeof o){var s=Date.now();return Math.abs(s-o)>Math.abs(s-1e3*o)?a.unix(o):a(o)}return a(o)}return null}(J),Fo=r((function(){bo(),null==no||no()}),[no,bo]),Ro=r((function(){bo(),null==eo||eo()}),[eo,bo]),zo=e(!1),Lo=zo[0],Oo=zo[1],Po=r((function(){bo(),Oo(!0)}),[bo]),Bo=r((function(){Oo(!1)}),[]),Uo=m((function(){return[].concat(co||[]).concat(X||[]).map((function(s){return o(o({},s),{onClick:function(){var o;bo(),null===(o=s.onClick)||void 0===o||o.call(s)}})}))}),[co,X,bo]),wo=!!(null===(H=null===(w=null===(U=null===(B=so.package)||void 0===B?void 0:B.manifest)||void 0===U?void 0:U.application)||void 0===w?void 0:w.ui)||void 0===H?void 0:H.multi_rig),Ho="asset"===(null==mo?void 0:mo.type),Go=h(so)===g.COMPLETION,Yo=!(wo||Ho&&Go||Q),_o=(null==Eo?void 0:Eo.isValid())?"Last Update: ".concat(Eo.format("MMM D YYYY, hh:mm A")):void 0,Wo=K||ro;return lo?s("div",{className:n(M.root,V),children:s("div",{className:M.title,children:s(d,{className:n(M.titleText),testId:y.AppNameTestId,children:Wo})})}):i("div",{className:n(M.root,V),style:$,children:[So&&s(I,{statusBadgeIconType:Do.statusBadgeIconType,className:M.dqBadge,onClick:go,onMouseEnter:xo,onMouseLeave:yo,ref:jo}),s(u,{type:"tertiary",size:"small",className:M.title,suffix:s("div",{className:n(M.titleChevron,k.titleChevron,Co&&M.titleChevronOpen),children:s(D,{size:16})}),ref:No,onClick:bo,children:s(d,{className:n(M.titleText,So&&M.withDq),testId:y.AppNameTestId,children:Wo})}),s(f,{open:uo,anchorEl:jo.current,placement:"bottom-start",alertsData:qo,onClose:go,contentRef:ho,onMouseEnter:xo,onMouseLeave:yo}),i(v,{anchorEl:No.current,open:Co,className:M.menuRoot,onClose:bo,children:[i(x,{href:"/app-store/app/".concat(null===(G=null==so?void 0:so.app)||void 0===G?void 0:G.id),className:M.menuHeader,"data-testid":y.AppStoreLinkTestId,children:[s(j,{"data-testid":y.AppIconTestId,className:M.appIcon,segment:[h(so)],iconUrl:null===(_=null===(Y=null==so?void 0:so.app)||void 0===Y?void 0:Y.icon)||void 0===_?void 0:_.url,height:40,width:40}),i("div",{className:M.menuHeaderText,children:[s(A,{children:s(d,{testId:y.MenuAppNameTestId,children:ro})}),s(A,{size:12,color:"T6",children:"Open in Appstore"})]})]}),s("div",{className:M.divider}),Yo&&s(v.Item,{size:"large",disableClickEffect:!0,className:M.assetMenuItem,children:s(C,{title:i("div",{className:M.accordionTitle,children:[s(S,{size:24,className:M.accordionIcon}),"Change Asset"]}),iconPosition:"end",titleHover:!1,testId:y.AssetSelectorAccordionTestId,children:s(N,{})})}),null==Uo?void 0:Uo.map((function(o,t){return i(l,{children:[s("div",{className:M.divider}),s(v.Item,{size:"large",onClick:o.onClick,prefix:"string"==typeof o.icon?s(p,{children:o.icon}):o.icon,testId:y.AdditionalSelectionTestId,children:o.title})]},t)})),eo&&i(t,{children:[s("div",{className:M.divider}),s(v.Item,{size:"large",prefix:s(q,{}),onClick:Ro,testId:y.HelpCenterLinkTestId,children:"Help Center"})]}),no&&i(t,{children:[s("div",{className:M.divider}),s(v.Item,{size:"large",prefix:s(F,{fill:"currentColor"}),onClick:Fo,testId:y.AnnotationsTestId,children:"Add Annotation"})]}),ao&&i(t,{children:[s("div",{className:M.divider}),s(v.Item,{size:"large",prefix:s(E,{}),type:"destructive",onClick:Po,testId:y.RemoveAppTestId,children:"Remove App"})]}),(null==Eo?void 0:Eo.isValid())&&i(t,{children:[s("div",{className:M.divider}),i("div",{className:M.footer,children:[s(I,{statusBadgeIconType:Do.statusBadgeIconType,className:M.footerDqBadge,ref:jo}),_o&&s(A,{size:12,color:"T6",children:_o})]})]})]}),s(T,{open:Lo,onClose:Bo})]})};export{O as AppTitle};
2
2
  //# sourceMappingURL=AppTitle.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@corva/ui",
3
- "version": "3.46.0-1",
3
+ "version": "3.46.0-2",
4
4
  "license": "SEE LICENSE IN LICENSE",
5
5
  "description": "Shared components/utils for Corva ui projects",
6
6
  "keywords": [