@corva/ui 3.54.0-7 → 3.54.0-9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/cjs-bundle/clients/api/apiCore.js +1 -1
  2. package/cjs-bundle/clients/api/apiCore.js.map +1 -1
  3. package/cjs-bundle/clients/api/constants.js +2 -0
  4. package/cjs-bundle/clients/api/constants.js.map +1 -0
  5. package/cjs-bundle/clients/api/rateLimiter.js +2 -0
  6. package/cjs-bundle/clients/api/rateLimiter.js.map +1 -0
  7. package/cjs-bundle/clients/index.js +1 -1
  8. package/cjs-bundle/clients/utils.js +1 -1
  9. package/cjs-bundle/clients/utils.js.map +1 -1
  10. package/cjs-bundle/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedApp.js +1 -1
  11. package/cjs-bundle/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedApp.js.map +1 -1
  12. package/cjs-bundle/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js +1 -1
  13. package/cjs-bundle/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js.map +1 -1
  14. package/cjs-bundle/componentsV2/AppContainer/AppContainer.js +1 -1
  15. package/cjs-bundle/componentsV2/AppHeader/AppHeader.js +1 -1
  16. package/cjs-bundle/componentsV2/AppHeader/V3/Actions/Actions.js +1 -1
  17. package/cjs-bundle/componentsV2/AppHeader/V3/AppHeaderV3.js +1 -1
  18. package/cjs-bundle/componentsV2/AppSettings/AppSettings.js +1 -1
  19. package/cjs-bundle/componentsV2/AppSettings/AppSettingsPinningContext.js +1 -1
  20. package/cjs-bundle/effects/subscriptions/useSubscriptions.v1.js +1 -1
  21. package/cjs-bundle/effects/subscriptions/useSubscriptions.v1.js.map +1 -1
  22. package/cjs-bundle/effects/subscriptions/useSubscriptions.v2.js +1 -1
  23. package/clients/api/apiCore.d.ts.map +1 -1
  24. package/clients/api/apiCore.js +1 -1
  25. package/clients/api/apiCore.js.map +1 -1
  26. package/clients/api/constants.d.ts +37 -0
  27. package/clients/api/constants.d.ts.map +1 -0
  28. package/clients/api/constants.js +2 -0
  29. package/clients/api/constants.js.map +1 -0
  30. package/clients/api/rateLimiter.d.ts +24 -0
  31. package/clients/api/rateLimiter.d.ts.map +1 -0
  32. package/clients/api/rateLimiter.js +2 -0
  33. package/clients/api/rateLimiter.js.map +1 -0
  34. package/clients/index.js +1 -1
  35. package/clients/index.js.map +1 -1
  36. package/clients/utils.d.ts +4 -2
  37. package/clients/utils.d.ts.map +1 -1
  38. package/clients/utils.js +1 -1
  39. package/clients/utils.js.map +1 -1
  40. package/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedApp.d.ts.map +1 -1
  41. package/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedApp.js +1 -1
  42. package/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedApp.js.map +1 -1
  43. package/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.d.ts.map +1 -1
  44. package/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js +1 -1
  45. package/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js.map +1 -1
  46. package/componentsV2/AppContainer/AppContainer.d.ts +2 -0
  47. package/componentsV2/AppContainer/AppContainer.d.ts.map +1 -1
  48. package/componentsV2/AppContainer/AppContainer.js +1 -1
  49. package/componentsV2/AppHeader/AppHeader.d.ts +1 -5
  50. package/componentsV2/AppHeader/AppHeader.d.ts.map +1 -1
  51. package/componentsV2/AppHeader/AppHeader.js +1 -1
  52. package/componentsV2/AppHeader/V3/Actions/Actions.d.ts +1 -2
  53. package/componentsV2/AppHeader/V3/Actions/Actions.d.ts.map +1 -1
  54. package/componentsV2/AppHeader/V3/Actions/Actions.js +1 -1
  55. package/componentsV2/AppHeader/V3/AppHeaderV3.d.ts +0 -1
  56. package/componentsV2/AppHeader/V3/AppHeaderV3.d.ts.map +1 -1
  57. package/componentsV2/AppHeader/V3/AppHeaderV3.js +1 -1
  58. package/componentsV2/AppHeader/V3/AppHeaderV3.stories.d.ts +2 -1
  59. package/componentsV2/AppHeader/V3/AppHeaderV3.stories.d.ts.map +1 -1
  60. package/componentsV2/AppSettings/AppSettings.d.ts +0 -1
  61. package/componentsV2/AppSettings/AppSettings.d.ts.map +1 -1
  62. package/componentsV2/AppSettings/AppSettings.js +1 -1
  63. package/componentsV2/AppSettings/AppSettingsPinningContext.d.ts +3 -1
  64. package/componentsV2/AppSettings/AppSettingsPinningContext.d.ts.map +1 -1
  65. package/componentsV2/AppSettings/AppSettingsPinningContext.js +1 -1
  66. package/effects/subscriptions/useSubscriptions.v1.js +1 -1
  67. package/effects/subscriptions/useSubscriptions.v1.js.map +1 -1
  68. package/effects/subscriptions/useSubscriptions.v2.d.ts.map +1 -1
  69. package/effects/subscriptions/useSubscriptions.v2.js +1 -1
  70. package/effects/useSubscriptions.d.ts.map +1 -1
  71. package/mcp-server/server.mjs +13 -13
  72. package/package.json +1 -1
  73. package/tsconfig.tsbuildinfo +1 -1
package/clients/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import n from"@babel/runtime/helpers/defineProperty";import{v4 as t}from"uuid";import{noop as o}from"lodash";import*as r from"./clientStorage/index.js";export{r as clientStorage};import*as e from"./jsonApi/index.js";export{e as jsonApi};import*as i from"./subscriptions.js";export{i as subscriptions};import{get as c,getWithHeaders as s,put as a,patch as u,post as p,del as l}from"./api/apiCore.js";import{CORVA_API_URLS as d}from"./constants.js";import*as f from"./corvaUrls.js";export{f as corvaUrls};import{handleSubscriptionsVersion as v}from"./subscriptions/constants.js";import{socketClientV2 as g}from"./subscriptions/socket-client.v2.js";import*as h from"./sso/index.js";export{h as sso};export{attachHTTPHeaders,getAppKeyFromStackTrace,getAppKeyFromXProps,getAuthorizationHeaders,getAuthorizationToken}from"./utils.js";function m(n,t){var o=Object.keys(n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(n);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable}))),o.push.apply(o,r)}return o}function b(t){for(var o=1;o<arguments.length;o++){var r=null!=arguments[o]?arguments[o]:{};o%2?m(Object(r),!0).forEach((function(o){n(t,o,r[o])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):m(Object(r)).forEach((function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(r,n))}))}return t}var j={get:function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return c(n,t,o)},getWithHeaders:function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return s(n,t,o)},put:function(n,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return a(n,t,o,r)},patch:function(n,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return u(n,t,o,r)},post:function(n,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return p(n,t,o)},del:function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return l(n,t,o)}},A={get:function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return c(n,t,b({apiUrl:d.DATA_API},o))},put:function(n,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return a(n,t,o,b({apiUrl:d.DATA_API},r))},patch:function(n,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return u(n,t,o,b({apiUrl:d.DATA_API},r))},post:function(n,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return p(n,t,b({apiUrl:d.DATA_API},o))},del:function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return l(n,t,b({apiUrl:d.DATA_API},o))}};function w(){if(window.xprops){var n,o,r,e,i,c=(null===(n=window.xprops)||void 0===n||null===(o=n.app)||void 0===o||null===(r=o.app)||void 0===r?void 0:r.id)||"unknown-app-id",s=(null===(e=window.xprops)||void 0===e||null===(i=e.app)||void 0===i?void 0:i.id)||"unknown-instance-id";return"".concat(c,":").concat(s,":").concat(t())}return"non-dc-app:".concat(t())}var O=v({subscribe:function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.onDataReceive,e=window[Symbol.for("socket")]||{},i=e.subscribe,c=e.unsubscribe,s=e.socket;if(!s)return console.error("Socket is not initialized!"),o;var a=w(),u=b(b({},n),{},{collection:n.collection||n.dataset,appInstanceId:a}),p=r&&function(n){return n.appInstanceId===a&&r(n)};return i(u),p&&s.on("data",p),function(){p&&s.off("data",p),c(u)}},onConnectionChange:function(n){var t=(window[Symbol.for("socket")]||{}).socket;if(!t)return function(){};var o=function(){return n({status:"connected"})},r=function(t){return n({status:"disconnected",reason:t})},e=function(){return n({status:"reconnecting"})},i=function(t){return n({status:"error",reason:(null==t?void 0:t.message)||String(t)})};return t.on("connect",o),t.on("disconnect",r),t.on("reconnect",e),t.on("connect_error",i),function(){t.off("connect",o),t.off("disconnect",r),t.off("reconnect",e),t.off("connect_error",i)}}},g);export{j as corvaAPI,A as corvaDataAPI,O as socketClient};
1
+ import n from"@babel/runtime/helpers/defineProperty";import{v4 as t}from"uuid";import{noop as o}from"lodash";import*as r from"./clientStorage/index.js";export{r as clientStorage};import*as e from"./jsonApi/index.js";export{e as jsonApi};import*as i from"./subscriptions.js";export{i as subscriptions};import{get as c,getWithHeaders as s,put as a,patch as u,post as p,del as d}from"./api/apiCore.js";import{CORVA_API_URLS as l}from"./constants.js";import*as f from"./corvaUrls.js";export{f as corvaUrls};import{handleSubscriptionsVersion as v}from"./subscriptions/constants.js";import{socketClientV2 as g}from"./subscriptions/socket-client.v2.js";import*as h from"./sso/index.js";export{h as sso};export{attachHTTPHeaders,getAppKeyAndId,getAuthorizationHeaders,getAuthorizationToken}from"./utils.js";function m(n,t){var o=Object.keys(n);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(n);t&&(r=r.filter((function(t){return Object.getOwnPropertyDescriptor(n,t).enumerable}))),o.push.apply(o,r)}return o}function b(t){for(var o=1;o<arguments.length;o++){var r=null!=arguments[o]?arguments[o]:{};o%2?m(Object(r),!0).forEach((function(o){n(t,o,r[o])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(r)):m(Object(r)).forEach((function(n){Object.defineProperty(t,n,Object.getOwnPropertyDescriptor(r,n))}))}return t}var j={get:function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return c(n,t,o)},getWithHeaders:function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return s(n,t,o)},put:function(n,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return a(n,t,o,r)},patch:function(n,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return u(n,t,o,r)},post:function(n,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return p(n,t,o)},del:function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return d(n,t,o)}},A={get:function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return c(n,t,b({apiUrl:l.DATA_API},o))},put:function(n,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return a(n,t,o,b({apiUrl:l.DATA_API},r))},patch:function(n,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return u(n,t,o,b({apiUrl:l.DATA_API},r))},post:function(n,t){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return p(n,t,b({apiUrl:l.DATA_API},o))},del:function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return d(n,t,b({apiUrl:l.DATA_API},o))}};function w(){if(window.xprops){var n,o,r,e,i,c=(null===(n=window.xprops)||void 0===n||null===(o=n.app)||void 0===o||null===(r=o.app)||void 0===r?void 0:r.id)||"unknown-app-id",s=(null===(e=window.xprops)||void 0===e||null===(i=e.app)||void 0===i?void 0:i.id)||"unknown-instance-id";return"".concat(c,":").concat(s,":").concat(t())}return"non-dc-app:".concat(t())}var O=v({subscribe:function(n){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=t.onDataReceive,e=window[Symbol.for("socket")]||{},i=e.subscribe,c=e.unsubscribe,s=e.socket;if(!s)return console.error("Socket is not initialized!"),o;var a=w(),u=b(b({},n),{},{collection:n.collection||n.dataset,appInstanceId:a}),p=r&&function(n){return n.appInstanceId===a&&r(n)};return i(u),p&&s.on("data",p),function(){p&&s.off("data",p),c(u)}},onConnectionChange:function(n){var t=(window[Symbol.for("socket")]||{}).socket;if(!t)return function(){};var o=function(){return n({status:"connected"})},r=function(t){return n({status:"disconnected",reason:t})},e=function(){return n({status:"reconnecting"})},i=function(t){return n({status:"error",reason:(null==t?void 0:t.message)||String(t)})};return t.on("connect",o),t.on("disconnect",r),t.on("reconnect",e),t.on("connect_error",i),function(){t.off("connect",o),t.off("disconnect",r),t.off("reconnect",e),t.off("connect_error",i)}}},g);export{j as corvaAPI,A as corvaDataAPI,O as socketClient};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/clients/index.js"],"sourcesContent":["import { v4 as uuidV4 } from 'uuid';\nimport { noop } from 'lodash';\n\nimport * as clientStorage from './clientStorage';\nimport * as jsonApi from './jsonApi';\nimport * as subscriptions from './subscriptions';\nimport { get, put, patch, post, del, getWithHeaders } from './api/apiCore';\nimport { CORVA_API_URLS } from './constants';\nimport * as corvaUrls from './corvaUrls';\nimport { handleSubscriptionsVersion } from './subscriptions/constants';\nimport { socketClientV2 } from './subscriptions/socket-client.v2';\n\nexport { clientStorage, jsonApi, subscriptions, corvaUrls };\nexport * as sso from './sso';\nexport * from './utils';\n\nexport const corvaAPI = {\n get: (path, queryParams = {}, requestOptions = {}) => {\n return get(path, queryParams, requestOptions);\n },\n getWithHeaders: (path, queryParams = {}, requestOptions = {}) => {\n return getWithHeaders(path, queryParams, requestOptions);\n },\n put: (path, content, queryParams = {}, requestOptions = {}) => {\n return put(path, content, queryParams, requestOptions);\n },\n patch: (path, content, queryParams = {}, requestOptions = {}) => {\n return patch(path, content, queryParams, requestOptions);\n },\n post: (path, entity, requestOptions = {}) => {\n return post(path, entity, requestOptions);\n },\n del: (path, queryParams = {}, requestOptions = {}) => {\n return del(path, queryParams, requestOptions);\n },\n};\n\nexport const corvaDataAPI = {\n get: (path, queryParams = {}, requestOptions = {}) =>\n get(path, queryParams, { apiUrl: CORVA_API_URLS.DATA_API, ...requestOptions }),\n put: (path, content, queryParams = {}, requestOptions = {}) =>\n put(path, content, queryParams, { apiUrl: CORVA_API_URLS.DATA_API, ...requestOptions }),\n patch: (path, content, queryParams = {}, requestOptions = {}) =>\n patch(path, content, queryParams, { apiUrl: CORVA_API_URLS.DATA_API, ...requestOptions }),\n post: (path, entity, requestOptions = {}) =>\n post(path, entity, { apiUrl: CORVA_API_URLS.DATA_API, ...requestOptions }),\n del: (path, queryParams = {}, requestOptions = {}) =>\n del(path, queryParams, { apiUrl: CORVA_API_URLS.DATA_API, ...requestOptions }),\n};\n\nconst SOCKET_NOT_INITIALIZED_ERROR = 'Socket is not initialized!';\n\nfunction getAppInstanceId() {\n if (window.xprops) {\n const appId = window.xprops?.app?.app?.id || 'unknown-app-id';\n const appInstanceId = window.xprops?.app?.id || 'unknown-instance-id';\n\n return `${appId}:${appInstanceId}:${uuidV4()}`;\n }\n\n return `non-dc-app:${uuidV4()}`;\n}\n\nconst socketClientV1 = {\n subscribe: (subscription, { onDataReceive } = {}) => {\n const { subscribe, unsubscribe, socket } = window[Symbol.for('socket')] || {};\n\n if (!socket) {\n console.error(SOCKET_NOT_INITIALIZED_ERROR);\n // In some environments, like PDF Dashboard Report, socket is not initialized\n // But socketClient should not throw errors to prevent apps crashing\n return noop;\n }\n const subId = getAppInstanceId();\n const subscriptionWithId = {\n ...subscription,\n // NOTE: Add ability to pass dataset (because we don't use \"collection\" in new data api)\n collection: subscription.collection || subscription.dataset,\n // NOTE: Unique id is required for subscriptions server\n appInstanceId: subId,\n };\n\n const onData =\n onDataReceive && (event => event.appInstanceId === subId && onDataReceive(event));\n\n subscribe(subscriptionWithId);\n if (onData) socket.on('data', onData);\n\n // NOTE: Return unsubscribe\n return () => {\n if (onData) socket.off('data', onData);\n unsubscribe(subscriptionWithId);\n };\n },\n onConnectionChange: handler => {\n const { socket } = window[Symbol.for('socket')] || {};\n if (!socket) return () => {};\n const onConnect = () => handler({ status: 'connected' });\n const onDisconnect = reason => handler({ status: 'disconnected', reason });\n const onReconnect = () => handler({ status: 'reconnecting' });\n const onConnectError = err => handler({ status: 'error', reason: err?.message || String(err) });\n\n socket.on('connect', onConnect);\n socket.on('disconnect', onDisconnect);\n socket.on('reconnect', onReconnect);\n socket.on('connect_error', onConnectError);\n\n return () => {\n socket.off('connect', onConnect);\n socket.off('disconnect', onDisconnect);\n socket.off('reconnect', onReconnect);\n socket.off('connect_error', onConnectError);\n };\n },\n};\n\nexport const socketClient = handleSubscriptionsVersion(socketClientV1, socketClientV2);\n"],"names":["corvaAPI","get","path","queryParams","arguments","length","undefined","requestOptions","getWithHeaders","put","content","patch","post","entity","del","corvaDataAPI","_objectSpread","apiUrl","CORVA_API_URLS","DATA_API","getAppInstanceId","window","xprops","_window$xprops","_window$xprops$app","_window$xprops$app$ap","_window$xprops2","_window$xprops2$app","appId","app","id","appInstanceId","concat","uuidV4","socketClient","handleSubscriptionsVersion","subscribe","subscription","_ref","onDataReceive","Symbol","for","unsubscribe","socket","console","error","noop","subId","subscriptionWithId","collection","dataset","onData","event","on","off","onConnectionChange","handler","onConnect","status","onDisconnect","reason","onReconnect","onConnectError","err","message","String","socketClientV2"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/clients/index.js"],"sourcesContent":["import { v4 as uuidV4 } from 'uuid';\nimport { noop } from 'lodash';\n\nimport * as clientStorage from './clientStorage';\nimport * as jsonApi from './jsonApi';\nimport * as subscriptions from './subscriptions';\nimport { get, put, patch, post, del, getWithHeaders } from './api/apiCore';\nimport { CORVA_API_URLS } from './constants';\nimport * as corvaUrls from './corvaUrls';\nimport { handleSubscriptionsVersion } from './subscriptions/constants';\nimport { socketClientV2 } from './subscriptions/socket-client.v2';\n\nexport { clientStorage, jsonApi, subscriptions, corvaUrls };\nexport * as sso from './sso';\nexport * from './utils';\n\nexport const corvaAPI = {\n get: (path, queryParams = {}, requestOptions = {}) => {\n return get(path, queryParams, requestOptions);\n },\n getWithHeaders: (path, queryParams = {}, requestOptions = {}) => {\n return getWithHeaders(path, queryParams, requestOptions);\n },\n put: (path, content, queryParams = {}, requestOptions = {}) => {\n return put(path, content, queryParams, requestOptions);\n },\n patch: (path, content, queryParams = {}, requestOptions = {}) => {\n return patch(path, content, queryParams, requestOptions);\n },\n post: (path, entity, requestOptions = {}) => {\n return post(path, entity, requestOptions);\n },\n del: (path, queryParams = {}, requestOptions = {}) => {\n return del(path, queryParams, requestOptions);\n },\n};\n\nexport const corvaDataAPI = {\n get: (path, queryParams = {}, requestOptions = {}) =>\n get(path, queryParams, { apiUrl: CORVA_API_URLS.DATA_API, ...requestOptions }),\n put: (path, content, queryParams = {}, requestOptions = {}) =>\n put(path, content, queryParams, { apiUrl: CORVA_API_URLS.DATA_API, ...requestOptions }),\n patch: (path, content, queryParams = {}, requestOptions = {}) =>\n patch(path, content, queryParams, { apiUrl: CORVA_API_URLS.DATA_API, ...requestOptions }),\n post: (path, entity, requestOptions = {}) =>\n post(path, entity, { apiUrl: CORVA_API_URLS.DATA_API, ...requestOptions }),\n del: (path, queryParams = {}, requestOptions = {}) =>\n del(path, queryParams, { apiUrl: CORVA_API_URLS.DATA_API, ...requestOptions }),\n};\n\nconst SOCKET_NOT_INITIALIZED_ERROR = 'Socket is not initialized!';\n\nfunction getAppInstanceId() {\n if (window.xprops) {\n const appId = window.xprops?.app?.app?.id || 'unknown-app-id';\n const appInstanceId = window.xprops?.app?.id || 'unknown-instance-id';\n\n return `${appId}:${appInstanceId}:${uuidV4()}`;\n }\n\n return `non-dc-app:${uuidV4()}`;\n}\n\nconst socketClientV1 = {\n subscribe: (subscription, { onDataReceive } = {}) => {\n const { subscribe, unsubscribe, socket } = window[Symbol.for('socket')] || {};\n\n if (!socket) {\n console.error(SOCKET_NOT_INITIALIZED_ERROR);\n // In some environments, like PDF Dashboard Report, socket is not initialized\n // But socketClient should not throw errors to prevent apps crashing\n return noop;\n }\n const subId = getAppInstanceId();\n const subscriptionWithId = {\n ...subscription,\n // NOTE: Add ability to pass dataset (because we don't use \"collection\" in new data api)\n collection: subscription.collection || subscription.dataset,\n // NOTE: Unique id is required for subscriptions server\n appInstanceId: subId,\n };\n\n const onData =\n onDataReceive && (event => event.appInstanceId === subId && onDataReceive(event));\n\n subscribe(subscriptionWithId);\n if (onData) socket.on('data', onData);\n\n // NOTE: Return unsubscribe\n return () => {\n if (onData) socket.off('data', onData);\n unsubscribe(subscriptionWithId);\n };\n },\n onConnectionChange: handler => {\n const { socket } = window[Symbol.for('socket')] || {};\n if (!socket) return () => {};\n const onConnect = () => handler({ status: 'connected' });\n const onDisconnect = reason => handler({ status: 'disconnected', reason });\n const onReconnect = () => handler({ status: 'reconnecting' });\n const onConnectError = err => handler({ status: 'error', reason: err?.message || String(err) });\n\n socket.on('connect', onConnect);\n socket.on('disconnect', onDisconnect);\n socket.on('reconnect', onReconnect);\n socket.on('connect_error', onConnectError);\n\n return () => {\n socket.off('connect', onConnect);\n socket.off('disconnect', onDisconnect);\n socket.off('reconnect', onReconnect);\n socket.off('connect_error', onConnectError);\n };\n },\n};\n\nexport const socketClient = handleSubscriptionsVersion(socketClientV1, socketClientV2);\n"],"names":["corvaAPI","get","path","queryParams","arguments","length","undefined","requestOptions","getWithHeaders","put","content","patch","post","entity","del","corvaDataAPI","_objectSpread","apiUrl","CORVA_API_URLS","DATA_API","getAppInstanceId","window","xprops","_window$xprops","_window$xprops$app","_window$xprops$app$ap","_window$xprops2","_window$xprops2$app","appId","app","id","appInstanceId","concat","uuidV4","socketClient","handleSubscriptionsVersion","subscribe","subscription","_ref","onDataReceive","Symbol","for","unsubscribe","socket","console","error","noop","subId","subscriptionWithId","collection","dataset","onData","event","on","off","onConnectionChange","handler","onConnect","status","onDisconnect","reason","onReconnect","onConnectError","err","message","String","socketClientV2"],"mappings":"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"}
@@ -1,10 +1,12 @@
1
- export function getAppKeyFromStackTrace(): string | null;
2
- export function getAppKeyFromXProps(): any;
3
1
  export function attachHTTPHeaders({ config, appKey, Authorization }: {
4
2
  config: any;
5
3
  appKey: any;
6
4
  Authorization: any;
7
5
  }): any;
6
+ export function getAppKeyAndId(): {
7
+ appKey: any;
8
+ appInstanceId: string;
9
+ } | undefined;
8
10
  export function getAuthorizationToken(): string | null;
9
11
  export function getAuthorizationHeaders(): {
10
12
  Authorization: string;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/clients/utils.js"],"names":[],"mappings":"AAQA,yDAWC;AAED,2CAGC;AAED;;;;QAMC;AAEM,uDAWN;AAEM;;;;EAGN"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/clients/utils.js"],"names":[],"mappings":"AAsCA;;;;QAMC;AApCM;;;cA4BN;AAUM,uDAWN;AAEM;;;;EAGN"}
package/clients/utils.js CHANGED
@@ -1,2 +1,2 @@
1
- import r from"@babel/runtime/helpers/defineProperty";import{MOBILE_AUTH_TOKEN_STORAGE_KEY as e}from"../constants/mobile.js";function t(r,e){var t=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),t.push.apply(t,n)}return t}function n(e){for(var n=1;n<arguments.length;n++){var o=null!=arguments[n]?arguments[n]:{};n%2?t(Object(o),!0).forEach((function(t){r(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):t(Object(o)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(o,r))}))}return e}var o=/corva\.ai\/(.+?)\/packages/,a=/app\/(.+?)\/.*\.chunk\.js/,i=window.self!==window.top;function c(){var r=Error.stackTraceLimit;Error.stackTraceLimit=300;var e=new Error,t=e.stack.match(o)||e.stack.match(a);return Error.stackTraceLimit=r,t?t[1].replace("/app/","."):null}function p(){var r,e,t,n;return null===(r=window)||void 0===r||null===(e=r.xprops)||void 0===e||null===(t=e.app)||void 0===t||null===(n=t.app)||void 0===n?void 0:n.app_key}function u(r){var e=r.config,t=r.appKey,o=r.Authorization,a=n({},e.headers||{});return t&&(a["x-corva-app"]=t),o&&(a.Authorization=o),n(n({},e),{},{headers:a})}var s=function(){try{var r=sessionStorage.getItem(e);if(r)return r;var t=i?window.parent.location.href:window.location.href;return new URL(t).searchParams.get("token")}catch(r){return null}},l=function(){var r=s();return r?{Authorization:"Bearer ".concat(r)}:{}};export{u as attachHTTPHeaders,c as getAppKeyFromStackTrace,p as getAppKeyFromXProps,l as getAuthorizationHeaders,s as getAuthorizationToken};
1
+ import r from"@babel/runtime/helpers/defineProperty";import{MOBILE_AUTH_TOKEN_STORAGE_KEY as e}from"../constants/mobile.js";function t(r,e){var t=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),t.push.apply(t,n)}return t}function n(e){for(var n=1;n<arguments.length;n++){var o=null!=arguments[n]?arguments[n]:{};n%2?t(Object(o),!0).forEach((function(t){r(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):t(Object(o)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(o,r))}))}return e}var o=/corva\.ai\/(.+?)\/packages/,a=/app\/(.+?)\/.*\.chunk\.js/,i=window.self!==window.top,c=function(){var r,e,t,n,i,c,p,s=null===(r=window)||void 0===r||null===(e=r.xprops)||void 0===e||null===(t=e.app)||void 0===t||null===(n=t.app)||void 0===n?void 0:n.app_key;if(s)return{appKey:s,appInstanceId:String(null===(i=window)||void 0===i||null===(c=i.xprops)||void 0===c||null===(p=c.app)||void 0===p?void 0:p.id)};var u=Error.stackTraceLimit;Error.stackTraceLimit=300;var l=new Error,d=l.stack.match(o)||l.stack.match(a);return Error.stackTraceLimit=u,d?{appKey:d[1].replace("/app/","."),appInstanceId:"nonisolated"}:void 0};function p(r){var e=r.config,t=r.appKey,o=r.Authorization,a=n({},e.headers||{});return t&&(a["x-corva-app"]=t),o&&(a.Authorization=o),n(n({},e),{},{headers:a})}var s=function(){try{var r=sessionStorage.getItem(e);if(r)return r;var t=i?window.parent.location.href:window.location.href;return new URL(t).searchParams.get("token")}catch(r){return null}},u=function(){var r=s();return r?{Authorization:"Bearer ".concat(r)}:{}};export{p as attachHTTPHeaders,c as getAppKeyAndId,u as getAuthorizationHeaders,s as getAuthorizationToken};
2
2
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../src/clients/utils.js"],"sourcesContent":["import { MOBILE_AUTH_TOKEN_STORAGE_KEY } from '~/constants/mobile';\n\n// NOTE: Non-greedy regexp to find the app key from filename\nconst DEVCENTER_APP_KEY_EXTRACTOR_REGEXP = /corva\\.ai\\/(.+?)\\/packages/;\nconst PLATFORM_APP_KEY_EXTRACTOR_REGEXP = /app\\/(.+?)\\/.*\\.chunk\\.js/;\n\nconst isInsideIframe = window.self !== window.top;\n\nexport function getAppKeyFromStackTrace() {\n const prevStackTraceLimit = Error.stackTraceLimit;\n Error.stackTraceLimit = 300;\n\n const error = new Error();\n const match =\n error.stack.match(DEVCENTER_APP_KEY_EXTRACTOR_REGEXP) ||\n error.stack.match(PLATFORM_APP_KEY_EXTRACTOR_REGEXP);\n\n Error.stackTraceLimit = prevStackTraceLimit;\n return match ? match[1].replace('/app/', '.') : null;\n}\n\nexport function getAppKeyFromXProps() {\n // window.xprops object is available only in devcenter app in iframe. This is ZOID library API\n return window?.xprops?.app?.app?.app_key;\n}\n\nexport function attachHTTPHeaders({ config, appKey, Authorization }) {\n const headers = { ...(config.headers || {}) };\n if (appKey) headers['x-corva-app'] = appKey;\n if (Authorization) headers.Authorization = Authorization;\n\n return { ...config, headers };\n}\n\nexport const getAuthorizationToken = () => {\n try {\n const mobileAuthToken = sessionStorage.getItem(MOBILE_AUTH_TOKEN_STORAGE_KEY);\n if (mobileAuthToken) return mobileAuthToken;\n\n const url = isInsideIframe ? window.parent.location.href : window.location.href; // Get the current URL\n const params = new URL(url).searchParams; // Parse the URL query parameters\n return params.get('token'); // Extract the 'token' parameter\n } catch (error) {\n return null;\n }\n};\n\nexport const getAuthorizationHeaders = () => {\n const token = getAuthorizationToken();\n return token ? { Authorization: `Bearer ${token}` } : {};\n};\n"],"names":["DEVCENTER_APP_KEY_EXTRACTOR_REGEXP","PLATFORM_APP_KEY_EXTRACTOR_REGEXP","isInsideIframe","window","self","top","getAppKeyFromStackTrace","prevStackTraceLimit","Error","stackTraceLimit","error","match","stack","replace","getAppKeyFromXProps","_window","_window$xprops","_window$xprops$app","_window$xprops$app$ap","xprops","app","app_key","attachHTTPHeaders","_ref","config","appKey","Authorization","headers","_objectSpread","getAuthorizationToken","mobileAuthToken","sessionStorage","getItem","MOBILE_AUTH_TOKEN_STORAGE_KEY","url","parent","location","href","URL","searchParams","get","getAuthorizationHeaders","token"],"mappings":"2rBAGA,IAAMA,EAAqC,6BACrCC,EAAoC,4BAEpCC,EAAiBC,OAAOC,OAASD,OAAOE,IAEvC,SAASC,IACd,IAAMC,EAAsBC,MAAMC,gBAClCD,MAAMC,gBAAkB,IAExB,IAAMC,EAAQ,IAAIF,MACZG,EACJD,EAAME,MAAMD,MAAMX,IAClBU,EAAME,MAAMD,MAAMV,GAGpB,OADAO,MAAMC,gBAAkBF,EACjBI,EAAQA,EAAM,GAAGE,QAAQ,QAAS,KAAO,IAClD,CAEO,SAASC,IAAsB,IAAAC,EAAAC,EAAAC,EAAAC,EAEpC,OAAa,QAAbH,EAAOZ,cAAM,IAAAY,GAAN,QAAMC,EAAND,EAAQI,cAAR,IAAAH,GAAmB,QAAnBC,EAAAD,EAAgBI,WAAG,IAAAH,GAAnB,QAAmBC,EAAnBD,EAAqBG,WAArB,IAAAF,OAAM,EAANA,EAA0BG,OACnC,CAEO,SAASC,EAAqDC,GAAA,IAAjCC,IAAAA,OAAQC,IAAAA,OAAQC,IAAAA,cAC5CC,OAAgBH,EAAOG,SAAW,CAAA,GAIxC,OAHIF,IAAQE,EAAQ,eAAiBF,GACjCC,IAAeC,EAAQD,cAAgBA,GAE3CE,EAAAA,EAAA,CAAA,EAAYJ,GAAM,CAAA,EAAA,CAAEG,QAAAA,GACtB,CAEaE,IAAAA,EAAwB,WACnC,IACE,IAAMC,EAAkBC,eAAeC,QAAQC,GAC/C,GAAIH,EAAiB,OAAOA,EAE5B,IAAMI,EAAMhC,EAAiBC,OAAOgC,OAAOC,SAASC,KAAOlC,OAAOiC,SAASC,KAE3E,OADe,IAAIC,IAAIJ,GAAKK,aACdC,IAAI,QAGpB,CAFE,MAAO9B,GACP,OAAO,IACT,CACF,EAEa+B,EAA0B,WACrC,IAAMC,EAAQb,IACd,OAAOa,EAAQ,CAAEhB,+BAAyBgB,IAAY,EACxD"}
1
+ {"version":3,"file":"utils.js","sources":["../../src/clients/utils.js"],"sourcesContent":["import { MOBILE_AUTH_TOKEN_STORAGE_KEY } from '~/constants/mobile';\n\n// NOTE: Non-greedy regexp to find the app key from filename\nconst DEVCENTER_APP_KEY_EXTRACTOR_REGEXP = /corva\\.ai\\/(.+?)\\/packages/;\nconst PLATFORM_APP_KEY_EXTRACTOR_REGEXP = /app\\/(.+?)\\/.*\\.chunk\\.js/;\n\nconst isInsideIframe = window.self !== window.top;\n\nexport const getAppKeyAndId = () => {\n const xpropsAppKey = window?.xprops?.app?.app?.app_key;\n\n if (xpropsAppKey) {\n return {\n appKey: xpropsAppKey,\n appInstanceId: String(window?.xprops?.app?.id),\n };\n } else {\n const prevStackTraceLimit = Error.stackTraceLimit;\n Error.stackTraceLimit = 300;\n\n const error = new Error();\n const match =\n error.stack.match(DEVCENTER_APP_KEY_EXTRACTOR_REGEXP) ||\n error.stack.match(PLATFORM_APP_KEY_EXTRACTOR_REGEXP);\n\n Error.stackTraceLimit = prevStackTraceLimit;\n\n if (match) {\n return {\n appKey: match[1].replace('/app/', '.'),\n appInstanceId: 'nonisolated',\n };\n }\n }\n\n return undefined;\n};\n\nexport function attachHTTPHeaders({ config, appKey, Authorization }) {\n const headers = { ...(config.headers || {}) };\n if (appKey) headers['x-corva-app'] = appKey;\n if (Authorization) headers.Authorization = Authorization;\n\n return { ...config, headers };\n}\n\nexport const getAuthorizationToken = () => {\n try {\n const mobileAuthToken = sessionStorage.getItem(MOBILE_AUTH_TOKEN_STORAGE_KEY);\n if (mobileAuthToken) return mobileAuthToken;\n\n const url = isInsideIframe ? window.parent.location.href : window.location.href; // Get the current URL\n const params = new URL(url).searchParams; // Parse the URL query parameters\n return params.get('token'); // Extract the 'token' parameter\n } catch (error) {\n return null;\n }\n};\n\nexport const getAuthorizationHeaders = () => {\n const token = getAuthorizationToken();\n return token ? { Authorization: `Bearer ${token}` } : {};\n};\n"],"names":["DEVCENTER_APP_KEY_EXTRACTOR_REGEXP","PLATFORM_APP_KEY_EXTRACTOR_REGEXP","isInsideIframe","window","self","top","getAppKeyAndId","_window","_window$xprops","_window$xprops$app","_window$xprops$app$ap","_window2","_window2$xprops","_window2$xprops$app","xpropsAppKey","xprops","app","app_key","appKey","appInstanceId","String","id","prevStackTraceLimit","Error","stackTraceLimit","error","match","stack","replace","attachHTTPHeaders","_ref","config","Authorization","headers","_objectSpread","getAuthorizationToken","mobileAuthToken","sessionStorage","getItem","MOBILE_AUTH_TOKEN_STORAGE_KEY","url","parent","location","href","URL","searchParams","get","getAuthorizationHeaders","token"],"mappings":"2rBAGA,IAAMA,EAAqC,6BACrCC,EAAoC,4BAEpCC,EAAiBC,OAAOC,OAASD,OAAOE,IAEjCC,EAAiB,WAAM,IAAAC,EAAAC,EAAAC,EAAAC,EAGhBC,EAAAC,EAAAC,EAFZC,EAAqB,QAATP,EAAGJ,cAAM,IAAAI,GAAQ,QAARC,EAAND,EAAQQ,cAAM,IAAAP,GAAd,QAAcC,EAAdD,EAAgBQ,WAAhB,IAAAP,GAAwB,QAAxBC,EAAAD,EAAqBO,WAAG,IAAAN,OAAlB,EAANA,EAA0BO,QAE/C,GAAIH,EACF,MAAO,CACLI,OAAQJ,EACRK,cAAeC,OAAO,QAAAjB,EAAAA,cAAA,IAAAQ,GAAc,QAAdC,EAAAD,EAAQI,cAAM,IAAAH,GAAd,QAAcC,EAAdD,EAAgBI,WAAhB,IAAAH,OAAA,EAAAA,EAAqBQ,KAG7C,IAAMC,EAAsBC,MAAMC,gBAClCD,MAAMC,gBAAkB,IAExB,IAAMC,EAAQ,IAAIF,MACZG,EACJD,EAAME,MAAMD,MAAM1B,IAClByB,EAAME,MAAMD,MAAMzB,GAIpB,OAFAsB,MAAMC,gBAAkBF,EAEpBI,EACK,CACLR,OAAQQ,EAAM,GAAGE,QAAQ,QAAS,KAClCT,cAAe,oBAHnB,CASJ,EAEO,SAASU,EAAqDC,GAAA,IAAjCC,IAAAA,OAAQb,IAAAA,OAAQc,IAAAA,cAC5CC,OAAgBF,EAAOE,SAAW,CAAA,GAIxC,OAHIf,IAAQe,EAAQ,eAAiBf,GACjCc,IAAeC,EAAQD,cAAgBA,GAE3CE,EAAAA,EAAA,CAAA,EAAYH,GAAM,CAAA,EAAA,CAAEE,QAAAA,GACtB,CAEaE,IAAAA,EAAwB,WACnC,IACE,IAAMC,EAAkBC,eAAeC,QAAQC,GAC/C,GAAIH,EAAiB,OAAOA,EAE5B,IAAMI,EAAMtC,EAAiBC,OAAOsC,OAAOC,SAASC,KAAOxC,OAAOuC,SAASC,KAE3E,OADe,IAAIC,IAAIJ,GAAKK,aACdC,IAAI,QAGpB,CAFE,MAAOrB,GACP,OAAO,IACT,CACF,EAEasB,EAA0B,WACrC,IAAMC,EAAQb,IACd,OAAOa,EAAQ,CAAEhB,+BAAyBgB,IAAY,EACxD"}
@@ -1 +1 @@
1
- {"version":3,"file":"DevCenterIsolatedApp.d.ts","sourceRoot":"","sources":["../../../../src/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedApp.js"],"names":[],"mappings":"AA+QA,uCAA8E"}
1
+ {"version":3,"file":"DevCenterIsolatedApp.d.ts","sourceRoot":"","sources":["../../../../src/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedApp.js"],"names":[],"mappings":"AAiRA,uCAA8E"}
@@ -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-dom";import{noop as u}from"lodash";import d from"query-string";import m from"prop-types";import{APP_IFRAME_ATTRIBUTE as v,IsolatedPage as f}from"./IsolatedPage.js";import{ISOLATED_PAGE_APP_CONTAINER_ID as C}from"./constants.js";import b from"./DevCenterIsolatedApp.module.css.js";import h 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 y 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 I}from"../DevCenterAppContainer/utils.js";import{isInsideNewMobileApp as x}from"../../../utils/mobileDetect.js";import{createDevCenterRouter as P,isCorvaApp as w,isIsolationEnabledInPackageManifest as D,isAppMaximized as O}from"../../../utils/devcenter.js";var S=["isIsolationFeatureEnabled","onAppFullscreenTransparentMode","onIsMaximizedChange","onInnerContainerMouseEnter","onInnerContainerMouseLeave","onAppContainerClick","setInnerContainerRefFn"];function L(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 E(n){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?L(Object(t),!0).forEach((function(r){e(n,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):L(Object(t)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(t,e))}))}return n}function F(e){var c,u,m,L,F,T,R,k=e.isIsolationFeatureEnabled,z=e.onAppFullscreenTransparentMode,B=e.onIsMaximizedChange,_=e.onInnerContainerMouseEnter,N=e.onInnerContainerMouseLeave,q=e.onAppContainerClick,U=e.setInnerContainerRefFn,W=r(e,S),H=t((function(){return P(W.history)}),[null===(c=W.history)||void 0===c?void 0:c.location]),V=w(null==W||null===(u=W.app)||void 0===u?void 0:u.app)&&!D(null==W||null===(m=W.app)||void 0===m?void 0:m.package)||!k,G=V?y:f,J=null===(L=W.app)||void 0===L||null===(F=L.app)||void 0===F?void 0:F.app_key,K=I(W.app),Q="".concat(J,"-").concat(K),X=o(),Y=o(),Z=o(),$=o(!1),ee=o(!1),ne=O(d.parse(null===(T=W.history)||void 0===T||null===(R=T.location)||void 0===R?void 0:R.search),W.app.id),re=o(ne);re.current=ne;var te=i(j()),oe=n(te,2),ie=oe[0],ae=oe[1];a((function(){var e=A((function(e){return ae(e)}));return function(){return e()}}),[]);var pe=p(h),se=g();function le(){z({appId:W.app.id,isModeEnabled:!1}),document.body.classList.remove("dc-isolated-app__body-overflow",b.compensateScroll)}var ce=s((function(e){var n,r,t,o,i,a=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!k||V||re.current&&!$.current||$.current===e){var p;a&&ee.current!==a&&(ee.current=a,null===(p=Y.current)||void 0===p||p.classList.add(b.containerMaximizedTransparentModal))}else{var s,l=e?"add":"remove";if(null===(n=Y.current)||void 0===n||n.classList[l](b.containerMaximizedTransparent),a||"remove"===l)null===(s=Y.current)||void 0===s||s.classList[l](b.containerMaximizedTransparentModal);X.current=null===(r=Y.current)||void 0===r||null===(t=r.querySelector("[".concat(v,"]")))||void 0===t||null===(o=t.contentWindow)||void 0===o?void 0:o.document;var c=null===(i=X.current)||void 0===i?void 0:i.getElementById(C);if(c){if(e){var u=Z.current.getBoundingClientRect(),d=u.top,m=u.left,f=u.width,h=u.height;c.setAttribute("style","\n top: ".concat(d,"px;\n left: ").concat(m,"px;\n width: ").concat(f,"px;\n height: ").concat(h,"px;\n position: absolute;\n ")),z({appId:W.app.id,isModeEnabled:!0});var g=window.innerWidth!==document.body.clientWidth;document.body.classList.add("dc-isolated-app__body-overflow",g&&b.compensateScroll)}else c.setAttribute("style",""),le();$.current=e,ee.current=a}}}),[k,V,re]);a((function(){return le}),[]),a((function(){ne&&$.current&&ce(!1)}),[ne]);var ue=s((function(e){Y.current=e,U(e)}),[]);return M("div",{className:l("dc-isolated-app",b.fixedSizeContainer),ref:Z,children:M("div",{ref:ue,onMouseEnter:_,onMouseLeave:N,"data-testid":"".concat("DevCenter_AppContainer","_").concat(W.app.app.name),className:l(b.container,x&&b.newMobileAppContainer,ne&&b.containerMaximized),children:M(G,E(E({},W),{},{appContextValue:pe,devCenterRouter:H,globalNotificationToastsAPI:window[Symbol.for("notificationToasts")],globalMixpanelEventTracker:window[Symbol.for("logToMixpanel")],onAppContainerClick:q,onIsMaximizedChange:B,permissionsContextValue:se,setIsFullscreenModalMode:ce,userUnits:ie}),Q)})})}F.propTypes={app:m.shape({id:m.number,app:m.shape({name:m.string})}).isRequired,currentUser:m.shape({}).isRequired,isIsolationFeatureEnabled:m.bool,onAppContainerClick:m.func,onAppFullscreenTransparentMode:m.func,onAppRemove:m.func,onInnerContainerMouseEnter:m.func,onInnerContainerMouseLeave:m.func,onIsMaximizedChange:m.func,onSettingChange:m.func,onSettingsChange:m.func,setInnerContainerRefFn:m.func,updateCurrentDashboardAppLastAnnotation:m.func},F.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 T=c(F);export{T 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 c from"classnames";import{withRouter as l}from"react-router-dom";import{noop as u}from"lodash";import d from"query-string";import m from"prop-types";import{APP_IFRAME_ATTRIBUTE as v,IsolatedPage as f}from"./IsolatedPage.js";import{ISOLATED_PAGE_APP_CONTAINER_ID as C}from"./constants.js";import b from"./DevCenterIsolatedApp.module.css.js";import A from"../AppContext.js";import h 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 g,subscribeForUserUnitsUpdates as j}from"../../../utils/index.js";import"../AppHeader/AppHeader.js";import"../AppSideBar/AppSideBar.js";import"../AppsDataProvider/AppsDataProvider.js";import y 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 x}from"../DevCenterAppContainer/utils.js";import{isInsideNewMobileApp as I}from"../../../utils/mobileDetect.js";import{createDevCenterRouter as P,isCorvaApp as w,isIsolationEnabledInPackageManifest as L,isAppMaximized as D}from"../../../utils/devcenter.js";var E=["isIsolationFeatureEnabled","onAppFullscreenTransparentMode","onIsMaximizedChange","onInnerContainerMouseEnter","onInnerContainerMouseLeave","onAppContainerClick","setInnerContainerRefFn","trackApiRateLimiterException"];function O(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 S(n){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?O(Object(t),!0).forEach((function(r){e(n,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(t)):O(Object(t)).forEach((function(e){Object.defineProperty(n,e,Object.getOwnPropertyDescriptor(t,e))}))}return n}function R(e){var l,u,m,O,R,F,k,T=e.isIsolationFeatureEnabled,z=e.onAppFullscreenTransparentMode,B=e.onIsMaximizedChange,_=e.onInnerContainerMouseEnter,N=e.onInnerContainerMouseLeave,q=e.onAppContainerClick,U=e.setInnerContainerRefFn,W=e.trackApiRateLimiterException,H=r(e,E),V=t((function(){return P(H.history)}),[null===(l=H.history)||void 0===l?void 0:l.location]),G=w(null==H||null===(u=H.app)||void 0===u?void 0:u.app)&&!L(null==H||null===(m=H.app)||void 0===m?void 0:m.package)||!T,J=G?y:f,K=null===(O=H.app)||void 0===O||null===(R=O.app)||void 0===R?void 0:R.app_key,Q=x(H.app),X="".concat(K,"-").concat(Q),Y=o(),Z=o(),$=o(),ee=o(!1),ne=o(!1),re=D(d.parse(null===(F=H.history)||void 0===F||null===(k=F.location)||void 0===k?void 0:k.search),H.app.id),te=o(re);te.current=re;var oe=i(g()),ie=n(oe,2),ae=ie[0],pe=ie[1];a((function(){var e=j((function(e){return pe(e)}));return function(){return e()}}),[]);var se=p(A),ce=h();function le(){z({appId:H.app.id,isModeEnabled:!1}),document.body.classList.remove("dc-isolated-app__body-overflow",b.compensateScroll)}var ue=s((function(e){var n,r,t,o,i,a=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(!T||G||te.current&&!ee.current||ee.current===e){var p;a&&ne.current!==a&&(ne.current=a,null===(p=Z.current)||void 0===p||p.classList.add(b.containerMaximizedTransparentModal))}else{var s,c=e?"add":"remove";if(null===(n=Z.current)||void 0===n||n.classList[c](b.containerMaximizedTransparent),a||"remove"===c)null===(s=Z.current)||void 0===s||s.classList[c](b.containerMaximizedTransparentModal);Y.current=null===(r=Z.current)||void 0===r||null===(t=r.querySelector("[".concat(v,"]")))||void 0===t||null===(o=t.contentWindow)||void 0===o?void 0:o.document;var l=null===(i=Y.current)||void 0===i?void 0:i.getElementById(C);if(l){if(e){var u=$.current.getBoundingClientRect(),d=u.top,m=u.left,f=u.width,A=u.height;l.setAttribute("style","\n top: ".concat(d,"px;\n left: ").concat(m,"px;\n width: ").concat(f,"px;\n height: ").concat(A,"px;\n position: absolute;\n ")),z({appId:H.app.id,isModeEnabled:!0});var h=window.innerWidth!==document.body.clientWidth;document.body.classList.add("dc-isolated-app__body-overflow",h&&b.compensateScroll)}else l.setAttribute("style",""),le();ee.current=e,ne.current=a}}}),[T,G,te]);a((function(){return le}),[]),a((function(){re&&ee.current&&ue(!1)}),[re]);var de=s((function(e){Z.current=e,U(e)}),[]);return M("div",{className:c("dc-isolated-app",b.fixedSizeContainer),ref:$,children:M("div",{ref:de,onMouseEnter:_,onMouseLeave:N,"data-testid":"".concat("DevCenter_AppContainer","_").concat(H.app.app.name),className:c(b.container,I&&b.newMobileAppContainer,re&&b.containerMaximized),children:M(J,S(S({},H),{},{appContextValue:se,devCenterRouter:V,globalNotificationToastsAPI:window[Symbol.for("notificationToasts")],globalMixpanelEventTracker:window[Symbol.for("logToMixpanel")],onAppContainerClick:q,onIsMaximizedChange:B,permissionsContextValue:ce,setIsFullscreenModalMode:ue,userUnits:ae,trackApiRateLimiterException:W}),X)})})}R.propTypes={app:m.shape({id:m.number,app:m.shape({name:m.string})}).isRequired,currentUser:m.shape({}).isRequired,isIsolationFeatureEnabled:m.bool,onAppContainerClick:m.func,onAppFullscreenTransparentMode:m.func,onAppRemove:m.func,onInnerContainerMouseEnter:m.func,onInnerContainerMouseLeave:m.func,onIsMaximizedChange:m.func,onSettingChange:m.func,onSettingsChange:m.func,setInnerContainerRefFn:m.func,updateCurrentDashboardAppLastAnnotation:m.func},R.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=l(R);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-dom';\nimport { noop } from 'lodash';\nimport queryString from 'query-string';\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.history),\n [props.history?.location]\n );\n\n const isNonIsolatedApp =\n (devCenterUtils.isCorvaApp(props?.app?.app) &&\n !devCenterUtils.isIsolationEnabledInPackageManifest(props?.app?.package)) ||\n !isIsolationFeatureEnabled;\n\n const DCAppComponent = isNonIsolatedApp ? DevCenterAppContainer : IsolatedPage;\n\n // Key to force iframe recreation when app version changes.\n // This ensures global dependencies are re-initialized for the new version.\n const appKey = props.app?.app?.app_key;\n const appVersion = getAppVersion(props.app);\n const iframeKey = `${appKey}-${appVersion}`;\n\n const appIframeDocument = useRef();\n const containerRef = useRef();\n const fixedSizeContainerRef = useRef();\n const fullscreenModeRef = useRef(false);\n const fullscreenModalModeRef = useRef(false);\n\n const isAppMaximized = devCenterUtils.isAppMaximized(\n queryString.parse(props.history?.location?.search),\n props.app.id\n );\n\n // save to ref to not re-create setIsFullscreenModalMode callback on change and reduce the amoount of DC apps re-renders\n const isAppMaximizedRef = useRef(isAppMaximized);\n isAppMaximizedRef.current = isAppMaximized;\n\n const [userUnits, setUserUnits] = useState(getUserUnits());\n\n useEffect(() => {\n const unsubscribeFn = subscribeForUserUnitsUpdates(newUserUnits => setUserUnits(newUserUnits));\n\n return () => unsubscribeFn();\n }, []);\n\n const appContextValue = useContext(AppContext);\n const permissionsContextValue = usePermissionsContext();\n\n /*\n What is fullscreen modal mode?\n\n Our apps, are shown in isolated iFrames. Because of it, when an app has some modal\n and opens it - it's opened inside of its iframe, instead of opening at the center of the screen.\n\n To make app modals & other elements be opened at the center of the screen, as if they are not inside of an iframe,\n we use some hacks.\n\n When the app wants to open a fullscreen element, we make its iframe fullscreen, but with transparent background,\n and we set width/height & position of that app iframe to inner app container that is located inside of the iframe.\n So when iframe's fullscreen element is opened, it looks like it's a part of the platform, and the app which shows the element, looks like\n usual, not in fullscreen\n\n So the platform provides this setIsFullscreenModalMode function to DC apps.\n When DC app wants to open a modal that should be opened at the center of the screen - it needs to\n call setIsFullscreenModalMode(true) first. And when it closes the modal - setIsFullscreenModalMode(false)\n\n Two things are important about this\n - all these styles that make this invisible background work should be applied at once\n - enter and exit from the mode, shouldn't trigger even a single re-render, as it may impact\n some elements inside the DC app\n\n There's a second parameter to `setIsFullscreenModalMode`: `isModal`. It should be used when a fullscreen overlay is displayed\n (Modal, for instance) that should cover everything on screen.\n\n What it does - it basically sets the stretched element's z-index to a very high value, so it covers every other UI element in CWF\n */\n\n function handleAppFullscreenTransparentModeExit() {\n onAppFullscreenTransparentMode({ appId: props.app.id, isModeEnabled: false });\n document.body.classList.remove('dc-isolated-app__body-overflow', styles.compensateScroll);\n }\n\n const setIsFullscreenModalMode = useCallback(\n function setIsFullscreenModalMode(nextIsFullscreenModalModeValue, isModal = false) {\n // When an app is already in fullscreen mode, no need to use this\n // invisible fullscreen mode to make elements take the whole screen\n\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$history","_props$app","_props$app2","_props$app3","_props$app3$app","_props$history2","_props$history2$locat","isIsolationFeatureEnabled","onAppFullscreenTransparentMode","onIsMaximizedChange","onInnerContainerMouseEnter","onInnerContainerMouseLeave","onAppContainerClick","setInnerContainerRefFn","props","_objectWithoutProperties","_excluded","devCenterRouter","useMemo","devCenterUtils","history","location","isNonIsolatedApp","app","package","DCAppComponent","DevCenterAppContainer","IsolatedPage","appKey","app_key","appVersion","getAppVersion","iframeKey","concat","appIframeDocument","useRef","containerRef","fixedSizeContainerRef","fullscreenModeRef","fullscreenModalModeRef","isAppMaximized","queryString","parse","search","id","isAppMaximizedRef","current","_useState","useState","getUserUnits","_useState2","_slicedToArray","userUnits","setUserUnits","useEffect","unsubscribeFn","subscribeForUserUnitsUpdates","newUserUnits","appContextValue","useContext","AppContext","permissionsContextValue","usePermissionsContext","handleAppFullscreenTransparentModeExit","appId","isModeEnabled","document","body","classList","remove","styles","compensateScroll","setIsFullscreenModalMode","useCallback","nextIsFullscreenModalModeValue","_containerRef$current2","_containerRef$current4","_containerRef$current5","_containerRef$current6","_appIframeDocument$cu","isModal","_containerRef$current","add","containerMaximizedTransparentModal","_containerRef$current3","classesEditMethod","containerMaximizedTransparent","querySelector","APP_IFRAME_ATTRIBUTE","contentWindow","isolatedPageAppContainer","getElementById","ISOLATED_PAGE_APP_CONTAINER_ID","_fixedSizeContainerRe","getBoundingClientRect","top","left","width","height","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
+ {"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-dom';\nimport { noop } from 'lodash';\nimport queryString from 'query-string';\nimport PropTypes from 'prop-types';\n\nimport { APP_IFRAME_ATTRIBUTE, IsolatedPage } from './IsolatedPage';\nimport { ISOLATED_PAGE_APP_CONTAINER_ID } from './constants';\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 trackApiRateLimiterException,\n ...props\n}) {\n const devCenterRouter = useMemo(\n () => devCenterUtils.createDevCenterRouter(props.history),\n [props.history?.location]\n );\n\n const isNonIsolatedApp =\n (devCenterUtils.isCorvaApp(props?.app?.app) &&\n !devCenterUtils.isIsolationEnabledInPackageManifest(props?.app?.package)) ||\n !isIsolationFeatureEnabled;\n\n const DCAppComponent = isNonIsolatedApp ? DevCenterAppContainer : IsolatedPage;\n\n // Key to force iframe recreation when app version changes.\n // This ensures global dependencies are re-initialized for the new version.\n const appKey = props.app?.app?.app_key;\n const appVersion = getAppVersion(props.app);\n const iframeKey = `${appKey}-${appVersion}`;\n\n const appIframeDocument = useRef();\n const containerRef = useRef();\n const fixedSizeContainerRef = useRef();\n const fullscreenModeRef = useRef(false);\n const fullscreenModalModeRef = useRef(false);\n\n const isAppMaximized = devCenterUtils.isAppMaximized(\n queryString.parse(props.history?.location?.search),\n props.app.id\n );\n\n // save to ref to not re-create setIsFullscreenModalMode callback on change and reduce the amoount of DC apps re-renders\n const isAppMaximizedRef = useRef(isAppMaximized);\n isAppMaximizedRef.current = isAppMaximized;\n\n const [userUnits, setUserUnits] = useState(getUserUnits());\n\n useEffect(() => {\n const unsubscribeFn = subscribeForUserUnitsUpdates(newUserUnits => setUserUnits(newUserUnits));\n\n return () => unsubscribeFn();\n }, []);\n\n const appContextValue = useContext(AppContext);\n const permissionsContextValue = usePermissionsContext();\n\n /*\n What is fullscreen modal mode?\n\n Our apps, are shown in isolated iFrames. Because of it, when an app has some modal\n and opens it - it's opened inside of its iframe, instead of opening at the center of the screen.\n\n To make app modals & other elements be opened at the center of the screen, as if they are not inside of an iframe,\n we use some hacks.\n\n When the app wants to open a fullscreen element, we make its iframe fullscreen, but with transparent background,\n and we set width/height & position of that app iframe to inner app container that is located inside of the iframe.\n So when iframe's fullscreen element is opened, it looks like it's a part of the platform, and the app which shows the element, looks like\n usual, not in fullscreen\n\n So the platform provides this setIsFullscreenModalMode function to DC apps.\n When DC app wants to open a modal that should be opened at the center of the screen - it needs to\n call setIsFullscreenModalMode(true) first. And when it closes the modal - setIsFullscreenModalMode(false)\n\n Two things are important about this\n - all these styles that make this invisible background work should be applied at once\n - enter and exit from the mode, shouldn't trigger even a single re-render, as it may impact\n some elements inside the DC app\n\n There's a second parameter to `setIsFullscreenModalMode`: `isModal`. It should be used when a fullscreen overlay is displayed\n (Modal, for instance) that should cover everything on screen.\n\n What it does - it basically sets the stretched element's z-index to a very high value, so it covers every other UI element in CWF\n */\n\n function handleAppFullscreenTransparentModeExit() {\n onAppFullscreenTransparentMode({ appId: props.app.id, isModeEnabled: false });\n document.body.classList.remove('dc-isolated-app__body-overflow', styles.compensateScroll);\n }\n\n const setIsFullscreenModalMode = useCallback(\n function setIsFullscreenModalMode(nextIsFullscreenModalModeValue, isModal = false) {\n // When an app is already in fullscreen mode, no need to use this\n // invisible fullscreen mode to make elements take the whole screen\n\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 trackApiRateLimiterException={trackApiRateLimiterException}\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$history","_props$app","_props$app2","_props$app3","_props$app3$app","_props$history2","_props$history2$locat","isIsolationFeatureEnabled","onAppFullscreenTransparentMode","onIsMaximizedChange","onInnerContainerMouseEnter","onInnerContainerMouseLeave","onAppContainerClick","setInnerContainerRefFn","trackApiRateLimiterException","props","_objectWithoutProperties","_excluded","devCenterRouter","useMemo","devCenterUtils","history","location","isNonIsolatedApp","app","package","DCAppComponent","DevCenterAppContainer","IsolatedPage","appKey","app_key","appVersion","getAppVersion","iframeKey","concat","appIframeDocument","useRef","containerRef","fixedSizeContainerRef","fullscreenModeRef","fullscreenModalModeRef","isAppMaximized","queryString","parse","search","id","isAppMaximizedRef","current","_useState","useState","getUserUnits","_useState2","_slicedToArray","userUnits","setUserUnits","useEffect","unsubscribeFn","subscribeForUserUnitsUpdates","newUserUnits","appContextValue","useContext","AppContext","permissionsContextValue","usePermissionsContext","handleAppFullscreenTransparentModeExit","appId","isModeEnabled","document","body","classList","remove","styles","compensateScroll","setIsFullscreenModalMode","useCallback","nextIsFullscreenModalModeValue","_containerRef$current2","_containerRef$current4","_containerRef$current5","_containerRef$current6","_appIframeDocument$cu","isModal","_containerRef$current","add","containerMaximizedTransparentModal","_containerRef$current3","classesEditMethod","containerMaximizedTransparent","querySelector","APP_IFRAME_ATTRIBUTE","contentWindow","isolatedPageAppContainer","getElementById","ISOLATED_PAGE_APP_CONTAINER_ID","_fixedSizeContainerRe","getBoundingClientRect","top","left","width","height","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":"DevCenterIsolatedAppPage.d.ts","sourceRoot":"","sources":["../../../../src/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js"],"names":[],"mappings":"AAyCA;;;;GAIG;AACH;;;;gBA4FC;;;;;;;;;;;;;;;;sBAzIqB,YAAY"}
1
+ {"version":3,"file":"DevCenterIsolatedAppPage.d.ts","sourceRoot":"","sources":["../../../../src/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js"],"names":[],"mappings":"AAyCA;;;;GAIG;AACH;;;;gBA+FC;;;;;;;;;;;;;;;;sBA5IqB,YAAY"}
@@ -1,2 +1,2 @@
1
- import o from"@babel/runtime/helpers/defineProperty";import s from"@babel/runtime/helpers/objectWithoutProperties";import{useEffect as t,useRef as n}from"react";import i from"prop-types";import{makeStyles as e}from"@material-ui/core";import r from"classnames";import c from"moment-timezone";import{MemoryRouter as m}from"react-router-dom";import{useXProps as p}from"./effects/useXProps.js";import{ISOLATED_PAGE_APP_CONTAINER_ID as l}from"./constants.js";import{replaceUndefinedValuesWithNull as a}from"./utils/replaceUndefinedValuesWithNull.js";import{getDashboardCapturingHandler as u}from"./utils/dashboardCapturing.js";import{IsInsideIsolatedDcAppProvider as j}from"../DevCenterAppContainer/components/IsInsideIsolatedDcAppProvider/IsInsideIsolatedDcAppProvider.js";import d from"../DevCenterAppContainer/DevCenterAppContainer.js";import{jsx as I}from"react/jsx-runtime";import"@icon-park/react/es/all";import{IconParkProvider as f}from"../../../icons/IconParkProvider.js";import"../../../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 h from"../../../hocs/withMUIProvidersHOC.js";import"../../../hocs/withAssetEditorLockHOC.js";import C from"../AppContext.js";import{THEMES as g}from"../../../constants/theme.js";import{LOCAL_STORAGE_APP_THEME_KEY as b}from"../../../CLI/hocs/constants.js";import{setThemeVariables as v}from"../../../utils/themeVariables.js";import{isPDFReportView as A}from"../../../CLI/hocs/utils.js";import{PermissionsContext as P}from"../../../permissions/PermissionsContext.js";import{updateUserUnits as y}from"../../../utils/index.js";import"../../../styles/iconPark.global.css.js";import"../../../styles/index.global.css.js";import"../../../styles/reactVirtualized.global.css.js";import"../../../styles/emojiMart.global.css.js";import"../../../styles/mapbox.global.css.js";import"../../../styles/lightbox.global.css.js";import"../../../styles/generatedThemesVariables.global.css.js";import"../../../styles/customScrollbars.global.css.js";var O=["appContextValue","globalMixpanelEventTracker","globalNotificationToastsAPI","onSettingChange","onSettingsChange","permissionsContextValue","timezone","userUnits"];function S(o,s){var t=Object.keys(o);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(o);s&&(n=n.filter((function(s){return Object.getOwnPropertyDescriptor(o,s).enumerable}))),t.push.apply(t,n)}return t}function x(s){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?S(Object(n),!0).forEach((function(t){o(s,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(n)):S(Object(n)).forEach((function(o){Object.defineProperty(s,o,Object.getOwnPropertyDescriptor(n,o))}))}return s}var w=h(d),L=e((function(){return{"@global":{body:{backgroundColor:"transparent",overflow:"hidden"}}}}));function D(o){var i,e,d,h,S,D,k=o.CLIAppComponent,F=o.CLIAppSettings,E=o.containerReportClassName;L();var R=p(),T=R.appContextValue,U=R.globalMixpanelEventTracker,M=R.globalNotificationToastsAPI,V=R.onSettingChange,N=R.onSettingsChange,z=R.permissionsContextValue,G=R.timezone,W=R.userUnits,H=s(R,O),q=H.location.pathname.startsWith("/reports/")||A,K=null==H||null===(i=H.app)||void 0===i?void 0:i.id,X=localStorage.getItem(b)||(null===(e=H.currentUser)||void 0===e||null===(d=e.settings)||void 0===d||null===(h=d.uiSettings)||void 0===h?void 0:h.theme)||g.DARK,Z=!q&&X!==g.LIGHT;t((function(){v(Z)}),[Z]),t((function(){window[Symbol.for("notificationToasts")]=M,window[Symbol.for("logToMixpanel")]=U}),[M,U]);var B=n(!0);return(B.current||q)&&(B.current=!1,y({userUnits:W})),t((function(){return G&&c.tz.setDefault(G),function(){return c.tz.setDefault(null)}}),[G]),t((function(){var o=u(K);return window.addEventListener("message",o),function(){return window.removeEventListener("message",o)}}),[K]),I(m,{initialEntries:[((null===(S=H.location)||void 0===S?void 0:S.pathname)||"/")+((null===(D=H.location)||void 0===D?void 0:D.search)||"")],children:I(P.Provider,{value:z,children:I(C.Provider,{value:T,children:I(j,{value:!0,children:I(f,{children:I("div",{id:l,className:r(q&&E),children:I(w,x(x({},H),{},{theme:Z?g.DARK:g.LIGHT,onSettingsChange:function(o){return N(a(o))},onSettingChange:function(o,s){return V(o,a(s))},CLIAppComponent:k,CLIAppSettings:F}))})})})})})})}D.propTypes={CLIAppComponent:i.func,CLIAppSettings:i.func,containerReportClassName:i.string},D.defaultProps={CLIAppComponent:null,CLIAppSettings:null,containerReportClassName:null};export{D as DevCenterIsolatedAppPage};
1
+ import o from"@babel/runtime/helpers/defineProperty";import s from"@babel/runtime/helpers/objectWithoutProperties";import{useEffect as t,useRef as i}from"react";import n from"prop-types";import{makeStyles as e}from"@material-ui/core";import r from"classnames";import c from"moment-timezone";import{MemoryRouter as m}from"react-router-dom";import{useXProps as p}from"./effects/useXProps.js";import{ISOLATED_PAGE_APP_CONTAINER_ID as l}from"./constants.js";import{replaceUndefinedValuesWithNull as a}from"./utils/replaceUndefinedValuesWithNull.js";import{getDashboardCapturingHandler as u}from"./utils/dashboardCapturing.js";import{IsInsideIsolatedDcAppProvider as j}from"../DevCenterAppContainer/components/IsInsideIsolatedDcAppProvider/IsInsideIsolatedDcAppProvider.js";import d from"../DevCenterAppContainer/DevCenterAppContainer.js";import{jsx as I}from"react/jsx-runtime";import"@icon-park/react/es/all";import{IconParkProvider as f}from"../../../icons/IconParkProvider.js";import"../../../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 h from"../../../hocs/withMUIProvidersHOC.js";import"../../../hocs/withAssetEditorLockHOC.js";import C from"../AppContext.js";import{THEMES as g}from"../../../constants/theme.js";import{LOCAL_STORAGE_APP_THEME_KEY as b}from"../../../CLI/hocs/constants.js";import{setThemeVariables as v}from"../../../utils/themeVariables.js";import{isPDFReportView as A}from"../../../CLI/hocs/utils.js";import{PermissionsContext as P}from"../../../permissions/PermissionsContext.js";import{updateUserUnits as y}from"../../../utils/index.js";import"../../../styles/iconPark.global.css.js";import"../../../styles/index.global.css.js";import"../../../styles/reactVirtualized.global.css.js";import"../../../styles/emojiMart.global.css.js";import"../../../styles/mapbox.global.css.js";import"../../../styles/lightbox.global.css.js";import"../../../styles/generatedThemesVariables.global.css.js";import"../../../styles/customScrollbars.global.css.js";var O=["appContextValue","globalMixpanelEventTracker","globalNotificationToastsAPI","onSettingChange","onSettingsChange","permissionsContextValue","timezone","userUnits","trackApiRateLimiterException"];function x(o,s){var t=Object.keys(o);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(o);s&&(i=i.filter((function(s){return Object.getOwnPropertyDescriptor(o,s).enumerable}))),t.push.apply(t,i)}return t}function L(s){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?x(Object(i),!0).forEach((function(t){o(s,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(i)):x(Object(i)).forEach((function(o){Object.defineProperty(s,o,Object.getOwnPropertyDescriptor(i,o))}))}return s}var S=h(d),w=e((function(){return{"@global":{body:{backgroundColor:"transparent",overflow:"hidden"}}}}));function k(o){var n,e,d,h,x,k,D=o.CLIAppComponent,E=o.CLIAppSettings,R=o.containerReportClassName;w();var F=p(),T=F.appContextValue,U=F.globalMixpanelEventTracker,M=F.globalNotificationToastsAPI,V=F.onSettingChange,N=F.onSettingsChange,z=F.permissionsContextValue,G=F.timezone,W=F.userUnits,H=F.trackApiRateLimiterException,q=s(F,O),K=q.location.pathname.startsWith("/reports/")||A,X=null==q||null===(n=q.app)||void 0===n?void 0:n.id,Z=localStorage.getItem(b)||(null===(e=q.currentUser)||void 0===e||null===(d=e.settings)||void 0===d||null===(h=d.uiSettings)||void 0===h?void 0:h.theme)||g.DARK,B=!K&&Z!==g.LIGHT;t((function(){v(B)}),[B]),t((function(){window[Symbol.for("notificationToasts")]=M,window[Symbol.for("logToMixpanel")]=U,window[Symbol.for("corvaAPI.rateLimiterReport")]=H}),[M,U,H]);var J=i(!0);return(J.current||K)&&(J.current=!1,y({userUnits:W})),t((function(){return G&&c.tz.setDefault(G),function(){return c.tz.setDefault(null)}}),[G]),t((function(){var o=u(X);return window.addEventListener("message",o),function(){return window.removeEventListener("message",o)}}),[X]),I(m,{initialEntries:[((null===(x=q.location)||void 0===x?void 0:x.pathname)||"/")+((null===(k=q.location)||void 0===k?void 0:k.search)||"")],children:I(P.Provider,{value:z,children:I(C.Provider,{value:T,children:I(j,{value:!0,children:I(f,{children:I("div",{id:l,className:r(K&&R),children:I(S,L(L({},q),{},{theme:B?g.DARK:g.LIGHT,onSettingsChange:function(o){return N(a(o))},onSettingChange:function(o,s){return V(o,a(s))},CLIAppComponent:D,CLIAppSettings:E,trackApiRateLimiterException:H}))})})})})})})}k.propTypes={CLIAppComponent:n.func,CLIAppSettings:n.func,containerReportClassName:n.string},k.defaultProps={CLIAppComponent:null,CLIAppSettings:null,containerReportClassName:null};export{k as DevCenterIsolatedAppPage};
2
2
  //# sourceMappingURL=DevCenterIsolatedAppPage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DevCenterIsolatedAppPage.js","sources":["../../../../src/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core';\nimport classNames from 'classnames';\nimport moment from 'moment-timezone';\nimport { MemoryRouter } from 'react-router-dom';\n\nimport { useXProps } from './effects/useXProps';\nimport { ISOLATED_PAGE_APP_CONTAINER_ID } from './constants';\nimport { replaceUndefinedValuesWithNull } from './utils/replaceUndefinedValuesWithNull';\nimport { getDashboardCapturingHandler } from './utils/dashboardCapturing';\n\nimport { IsInsideIsolatedDcAppProvider } from '~/components/DevCenter/DevCenterAppContainer/components/IsInsideIsolatedDcAppProvider';\nimport DevCenterAppContainer from '~/components/DevCenter/DevCenterAppContainer';\nimport { IconParkProvider } from '~/icons';\nimport { withMUIProvidersHOC } from '~/hocs';\nimport AppContext from '~/components/DevCenter/AppContext';\nimport { THEMES } from '~/constants/theme';\nimport { LOCAL_STORAGE_APP_THEME_KEY } from '~/CLI/hocs/constants';\nimport { setThemeVariables } from '~/utils/themeVariables';\nimport { isPDFReportView } from '~/CLI/hocs/utils';\nimport { PermissionsContext } from '~/permissions/PermissionsContext';\nimport { updateUserUnits } from '~/utils';\nimport '~/styles/globalStyles';\n\nconst DevCenterAppContainerWithMUI = withMUIProvidersHOC(DevCenterAppContainer);\n\n/**\n * It's important to keep these global styles in js, to apply only\n * when the component is actually used, if moved to CSS - they'll be\n * applied to whatever somehow imports the code\n */\nconst useStyles = makeStyles(() => ({\n '@global': {\n body: {\n backgroundColor: 'transparent',\n overflow: 'hidden',\n },\n },\n}));\n\n/**\n * Root component that is rendered inside of app's iframe.\n * Receives CLIAppComponent, CLIAppSettings when used\n * in local development\n */\nexport function DevCenterIsolatedAppPage({\n CLIAppComponent,\n CLIAppSettings,\n containerReportClassName,\n}) {\n useStyles();\n\n const {\n appContextValue,\n globalMixpanelEventTracker,\n globalNotificationToastsAPI,\n onSettingChange,\n onSettingsChange,\n permissionsContextValue,\n timezone,\n userUnits,\n ...xProps\n } = useXProps();\n const isReportsPage = xProps.location.pathname.startsWith('/reports/') || isPDFReportView;\n const appId = xProps?.app?.id;\n\n // Force light theme for PDF reports view\n const selectedTheme =\n localStorage.getItem(LOCAL_STORAGE_APP_THEME_KEY) ||\n xProps.currentUser?.settings?.uiSettings?.theme ||\n THEMES.DARK;\n const isDarkTheme = !isReportsPage && selectedTheme !== THEMES.LIGHT;\n\n useEffect(() => {\n setThemeVariables(isDarkTheme);\n }, [isDarkTheme]);\n\n useEffect(() => {\n window[Symbol.for('notificationToasts')] = globalNotificationToastsAPI;\n window[Symbol.for('logToMixpanel')] = globalMixpanelEventTracker;\n }, [globalNotificationToastsAPI, globalMixpanelEventTracker]);\n\n const isFirstRenderRef = useRef(true);\n if (isFirstRenderRef.current || isReportsPage) {\n isFirstRenderRef.current = false;\n updateUserUnits({ userUnits });\n }\n\n useEffect(() => {\n if (timezone) moment.tz.setDefault(timezone);\n return () => moment.tz.setDefault(null);\n }, [timezone]);\n\n useEffect(() => {\n const dashboardCapturingHandler = getDashboardCapturingHandler(appId);\n window.addEventListener('message', dashboardCapturingHandler);\n return () => window.removeEventListener('message', dashboardCapturingHandler);\n }, [appId]);\n\n return (\n <MemoryRouter\n initialEntries={[(xProps.location?.pathname || '/') + (xProps.location?.search || '')]}\n >\n <PermissionsContext.Provider value={permissionsContextValue}>\n <AppContext.Provider value={appContextValue}>\n <IsInsideIsolatedDcAppProvider value>\n <IconParkProvider>\n <div\n id={ISOLATED_PAGE_APP_CONTAINER_ID}\n className={classNames(isReportsPage && containerReportClassName)}\n >\n <DevCenterAppContainerWithMUI\n {...xProps}\n theme={isDarkTheme ? THEMES.DARK : THEMES.LIGHT}\n // zoid serializes passed arguments using JSON.stringify.\n // All undefined values are removed as they are not valid JSON values\n // so we replace undefined values with null to not drop them\n // Any future cb function that passes arbitrary objects as args\n // also should be wrapped in this mapper\n // ⚠️⚠️⚠️ When refactoring this to referentially stable callbacks, remove `useStableCallback` from\n // /src/componentsV2/AppCommonsProvider/AppCommonsProvider.tsx\n onSettingsChange={nextSettings =>\n onSettingsChange(replaceUndefinedValuesWithNull(nextSettings))\n }\n onSettingChange={(key, value) =>\n onSettingChange(key, replaceUndefinedValuesWithNull(value))\n }\n CLIAppComponent={CLIAppComponent}\n CLIAppSettings={CLIAppSettings}\n />\n </div>\n </IconParkProvider>\n </IsInsideIsolatedDcAppProvider>\n </AppContext.Provider>\n </PermissionsContext.Provider>\n </MemoryRouter>\n );\n}\n\nDevCenterIsolatedAppPage.propTypes = {\n CLIAppComponent: PropTypes.func,\n CLIAppSettings: PropTypes.func,\n containerReportClassName: PropTypes.string,\n};\n\nDevCenterIsolatedAppPage.defaultProps = {\n CLIAppComponent: null,\n CLIAppSettings: null,\n containerReportClassName: null,\n};\n"],"names":["DevCenterAppContainerWithMUI","withMUIProvidersHOC","DevCenterAppContainer","useStyles","makeStyles","body","backgroundColor","overflow","DevCenterIsolatedAppPage","_ref","_xProps$app","_xProps$currentUser","_xProps$currentUser$s","_xProps$currentUser$s2","_xProps$location","_xProps$location2","CLIAppComponent","CLIAppSettings","containerReportClassName","_useXProps","useXProps","appContextValue","globalMixpanelEventTracker","globalNotificationToastsAPI","onSettingChange","onSettingsChange","permissionsContextValue","timezone","userUnits","xProps","_objectWithoutProperties","_excluded","isReportsPage","location","pathname","startsWith","isPDFReportView","appId","app","id","selectedTheme","localStorage","getItem","LOCAL_STORAGE_APP_THEME_KEY","currentUser","settings","uiSettings","theme","THEMES","DARK","isDarkTheme","LIGHT","useEffect","setThemeVariables","window","Symbol","for","isFirstRenderRef","useRef","current","updateUserUnits","moment","tz","setDefault","dashboardCapturingHandler","getDashboardCapturingHandler","addEventListener","removeEventListener","_jsx","MemoryRouter","initialEntries","search","children","PermissionsContext","Provider","value","AppContext","IsInsideIsolatedDcAppProvider","IconParkProvider","ISOLATED_PAGE_APP_CONTAINER_ID","className","classNames","_objectSpread","nextSettings","replaceUndefinedValuesWithNull","key","propTypes","PropTypes","func","string","defaultProps"],"mappings":"w4JAyBA,IAAMA,EAA+BC,EAAoBC,GAOnDC,EAAYC,GAAW,WAAA,MAAO,CAClC,UAAW,CACTC,KAAM,CACJC,gBAAiB,cACjBC,SAAU,WAGf,IAOM,SAASC,EAIbC,GAAA,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAHDC,IAAAA,gBACAC,IAAAA,eACAC,IAAAA,yBAEAf,IAEA,IAAAgB,EAUIC,IATFC,IAAAA,gBACAC,IAAAA,2BACAC,IAAAA,4BACAC,IAAAA,gBACAC,IAAAA,iBACAC,IAAAA,wBACAC,IAAAA,SACAC,IAAAA,UACGC,EAAMC,EAAAX,EAAAY,GAELC,EAAgBH,EAAOI,SAASC,SAASC,WAAW,cAAgBC,EACpEC,EAAQR,SAAA,QAAAA,EAAAA,EAAQS,WAAR,IAAA5B,OAAAmB,EAAAnB,EAAa6B,GAGrBC,EACJC,aAAaC,QAAQC,aACrBd,EAAAA,EAAOe,0BAAP,UAAAjC,EAAoBkC,gBAApB,IAAAjC,GAAwC,QAAxCC,EAAAD,EAA8BkC,kBAAU,IAAAjC,SAAxCA,EAA0CkC,QAC1CC,EAAOC,KACHC,GAAelB,GAAiBQ,IAAkBQ,EAAOG,MAE/DC,GAAU,WACRC,EAAkBH,EACpB,GAAG,CAACA,IAEJE,GAAU,WACRE,OAAOC,OAAOC,IAAI,uBAAyBjC,EAC3C+B,OAAOC,OAAOC,IAAI,kBAAoBlC,CACxC,GAAG,CAACC,EAA6BD,IAEjC,IAAMmC,EAAmBC,GAAO,GAiBhC,OAhBID,EAAiBE,SAAW3B,KAC9ByB,EAAiBE,SAAU,EAC3BC,EAAgB,CAAEhC,UAAAA,KAGpBwB,GAAU,WAER,OADIzB,GAAUkC,EAAOC,GAAGC,WAAWpC,GAC5B,WAAA,OAAMkC,EAAOC,GAAGC,WAAW,KAAK,CACzC,GAAG,CAACpC,IAEJyB,GAAU,WACR,IAAMY,EAA4BC,EAA6B5B,GAE/D,OADAiB,OAAOY,iBAAiB,UAAWF,GAC5B,WAAA,OAAMV,OAAOa,oBAAoB,UAAWH,EAA0B,CAC/E,GAAG,CAAC3B,IAGF+B,EAACC,EAAY,CACXC,eAAgB,GAAE,QAAAxD,EAAAe,EAAOI,gBAAP,IAAAnB,OAAA,EAAAA,EAAiBoB,WAAY,OAAuB,QAAfnB,EAAAc,EAAOI,gBAAQ,IAAAlB,OAAA,EAAfA,EAAiBwD,SAAU,KAAKC,SAEvFJ,EAACK,EAAmBC,SAAQ,CAACC,MAAOjD,EAAwB8C,SAC1DJ,EAACQ,EAAWF,SAAQ,CAACC,MAAOtD,EAAgBmD,SAC1CJ,EAACS,EAA6B,CAACF,OAAK,EAAAH,SAClCJ,EAACU,EAAgB,CAAAN,SACfJ,EAAA,MAAA,CACE7B,GAAIwC,EACJC,UAAWC,EAAWjD,GAAiBd,GAA0BsD,SAEjEJ,EAACpE,EAA4BkF,EAAAA,EAAA,GACvBrD,GAAM,GAAA,CACVkB,MAAOG,EAAcF,EAAOC,KAAOD,EAAOG,MAQ1C1B,iBAAkB,SAAA0D,GAAY,OAC5B1D,EAAiB2D,EAA+BD,GACjD,EACD3D,gBAAiB,SAAC6D,EAAKV,GAAK,OAC1BnD,EAAgB6D,EAAKD,EAA+BT,GACrD,EACD3D,gBAAiBA,EACjBC,eAAgBA,gBASlC,CAEAT,EAAyB8E,UAAY,CACnCtE,gBAAiBuE,EAAUC,KAC3BvE,eAAgBsE,EAAUC,KAC1BtE,yBAA0BqE,EAAUE,QAGtCjF,EAAyBkF,aAAe,CACtC1E,gBAAiB,KACjBC,eAAgB,KAChBC,yBAA0B"}
1
+ {"version":3,"file":"DevCenterIsolatedAppPage.js","sources":["../../../../src/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js"],"sourcesContent":["import { useEffect, useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport { makeStyles } from '@material-ui/core';\nimport classNames from 'classnames';\nimport moment from 'moment-timezone';\nimport { MemoryRouter } from 'react-router-dom';\n\nimport { useXProps } from './effects/useXProps';\nimport { ISOLATED_PAGE_APP_CONTAINER_ID } from './constants';\nimport { replaceUndefinedValuesWithNull } from './utils/replaceUndefinedValuesWithNull';\nimport { getDashboardCapturingHandler } from './utils/dashboardCapturing';\n\nimport { IsInsideIsolatedDcAppProvider } from '~/components/DevCenter/DevCenterAppContainer/components/IsInsideIsolatedDcAppProvider';\nimport DevCenterAppContainer from '~/components/DevCenter/DevCenterAppContainer';\nimport { IconParkProvider } from '~/icons';\nimport { withMUIProvidersHOC } from '~/hocs';\nimport AppContext from '~/components/DevCenter/AppContext';\nimport { THEMES } from '~/constants/theme';\nimport { LOCAL_STORAGE_APP_THEME_KEY } from '~/CLI/hocs/constants';\nimport { setThemeVariables } from '~/utils/themeVariables';\nimport { isPDFReportView } from '~/CLI/hocs/utils';\nimport { PermissionsContext } from '~/permissions/PermissionsContext';\nimport { updateUserUnits } from '~/utils';\nimport '~/styles/globalStyles';\n\nconst DevCenterAppContainerWithMUI = withMUIProvidersHOC(DevCenterAppContainer);\n\n/**\n * It's important to keep these global styles in js, to apply only\n * when the component is actually used, if moved to CSS - they'll be\n * applied to whatever somehow imports the code\n */\nconst useStyles = makeStyles(() => ({\n '@global': {\n body: {\n backgroundColor: 'transparent',\n overflow: 'hidden',\n },\n },\n}));\n\n/**\n * Root component that is rendered inside of app's iframe.\n * Receives CLIAppComponent, CLIAppSettings when used\n * in local development\n */\nexport function DevCenterIsolatedAppPage({\n CLIAppComponent,\n CLIAppSettings,\n containerReportClassName,\n}) {\n useStyles();\n\n const {\n appContextValue,\n globalMixpanelEventTracker,\n globalNotificationToastsAPI,\n onSettingChange,\n onSettingsChange,\n permissionsContextValue,\n timezone,\n userUnits,\n trackApiRateLimiterException,\n ...xProps\n } = useXProps();\n const isReportsPage = xProps.location.pathname.startsWith('/reports/') || isPDFReportView;\n const appId = xProps?.app?.id;\n\n // Force light theme for PDF reports view\n const selectedTheme =\n localStorage.getItem(LOCAL_STORAGE_APP_THEME_KEY) ||\n xProps.currentUser?.settings?.uiSettings?.theme ||\n THEMES.DARK;\n const isDarkTheme = !isReportsPage && selectedTheme !== THEMES.LIGHT;\n\n useEffect(() => {\n setThemeVariables(isDarkTheme);\n }, [isDarkTheme]);\n\n useEffect(() => {\n window[Symbol.for('notificationToasts')] = globalNotificationToastsAPI;\n window[Symbol.for('logToMixpanel')] = globalMixpanelEventTracker;\n window[Symbol.for('corvaAPI.rateLimiterReport')] = trackApiRateLimiterException;\n }, [globalNotificationToastsAPI, globalMixpanelEventTracker, trackApiRateLimiterException]);\n\n const isFirstRenderRef = useRef(true);\n if (isFirstRenderRef.current || isReportsPage) {\n isFirstRenderRef.current = false;\n updateUserUnits({ userUnits });\n }\n\n useEffect(() => {\n if (timezone) moment.tz.setDefault(timezone);\n return () => moment.tz.setDefault(null);\n }, [timezone]);\n\n useEffect(() => {\n const dashboardCapturingHandler = getDashboardCapturingHandler(appId);\n window.addEventListener('message', dashboardCapturingHandler);\n return () => window.removeEventListener('message', dashboardCapturingHandler);\n }, [appId]);\n\n return (\n <MemoryRouter\n initialEntries={[(xProps.location?.pathname || '/') + (xProps.location?.search || '')]}\n >\n <PermissionsContext.Provider value={permissionsContextValue}>\n <AppContext.Provider value={appContextValue}>\n <IsInsideIsolatedDcAppProvider value>\n <IconParkProvider>\n <div\n id={ISOLATED_PAGE_APP_CONTAINER_ID}\n className={classNames(isReportsPage && containerReportClassName)}\n >\n <DevCenterAppContainerWithMUI\n {...xProps}\n theme={isDarkTheme ? THEMES.DARK : THEMES.LIGHT}\n // zoid serializes passed arguments using JSON.stringify.\n // All undefined values are removed as they are not valid JSON values\n // so we replace undefined values with null to not drop them\n // Any future cb function that passes arbitrary objects as args\n // also should be wrapped in this mapper\n // ⚠️⚠️⚠️ When refactoring this to referentially stable callbacks, remove `useStableCallback` from\n // /src/componentsV2/AppCommonsProvider/AppCommonsProvider.tsx\n onSettingsChange={nextSettings =>\n onSettingsChange(replaceUndefinedValuesWithNull(nextSettings))\n }\n onSettingChange={(key, value) =>\n onSettingChange(key, replaceUndefinedValuesWithNull(value))\n }\n CLIAppComponent={CLIAppComponent}\n CLIAppSettings={CLIAppSettings}\n trackApiRateLimiterException={trackApiRateLimiterException}\n />\n </div>\n </IconParkProvider>\n </IsInsideIsolatedDcAppProvider>\n </AppContext.Provider>\n </PermissionsContext.Provider>\n </MemoryRouter>\n );\n}\n\nDevCenterIsolatedAppPage.propTypes = {\n CLIAppComponent: PropTypes.func,\n CLIAppSettings: PropTypes.func,\n containerReportClassName: PropTypes.string,\n};\n\nDevCenterIsolatedAppPage.defaultProps = {\n CLIAppComponent: null,\n CLIAppSettings: null,\n containerReportClassName: null,\n};\n"],"names":["DevCenterAppContainerWithMUI","withMUIProvidersHOC","DevCenterAppContainer","useStyles","makeStyles","body","backgroundColor","overflow","DevCenterIsolatedAppPage","_ref","_xProps$app","_xProps$currentUser","_xProps$currentUser$s","_xProps$currentUser$s2","_xProps$location","_xProps$location2","CLIAppComponent","CLIAppSettings","containerReportClassName","_useXProps","useXProps","appContextValue","globalMixpanelEventTracker","globalNotificationToastsAPI","onSettingChange","onSettingsChange","permissionsContextValue","timezone","userUnits","trackApiRateLimiterException","xProps","_objectWithoutProperties","_excluded","isReportsPage","location","pathname","startsWith","isPDFReportView","appId","app","id","selectedTheme","localStorage","getItem","LOCAL_STORAGE_APP_THEME_KEY","currentUser","settings","uiSettings","theme","THEMES","DARK","isDarkTheme","LIGHT","useEffect","setThemeVariables","window","Symbol","for","isFirstRenderRef","useRef","current","updateUserUnits","moment","tz","setDefault","dashboardCapturingHandler","getDashboardCapturingHandler","addEventListener","removeEventListener","_jsx","MemoryRouter","initialEntries","search","children","PermissionsContext","Provider","value","AppContext","IsInsideIsolatedDcAppProvider","IconParkProvider","ISOLATED_PAGE_APP_CONTAINER_ID","className","classNames","_objectSpread","nextSettings","replaceUndefinedValuesWithNull","key","propTypes","PropTypes","func","string","defaultProps"],"mappings":"u6JAyBA,IAAMA,EAA+BC,EAAoBC,GAOnDC,EAAYC,GAAW,WAAA,MAAO,CAClC,UAAW,CACTC,KAAM,CACJC,gBAAiB,cACjBC,SAAU,WAGf,IAOM,SAASC,EAIbC,GAAA,IAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAHDC,IAAAA,gBACAC,IAAAA,eACAC,IAAAA,yBAEAf,IAEA,IAAAgB,EAWIC,IAVFC,IAAAA,gBACAC,IAAAA,2BACAC,IAAAA,4BACAC,IAAAA,gBACAC,IAAAA,iBACAC,IAAAA,wBACAC,IAAAA,SACAC,IAAAA,UACAC,IAAAA,6BACGC,EAAMC,EAAAZ,EAAAa,GAELC,EAAgBH,EAAOI,SAASC,SAASC,WAAW,cAAgBC,EACpEC,EAAQR,SAAA,QAAAA,EAAAA,EAAQS,WAAR,IAAA7B,OAAAoB,EAAApB,EAAa8B,GAGrBC,EACJC,aAAaC,QAAQC,aACrBd,EAAAA,EAAOe,0BAAP,UAAAlC,EAAoBmC,gBAApB,IAAAlC,GAAwC,QAAxCC,EAAAD,EAA8BmC,kBAAU,IAAAlC,SAAxCA,EAA0CmC,QAC1CC,EAAOC,KACHC,GAAelB,GAAiBQ,IAAkBQ,EAAOG,MAE/DC,GAAU,WACRC,EAAkBH,EACpB,GAAG,CAACA,IAEJE,GAAU,WACRE,OAAOC,OAAOC,IAAI,uBAAyBlC,EAC3CgC,OAAOC,OAAOC,IAAI,kBAAoBnC,EACtCiC,OAAOC,OAAOC,IAAI,+BAAiC5B,CACpD,GAAE,CAACN,EAA6BD,EAA4BO,IAE7D,IAAM6B,EAAmBC,GAAO,GAiBhC,OAhBID,EAAiBE,SAAW3B,KAC9ByB,EAAiBE,SAAU,EAC3BC,EAAgB,CAAEjC,UAAAA,KAGpByB,GAAU,WAER,OADI1B,GAAUmC,EAAOC,GAAGC,WAAWrC,GAC5B,WAAA,OAAMmC,EAAOC,GAAGC,WAAW,KAAK,CACzC,GAAG,CAACrC,IAEJ0B,GAAU,WACR,IAAMY,EAA4BC,EAA6B5B,GAE/D,OADAiB,OAAOY,iBAAiB,UAAWF,GAC5B,WAAA,OAAMV,OAAOa,oBAAoB,UAAWH,EAA0B,CAC/E,GAAG,CAAC3B,IAGF+B,EAACC,EAAY,CACXC,eAAgB,GAAE,QAAAzD,EAAAgB,EAAOI,gBAAP,IAAApB,OAAA,EAAAA,EAAiBqB,WAAY,OAAuB,QAAfpB,EAAAe,EAAOI,gBAAQ,IAAAnB,OAAA,EAAfA,EAAiByD,SAAU,KAAKC,SAEvFJ,EAACK,EAAmBC,SAAQ,CAACC,MAAOlD,EAAwB+C,SAC1DJ,EAACQ,EAAWF,SAAQ,CAACC,MAAOvD,EAAgBoD,SAC1CJ,EAACS,EAA6B,CAACF,OAAK,EAAAH,SAClCJ,EAACU,EAAgB,CAAAN,SACfJ,EAAA,MAAA,CACE7B,GAAIwC,EACJC,UAAWC,EAAWjD,GAAiBf,GAA0BuD,SAEjEJ,EAACrE,EAA4BmF,EAAAA,EAAA,GACvBrD,GAAM,GAAA,CACVkB,MAAOG,EAAcF,EAAOC,KAAOD,EAAOG,MAQ1C3B,iBAAkB,SAAA2D,GAAY,OAC5B3D,EAAiB4D,EAA+BD,GACjD,EACD5D,gBAAiB,SAAC8D,EAAKV,GAAK,OAC1BpD,EAAgB8D,EAAKD,EAA+BT,GACrD,EACD5D,gBAAiBA,EACjBC,eAAgBA,EAChBY,6BAA8BA,gBAShD,CAEArB,EAAyB+E,UAAY,CACnCvE,gBAAiBwE,EAAUC,KAC3BxE,eAAgBuE,EAAUC,KAC1BvE,yBAA0BsE,EAAUE,QAGtClF,EAAyBmF,aAAe,CACtC3E,gBAAiB,KACjBC,eAAgB,KAChBC,yBAA0B"}
@@ -20,6 +20,8 @@ export type AppContainerProps = {
20
20
  footer: string;
21
21
  content?: string;
22
22
  }>;
23
+ settingsInitiallyPinned?: boolean;
24
+ settingsPinningEnabled?: boolean;
23
25
  className?: string;
24
26
  testId?: string;
25
27
  };
@@ -1 +1 @@
1
- {"version":3,"file":"AppContainer.d.ts","sourceRoot":"","sources":["../../../src/componentsV2/AppContainer/AppContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,SAAS,EAA+B,MAAM,OAAO,CAAC;AAc3E,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;OAEG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;OAEG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC3B,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;IAEH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,YAAY,8GA4ExB,CAAC"}
1
+ {"version":3,"file":"AppContainer.d.ts","sourceRoot":"","sources":["../../../src/componentsV2/AppContainer/AppContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,SAAS,EAA+B,MAAM,OAAO,CAAC;AAc3E,MAAM,MAAM,iBAAiB,GAAG;IAC9B;;OAEG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;OAEG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;QAC3B,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;IAEH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAEjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,eAAO,MAAM,YAAY,8GA2FxB,CAAC"}
@@ -1,2 +1,2 @@
1
- import e from"@babel/runtime/helpers/defineProperty";import r from"@babel/runtime/helpers/slicedToArray";import{jsx as t,jsxs as o}from"react/jsx-runtime";import{forwardRef as n,useState as i,useRef as s,useEffect as a}from"react";import c from"classnames";import{debounce as m}from"lodash";import{useAppCommons as p}from"../AppCommonsProvider/AppCommonsContext.js";import{AppSizeContext as d}from"../AppSizeProvider/AppSizeProvider.js";import{AppSettingsPinningProvider as l}from"../AppSettings/AppSettingsPinningContext.js";import{AppContainerFinderProps as f}from"../utils.js";import{AppContainerTestIds as u}from"./AppContainer.constants.js";import{Content as h}from"./Content.js";import v from"./AppContainer.scss.js";function b(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,o)}return t}function j(r){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?b(Object(o),!0).forEach((function(t){e(r,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(o)):b(Object(o)).forEach((function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(o,e))}))}return r}var O=n((function(e,n){var b=e.footer,O=e.testId,P=e.className,g=e.header,y=e.children,A=e.elementsClassNames,w=i(),C=r(w,2),x=C[0],N=C[1],S=s(null);a((function(){var e=m((function(){requestAnimationFrame((function(){if(S.current){var e=S.current,r=e.clientWidth,t=e.clientHeight;N({width:r,height:t})}}))}),200,{leading:!0}),r=new ResizeObserver(e);return S.current&&r.observe(S.current),function(){r.disconnect(),e.cancel()}}),[]);var z=p(),D=z.maximized,E=z.appHeadersV3Enabled;return t("div",j(j({className:c(v.root,P),"data-testid":O,ref:n},f),{},{children:t(d.Provider,{value:x,children:o(l,{children:[g&&t("div",{className:c(v.header,D&&!E&&v.headerMaximized,null==A?void 0:A.header),"data-testid":u.HeaderTestId,children:g}),t(h,{dimensions:x,className:null==A?void 0:A.content,ref:S,children:y}),b&&!E&&t("div",{className:c(v.footer,null==A?void 0:A.footer),"data-testid":u.FooterTestId,children:b})]})})}))}));export{O as AppContainer};
1
+ import e from"@babel/runtime/helpers/defineProperty";import r from"@babel/runtime/helpers/slicedToArray";import{jsx as t,jsxs as n}from"react/jsx-runtime";import{forwardRef as i,useState as o,useRef as s,useEffect as a}from"react";import c from"classnames";import{debounce as p}from"lodash";import{useAppCommons as l}from"../AppCommonsProvider/AppCommonsContext.js";import{AppSizeContext as m}from"../AppSizeProvider/AppSizeProvider.js";import{AppSettingsPinningProvider as d}from"../AppSettings/AppSettingsPinningContext.js";import{AppContainerFinderProps as f}from"../utils.js";import{AppContainerTestIds as u}from"./AppContainer.constants.js";import{Content as b}from"./Content.js";import h from"./AppContainer.scss.js";function v(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,n)}return t}function j(r){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?v(Object(n),!0).forEach((function(t){e(r,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(n)):v(Object(n)).forEach((function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(n,e))}))}return r}var O=i((function(e,i){var v=e.footer,O=e.testId,g=e.className,P=e.header,y=e.children,A=e.elementsClassNames,w=e.settingsInitiallyPinned,C=e.settingsPinningEnabled,x=o(),N=r(x,2),S=N[0],z=N[1],E=s(null);a((function(){var e=p((function(){requestAnimationFrame((function(){if(E.current){var e=E.current,r=e.clientWidth,t=e.clientHeight;z({width:r,height:t})}}))}),200,{leading:!0}),r=new ResizeObserver(e);return E.current&&r.observe(E.current),function(){r.disconnect(),e.cancel()}}),[]);var D=l(),I=D.maximized,H=D.appHeadersV3Enabled;return t("div",j(j({className:c(h.root,g),"data-testid":O,ref:i},f),{},{children:t(m.Provider,{value:S,children:n(d,{initiallyPinned:w,pinningEnabled:C,children:[P&&t("div",{className:c(h.header,I&&!H&&h.headerMaximized,null==A?void 0:A.header),"data-testid":u.HeaderTestId,children:P}),t(b,{dimensions:S,className:null==A?void 0:A.content,ref:E,children:y}),v&&!H&&t("div",{className:c(h.footer,null==A?void 0:A.footer),"data-testid":u.FooterTestId,children:v})]})})}))}));export{O as AppContainer};
2
2
  //# sourceMappingURL=AppContainer.js.map
@@ -84,10 +84,6 @@ export type AppHeaderProps = {
84
84
  * **(V3 only)** Disables settings button
85
85
  */
86
86
  disableSettings?: boolean;
87
- /**
88
- * **(V3 only)** Disables Settings pinning (you still can unpin)
89
- */
90
- disableSettingsPin?: boolean;
91
87
  /**
92
88
  * **(V3 only)** Shows asset chips if true
93
89
  */
@@ -102,5 +98,5 @@ export type AppHeaderProps = {
102
98
  titleMenuActions?: TitleMenuAction[];
103
99
  responsivenessConfig?: AppHeaderV3Props['responsivenessConfig'];
104
100
  };
105
- export declare const AppHeader: ({ className, testId, logo, children, padModeDisabled, padModeWells, onPadModeChange, elementsClassNames, title, asset, dqData, lastUpdate, additionalActions, showComments, titleControls, titleControlsPosition, disableSettingsPin, disableSettings, showAssetChips, additionalControls, rightSideContent, disableAssetSelector, titleMenuActions, responsivenessConfig, }: AppHeaderProps) => JSX.Element;
101
+ export declare const AppHeader: ({ className, testId, logo, children, padModeDisabled, padModeWells, onPadModeChange, elementsClassNames, title, asset, dqData, lastUpdate, additionalActions, showComments, titleControls, titleControlsPosition, disableSettings, showAssetChips, additionalControls, rightSideContent, disableAssetSelector, titleMenuActions, responsivenessConfig, }: AppHeaderProps) => JSX.Element;
106
102
  //# sourceMappingURL=AppHeader.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AppHeader.d.ts","sourceRoot":"","sources":["../../../src/componentsV2/AppHeader/AppHeader.tsx"],"names":[],"mappings":"AACA,OAAO,EAAkB,YAAY,EAAE,SAAS,EAAW,MAAM,OAAO,CAAC;AAOzE,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAKxE,OAAO,EAAoB,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAC7F,OAAO,EAAe,gBAAgB,EAAE,MAAM,MAAM,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAInE,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC;IAE7B;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,YAAY,CAAC,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC;IAEzD;;;;;;OAMG;IAEH,eAAe,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IACxC;;;;OAIG;IACH,kBAAkB,CAAC,EAAE;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IAEF,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAK7B;;OAEG;IACH,kBAAkB,CAAC,EAAE,SAAS,CAAC;IAC/B;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,CAAC;IACxB;;OAEG;IACH,MAAM,CAAC,EAAE,2BAA2B,CAAC;IACrC;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACpC;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;OAEG;IACH,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACvC;;OAEG;IACH,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzC;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;OAEG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;OAEG;IACH,gBAAgB,CAAC,EAAE,eAAe,EAAE,CAAC;IAErC,oBAAoB,CAAC,EAAE,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;CACjE,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,8WA0BvB,cAAc,gBAkGhB,CAAC"}
1
+ {"version":3,"file":"AppHeader.d.ts","sourceRoot":"","sources":["../../../src/componentsV2/AppHeader/AppHeader.tsx"],"names":[],"mappings":"AACA,OAAO,EAAkB,YAAY,EAAE,SAAS,EAAW,MAAM,OAAO,CAAC;AAOzE,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AAKxE,OAAO,EAAoB,KAAK,EAAE,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAC7F,OAAO,EAAe,gBAAgB,EAAE,MAAM,MAAM,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAInE,MAAM,MAAM,cAAc,GAAG;IAC3B,IAAI,CAAC,EAAE,MAAM,GAAG,YAAY,CAAC;IAE7B;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;OAEG;IACH,YAAY,CAAC,EAAE,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC,OAAO,CAAC,CAAC;IAEzD;;;;;;OAMG;IAEH,eAAe,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IACxC;;;;OAIG;IACH,kBAAkB,CAAC,EAAE;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IAEF,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAK7B;;OAEG;IACH,kBAAkB,CAAC,EAAE,SAAS,CAAC;IAC/B;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,CAAC;IACxB;;OAEG;IACH,MAAM,CAAC,EAAE,2BAA2B,CAAC;IACrC;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACpC;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;OAEG;IACH,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACvC;;OAEG;IACH,aAAa,CAAC,EAAE,SAAS,CAAC;IAC1B;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC;IACzC;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;OAEG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B;;OAEG;IACH,gBAAgB,CAAC,EAAE,eAAe,EAAE,CAAC;IAErC,oBAAoB,CAAC,EAAE,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;CACjE,CAAC;AAEF,eAAO,MAAM,SAAS,GAAI,0VAyBvB,cAAc,gBAiGhB,CAAC"}
@@ -1,2 +1,2 @@
1
- import{jsx as e,jsxs as t}from"react/jsx-runtime";import s from"classnames";import{useMemo as o}from"react";import{isEmpty as a}from"lodash";import{Header as i}from"../Header/Header.js";import{TextEndTruncated as n}from"../TextEndTruncated/TextEndTruncated.js";import{getAppSegment as l}from"../../utils/devcenter.js";import{SEGMENTS as r}from"../../constants/segment.js";import{useAppCommons as d}from"../AppCommonsProvider/AppCommonsContext.js";import{AppBadge as p}from"./AppBadge/AppBadge.js";import{AppAssets as m}from"./AppAssets/AppAssets.js";import{PadMode as c}from"./PadMode/PadMode.js";import{AppHeaderTestIds as g}from"./AppHeader.constants.js";import{AppHeaderV3 as C}from"./V3/AppHeaderV3.js";import f from"./AppHeader.scss.js";var h=function(h){var A=h.className,v=h.testId,N=h.logo,u=h.children,j=h.padModeDisabled,S=h.padModeWells,M=h.onPadModeChange,b=h.elementsClassNames,w=h.title,P=h.asset,T=h.dqData,H=h.lastUpdate,x=h.additionalActions,I=h.showComments,D=h.titleControls,E=h.titleControlsPosition,B=void 0===E?"right":E,V=h.disableSettingsPin,q=void 0===V||V,F=h.disableSettings,L=h.showAssetChips,O=void 0===L||L,U=h.additionalControls,W=h.rightSideContent,y=h.disableAssetSelector,k=h.titleMenuActions,z=h.responsivenessConfig,G=d(),J=G.app,K=G.well,Q=G.fracFleet,R=G.wells,X=G.onSettingChange,Y=G.appSettings,Z=void 0===Y?{}:Y,$=G.appHeadersV3Enabled,_=G.appName,ee=S||R,te=l(J),se=!(j||te!==r.COMPLETION||K||a(ee)||!Q),oe=o((function(){return M?function(e,t){return M(t)}:X}),[M,X]);return $?e(C,{testId:v,className:A,elementsClassNames:b,logo:N,title:w,padModeDisabled:j,padModeWells:S,asset:P,dqData:T,lastUpdate:H,additionalActions:x,showComments:I,titleControls:D,disableSettingsPin:q,disableSettings:F,showAssetChips:O,additionalControls:U||u,disableAssetSelector:y,titleMenuActions:k,titleControlsPosition:B,responsivenessConfig:z}):t("div",{className:s(f.root,A),"data-testid":v,children:[t(i,{className:s(f.logoTitleBadgeContainer,null==b?void 0:b.title),appearance:"appName",children:[N&&e("div",{className:f.logoContainer,children:"string"==typeof N?e("img",{className:f.logo,src:N,alt:"Logo"}):N}),e(n,{className:f.appName,testId:g.AppTitleTestId,children:w||_}),e(p,{app:J})]}),(u||U||se)&&t("div",{className:s(f.additional,null==b?void 0:b.additional),children:[se&&e(c,{app:J,appSettings:Z,fracFleet:Q,onSettingChange:oe,well:K,wells:ee}),U||u]}),e("div",{className:s(f.assetChips,null==b?void 0:b.chips),children:e(m,{forceNarrow:se||!!u})}),W&&e("div",{className:f.rightSideContent,children:W})]})};export{h as AppHeader};
1
+ import{jsx as e,jsxs as t}from"react/jsx-runtime";import s from"classnames";import{useMemo as o}from"react";import{isEmpty as a}from"lodash";import{Header as i}from"../Header/Header.js";import{TextEndTruncated as n}from"../TextEndTruncated/TextEndTruncated.js";import{getAppSegment as l}from"../../utils/devcenter.js";import{SEGMENTS as r}from"../../constants/segment.js";import{useAppCommons as d}from"../AppCommonsProvider/AppCommonsContext.js";import{AppBadge as p}from"./AppBadge/AppBadge.js";import{AppAssets as m}from"./AppAssets/AppAssets.js";import{PadMode as c}from"./PadMode/PadMode.js";import{AppHeaderTestIds as g}from"./AppHeader.constants.js";import{AppHeaderV3 as C}from"./V3/AppHeaderV3.js";import f from"./AppHeader.scss.js";var h=function(h){var A=h.className,v=h.testId,N=h.logo,u=h.children,j=h.padModeDisabled,M=h.padModeWells,S=h.onPadModeChange,w=h.elementsClassNames,T=h.title,b=h.asset,P=h.dqData,H=h.lastUpdate,x=h.additionalActions,I=h.showComments,D=h.titleControls,E=h.titleControlsPosition,B=void 0===E?"right":E,V=h.disableSettings,q=h.showAssetChips,F=void 0===q||q,L=h.additionalControls,O=h.rightSideContent,U=h.disableAssetSelector,W=h.titleMenuActions,y=h.responsivenessConfig,k=d(),z=k.app,G=k.well,J=k.fracFleet,K=k.wells,Q=k.onSettingChange,R=k.appSettings,X=void 0===R?{}:R,Y=k.appHeadersV3Enabled,Z=k.appName,$=M||K,_=l(z),ee=!(j||_!==r.COMPLETION||G||a($)||!J),te=o((function(){return S?function(e,t){return S(t)}:Q}),[S,Q]);return Y?e(C,{testId:v,className:A,elementsClassNames:w,logo:N,title:T,padModeDisabled:j,padModeWells:M,asset:b,dqData:P,lastUpdate:H,additionalActions:x,showComments:I,titleControls:D,disableSettings:V,showAssetChips:F,additionalControls:L||u,disableAssetSelector:U,titleMenuActions:W,titleControlsPosition:B,responsivenessConfig:y}):t("div",{className:s(f.root,A),"data-testid":v,children:[t(i,{className:s(f.logoTitleBadgeContainer,null==w?void 0:w.title),appearance:"appName",children:[N&&e("div",{className:f.logoContainer,children:"string"==typeof N?e("img",{className:f.logo,src:N,alt:"Logo"}):N}),e(n,{className:f.appName,testId:g.AppTitleTestId,children:T||Z}),e(p,{app:z})]}),(u||L||ee)&&t("div",{className:s(f.additional,null==w?void 0:w.additional),children:[ee&&e(c,{app:z,appSettings:X,fracFleet:J,onSettingChange:te,well:G,wells:$}),L||u]}),e("div",{className:s(f.assetChips,null==w?void 0:w.chips),children:e(m,{forceNarrow:ee||!!u})}),O&&e("div",{className:f.rightSideContent,children:O})]})};export{h as AppHeader};
2
2
  //# sourceMappingURL=AppHeader.js.map
@@ -4,10 +4,9 @@ type ActionsProps = {
4
4
  rootRef: RefObject<HTMLDivElement>;
5
5
  additionalActions?: AdditionalAction[];
6
6
  showComments?: boolean;
7
- disableSettingsPin?: boolean;
8
7
  disableSettings?: boolean;
9
8
  hideSettingsUnderMore?: boolean;
10
9
  };
11
- export declare const Actions: ({ additionalActions, showComments, disableSettings, disableSettingsPin, rootRef, hideSettingsUnderMore, }: ActionsProps) => JSX.Element;
10
+ export declare const Actions: ({ additionalActions, showComments, disableSettings, rootRef, hideSettingsUnderMore, }: ActionsProps) => JSX.Element;
12
11
  export {};
13
12
  //# sourceMappingURL=Actions.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Actions.d.ts","sourceRoot":"","sources":["../../../../../src/componentsV2/AppHeader/V3/Actions/Actions.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,SAAS,EAMV,MAAM,OAAO,CAAC;AAMf,OAAO,EAAE,gBAAgB,EAA0B,MAAM,cAAc,CAAC;AAuBxE,KAAK,YAAY,GAAG;IAClB,OAAO,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;IACnC,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACvC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC,CAAC;AAKF,eAAO,MAAM,OAAO,GAAI,2GAOrB,YAAY,gBA8Nd,CAAC"}
1
+ {"version":3,"file":"Actions.d.ts","sourceRoot":"","sources":["../../../../../src/componentsV2/AppHeader/V3/Actions/Actions.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,SAAS,EAMV,MAAM,OAAO,CAAC;AAMf,OAAO,EAAE,gBAAgB,EAA0B,MAAM,cAAc,CAAC;AAuBxE,KAAK,YAAY,GAAG;IAClB,OAAO,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;IACnC,iBAAiB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IACvC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,qBAAqB,CAAC,EAAE,OAAO,CAAC;CACjC,CAAC;AAKF,eAAO,MAAM,OAAO,GAAI,uFAMrB,YAAY,gBAyNd,CAAC"}
@@ -1,2 +1,2 @@
1
- import o from"@babel/runtime/helpers/toConsumableArray";import t from"@babel/runtime/helpers/defineProperty";import s from"@babel/runtime/helpers/slicedToArray";import n from"@babel/runtime/helpers/typeof";import{jsx as i,jsxs as e,Fragment as c}from"react/jsx-runtime";import{useState as r,useRef as m,useCallback as p,useMemo as l,useEffect as a,Fragment as u}from"react";import d from"classnames";import{ButtonIcon as j}from"../../../ButtonIcon/ButtonIcon.js";import{Tooltip as f}from"../../../Tooltip/Tooltip.js";import{SettingsButton as I}from"../SettingsButton/SettingsButton.js";import"../SettingsButton/SettingsButton.constants.js";import{Menu as C}from"../../../Menu/Menu.js";import"../../../AppCommonsProvider/AppCommonsProvider.js";import{useAppCommonsInternal as h}from"../../../AppCommonsProvider/AppCommonsContext.js";import{Popover as g}from"../../../Popover/Popover.js";import{AppSettings as b}from"../../../AppSettings/AppSettings.js";import"../../../AppSettings/AppSettings.constants.js";import{useAppSettingPinning as v}from"../../../AppSettings/AppSettingsPinningContext.js";import{useAppSize as y}from"../../../AppSizeProvider/AppSizeProvider.js";import{ActionsTestIds as A}from"./Actions.constants.js";import S from"./Actions.scss.js";import{MessageIcon as P,ExpandIcon as O,SettingTwoIcon as k,CollapseIcon as B,CloseSmallIcon as x,MoreOneIcon as F}from"../../../../icons/iconParkIcons.js";import{AddMessageCustomIcon as M}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/asyncToGenerator";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 w from"../../../../effects/useOutsideClick.js";import"immutable";import"query-string";import"../../../../constants/goals.js";import"../../../../constants/segment.js";import"../../../../constants/alerts.js";import"../../../../constants/apps.js";import"../../../../constants/drillstring.js";import"../../../../constants/completion.js";import"../../../../constants/appPackages.js";import"../../../../constants/notifications.js";import"../../../../constants/feed.js";import"../../../../constants/bha.js";import"../../../../constants/corvaCompanyId.js";import"../../../../components/GradientManager/configuration/constants.js";import"../../../../utils/index.js";import"uuid";import"jsona";import"../../../../utils/env.js";import"../../../../components/StatusBadge/constants.js";import"lodash/set";import"lodash/get";import"lodash/unset";import"moment";import"../../../../clients/api/apiCore.js";import"../../../../clients/constants.js";import"../../../../clients/sso/auth0.js";import"../../../../clients/sso/oauth2.js";import"lodash/isEmpty";import"lodash/sortBy";import"../../../../constants/streamSourceType.js";import{useAppCommentsMode as T,useSetAppCommentsMode as z}from"../../../../components/DevCenter/DevCenterAppContainer/components/CommentsSwitch/CommentsSwitchContext.js";function D(o,t){var s=Object.keys(o);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(o);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(o,t).enumerable}))),s.push.apply(s,n)}return s}function E(o){for(var s=1;s<arguments.length;s++){var n=null!=arguments[s]?arguments[s]:{};s%2?D(Object(n),!0).forEach((function(s){t(o,s,n[s])})):Object.getOwnPropertyDescriptors?Object.defineProperties(o,Object.getOwnPropertyDescriptors(n)):D(Object(n)).forEach((function(t){Object.defineProperty(o,t,Object.getOwnPropertyDescriptor(n,t))}))}return o}var N=function(o){return!!o&&"object"===n(o)&&"title"in o},R=function(t){var n=t.additionalActions,D=t.showComments,R=t.disableSettings,G=t.disableSettingsPin,U=t.rootRef,q=t.hideSettingsUnderMore,H=h(),L=H.maximized,W=H.setMaximized,Z=H.isInsideNewMobileApp,J=T(),K=z(),Q=r(!1),V=s(Q,2),X=V[0],Y=V[1],$=m(null),_=m(null),oo=r(!0),to=s(oo,2),so=to[0],no=to[1],io=m(null),eo=v(),co=eo.isPinned,ro=eo.close,mo=eo.open,po=eo.isPopoverOpen,lo=eo.animatePopover,ao=p((function(){ro(!1)}),[ro]),uo=h().appSettingsComponent,jo=(y()||{}).height,fo=!!uo&&!R,Io=l((function(){return{maxHeight:"".concat(jo,"px")}}),[jo]),Co=p((function(){Y((function(o){return!o}))}),[]),ho=p((function(){K((function(o){return!o}))}),[K]),go=p((function(){no(!1),W(!L)}),[L,W]);a((function(){no(!0)}),[L]);var bo=l((function(){var t=function(o){return function(){Co(),null==o||o()}},s=(n||[]).filter(N).map((function(o){return E(E({},o),{},{onClick:t(o.onClick)})})),e={icon:i(P,{}),onClick:t(ho),title:J?"Close Comments Mode":"Add Comment"},c={title:"Full Screen",onClick:t(go),icon:i(O,{})},r={title:"Settings",onClick:t(mo),icon:i(k,{})};return[].concat(o(s),o(D?[e]:[]),o(q&&fo?[r]:[]),[c])}),[n,J,q,mo,fo,D,ho,go,Co]);w(io,ao,[_.current,'[role="tooltip"]','[role="presentation"]']);var vo=bo.length>1,yo=i(j,{size:"small",type:"tertiaryBg",onClick:go,className:vo?S.fullscreenButton:void 0,testId:L?A.CollapseButtonTestId:A.ExpandButtonTestId,children:i(L?B:O,{})});return e(c,{children:[null==n?void 0:n.map((function(o,t){return N(o)?i(f,{title:o.title,children:i(j,{size:"small",type:"tertiary",onClick:o.onClick,className:d(S.additionalActionButton),testId:A.AdditionalActionItemTestId,children:o.icon})},t):i(u,{children:o},t)})),D&&i(f,{title:J?"Close Comments Mode":"Add Comment",children:i(j,{size:"small",type:J?"secondaryBg":"tertiaryBg",onClick:ho,className:vo?S.commentButton:void 0,testId:J?A.CloseCommentButtonTestId:A.AddMessageButtonTestId,children:J?i(x,{}):i(M,{fill:"currentColor"})})}),fo&&i(I,{ref:_,closeSettings:ao,className:q?S.settingsHiddenUnderMore:void 0}),!Z&&i(c,{children:so?i(f,{title:L?"Close Full Screen":"Full Screen",children:yo}):yo}),vo&&i(f,{title:"More",children:i(j,{type:X||q&&po?"secondaryBg":"tertiaryBg",className:S.moreButton,ref:$,onClick:Co,size:"small",children:i(F,{})})}),vo&&$.current&&i(C,{anchorEl:$.current,open:X,onClose:Co,placement:"bottom-end",children:bo.map((function(o,t){return i(C.Item,{size:"large",prefix:o.icon,onClick:o.onClick,children:o.title},t)}))}),fo&&U.current&&!co&&i(g,{open:po,placement:"bottom-end",anchorEl:U.current,onClose:ao,className:S.settingsPopover,preventScroll:!1,backdrop:!1,animate:lo,children:i(b,{rootStyles:Io,ref:io,disableSettingsPin:G,onClose:ao})})]})};export{R as Actions};
1
+ import o from"@babel/runtime/helpers/toConsumableArray";import t from"@babel/runtime/helpers/defineProperty";import s from"@babel/runtime/helpers/slicedToArray";import n from"@babel/runtime/helpers/typeof";import{jsx as i,jsxs as e,Fragment as c}from"react/jsx-runtime";import{useState as r,useRef as m,useCallback as p,useMemo as l,useEffect as a,Fragment as u}from"react";import d from"classnames";import{ButtonIcon as j}from"../../../ButtonIcon/ButtonIcon.js";import{Tooltip as f}from"../../../Tooltip/Tooltip.js";import{SettingsButton as I}from"../SettingsButton/SettingsButton.js";import"../SettingsButton/SettingsButton.constants.js";import{Menu as C}from"../../../Menu/Menu.js";import"../../../AppCommonsProvider/AppCommonsProvider.js";import{useAppCommonsInternal as h}from"../../../AppCommonsProvider/AppCommonsContext.js";import{Popover as g}from"../../../Popover/Popover.js";import{AppSettings as b}from"../../../AppSettings/AppSettings.js";import"../../../AppSettings/AppSettings.constants.js";import{useAppSettingPinning as v}from"../../../AppSettings/AppSettingsPinningContext.js";import{useAppSize as y}from"../../../AppSizeProvider/AppSizeProvider.js";import{ActionsTestIds as A}from"./Actions.constants.js";import S from"./Actions.scss.js";import{MessageIcon as P,ExpandIcon as O,SettingTwoIcon as k,CollapseIcon as B,CloseSmallIcon as x,MoreOneIcon as F}from"../../../../icons/iconParkIcons.js";import{AddMessageCustomIcon as M}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/asyncToGenerator";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 w from"../../../../effects/useOutsideClick.js";import"immutable";import"query-string";import"../../../../constants/goals.js";import"../../../../constants/segment.js";import"../../../../constants/alerts.js";import"../../../../constants/apps.js";import"../../../../constants/drillstring.js";import"../../../../constants/completion.js";import"../../../../constants/appPackages.js";import"../../../../constants/notifications.js";import"../../../../constants/feed.js";import"../../../../constants/bha.js";import"../../../../constants/corvaCompanyId.js";import"../../../../components/GradientManager/configuration/constants.js";import"../../../../utils/index.js";import"uuid";import"jsona";import"../../../../utils/env.js";import"../../../../components/StatusBadge/constants.js";import"lodash/set";import"lodash/get";import"lodash/unset";import"moment";import"../../../../clients/api/apiCore.js";import"../../../../clients/constants.js";import"../../../../clients/sso/auth0.js";import"../../../../clients/sso/oauth2.js";import"lodash/isEmpty";import"lodash/sortBy";import"../../../../constants/streamSourceType.js";import{useAppCommentsMode as T,useSetAppCommentsMode as z}from"../../../../components/DevCenter/DevCenterAppContainer/components/CommentsSwitch/CommentsSwitchContext.js";function D(o,t){var s=Object.keys(o);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(o);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(o,t).enumerable}))),s.push.apply(s,n)}return s}function E(o){for(var s=1;s<arguments.length;s++){var n=null!=arguments[s]?arguments[s]:{};s%2?D(Object(n),!0).forEach((function(s){t(o,s,n[s])})):Object.getOwnPropertyDescriptors?Object.defineProperties(o,Object.getOwnPropertyDescriptors(n)):D(Object(n)).forEach((function(t){Object.defineProperty(o,t,Object.getOwnPropertyDescriptor(n,t))}))}return o}var N=function(o){return!!o&&"object"===n(o)&&"title"in o},R=function(t){var n=t.additionalActions,D=t.showComments,R=t.disableSettings,G=t.rootRef,U=t.hideSettingsUnderMore,q=h(),H=q.maximized,L=q.setMaximized,W=q.isInsideNewMobileApp,Z=T(),J=z(),K=r(!1),Q=s(K,2),V=Q[0],X=Q[1],Y=m(null),$=m(null),_=r(!0),oo=s(_,2),to=oo[0],so=oo[1],no=m(null),io=v(),eo=io.isPinned,co=io.close,ro=io.open,mo=io.isPopoverOpen,po=io.animatePopover,lo=p((function(){co(!1)}),[co]),ao=h().appSettingsComponent,uo=(y()||{}).height,jo=!!ao&&!R,fo=l((function(){return{maxHeight:"".concat(uo,"px")}}),[uo]),Io=p((function(){X((function(o){return!o}))}),[]),Co=p((function(){J((function(o){return!o}))}),[J]),ho=p((function(){so(!1),L(!H)}),[H,L]);a((function(){so(!0)}),[H]);var go=l((function(){var t=function(o){return function(){Io(),null==o||o()}},s=(n||[]).filter(N).map((function(o){return E(E({},o),{},{onClick:t(o.onClick)})})),e={icon:i(P,{}),onClick:t(Co),title:Z?"Close Comments Mode":"Add Comment"},c={title:"Full Screen",onClick:t(ho),icon:i(O,{})},r={title:"Settings",onClick:t(ro),icon:i(k,{})};return[].concat(o(s),o(D?[e]:[]),o(U&&jo?[r]:[]),[c])}),[n,Z,U,ro,jo,D,Co,ho,Io]);w(no,lo,[$.current,'[role="tooltip"]','[role="presentation"]']);var bo=go.length>1,vo=i(j,{size:"small",type:"tertiaryBg",onClick:ho,className:bo?S.fullscreenButton:void 0,testId:H?A.CollapseButtonTestId:A.ExpandButtonTestId,children:i(H?B:O,{})});return e(c,{children:[null==n?void 0:n.map((function(o,t){return N(o)?i(f,{title:o.title,children:i(j,{size:"small",type:"tertiary",onClick:o.onClick,className:d(S.additionalActionButton),testId:A.AdditionalActionItemTestId,children:o.icon})},t):i(u,{children:o},t)})),D&&i(f,{title:Z?"Close Comments Mode":"Add Comment",children:i(j,{size:"small",type:Z?"secondaryBg":"tertiaryBg",onClick:Co,className:bo?S.commentButton:void 0,testId:Z?A.CloseCommentButtonTestId:A.AddMessageButtonTestId,children:Z?i(x,{}):i(M,{fill:"currentColor"})})}),jo&&i(I,{ref:$,closeSettings:lo,className:U?S.settingsHiddenUnderMore:void 0}),!W&&i(c,{children:to?i(f,{title:H?"Close Full Screen":"Full Screen",children:vo}):vo}),bo&&i(f,{title:"More",children:i(j,{type:V||U&&mo?"secondaryBg":"tertiaryBg",className:S.moreButton,ref:Y,onClick:Io,size:"small",children:i(F,{})})}),bo&&Y.current&&i(C,{anchorEl:Y.current,open:V,onClose:Io,placement:"bottom-end",children:go.map((function(o,t){return i(C.Item,{size:"large",prefix:o.icon,onClick:o.onClick,children:o.title},t)}))}),jo&&G.current&&!eo&&i(g,{open:mo,placement:"bottom-end",anchorEl:G.current,onClose:lo,className:S.settingsPopover,preventScroll:!1,backdrop:!1,animate:po,children:i(b,{rootStyles:fo,ref:no,onClose:lo})})]})};export{R as Actions};
2
2
  //# sourceMappingURL=Actions.js.map