@corva/ui 3.12.0-9 → 3.12.0-rc.0

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 (41) hide show
  1. package/cjs-bundle/clients/index.js +1 -1
  2. package/cjs-bundle/clients/index.js.map +1 -1
  3. package/cjs-bundle/clients/subscriptions.js +1 -1
  4. package/cjs-bundle/clients/subscriptions.js.map +1 -1
  5. package/cjs-bundle/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js +1 -1
  6. package/cjs-bundle/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js.map +1 -1
  7. package/cjs-bundle/components/OffsetWellPickerV2/components/Map/Map.js +1 -1
  8. package/cjs-bundle/components/OffsetWellPickerV2/components/Map/Map.js.map +1 -1
  9. package/cjs-bundle/components/PinnableFilters/effects/index.js +1 -1
  10. package/cjs-bundle/components/PinnableFilters/effects/index.js.map +1 -1
  11. package/cjs-bundle/config/index.js +1 -1
  12. package/cjs-bundle/config/initGlobalDependencies.js +1 -1
  13. package/cjs-bundle/config/initGlobalDependencies.js.map +1 -1
  14. package/cjs-bundle/effects/useSubscriptions.js +1 -1
  15. package/cjs-bundle/effects/useSubscriptions.js.map +1 -1
  16. package/clients/index.d.ts +1 -3
  17. package/clients/index.d.ts.map +1 -1
  18. package/clients/index.js +1 -1
  19. package/clients/index.js.map +1 -1
  20. package/clients/subscriptions.js +1 -1
  21. package/clients/subscriptions.js.map +1 -1
  22. package/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.d.ts.map +1 -1
  23. package/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js +1 -1
  24. package/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js.map +1 -1
  25. package/components/OffsetWellPickerV2/components/Map/Map.js +1 -1
  26. package/components/OffsetWellPickerV2/components/Map/Map.js.map +1 -1
  27. package/components/PinnableFilters/effects/index.js +1 -1
  28. package/components/PinnableFilters/effects/index.js.map +1 -1
  29. package/config/index.d.ts +2 -1
  30. package/config/index.d.ts.map +1 -1
  31. package/config/index.js +1 -1
  32. package/config/initGlobalDependencies.d.ts +1 -1
  33. package/config/initGlobalDependencies.d.ts.map +1 -1
  34. package/config/initGlobalDependencies.js +1 -1
  35. package/config/initGlobalDependencies.js.map +1 -1
  36. package/effects/useSubscriptions.d.ts.map +1 -1
  37. package/effects/useSubscriptions.js +1 -1
  38. package/effects/useSubscriptions.js.map +1 -1
  39. package/index.d.ts +1 -0
  40. package/index.d.ts.map +1 -1
  41. package/package.json +3 -3
package/clients/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import t from"@babel/runtime/helpers/defineProperty";import{v4 as r}from"uuid";import{noop as o}from"lodash";import*as n from"./clientStorage/index.js";export{n 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 a,getWithHeaders as p,put as c,patch as s,post as u,del as l}from"./api/apiCore.js";import{CORVA_API_URLS as d}from"./constants.js";import*as v from"./corvaUrls.js";export{v as corvaUrls};import*as f from"./sso/index.js";export{f as sso};export{attachHTTPHeaders,getAppKeyFromStackTrace,getAuthorizationHeaders,getAuthorizationToken}from"./utils.js";function g(t,r){var o=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable}))),o.push.apply(o,n)}return o}function h(r){for(var o=1;o<arguments.length;o++){var n=null!=arguments[o]?arguments[o]:{};o%2?g(Object(n),!0).forEach((function(o){t(r,o,n[o])})):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(n)):g(Object(n)).forEach((function(t){Object.defineProperty(r,t,Object.getOwnPropertyDescriptor(n,t))}))}return r}var m={get:function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return a(t,r,o)},getWithHeaders:function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return p(t,r,o)},put:function(t,r){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return c(t,r,o,n)},patch:function(t,r){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return s(t,r,o,n)},post:function(t,r){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return u(t,r,o)},del:function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return l(t,r,o)}},b={get:function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return a(t,r,h({apiUrl:d.DATA_API},o))},put:function(t,r){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return c(t,r,o,h({apiUrl:d.DATA_API},n))},patch:function(t,r){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return s(t,r,o,h({apiUrl:d.DATA_API},n))},post:function(t,r){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return u(t,r,h({apiUrl:d.DATA_API},o))},del:function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return l(t,r,h({apiUrl:d.DATA_API},o))}};function j(){if(window.xprops){var t,o,n,e,i,a=(null===(t=window.xprops)||void 0===t||null===(o=t.app)||void 0===o||null===(n=o.app)||void 0===n?void 0:n.id)||"unknown-app-id",p=(null===(e=window.xprops)||void 0===e||null===(i=e.app)||void 0===i?void 0:i.id)||"unknown-instance-id";return"".concat(a,":").concat(p,":").concat(r())}return"non-dc-app:".concat(r())}var A={subscribe:function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=r.onDataReceive,e=void 0===n?o:n,i=window[Symbol.for("socket")]||{},a=i.subscribe,p=i.unsubscribe,c=i.socket;if(!c)return console.error("Socket is not initialized!"),o;var s=j(),u=h(h({},t),{},{collection:t.collection||t.dataset,appInstanceId:s});return a(u),c.on("data",(function(t){return t.appInstanceId===s&&e(t)})),function(){return p(u)}}};export{m as corvaAPI,b as corvaDataAPI,A as socketClient};
1
+ import t from"@babel/runtime/helpers/defineProperty";import{v4 as r}from"uuid";import{noop as o}from"lodash";import*as n from"./clientStorage/index.js";export{n 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 a,getWithHeaders as p,put as c,patch as s,post as u,del as l}from"./api/apiCore.js";import{CORVA_API_URLS as d}from"./constants.js";import*as v from"./corvaUrls.js";export{v as corvaUrls};import*as f from"./sso/index.js";export{f as sso};export{attachHTTPHeaders,getAppKeyFromStackTrace,getAuthorizationHeaders,getAuthorizationToken}from"./utils.js";function g(t,r){var o=Object.keys(t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(t);r&&(n=n.filter((function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable}))),o.push.apply(o,n)}return o}function h(r){for(var o=1;o<arguments.length;o++){var n=null!=arguments[o]?arguments[o]:{};o%2?g(Object(n),!0).forEach((function(o){t(r,o,n[o])})):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(n)):g(Object(n)).forEach((function(t){Object.defineProperty(r,t,Object.getOwnPropertyDescriptor(n,t))}))}return r}var m={get:function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return a(t,r,o)},getWithHeaders:function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return p(t,r,o)},put:function(t,r){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return c(t,r,o,n)},patch:function(t,r){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return s(t,r,o,n)},post:function(t,r){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return u(t,r,o)},del:function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return l(t,r,o)}},b={get:function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return a(t,r,h({apiUrl:d.DATA_API},o))},put:function(t,r){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return c(t,r,o,h({apiUrl:d.DATA_API},n))},patch:function(t,r){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{};return s(t,r,o,h({apiUrl:d.DATA_API},n))},post:function(t,r){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return u(t,r,h({apiUrl:d.DATA_API},o))},del:function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return l(t,r,h({apiUrl:d.DATA_API},o))}};function j(){if(window.xprops){var t,o,n,e,i,a=(null===(t=window.xprops)||void 0===t||null===(o=t.app)||void 0===o||null===(n=o.app)||void 0===n?void 0:n.id)||"unknown-app-id",p=(null===(e=window.xprops)||void 0===e||null===(i=e.app)||void 0===i?void 0:i.id)||"unknown-instance-id";return"".concat(a,":").concat(p,":").concat(r())}return"non-dc-app:".concat(r())}var A={subscribe:function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=r.onDataReceive,e=window[Symbol.for("socket")]||{},i=e.subscribe,a=e.unsubscribe,p=e.socket;if(!p)return console.error("Socket is not initialized!"),o;var c=j(),s=h(h({},t),{},{collection:t.collection||t.dataset,appInstanceId:c}),u=n&&function(t){return t.appInstanceId===c&&n(t)};return i(s),u&&p.on("data",u),function(){u&&p.off("data",u),a(s)}}};export{m as corvaAPI,b as corvaDataAPI,A 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';\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\nexport const socketClient = {\n subscribe: (subscription, { onDataReceive = noop } = {}) => {\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 subscribe(subscriptionWithId);\n socket.on('data', event => event.appInstanceId === subId && onDataReceive(event));\n\n // NOTE: Return unsubscribe\n return () => unsubscribe(subscriptionWithId);\n },\n};\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","subscribe","subscription","_ref","_ref$onDataReceive","onDataReceive","noop","Symbol","for","unsubscribe","socket","console","error","subId","subscriptionWithId","collection","dataset","on","event"],"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';\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\nexport const socketClient = {\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};\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","subscribe","subscription","_ref","onDataReceive","Symbol","for","unsubscribe","socket","console","error","noop","subId","subscriptionWithId","collection","dataset","onData","event","on","off"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import n from"socket.io-client";import*as c from"query-string";import o from"lodash/noop";var t=new RegExp("^/reports.*$"),e=c.parse(window.location.search).subscriptions_url||process.env.REACT_APP_SUBSCRIPTIONS_URL||"https://subscriptions.qa.corva.ai";function i(n){return t.test(window.location.pathname)?o:n}function r(n,c){return"".concat(n.appInstanceId||c,":").concat(n.companyId,":").concat(n.userId,":").concat(n.collection)}function s(n,c){return"".concat(n.appInstanceId||c,":").concat(n.companyId,":").concat(n.collection)}function a(n,c){return n.event?"".concat(n.appInstanceId||c,":").concat(n.provider,":").concat(n.collection,":").concat(n.assetId,":").concat(n.event):"".concat(n.appInstanceId||c,":").concat(n.provider,":").concat(n.collection,":").concat(n.assetId)}function u(n){var c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return"userId"in n?r(n,c):"companyId"in n?s(n,c):a(n,c)}function d(){var c,o={},t=!1,r=i((function(n){if(!c)throw new Error("Not connected");var t=u(n);t in o&&(delete o[t],c.emit("unsubscribe",n))})),s=i((function(n){if(!c)throw new Error("Not connected");var e=u(n);o[e]=n,t&&c.emit("subscribe",n)}));return{connect:i((function(i){var a=i.onDataReceive,u=i.onResubscribe,d=!1;return(c=n(e,{transports:["websocket"]})).on("connect",(function(){c.emit("authenticate"),d&&(Object.values(o).forEach((function(n){r(n),s(n),u(n)})),d=!1)})),c.on("authenticated",(function(){t=!0,Object.values(o).forEach(s)})),c.on("data",a),c.on("disconnect",(function(n){"io server disconnect"===n&&(d=!0,c.connect())})),c.on("reconnect",(function(){d=!0})),c})),disconnect:i((function(){c&&(c.disconnect(),c=null)})),subscribe:s,unsubscribe:r}}var b=function(){var n=window[Symbol.for("socket")];null!=n&&n.socket&&!n.socket.disconnected&&(console.warn("Existing socket is connected, disconnecting."),n.disconnect());var c=d(),t=c.connect,e=c.disconnect,i=c.subscribe,r=c.unsubscribe,s=t({onDataReceive:o,onResubscribe:o});window[Symbol.for("socket")]={subscribe:i,unsubscribe:r,disconnect:e,socket:s}};export{u as getSubscriptionId,d as getSubscriptionsClient,b as initializeSocketClient};
1
+ import n from"socket.io-client";import*as c from"query-string";import o from"lodash/noop";var t=new RegExp("^/reports.*$"),e=c.parse(window.location.search).subscriptions_url||process.env.REACT_APP_SUBSCRIPTIONS_URL||"https://subscriptions.qa.corva.ai";function i(n){return t.test(window.location.pathname)?o:n}function r(n,c){return"".concat(n.appInstanceId||c,":").concat(n.companyId,":").concat(n.userId,":").concat(n.collection)}function s(n,c){return"".concat(n.appInstanceId||c,":").concat(n.companyId,":").concat(n.collection)}function a(n,c){return n.event?"".concat(n.appInstanceId||c,":").concat(n.provider,":").concat(n.collection,":").concat(n.assetId,":").concat(n.event):"".concat(n.appInstanceId||c,":").concat(n.provider,":").concat(n.collection,":").concat(n.assetId)}function u(n){var c=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"";return"userId"in n?r(n,c):"companyId"in n?s(n,c):a(n,c)}function d(){var c,o={},t=!1,r=i((function(n){if(!c)throw new Error("Not connected");var t=u(n);t in o&&(delete o[t],c.emit("unsubscribe",n))})),s=i((function(n){if(!c)throw new Error("Not connected");var e=u(n);o[e]=n,t&&c.emit("subscribe",n)})),a=i((function(){var i=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},a=i.onDataReceive,u=void 0===a?void 0:a,d=i.onResubscribe,p=void 0===d?void 0:d,b=!1;return(c=n(e,{transports:["websocket"]})).on("connect",(function(){b&&(Object.values(o).forEach((function(n){r(n),s(n),p&&p(n)})),b=!1)})),c.on("authenticated",(function(){t=!0,Object.values(o).forEach(s)})),u&&c.on("data",u),c.on("disconnect",(function(n){"io server disconnect"===n&&(b=!0,c.connect())})),c.on("reconnect",(function(){b=!0})),c}));return{connect:a,disconnect:i((function(){c&&(c.disconnect(),c=null)})),subscribe:s,unsubscribe:r}}var p=function(){var n=window[Symbol.for("socket")];null!=n&&n.socket&&(console.warn("Existing socket, disconnecting."),n.disconnect());var c=d(),o=c.connect,t=c.disconnect,e=c.subscribe,i=c.unsubscribe,r=o();window[Symbol.for("socket")]={subscribe:e,unsubscribe:i,disconnect:t,socket:r}};export{u as getSubscriptionId,d as getSubscriptionsClient,p as initializeSocketClient};
2
2
  //# sourceMappingURL=subscriptions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"subscriptions.js","sources":["../../src/clients/subscriptions.js"],"sourcesContent":["import io from 'socket.io-client';\nimport * as queryString from 'query-string';\nimport noop from 'lodash/noop';\n\nconst SERVER_DISCONNECT_REASON = 'io server disconnect';\nconst REPORTS_ROUTE_REG_EXP = new RegExp('^/reports.*$');\n\nconst parameters = queryString.parse(window.location.search);\nconst socketUrl =\n parameters.subscriptions_url ||\n process.env.REACT_APP_SUBSCRIPTIONS_URL ||\n 'https://subscriptions.qa.corva.ai';\n\nfunction reportsDisableDecorator(func) {\n // NOTE: Disable subscription events on reports pages\n return REPORTS_ROUTE_REG_EXP.test(window.location.pathname) ? noop : func;\n}\n\nfunction getUserSubscriptionId(options, hookId) {\n return `${options.appInstanceId || hookId}:${options.companyId}:${options.userId}:${\n options.collection\n }`;\n}\n\nfunction getCompanySubscriptionId(options, hookId) {\n return `${options.appInstanceId || hookId}:${options.companyId}:${options.collection}`;\n}\n\nfunction getAssetSubscriptionId(options, hookId) {\n return options.event\n ? `${options.appInstanceId || hookId}:${options.provider}:${options.collection}:${\n options.assetId\n }:${options.event}`\n : `${options.appInstanceId || hookId}:${options.provider}:${options.collection}:${\n options.assetId\n }`;\n}\n\nexport function getSubscriptionId(options, hookId = '') {\n if ('userId' in options) return getUserSubscriptionId(options, hookId);\n else if ('companyId' in options) return getCompanySubscriptionId(options, hookId);\n return getAssetSubscriptionId(options, hookId);\n}\n\nexport function getSubscriptionsClient() {\n let socket;\n\n // NOTE: Is used in order to reset subscriptions in case of network failure\n const subscriptions = {};\n let isAuthenticated = false;\n\n const unsubscribe = reportsDisableDecorator(options => {\n if (!socket) {\n throw new Error('Not connected');\n }\n const subscriptionId = getSubscriptionId(options);\n\n if (subscriptionId in subscriptions) {\n delete subscriptions[subscriptionId];\n socket.emit('unsubscribe', options);\n }\n });\n\n const subscribe = reportsDisableDecorator(options => {\n if (!socket) {\n throw new Error('Not connected');\n }\n\n const subscriptionId = getSubscriptionId(options);\n subscriptions[subscriptionId] = options;\n\n // NOTE: Events could be:\n // 1) 'update' - fires in case of records are updated;\n // 2) 'destroy' - fires in case or records are destroyed;\n // 3) '' (empty) - fires in case of new records are created;\n if (isAuthenticated) {\n socket.emit('subscribe', options);\n }\n });\n\n const connect = reportsDisableDecorator(({ onDataReceive, onResubscribe }) => {\n let resubscribe = false;\n\n socket = io(socketUrl, { transports: ['websocket'] });\n socket.on('connect', () => {\n socket.emit('authenticate');\n\n if (resubscribe) {\n Object.values(subscriptions).forEach(subscription => {\n unsubscribe(subscription);\n subscribe(subscription);\n onResubscribe(subscription);\n });\n resubscribe = false;\n }\n });\n socket.on('authenticated', () => {\n isAuthenticated = true;\n Object.values(subscriptions).forEach(subscribe);\n });\n socket.on('data', onDataReceive);\n\n socket.on('disconnect', reason => {\n if (reason === SERVER_DISCONNECT_REASON) {\n resubscribe = true;\n socket.connect();\n }\n });\n socket.on('reconnect', () => {\n resubscribe = true;\n });\n\n return socket;\n });\n\n const disconnect = reportsDisableDecorator(() => {\n if (socket) {\n socket.disconnect();\n socket = null;\n }\n });\n\n return { connect, disconnect, subscribe, unsubscribe };\n}\n\nexport const initializeSocketClient = () => {\n const existingSocket = window[Symbol.for('socket')];\n if (existingSocket?.socket && !existingSocket.socket.disconnected) {\n console.warn('Existing socket is connected, disconnecting.');\n existingSocket.disconnect();\n }\n const { connect, disconnect, subscribe, unsubscribe } = getSubscriptionsClient();\n const socket = connect({ onDataReceive: noop, onResubscribe: noop });\n window[Symbol.for('socket')] = {\n subscribe,\n unsubscribe,\n disconnect,\n socket,\n };\n};\n"],"names":["REPORTS_ROUTE_REG_EXP","RegExp","socketUrl","queryString","parse","window","location","search","subscriptions_url","process","env","REACT_APP_SUBSCRIPTIONS_URL","reportsDisableDecorator","func","test","pathname","noop","getUserSubscriptionId","options","hookId","concat","appInstanceId","companyId","userId","collection","getCompanySubscriptionId","getAssetSubscriptionId","event","provider","assetId","getSubscriptionId","getSubscriptionsClient","socket","subscriptions","isAuthenticated","unsubscribe","Error","subscriptionId","emit","subscribe","connect","_ref","onDataReceive","onResubscribe","resubscribe","io","transports","on","Object","values","forEach","subscription","reason","disconnect","initializeSocketClient","existingSocket","Symbol","for","disconnected","console","warn","_getSubscriptionsClie"],"mappings":"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"}
1
+ {"version":3,"file":"subscriptions.js","sources":["../../src/clients/subscriptions.js"],"sourcesContent":["import io from 'socket.io-client';\nimport * as queryString from 'query-string';\nimport noop from 'lodash/noop';\n\nconst SERVER_DISCONNECT_REASON = 'io server disconnect';\nconst REPORTS_ROUTE_REG_EXP = new RegExp('^/reports.*$');\n\nconst parameters = queryString.parse(window.location.search);\nconst socketUrl =\n parameters.subscriptions_url ||\n process.env.REACT_APP_SUBSCRIPTIONS_URL ||\n 'https://subscriptions.qa.corva.ai';\n\nfunction reportsDisableDecorator(func) {\n // NOTE: Disable subscription events on reports pages\n return REPORTS_ROUTE_REG_EXP.test(window.location.pathname) ? noop : func;\n}\n\nfunction getUserSubscriptionId(options, hookId) {\n return `${options.appInstanceId || hookId}:${options.companyId}:${options.userId}:${\n options.collection\n }`;\n}\n\nfunction getCompanySubscriptionId(options, hookId) {\n return `${options.appInstanceId || hookId}:${options.companyId}:${options.collection}`;\n}\n\nfunction getAssetSubscriptionId(options, hookId) {\n return options.event\n ? `${options.appInstanceId || hookId}:${options.provider}:${options.collection}:${\n options.assetId\n }:${options.event}`\n : `${options.appInstanceId || hookId}:${options.provider}:${options.collection}:${\n options.assetId\n }`;\n}\n\nexport function getSubscriptionId(options, hookId = '') {\n if ('userId' in options) return getUserSubscriptionId(options, hookId);\n else if ('companyId' in options) return getCompanySubscriptionId(options, hookId);\n return getAssetSubscriptionId(options, hookId);\n}\n\nexport function getSubscriptionsClient() {\n let socket;\n\n // NOTE: Is used in order to reset subscriptions in case of network failure\n const subscriptions = {};\n let isAuthenticated = false;\n\n const unsubscribe = reportsDisableDecorator(options => {\n if (!socket) {\n throw new Error('Not connected');\n }\n const subscriptionId = getSubscriptionId(options);\n\n if (subscriptionId in subscriptions) {\n delete subscriptions[subscriptionId];\n socket.emit('unsubscribe', options);\n }\n });\n\n const subscribe = reportsDisableDecorator(options => {\n if (!socket) {\n throw new Error('Not connected');\n }\n\n const subscriptionId = getSubscriptionId(options);\n subscriptions[subscriptionId] = options;\n\n // NOTE: Events could be:\n // 1) 'update' - fires in case of records are updated;\n // 2) 'destroy' - fires in case or records are destroyed;\n // 3) '' (empty) - fires in case of new records are created;\n if (isAuthenticated) {\n socket.emit('subscribe', options);\n }\n });\n\n const connect = reportsDisableDecorator(\n ({ onDataReceive = undefined, onResubscribe = undefined } = {}) => {\n let resubscribe = false;\n\n socket = io(socketUrl, { transports: ['websocket'] });\n socket.on('connect', () => {\n if (resubscribe) {\n Object.values(subscriptions).forEach(subscription => {\n unsubscribe(subscription);\n subscribe(subscription);\n if (onResubscribe) onResubscribe(subscription);\n });\n resubscribe = false;\n }\n });\n socket.on('authenticated', () => {\n isAuthenticated = true;\n Object.values(subscriptions).forEach(subscribe);\n });\n if (onDataReceive) socket.on('data', onDataReceive);\n\n socket.on('disconnect', reason => {\n if (reason === SERVER_DISCONNECT_REASON) {\n resubscribe = true;\n socket.connect();\n }\n });\n socket.on('reconnect', () => {\n resubscribe = true;\n });\n\n return socket;\n }\n );\n\n const disconnect = reportsDisableDecorator(() => {\n if (socket) {\n socket.disconnect();\n socket = null;\n }\n });\n\n return { connect, disconnect, subscribe, unsubscribe };\n}\n\nexport const initializeSocketClient = () => {\n const existingSocket = window[Symbol.for('socket')];\n if (existingSocket?.socket) {\n console.warn('Existing socket, disconnecting.');\n existingSocket.disconnect();\n }\n const { connect, disconnect, subscribe, unsubscribe } = getSubscriptionsClient();\n const socket = connect();\n window[Symbol.for('socket')] = {\n subscribe,\n unsubscribe,\n disconnect,\n socket,\n };\n};\n"],"names":["REPORTS_ROUTE_REG_EXP","RegExp","socketUrl","queryString","parse","window","location","search","subscriptions_url","process","env","REACT_APP_SUBSCRIPTIONS_URL","reportsDisableDecorator","func","test","pathname","noop","getUserSubscriptionId","options","hookId","concat","appInstanceId","companyId","userId","collection","getCompanySubscriptionId","getAssetSubscriptionId","event","provider","assetId","getSubscriptionId","getSubscriptionsClient","socket","subscriptions","isAuthenticated","unsubscribe","Error","subscriptionId","emit","subscribe","connect","_ref","arguments","length","undefined","_ref$onDataReceive","onDataReceive","_ref$onResubscribe","onResubscribe","resubscribe","io","transports","on","Object","values","forEach","subscription","reason","disconnect","initializeSocketClient","existingSocket","Symbol","for","console","warn","_getSubscriptionsClie"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DevCenterIsolatedAppPage.d.ts","sourceRoot":"","sources":["../../../../src/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js"],"names":[],"mappings":"AA0CA;;;;GAIG;AACH;;;;gBA+EC;;;;;;;;;;;;;;;;sBA7HqB,YAAY"}
1
+ {"version":3,"file":"DevCenterIsolatedAppPage.d.ts","sourceRoot":"","sources":["../../../../src/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js"],"names":[],"mappings":"AAyCA;;;;GAIG;AACH;;;;gBA+EC;;;;;;;;;;;;;;;;sBA5HqB,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{useXProps as m}from"./effects/useXProps.js";import{ISOLATED_PAGE_APP_CONTAINER_ID as p}from"./constants.js";import{replaceUndefinedValuesWithNull as l}from"./utils/replaceUndefinedValuesWithNull.js";import{IsInsideIsolatedDcAppProvider as a}from"../DevCenterAppContainer/components/IsInsideIsolatedDcAppProvider/IsInsideIsolatedDcAppProvider.js";import u from"../DevCenterAppContainer/DevCenterAppContainer.js";import{jsx as j}from"react/jsx-runtime";import"@icon-park/react/es/all";import{IconParkProvider as d}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/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/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 I from"../../../hocs/withMUIProvidersHOC.js";import"../../../hocs/withAssetEditorLockHOC.js";import f from"../AppContext.js";import{THEMES as C}from"../../../constants/theme.js";import{LOCAL_STORAGE_APP_THEME_KEY as g}from"../../../CLI/hocs/constants.js";import{setThemeVariables as b}from"../../../utils/themeVariables.js";import{isPDFReportView as h}from"../../../CLI/hocs/utils.js";import{PermissionsContext as v}from"../../../permissions/PermissionsContext.js";import{updateUserUnits as A}from"../../../utils/index.js";import"../../../config/initGlobalDependencies.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";import"./DevCenterAppZoidComponent.js";var P=["appContextValue","globalMixpanelEventTracker","globalNotificationToastsAPI","onSettingChange","onSettingsChange","permissionsContextValue","timezone","userUnits"];function y(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 O(s){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?y(Object(n),!0).forEach((function(t){o(s,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(n)):y(Object(n)).forEach((function(o){Object.defineProperty(s,o,Object.getOwnPropertyDescriptor(n,o))}))}return s}var x=I(u),S=e((function(){return{"@global":{body:{backgroundColor:"transparent",overflow:"hidden"}}}}));function D(o){var i,e,u,I=o.CLIAppComponent,y=o.CLIAppSettings,D=o.containerReportClassName;S();var k=m(),L=k.appContextValue,w=k.globalMixpanelEventTracker,F=k.globalNotificationToastsAPI,T=k.onSettingChange,R=k.onSettingsChange,E=k.permissionsContextValue,M=k.timezone,U=k.userUnits,V=s(k,P),N=V.location.pathname.startsWith("/reports/")||h,z=localStorage.getItem(g)||(null===(i=V.currentUser)||void 0===i||null===(e=i.settings)||void 0===e||null===(u=e.uiSettings)||void 0===u?void 0:u.theme)||C.DARK,G=!N&&z!==C.LIGHT;t((function(){b(G)}),[G]),t((function(){window[Symbol.for("notificationToasts")]=F,window[Symbol.for("logToMixpanel")]=w}),[F,w]);var W=n(!0);return(W.current||N)&&(W.current=!1,A({userUnits:U})),t((function(){return M&&c.tz.setDefault(M),function(){return c.tz.setDefault(null)}}),[M]),j(v.Provider,{value:E,children:j(f.Provider,{value:L,children:j(a,{value:!0,children:j(d,{children:j("div",{id:p,className:r(N&&D),children:j(x,O(O({},V),{},{theme:G?C.DARK:C.LIGHT,onSettingsChange:function(o){return R(l(o))},onSettingChange:function(o,s){return T(o,l(s))},CLIAppComponent:I,CLIAppSettings:y}))})})})})})}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 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{useXProps as m}from"./effects/useXProps.js";import{ISOLATED_PAGE_APP_CONTAINER_ID as p}from"./constants.js";import{replaceUndefinedValuesWithNull as l}from"./utils/replaceUndefinedValuesWithNull.js";import{IsInsideIsolatedDcAppProvider as a}from"../DevCenterAppContainer/components/IsInsideIsolatedDcAppProvider/IsInsideIsolatedDcAppProvider.js";import u from"../DevCenterAppContainer/DevCenterAppContainer.js";import{jsx as j}from"react/jsx-runtime";import"@icon-park/react/es/all";import{IconParkProvider as d}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/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/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 I from"../../../hocs/withMUIProvidersHOC.js";import"../../../hocs/withAssetEditorLockHOC.js";import f from"../AppContext.js";import{THEMES as C}from"../../../constants/theme.js";import{LOCAL_STORAGE_APP_THEME_KEY as g}from"../../../CLI/hocs/constants.js";import{setThemeVariables as h}from"../../../utils/themeVariables.js";import{isPDFReportView as b}from"../../../CLI/hocs/utils.js";import{PermissionsContext as v}from"../../../permissions/PermissionsContext.js";import{updateUserUnits as A}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";import"./DevCenterAppZoidComponent.js";var P=["appContextValue","globalMixpanelEventTracker","globalNotificationToastsAPI","onSettingChange","onSettingsChange","permissionsContextValue","timezone","userUnits"];function y(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 O(s){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?y(Object(n),!0).forEach((function(t){o(s,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(s,Object.getOwnPropertyDescriptors(n)):y(Object(n)).forEach((function(o){Object.defineProperty(s,o,Object.getOwnPropertyDescriptor(n,o))}))}return s}var x=I(u),S=e((function(){return{"@global":{body:{backgroundColor:"transparent",overflow:"hidden"}}}}));function D(o){var i,e,u,I=o.CLIAppComponent,y=o.CLIAppSettings,D=o.containerReportClassName;S();var k=m(),L=k.appContextValue,w=k.globalMixpanelEventTracker,F=k.globalNotificationToastsAPI,T=k.onSettingChange,R=k.onSettingsChange,E=k.permissionsContextValue,M=k.timezone,U=k.userUnits,V=s(k,P),N=V.location.pathname.startsWith("/reports/")||b,z=localStorage.getItem(g)||(null===(i=V.currentUser)||void 0===i||null===(e=i.settings)||void 0===e||null===(u=e.uiSettings)||void 0===u?void 0:u.theme)||C.DARK,W=!N&&z!==C.LIGHT;t((function(){h(W)}),[W]),t((function(){window[Symbol.for("notificationToasts")]=F,window[Symbol.for("logToMixpanel")]=w}),[F,w]);var G=n(!0);return(G.current||N)&&(G.current=!1,A({userUnits:U})),t((function(){return M&&c.tz.setDefault(M),function(){return c.tz.setDefault(null)}}),[M]),j(v.Provider,{value:E,children:j(f.Provider,{value:L,children:j(a,{value:!0,children:j(d,{children:j("div",{id:p,className:r(N&&D),children:j(x,O(O({},V),{},{theme:W?C.DARK:C.LIGHT,onSettingsChange:function(o){return R(l(o))},onSettingChange:function(o,s){return T(o,l(s))},CLIAppComponent:I,CLIAppSettings:y}))})})})})})}D.propTypes={CLIAppComponent:i.func,CLIAppSettings:i.func,containerReportClassName:i.string},D.defaultProps={CLIAppComponent:null,CLIAppSettings:null,containerReportClassName:null};export{D 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';\n\nimport { useXProps } from './effects/useXProps';\nimport { ISOLATED_PAGE_APP_CONTAINER_ID } from './constants';\nimport { replaceUndefinedValuesWithNull } from './utils/replaceUndefinedValuesWithNull';\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 '~/config/initGlobalDependencies';\nimport '~/styles/globalStyles';\n\nimport './DevCenterAppZoidComponent';\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\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 return (\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 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 );\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$currentUser","_xProps$currentUser$s","_xProps$currentUser$s2","CLIAppComponent","CLIAppSettings","containerReportClassName","_useXProps","useXProps","appContextValue","globalMixpanelEventTracker","globalNotificationToastsAPI","onSettingChange","onSettingsChange","permissionsContextValue","timezone","userUnits","xProps","_objectWithoutProperties","_excluded","isReportsPage","location","pathname","startsWith","isPDFReportView","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","_jsx","PermissionsContext","Provider","value","children","AppContext","IsInsideIsolatedDcAppProvider","IconParkProvider","id","ISOLATED_PAGE_APP_CONTAINER_ID","className","classNames","_objectSpread","nextSettings","replaceUndefinedValuesWithNull","key","propTypes","PropTypes","func","string","defaultProps"],"mappings":"iiJA0BA,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,EAHDC,IAAAA,gBACAC,IAAAA,eACAC,IAAAA,yBAEAZ,IAEA,IAAAa,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,EAGpEC,EACJC,aAAaC,QAAQC,aACrBX,EAAAA,EAAOY,0BAAP,UAAA5B,EAAoB6B,gBAApB,IAAA5B,GAAwC,QAAxCC,EAAAD,EAA8B6B,kBAAU,IAAA5B,SAAxCA,EAA0C6B,QAC1CC,EAAOC,KACHC,GAAef,GAAiBK,IAAkBQ,EAAOG,MAE/DC,GAAU,WACRC,EAAkBH,EACpB,GAAG,CAACA,IAEJE,GAAU,WACRE,OAAOC,OAAOC,IAAI,uBAAyB9B,EAC3C4B,OAAOC,OAAOC,IAAI,kBAAoB/B,CACxC,GAAG,CAACC,EAA6BD,IAEjC,IAAMgC,EAAmBC,GAAO,GAWhC,OAVID,EAAiBE,SAAWxB,KAC9BsB,EAAiBE,SAAU,EAC3BC,EAAgB,CAAE7B,UAAAA,KAGpBqB,GAAU,WAER,OADItB,GAAU+B,EAAOC,GAAGC,WAAWjC,GAC5B,WAAA,OAAM+B,EAAOC,GAAGC,WAAW,KAAK,CACzC,GAAG,CAACjC,IAGFkC,EAACC,EAAmBC,SAAQ,CAACC,MAAOtC,EAAwBuC,SAC1DJ,EAACK,EAAWH,SAAQ,CAACC,MAAO3C,EAAgB4C,SAC1CJ,EAACM,EAA6B,CAACH,OAAK,EAAAC,SAClCJ,EAACO,EAAgB,CAAAH,SACfJ,EAAA,MAAA,CACEQ,GAAIC,EACJC,UAAWC,EAAWxC,GAAiBd,GAA0B+C,SAEjEJ,EAAC1D,EAA4BsE,EAAAA,EAAA,GACvB5C,GAAM,GAAA,CACVe,MAAOG,EAAcF,EAAOC,KAAOD,EAAOG,MAM1CvB,iBAAkB,SAAAiD,GAAY,OAC5BjD,EAAiBkD,EAA+BD,GACjD,EACDlD,gBAAiB,SAACoD,EAAKZ,GAAK,OAC1BxC,EAAgBoD,EAAKD,EAA+BX,GACrD,EACDhD,gBAAiBA,EACjBC,eAAgBA,cAQhC,CAEAN,EAAyBkE,UAAY,CACnC7D,gBAAiB8D,EAAUC,KAC3B9D,eAAgB6D,EAAUC,KAC1B7D,yBAA0B4D,EAAUE,QAGtCrE,EAAyBsE,aAAe,CACtCjE,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';\n\nimport { useXProps } from './effects/useXProps';\nimport { ISOLATED_PAGE_APP_CONTAINER_ID } from './constants';\nimport { replaceUndefinedValuesWithNull } from './utils/replaceUndefinedValuesWithNull';\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\nimport './DevCenterAppZoidComponent';\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\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 return (\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 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 );\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$currentUser","_xProps$currentUser$s","_xProps$currentUser$s2","CLIAppComponent","CLIAppSettings","containerReportClassName","_useXProps","useXProps","appContextValue","globalMixpanelEventTracker","globalNotificationToastsAPI","onSettingChange","onSettingsChange","permissionsContextValue","timezone","userUnits","xProps","_objectWithoutProperties","_excluded","isReportsPage","location","pathname","startsWith","isPDFReportView","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","_jsx","PermissionsContext","Provider","value","children","AppContext","IsInsideIsolatedDcAppProvider","IconParkProvider","id","ISOLATED_PAGE_APP_CONTAINER_ID","className","classNames","_objectSpread","nextSettings","replaceUndefinedValuesWithNull","key","propTypes","PropTypes","func","string","defaultProps"],"mappings":"++IAyBA,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,EAHDC,IAAAA,gBACAC,IAAAA,eACAC,IAAAA,yBAEAZ,IAEA,IAAAa,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,EAGpEC,EACJC,aAAaC,QAAQC,aACrBX,EAAAA,EAAOY,0BAAP,UAAA5B,EAAoB6B,gBAApB,IAAA5B,GAAwC,QAAxCC,EAAAD,EAA8B6B,kBAAU,IAAA5B,SAAxCA,EAA0C6B,QAC1CC,EAAOC,KACHC,GAAef,GAAiBK,IAAkBQ,EAAOG,MAE/DC,GAAU,WACRC,EAAkBH,EACpB,GAAG,CAACA,IAEJE,GAAU,WACRE,OAAOC,OAAOC,IAAI,uBAAyB9B,EAC3C4B,OAAOC,OAAOC,IAAI,kBAAoB/B,CACxC,GAAG,CAACC,EAA6BD,IAEjC,IAAMgC,EAAmBC,GAAO,GAWhC,OAVID,EAAiBE,SAAWxB,KAC9BsB,EAAiBE,SAAU,EAC3BC,EAAgB,CAAE7B,UAAAA,KAGpBqB,GAAU,WAER,OADItB,GAAU+B,EAAOC,GAAGC,WAAWjC,GAC5B,WAAA,OAAM+B,EAAOC,GAAGC,WAAW,KAAK,CACzC,GAAG,CAACjC,IAGFkC,EAACC,EAAmBC,SAAQ,CAACC,MAAOtC,EAAwBuC,SAC1DJ,EAACK,EAAWH,SAAQ,CAACC,MAAO3C,EAAgB4C,SAC1CJ,EAACM,EAA6B,CAACH,OAAK,EAAAC,SAClCJ,EAACO,EAAgB,CAAAH,SACfJ,EAAA,MAAA,CACEQ,GAAIC,EACJC,UAAWC,EAAWxC,GAAiBd,GAA0B+C,SAEjEJ,EAAC1D,EAA4BsE,EAAAA,EAAA,GACvB5C,GAAM,GAAA,CACVe,MAAOG,EAAcF,EAAOC,KAAOD,EAAOG,MAM1CvB,iBAAkB,SAAAiD,GAAY,OAC5BjD,EAAiBkD,EAA+BD,GACjD,EACDlD,gBAAiB,SAACoD,EAAKZ,GAAK,OAC1BxC,EAAgBoD,EAAKD,EAA+BX,GACrD,EACDhD,gBAAiBA,EACjBC,eAAgBA,cAQhC,CAEAN,EAAyBkE,UAAY,CACnC7D,gBAAiB8D,EAAUC,KAC3B9D,eAAgB6D,EAAUC,KAC1B7D,yBAA0B4D,EAAUE,QAGtCrE,EAAyBsE,aAAe,CACtCjE,gBAAiB,KACjBC,eAAgB,KAChBC,yBAA0B"}
@@ -1,2 +1,2 @@
1
- import r from"@babel/runtime/helpers/defineProperty";import e from"@babel/runtime/helpers/slicedToArray";import{memo as t,useRef as o,useMemo as n,useEffect as i,createElement as a}from"react";import c from"react-dom";import l from"prop-types";import u from"mapbox.js";import{get as s,sortBy as m}from"lodash";import{MuiThemeProvider as p}from"@material-ui/core/styles";import{usePrevious as f}from"../../effects/index.js";import d from"./Map.css.js";import{mapbox as h}from"../../../../utils/index.js";import{darkTheme as b}from"../../../../config/theme/index.js";import"@babel/runtime/helpers/typeof";import"highcharts";import"highcharts/highcharts-more";import"highcharts-multicolor-series";import"highcharts/modules/solid-gauge";import"highcharts/modules/heatmap";import"highcharts/modules/boost";import"highcharts/modules/exporting";import"highcharts/modules/xrange";import"highcharts/modules/dumbbell";import"highcharts/modules/pattern-fill";import"dompurify";import"../../../../config/mapbox/index.js";import{jsx as g,jsxs as F}from"react/jsx-runtime";function v(r,e){var t=Object.keys(r);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(r);e&&(o=o.filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),t.push.apply(t,o)}return t}function y(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?v(Object(o),!0).forEach((function(t){r(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):v(Object(o)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(o,r))}))}return e}var j=h.isValidCoordinates,O=["#FF00FF","#F5BD80","#FF0000","#0080FF","#FF8000","#58ACFA","#FA58F4","#40FF00","#4B8A08","#40FF00","#D8F781"],k=[29.749907,-95.358421];function x(t){var l=t.subjectWell,h=t.wells,v=t.offsetWells,x=t.radius,N=t.subjectWellMarkerSize,P=t.wellMarkerSize,w=t.popUpFormatter,B=t.coordsDataPath,S=o(null),W=o(null),C=o(null),D=f(h),T=n((function(){return h.filter((function(r){return!l||l.id!==r.id}))}),[l,h]),M=n((function(){return l&&s(l,B)}),[l,B]),z=n((function(){var e=[],t=!1;T.forEach((function(r){"Null"===r.formation?t=!0:l&&l.formation===r.formation||e.includes(r.formation)||e.push(r.formation)}));var o=l?[l.formation].concat(m(e)):m(e);t&&!o.includes("Null")&&o.push("Null");var n=o.reduce((function(e,t,o){return y(y({},e),{},r({},t,O[o%O.length]))}),{});return[o,n]}),[l,T]),L=e(z,2),E=L[0],I=L[1];return i((function(){S.current=u.mapbox.map(S.current,null,{attributionControl:!1,scrollWheelZoom:!1,zoomControl:!1}).setView(k,1),u.control.zoom({position:"bottomright"}).addTo(S.current),u.mapbox.styleLayer("mapbox://styles/mapbox/dark-v9").addTo(S.current)}),[]),i((function(){S.current&&(W.current&&S.current.removeLayer(W.current),M?(W.current=u.circle(M,1609.34*x,{stroke:!1,fill:!0,fillOpacity:.2,fillColor:"#03BCD4",className:"circle_500"}),W.current.addTo(S.current)):W.current=null)}),[x,M]),i((function(){if(S.current){S.current.closePopup(),C.current&&C.current.removeFrom(S.current);var r=v.map((function(r){return r.id})),e=[];h.forEach((function(t){var o=s(t,B);if(o&&j(o)){var n=l&&l.id===t.id,i=r.includes(t.id),m=n?N:P,f=n||i?"#00FFFF":I[t.formation],d=n||i?1:.3,h=u.circleMarker(o,{radius:m,stroke:!1,fill:!0,fillOpacity:d,fillColor:f,className:"circle_500"});h.addEventListener("mouseover",(function(){if(w){var r=document.createElement("div"),e=a(w,{well:t,color:I[t.formation]});c.render(g(p,{theme:b,children:e}),r),u.popup().setLatLng(o).setContent(r).openOn(S.current)}})),e.push(h)}})),e.length&&(C.current=u.featureGroup(e),C.current.addTo(S.current)),setTimeout((function(){W.current&&W.current.bringToBack(),S.current&&W.current&&h!==D&&S.current.fitBounds(W.current.getBounds(),{padding:[5,5]})}),500)}}),[l,h,v,I]),i((function(){setTimeout((function(){W.current&&W.current.bringToBack(),l?S.current&&W.current&&S.current.fitBounds(W.current.getBounds(),{padding:[5,5]}):S.current&&C.current&&S.current.fitBounds(C.current.getBounds())}),500)}),[x,l]),F("div",{className:d.map,children:[g("div",{className:d.mapMain,ref:S}),F("div",{className:d.mapFooter,children:[v&&F("div",{className:d.mapFooterItem,children:[g("div",{className:d.mapFooterItemSquare,style:{backgroundColor:"#00FFFF"}}),g("div",{className:d.mapFooterItemLabel,children:"Selected Offset Wells"})]}),E.map((function(r){return F("div",{className:d.mapFooterItem,children:[g("div",{className:d.mapFooterItemSquare,style:{backgroundColor:I[r]}}),g("div",{className:d.mapFooterItemLabel,children:r})]},r)}))]})]})}x.propTypes={subjectWell:l.shape({id:l.number,formation:l.string}),wells:l.arrayOf(l.shape({})).isRequired,offsetWells:l.arrayOf(l.shape({})),radius:l.number.isRequired,subjectWellMarkerSize:l.number,wellMarkerSize:l.number,popUpFormatter:l.func,coordsDataPath:l.string},x.defaultProps={subjectWell:null,subjectWellMarkerSize:10,wellMarkerSize:5,popUpFormatter:null,coordsDataPath:"settings.top_hole.coordinates",offsetWells:null};var N=t(x);export{N as default};
1
+ import r from"@babel/runtime/helpers/defineProperty";import e from"@babel/runtime/helpers/slicedToArray";import{memo as t,useRef as o,useMemo as n,useEffect as i,createElement as a}from"react";import c from"react-dom";import l from"prop-types";import s from"mapbox.js";import{get as u,sortBy as m}from"lodash";import{MuiThemeProvider as p}from"@material-ui/core/styles";import{usePrevious as f}from"../../effects/index.js";import d from"./Map.css.js";import{mapbox as h}from"../../../../utils/index.js";import{darkTheme as b}from"../../../../config/theme/index.js";import"@babel/runtime/helpers/typeof";import"highcharts";import"highcharts/highcharts-more";import"highcharts-multicolor-series";import"highcharts/modules/solid-gauge";import"highcharts/modules/heatmap";import"highcharts/modules/boost";import"highcharts/modules/exporting";import"highcharts/modules/xrange";import"highcharts/modules/dumbbell";import"highcharts/modules/pattern-fill";import"dompurify";import"../../../../config/mapbox/index.js";import"../../../../clients/subscriptions.js";import"../../../../config/extendNative.js";import{jsx as g,jsxs as F}from"react/jsx-runtime";function v(r,e){var t=Object.keys(r);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(r);e&&(o=o.filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),t.push.apply(t,o)}return t}function y(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?v(Object(o),!0).forEach((function(t){r(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):v(Object(o)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(o,r))}))}return e}var j=h.isValidCoordinates,O=["#FF00FF","#F5BD80","#FF0000","#0080FF","#FF8000","#58ACFA","#FA58F4","#40FF00","#4B8A08","#40FF00","#D8F781"],k=[29.749907,-95.358421];function x(t){var l=t.subjectWell,h=t.wells,v=t.offsetWells,x=t.radius,N=t.subjectWellMarkerSize,P=t.wellMarkerSize,w=t.popUpFormatter,B=t.coordsDataPath,S=o(null),W=o(null),C=o(null),D=f(h),T=n((function(){return h.filter((function(r){return!l||l.id!==r.id}))}),[l,h]),M=n((function(){return l&&u(l,B)}),[l,B]),z=n((function(){var e=[],t=!1;T.forEach((function(r){"Null"===r.formation?t=!0:l&&l.formation===r.formation||e.includes(r.formation)||e.push(r.formation)}));var o=l?[l.formation].concat(m(e)):m(e);t&&!o.includes("Null")&&o.push("Null");var n=o.reduce((function(e,t,o){return y(y({},e),{},r({},t,O[o%O.length]))}),{});return[o,n]}),[l,T]),L=e(z,2),E=L[0],I=L[1];return i((function(){S.current=s.mapbox.map(S.current,null,{attributionControl:!1,scrollWheelZoom:!1,zoomControl:!1}).setView(k,1),s.control.zoom({position:"bottomright"}).addTo(S.current),s.mapbox.styleLayer("mapbox://styles/mapbox/dark-v9").addTo(S.current)}),[]),i((function(){S.current&&(W.current&&S.current.removeLayer(W.current),M?(W.current=s.circle(M,1609.34*x,{stroke:!1,fill:!0,fillOpacity:.2,fillColor:"#03BCD4",className:"circle_500"}),W.current.addTo(S.current)):W.current=null)}),[x,M]),i((function(){if(S.current){S.current.closePopup(),C.current&&C.current.removeFrom(S.current);var r=v.map((function(r){return r.id})),e=[];h.forEach((function(t){var o=u(t,B);if(o&&j(o)){var n=l&&l.id===t.id,i=r.includes(t.id),m=n?N:P,f=n||i?"#00FFFF":I[t.formation],d=n||i?1:.3,h=s.circleMarker(o,{radius:m,stroke:!1,fill:!0,fillOpacity:d,fillColor:f,className:"circle_500"});h.addEventListener("mouseover",(function(){if(w){var r=document.createElement("div"),e=a(w,{well:t,color:I[t.formation]});c.render(g(p,{theme:b,children:e}),r),s.popup().setLatLng(o).setContent(r).openOn(S.current)}})),e.push(h)}})),e.length&&(C.current=s.featureGroup(e),C.current.addTo(S.current)),setTimeout((function(){W.current&&W.current.bringToBack(),S.current&&W.current&&h!==D&&S.current.fitBounds(W.current.getBounds(),{padding:[5,5]})}),500)}}),[l,h,v,I]),i((function(){setTimeout((function(){W.current&&W.current.bringToBack(),l?S.current&&W.current&&S.current.fitBounds(W.current.getBounds(),{padding:[5,5]}):S.current&&C.current&&S.current.fitBounds(C.current.getBounds())}),500)}),[x,l]),F("div",{className:d.map,children:[g("div",{className:d.mapMain,ref:S}),F("div",{className:d.mapFooter,children:[v&&F("div",{className:d.mapFooterItem,children:[g("div",{className:d.mapFooterItemSquare,style:{backgroundColor:"#00FFFF"}}),g("div",{className:d.mapFooterItemLabel,children:"Selected Offset Wells"})]}),E.map((function(r){return F("div",{className:d.mapFooterItem,children:[g("div",{className:d.mapFooterItemSquare,style:{backgroundColor:I[r]}}),g("div",{className:d.mapFooterItemLabel,children:r})]},r)}))]})]})}x.propTypes={subjectWell:l.shape({id:l.number,formation:l.string}),wells:l.arrayOf(l.shape({})).isRequired,offsetWells:l.arrayOf(l.shape({})),radius:l.number.isRequired,subjectWellMarkerSize:l.number,wellMarkerSize:l.number,popUpFormatter:l.func,coordsDataPath:l.string},x.defaultProps={subjectWell:null,subjectWellMarkerSize:10,wellMarkerSize:5,popUpFormatter:null,coordsDataPath:"settings.top_hole.coordinates",offsetWells:null};var N=t(x);export{N as default};
2
2
  //# sourceMappingURL=Map.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Map.js","sources":["../../../../../src/components/OffsetWellPickerV2/components/Map/Map.js"],"sourcesContent":["import { createElement, memo, useRef, useEffect, useMemo } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport L from 'mapbox.js';\nimport { get, sortBy } from 'lodash';\nimport { MuiThemeProvider } from '@material-ui/core/styles';\n\nimport { usePrevious } from '../../effects';\n\nimport styles from './Map.css';\n\nimport { mapbox } from '~/utils';\nimport { theme } from '~/config';\n\nconst { isValidCoordinates } = mapbox;\n\nconst RADIUS_CIRCLE_COLOR = '#03BCD4';\nconst METERS_IN_MILE = 1609.34;\nconst DEFAULT_SUBJECT_WELL_MARKER_SIZE = 10;\nconst DEFAULT_WELL_MARKER_SIZE = 5;\nconst OFFSET_WELL_COLOR = '#00FFFF';\nconst COLORS = [\n '#FF00FF',\n '#F5BD80',\n '#FF0000',\n '#0080FF',\n '#FF8000',\n '#58ACFA',\n '#FA58F4',\n '#40FF00',\n '#4B8A08',\n '#40FF00',\n '#D8F781',\n];\n\nconst DEFAULT_COORDS = [29.749907, -95.358421]; // TX coordinates\n\n// eslint-disable-next-line no-unused-vars\nfunction WellsMap({\n subjectWell,\n wells,\n offsetWells,\n radius,\n subjectWellMarkerSize,\n wellMarkerSize,\n popUpFormatter,\n coordsDataPath,\n}) {\n const mapContainerRef = useRef(null);\n const radiusCircleRef = useRef(null);\n const markersGroupRef = useRef(null);\n\n const prevWells = usePrevious(wells);\n\n const restWells = useMemo(() => {\n return wells.filter(well => !subjectWell || subjectWell.id !== well.id);\n }, [subjectWell, wells]);\n\n const subjectWellCoords = useMemo(() => {\n return subjectWell && get(subjectWell, coordsDataPath);\n }, [subjectWell, coordsDataPath]);\n\n // NOTE: Get well marker colors according to its target formation\n const [formations, colorDict] = useMemo(() => {\n // NOTE: Determine well marker colors\n const restFormations = [];\n let hasNullFormation = false;\n\n restWells.forEach(well => {\n if (well.formation === 'Null') {\n hasNullFormation = true;\n } else if (\n (!subjectWell || subjectWell.formation !== well.formation) &&\n !restFormations.includes(well.formation)\n ) {\n restFormations.push(well.formation);\n }\n });\n\n const sortedFormations = subjectWell\n ? [subjectWell.formation].concat(sortBy(restFormations))\n : sortBy(restFormations);\n\n if (hasNullFormation && !sortedFormations.includes('Null')) {\n sortedFormations.push('Null');\n }\n\n const colors = sortedFormations.reduce(\n (result, item, idx) => ({\n ...result,\n [item]: COLORS[idx % COLORS.length],\n }),\n {}\n );\n\n return [sortedFormations, colors];\n }, [subjectWell, restWells]);\n\n // NOTE: Initialize map\n useEffect(() => {\n mapContainerRef.current = L.mapbox\n .map(mapContainerRef.current, null, {\n attributionControl: false,\n scrollWheelZoom: false,\n zoomControl: false,\n })\n .setView(DEFAULT_COORDS, 1);\n\n L.control\n .zoom({\n position: 'bottomright',\n })\n .addTo(mapContainerRef.current);\n L.mapbox.styleLayer('mapbox://styles/mapbox/dark-v9').addTo(mapContainerRef.current);\n }, []);\n\n // NOTE: Radius circle\n useEffect(() => {\n if (!mapContainerRef.current) {\n return;\n }\n\n // NOTE: Clean up\n if (radiusCircleRef.current) {\n mapContainerRef.current.removeLayer(radiusCircleRef.current);\n }\n\n if (!subjectWellCoords) {\n radiusCircleRef.current = null;\n return;\n }\n\n radiusCircleRef.current = L.circle(subjectWellCoords, radius * METERS_IN_MILE, {\n stroke: false,\n fill: true,\n fillOpacity: 0.2,\n fillColor: RADIUS_CIRCLE_COLOR,\n className: 'circle_500',\n });\n\n radiusCircleRef.current.addTo(mapContainerRef.current);\n }, [radius, subjectWellCoords]);\n\n // NOTE: Well markers\n useEffect(() => {\n if (!mapContainerRef.current) {\n return;\n }\n\n mapContainerRef.current.closePopup();\n\n // NOTE: Clean up\n if (markersGroupRef.current) {\n markersGroupRef.current.removeFrom(mapContainerRef.current);\n }\n\n const offsetWellIds = offsetWells.map(well => well.id);\n\n const markers = [];\n wells.forEach(well => {\n const coords = get(well, coordsDataPath);\n\n if (coords && isValidCoordinates(coords)) {\n const isWellSubject = subjectWell && subjectWell.id === well.id;\n const isWellOffset = offsetWellIds.includes(well.id);\n const r = isWellSubject ? subjectWellMarkerSize : wellMarkerSize;\n const color = isWellSubject || isWellOffset ? OFFSET_WELL_COLOR : colorDict[well.formation];\n const opacity = isWellSubject || isWellOffset ? 1 : 0.3;\n\n const newMarker = L.circleMarker(coords, {\n radius: r,\n stroke: false,\n fill: true,\n fillOpacity: opacity,\n fillColor: color,\n className: 'circle_500',\n });\n\n newMarker.addEventListener('mouseover', () => {\n if (popUpFormatter) {\n // Container to put React generated content in.\n const popUpContainer = document.createElement('div');\n const popUpContent = createElement(popUpFormatter, {\n well,\n color: colorDict[well.formation],\n });\n // NOTE: Custom popup may have buttons\n ReactDOM.render(\n <MuiThemeProvider theme={theme.darkTheme}>{popUpContent}</MuiThemeProvider>,\n popUpContainer\n );\n\n L.popup().setLatLng(coords).setContent(popUpContainer).openOn(mapContainerRef.current);\n }\n });\n\n markers.push(newMarker);\n }\n });\n\n if (markers.length) {\n markersGroupRef.current = L.featureGroup(markers);\n markersGroupRef.current.addTo(mapContainerRef.current);\n }\n\n setTimeout(() => {\n if (radiusCircleRef.current) {\n radiusCircleRef.current.bringToBack();\n }\n\n if (mapContainerRef.current && radiusCircleRef.current && wells !== prevWells) {\n mapContainerRef.current.fitBounds(radiusCircleRef.current.getBounds(), { padding: [5, 5] });\n }\n }, 500);\n }, [subjectWell, wells, offsetWells, colorDict]);\n\n useEffect(() => {\n setTimeout(() => {\n if (radiusCircleRef.current) {\n radiusCircleRef.current.bringToBack();\n }\n if (subjectWell) {\n if (mapContainerRef.current && radiusCircleRef.current) {\n mapContainerRef.current.fitBounds(radiusCircleRef.current.getBounds(), {\n padding: [5, 5],\n });\n }\n } else if (mapContainerRef.current && markersGroupRef.current) {\n mapContainerRef.current.fitBounds(markersGroupRef.current.getBounds());\n }\n }, 500);\n }, [radius, subjectWell]);\n\n return (\n <div className={styles.map}>\n <div className={styles.mapMain} ref={mapContainerRef} />\n\n <div className={styles.mapFooter}>\n {offsetWells && (\n <div className={styles.mapFooterItem}>\n <div\n className={styles.mapFooterItemSquare}\n style={{ backgroundColor: OFFSET_WELL_COLOR }}\n />\n <div className={styles.mapFooterItemLabel}>Selected Offset Wells</div>\n </div>\n )}\n\n {formations.map(item => (\n <div className={styles.mapFooterItem} key={item}>\n <div\n className={styles.mapFooterItemSquare}\n style={{ backgroundColor: colorDict[item] }}\n />\n <div className={styles.mapFooterItemLabel}>{item}</div>\n </div>\n ))}\n </div>\n </div>\n );\n}\n\nWellsMap.propTypes = {\n subjectWell: PropTypes.shape({\n id: PropTypes.number,\n formation: PropTypes.string,\n }),\n wells: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n offsetWells: PropTypes.arrayOf(PropTypes.shape({})),\n radius: PropTypes.number.isRequired,\n subjectWellMarkerSize: PropTypes.number,\n wellMarkerSize: PropTypes.number,\n popUpFormatter: PropTypes.func,\n coordsDataPath: PropTypes.string,\n};\n\nWellsMap.defaultProps = {\n subjectWell: null,\n subjectWellMarkerSize: DEFAULT_SUBJECT_WELL_MARKER_SIZE,\n wellMarkerSize: DEFAULT_WELL_MARKER_SIZE,\n popUpFormatter: null,\n coordsDataPath: 'settings.top_hole.coordinates',\n offsetWells: null,\n};\n\nexport default memo(WellsMap);\n"],"names":["isValidCoordinates","mapbox","COLORS","DEFAULT_COORDS","WellsMap","_ref","subjectWell","wells","offsetWells","radius","subjectWellMarkerSize","wellMarkerSize","popUpFormatter","coordsDataPath","mapContainerRef","useRef","radiusCircleRef","markersGroupRef","prevWells","usePrevious","restWells","useMemo","filter","well","id","subjectWellCoords","get","restFormations","hasNullFormation","forEach","formation","includes","push","sortedFormations","concat","sortBy","colors","reduce","result","item","idx","length","_useMemo2","_slicedToArray","_useMemo","formations","colorDict","useEffect","current","L","map","attributionControl","scrollWheelZoom","zoomControl","setView","control","zoom","position","addTo","styleLayer","removeLayer","circle","stroke","fill","fillOpacity","fillColor","className","closePopup","removeFrom","offsetWellIds","markers","coords","isWellSubject","isWellOffset","r","color","opacity","newMarker","circleMarker","addEventListener","popUpContainer","document","createElement","popUpContent","ReactDOM","render","_jsx","MuiThemeProvider","theme","children","popup","setLatLng","setContent","openOn","featureGroup","setTimeout","bringToBack","fitBounds","getBounds","padding","_jsxs","styles","mapMain","ref","mapFooter","mapFooterItem","mapFooterItemSquare","style","backgroundColor","mapFooterItemLabel","propTypes","PropTypes","shape","number","string","arrayOf","isRequired","func","defaultProps","memo"],"mappings":"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"}
1
+ {"version":3,"file":"Map.js","sources":["../../../../../src/components/OffsetWellPickerV2/components/Map/Map.js"],"sourcesContent":["import { createElement, memo, useRef, useEffect, useMemo } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport L from 'mapbox.js';\nimport { get, sortBy } from 'lodash';\nimport { MuiThemeProvider } from '@material-ui/core/styles';\n\nimport { usePrevious } from '../../effects';\n\nimport styles from './Map.css';\n\nimport { mapbox } from '~/utils';\nimport { theme } from '~/config';\n\nconst { isValidCoordinates } = mapbox;\n\nconst RADIUS_CIRCLE_COLOR = '#03BCD4';\nconst METERS_IN_MILE = 1609.34;\nconst DEFAULT_SUBJECT_WELL_MARKER_SIZE = 10;\nconst DEFAULT_WELL_MARKER_SIZE = 5;\nconst OFFSET_WELL_COLOR = '#00FFFF';\nconst COLORS = [\n '#FF00FF',\n '#F5BD80',\n '#FF0000',\n '#0080FF',\n '#FF8000',\n '#58ACFA',\n '#FA58F4',\n '#40FF00',\n '#4B8A08',\n '#40FF00',\n '#D8F781',\n];\n\nconst DEFAULT_COORDS = [29.749907, -95.358421]; // TX coordinates\n\n// eslint-disable-next-line no-unused-vars\nfunction WellsMap({\n subjectWell,\n wells,\n offsetWells,\n radius,\n subjectWellMarkerSize,\n wellMarkerSize,\n popUpFormatter,\n coordsDataPath,\n}) {\n const mapContainerRef = useRef(null);\n const radiusCircleRef = useRef(null);\n const markersGroupRef = useRef(null);\n\n const prevWells = usePrevious(wells);\n\n const restWells = useMemo(() => {\n return wells.filter(well => !subjectWell || subjectWell.id !== well.id);\n }, [subjectWell, wells]);\n\n const subjectWellCoords = useMemo(() => {\n return subjectWell && get(subjectWell, coordsDataPath);\n }, [subjectWell, coordsDataPath]);\n\n // NOTE: Get well marker colors according to its target formation\n const [formations, colorDict] = useMemo(() => {\n // NOTE: Determine well marker colors\n const restFormations = [];\n let hasNullFormation = false;\n\n restWells.forEach(well => {\n if (well.formation === 'Null') {\n hasNullFormation = true;\n } else if (\n (!subjectWell || subjectWell.formation !== well.formation) &&\n !restFormations.includes(well.formation)\n ) {\n restFormations.push(well.formation);\n }\n });\n\n const sortedFormations = subjectWell\n ? [subjectWell.formation].concat(sortBy(restFormations))\n : sortBy(restFormations);\n\n if (hasNullFormation && !sortedFormations.includes('Null')) {\n sortedFormations.push('Null');\n }\n\n const colors = sortedFormations.reduce(\n (result, item, idx) => ({\n ...result,\n [item]: COLORS[idx % COLORS.length],\n }),\n {}\n );\n\n return [sortedFormations, colors];\n }, [subjectWell, restWells]);\n\n // NOTE: Initialize map\n useEffect(() => {\n mapContainerRef.current = L.mapbox\n .map(mapContainerRef.current, null, {\n attributionControl: false,\n scrollWheelZoom: false,\n zoomControl: false,\n })\n .setView(DEFAULT_COORDS, 1);\n\n L.control\n .zoom({\n position: 'bottomright',\n })\n .addTo(mapContainerRef.current);\n L.mapbox.styleLayer('mapbox://styles/mapbox/dark-v9').addTo(mapContainerRef.current);\n }, []);\n\n // NOTE: Radius circle\n useEffect(() => {\n if (!mapContainerRef.current) {\n return;\n }\n\n // NOTE: Clean up\n if (radiusCircleRef.current) {\n mapContainerRef.current.removeLayer(radiusCircleRef.current);\n }\n\n if (!subjectWellCoords) {\n radiusCircleRef.current = null;\n return;\n }\n\n radiusCircleRef.current = L.circle(subjectWellCoords, radius * METERS_IN_MILE, {\n stroke: false,\n fill: true,\n fillOpacity: 0.2,\n fillColor: RADIUS_CIRCLE_COLOR,\n className: 'circle_500',\n });\n\n radiusCircleRef.current.addTo(mapContainerRef.current);\n }, [radius, subjectWellCoords]);\n\n // NOTE: Well markers\n useEffect(() => {\n if (!mapContainerRef.current) {\n return;\n }\n\n mapContainerRef.current.closePopup();\n\n // NOTE: Clean up\n if (markersGroupRef.current) {\n markersGroupRef.current.removeFrom(mapContainerRef.current);\n }\n\n const offsetWellIds = offsetWells.map(well => well.id);\n\n const markers = [];\n wells.forEach(well => {\n const coords = get(well, coordsDataPath);\n\n if (coords && isValidCoordinates(coords)) {\n const isWellSubject = subjectWell && subjectWell.id === well.id;\n const isWellOffset = offsetWellIds.includes(well.id);\n const r = isWellSubject ? subjectWellMarkerSize : wellMarkerSize;\n const color = isWellSubject || isWellOffset ? OFFSET_WELL_COLOR : colorDict[well.formation];\n const opacity = isWellSubject || isWellOffset ? 1 : 0.3;\n\n const newMarker = L.circleMarker(coords, {\n radius: r,\n stroke: false,\n fill: true,\n fillOpacity: opacity,\n fillColor: color,\n className: 'circle_500',\n });\n\n newMarker.addEventListener('mouseover', () => {\n if (popUpFormatter) {\n // Container to put React generated content in.\n const popUpContainer = document.createElement('div');\n const popUpContent = createElement(popUpFormatter, {\n well,\n color: colorDict[well.formation],\n });\n // NOTE: Custom popup may have buttons\n ReactDOM.render(\n <MuiThemeProvider theme={theme.darkTheme}>{popUpContent}</MuiThemeProvider>,\n popUpContainer\n );\n\n L.popup().setLatLng(coords).setContent(popUpContainer).openOn(mapContainerRef.current);\n }\n });\n\n markers.push(newMarker);\n }\n });\n\n if (markers.length) {\n markersGroupRef.current = L.featureGroup(markers);\n markersGroupRef.current.addTo(mapContainerRef.current);\n }\n\n setTimeout(() => {\n if (radiusCircleRef.current) {\n radiusCircleRef.current.bringToBack();\n }\n\n if (mapContainerRef.current && radiusCircleRef.current && wells !== prevWells) {\n mapContainerRef.current.fitBounds(radiusCircleRef.current.getBounds(), { padding: [5, 5] });\n }\n }, 500);\n }, [subjectWell, wells, offsetWells, colorDict]);\n\n useEffect(() => {\n setTimeout(() => {\n if (radiusCircleRef.current) {\n radiusCircleRef.current.bringToBack();\n }\n if (subjectWell) {\n if (mapContainerRef.current && radiusCircleRef.current) {\n mapContainerRef.current.fitBounds(radiusCircleRef.current.getBounds(), {\n padding: [5, 5],\n });\n }\n } else if (mapContainerRef.current && markersGroupRef.current) {\n mapContainerRef.current.fitBounds(markersGroupRef.current.getBounds());\n }\n }, 500);\n }, [radius, subjectWell]);\n\n return (\n <div className={styles.map}>\n <div className={styles.mapMain} ref={mapContainerRef} />\n\n <div className={styles.mapFooter}>\n {offsetWells && (\n <div className={styles.mapFooterItem}>\n <div\n className={styles.mapFooterItemSquare}\n style={{ backgroundColor: OFFSET_WELL_COLOR }}\n />\n <div className={styles.mapFooterItemLabel}>Selected Offset Wells</div>\n </div>\n )}\n\n {formations.map(item => (\n <div className={styles.mapFooterItem} key={item}>\n <div\n className={styles.mapFooterItemSquare}\n style={{ backgroundColor: colorDict[item] }}\n />\n <div className={styles.mapFooterItemLabel}>{item}</div>\n </div>\n ))}\n </div>\n </div>\n );\n}\n\nWellsMap.propTypes = {\n subjectWell: PropTypes.shape({\n id: PropTypes.number,\n formation: PropTypes.string,\n }),\n wells: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n offsetWells: PropTypes.arrayOf(PropTypes.shape({})),\n radius: PropTypes.number.isRequired,\n subjectWellMarkerSize: PropTypes.number,\n wellMarkerSize: PropTypes.number,\n popUpFormatter: PropTypes.func,\n coordsDataPath: PropTypes.string,\n};\n\nWellsMap.defaultProps = {\n subjectWell: null,\n subjectWellMarkerSize: DEFAULT_SUBJECT_WELL_MARKER_SIZE,\n wellMarkerSize: DEFAULT_WELL_MARKER_SIZE,\n popUpFormatter: null,\n coordsDataPath: 'settings.top_hole.coordinates',\n offsetWells: null,\n};\n\nexport default memo(WellsMap);\n"],"names":["isValidCoordinates","mapbox","COLORS","DEFAULT_COORDS","WellsMap","_ref","subjectWell","wells","offsetWells","radius","subjectWellMarkerSize","wellMarkerSize","popUpFormatter","coordsDataPath","mapContainerRef","useRef","radiusCircleRef","markersGroupRef","prevWells","usePrevious","restWells","useMemo","filter","well","id","subjectWellCoords","get","restFormations","hasNullFormation","forEach","formation","includes","push","sortedFormations","concat","sortBy","colors","reduce","result","item","idx","length","_useMemo2","_slicedToArray","_useMemo","formations","colorDict","useEffect","current","L","map","attributionControl","scrollWheelZoom","zoomControl","setView","control","zoom","position","addTo","styleLayer","removeLayer","circle","stroke","fill","fillOpacity","fillColor","className","closePopup","removeFrom","offsetWellIds","markers","coords","isWellSubject","isWellOffset","r","color","opacity","newMarker","circleMarker","addEventListener","popUpContainer","document","createElement","popUpContent","ReactDOM","render","_jsx","MuiThemeProvider","theme","children","popup","setLatLng","setContent","openOn","featureGroup","setTimeout","bringToBack","fitBounds","getBounds","padding","_jsxs","styles","mapMain","ref","mapFooter","mapFooterItem","mapFooterItemSquare","style","backgroundColor","mapFooterItemLabel","propTypes","PropTypes","shape","number","string","arrayOf","isRequired","func","defaultProps","memo"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import r from"@babel/runtime/helpers/defineProperty";import e from"@babel/runtime/helpers/slicedToArray";import{useState as t,useEffect as i,useRef as o}from"react";import n from"react-dom";import{isEqual as l}from"lodash";import{MuiThemeProvider as u}from"@material-ui/core/styles";import c from"../components/FiltersToggler.js";import{getStartComponent as m,getMiddleComponent as s,getEndComponents as a}from"../utils.js";import{LARGE_SIZE_LAYOUT as d,MEDIUM_SIZE_LAYOUT as h,SMALL_SIZE_LAYOUT as p}from"../constants.js";import{darkTheme as f}from"../../../config/theme/index.js";import"@babel/runtime/helpers/typeof";import"highcharts";import"highcharts/highcharts-more";import"highcharts-multicolor-series";import"highcharts/modules/solid-gauge";import"highcharts/modules/heatmap";import"highcharts/modules/boost";import"highcharts/modules/exporting";import"highcharts/modules/xrange";import"highcharts/modules/dumbbell";import"highcharts/modules/pattern-fill";import"dompurify";import"../../../config/mapbox/index.js";import{jsx as v}from"react/jsx-runtime";function g(r,e){var t=Object.keys(r);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(r);e&&(i=i.filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),t.push.apply(t,i)}return t}function y(e){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?g(Object(i),!0).forEach((function(t){r(e,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(i)):g(Object(i)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(i,r))}))}return e}function b(r,o,n,l){var u=t(null),c=e(u,2),f=c[0],v=c[1];return i((function(){if(l&&o){var e=m(r),t=s(r),i=a(r),u=e&&t&&!i,c=e&&!t&&i,f=e&&t&&i;if(e&&!t&&!i){var g=o[e.key];if(g<=l)return void v(d);if(g<=l/2)return void v(h)}else if(u||c){var y=o[e.key],b=u?o[t.key]:o[i.key];if(y+b<=l)return void v(d);if(n+b<=l)return void v(h)}else if(f){var j=o[e.key],O=o[t.key],k=o[i.key];if(j+O+k<=l)return void v(d);if(n+O+k<=l)return void v(h);if(n+k<=l)return void v(p)}v(p)}}),[o,l]),f}function j(n){var u=o(),c=t(null),m=e(c,2),s=m[0],a=m[1],d=o({}),h=n.filter((function(r){return!!r})),p=v("div",{ref:u,style:{position:"absolute",width:0,height:0,overflow:"hidden"},children:h.map((function(r,e){return v("div",{"data-key":null==r?void 0:r.key,style:{position:"absolute"},children:r},e)}))});return i((function(){var e;if(!l(h,d.current)){var t=Array.from(null===(e=u.current)||void 0===e?void 0:e.childNodes).reduce((function(e,t){var i,o=null==t||null===(i=t.getAttribute)||void 0===i?void 0:i.call(t,"data-key"),n=null==t?void 0:t.getBoundingClientRect().width;return y(y({},e),{},r({},o,n))}),{});Object.values(t).length===h.length&&(l(s,t)||a(t)),d.current=h}})),{componentsWidth:s,hiddenElements:p}}function O(){var r=t(null),o=e(r,2),l=o[0],m=o[1];return i((function(){var r=document.createElement("div");r.style.position="absolute",r.style.visibility="hidden",document.body.appendChild(r),n.render(v(u,{theme:f,children:v(c,{})}),r,(function(){var e=r.getBoundingClientRect();r.remove(),m(e.width)}))}),[]),l}export{O as useAppFilterTogglerWidth,j as useComonentsWidth,b as useFilterLayout};
1
+ import e from"@babel/runtime/helpers/defineProperty";import r from"@babel/runtime/helpers/slicedToArray";import{useState as t,useEffect as i,useRef as o}from"react";import n from"react-dom";import{isEqual as l}from"lodash";import{MuiThemeProvider as s}from"@material-ui/core/styles";import u from"../components/FiltersToggler.js";import{getStartComponent as c,getMiddleComponent as m,getEndComponents as a}from"../utils.js";import{LARGE_SIZE_LAYOUT as d,MEDIUM_SIZE_LAYOUT as p,SMALL_SIZE_LAYOUT as h}from"../constants.js";import{darkTheme as f}from"../../../config/theme/index.js";import"@babel/runtime/helpers/typeof";import"highcharts";import"highcharts/highcharts-more";import"highcharts-multicolor-series";import"highcharts/modules/solid-gauge";import"highcharts/modules/heatmap";import"highcharts/modules/boost";import"highcharts/modules/exporting";import"highcharts/modules/xrange";import"highcharts/modules/dumbbell";import"highcharts/modules/pattern-fill";import"dompurify";import"../../../config/mapbox/index.js";import"../../../clients/subscriptions.js";import"../../../config/extendNative.js";import{jsx as v}from"react/jsx-runtime";function g(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);r&&(i=i.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,i)}return t}function y(r){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?g(Object(i),!0).forEach((function(t){e(r,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(i)):g(Object(i)).forEach((function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(i,e))}))}return r}function b(e,o,n,l){var s=t(null),u=r(s,2),f=u[0],v=u[1];return i((function(){if(l&&o){var r=c(e),t=m(e),i=a(e),s=r&&t&&!i,u=r&&!t&&i,f=r&&t&&i;if(r&&!t&&!i){var g=o[r.key];if(g<=l)return void v(d);if(g<=l/2)return void v(p)}else if(s||u){var y=o[r.key],b=s?o[t.key]:o[i.key];if(y+b<=l)return void v(d);if(n+b<=l)return void v(p)}else if(f){var j=o[r.key],O=o[t.key],k=o[i.key];if(j+O+k<=l)return void v(d);if(n+O+k<=l)return void v(p);if(n+k<=l)return void v(h)}v(h)}}),[o,l]),f}function j(n){var s=o(),u=t(null),c=r(u,2),m=c[0],a=c[1],d=o({}),p=n.filter((function(e){return!!e})),h=v("div",{ref:s,style:{position:"absolute",width:0,height:0,overflow:"hidden"},children:p.map((function(e,r){return v("div",{"data-key":null==e?void 0:e.key,style:{position:"absolute"},children:e},r)}))});return i((function(){var r;if(!l(p,d.current)){var t=Array.from(null===(r=s.current)||void 0===r?void 0:r.childNodes).reduce((function(r,t){var i,o=null==t||null===(i=t.getAttribute)||void 0===i?void 0:i.call(t,"data-key"),n=null==t?void 0:t.getBoundingClientRect().width;return y(y({},r),{},e({},o,n))}),{});Object.values(t).length===p.length&&(l(m,t)||a(t)),d.current=p}})),{componentsWidth:m,hiddenElements:h}}function O(){var e=t(null),o=r(e,2),l=o[0],c=o[1];return i((function(){var e=document.createElement("div");e.style.position="absolute",e.style.visibility="hidden",document.body.appendChild(e),n.render(v(s,{theme:f,children:v(u,{})}),e,(function(){var r=e.getBoundingClientRect();e.remove(),c(r.width)}))}),[]),l}export{O as useAppFilterTogglerWidth,j as useComonentsWidth,b as useFilterLayout};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/PinnableFilters/effects/index.js"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport ReactDOM from 'react-dom';\nimport { isEqual } from 'lodash';\nimport { MuiThemeProvider } from '@material-ui/core/styles';\n\nimport FiltersToggler from '../components/FiltersToggler';\nimport { getEndComponents, getMiddleComponent, getStartComponent } from '../utils';\nimport { LARGE_SIZE_LAYOUT, MEDIUM_SIZE_LAYOUT, SMALL_SIZE_LAYOUT } from '../constants';\n\nimport { theme } from '~/config';\n\n// NOTE: Determine layout according to the width of elements\nexport function useFilterLayout(components, componentsWidth, appFilterTogglerWidth, appWidth) {\n const [layout, setLayout] = useState(null);\n\n useEffect(() => {\n if (!appWidth || !componentsWidth) {\n return;\n }\n\n const filtersComponent = getStartComponent(components);\n const goalComponent = getMiddleComponent(components);\n const switchComponent = getEndComponents(components);\n\n const hasFiltersOnly = filtersComponent && !goalComponent && !switchComponent;\n const hasFiltersAndGoals = filtersComponent && goalComponent && !switchComponent;\n const hasFiltersAndSwitch = filtersComponent && !goalComponent && switchComponent;\n const hasAll = filtersComponent && goalComponent && switchComponent;\n\n if (hasFiltersOnly) {\n const filtersWidth = componentsWidth[filtersComponent.key];\n\n if (filtersWidth <= appWidth) {\n setLayout(LARGE_SIZE_LAYOUT);\n return;\n }\n\n if (filtersWidth <= appWidth / 2) {\n setLayout(MEDIUM_SIZE_LAYOUT);\n return;\n }\n } else if (hasFiltersAndGoals || hasFiltersAndSwitch) {\n const startWidth = componentsWidth[filtersComponent.key];\n const endWidth = hasFiltersAndGoals\n ? componentsWidth[goalComponent.key]\n : componentsWidth[switchComponent.key];\n\n if (startWidth + endWidth <= appWidth) {\n setLayout(LARGE_SIZE_LAYOUT);\n return;\n }\n\n if (appFilterTogglerWidth + endWidth <= appWidth) {\n setLayout(MEDIUM_SIZE_LAYOUT);\n return;\n }\n } else if (hasAll) {\n const startWidth = componentsWidth[filtersComponent.key];\n const middleWidth = componentsWidth[goalComponent.key];\n const endWidth = componentsWidth[switchComponent.key];\n\n if (startWidth + middleWidth + endWidth <= appWidth) {\n setLayout(LARGE_SIZE_LAYOUT);\n return;\n }\n\n if (appFilterTogglerWidth + middleWidth + endWidth <= appWidth) {\n setLayout(MEDIUM_SIZE_LAYOUT);\n return;\n }\n\n if (appFilterTogglerWidth + endWidth <= appWidth) {\n setLayout(SMALL_SIZE_LAYOUT);\n return;\n }\n }\n\n setLayout(SMALL_SIZE_LAYOUT);\n }, [componentsWidth, appWidth]);\n\n return layout;\n}\n\n// NOTE: Calculate the width of child components here\nexport function useComonentsWidth(components) {\n // const widthRef = useRef({});\n const hiddenElementsRef = useRef();\n const [widthDict, setWidthDict] = useState(null);\n const prevComponentsRef = useRef({});\n\n const validComponents = components.filter(component => !!component);\n const hiddenElements = (\n <div\n ref={hiddenElementsRef}\n style={{ position: 'absolute', width: 0, height: 0, overflow: 'hidden' }}\n >\n {validComponents.map((component, index) => {\n return (\n // eslint-disable-next-line react/no-array-index-key\n <div key={index} data-key={component?.key} style={{ position: 'absolute' }}>\n {component}\n </div>\n );\n })}\n </div>\n );\n\n // NOTE: Calcualte width of each components\n useEffect(() => {\n // NOTE: Don't calcuate width again\n if (isEqual(validComponents, prevComponentsRef.current)) {\n return;\n }\n\n const nodesArray = Array.from(hiddenElementsRef.current?.childNodes);\n const sizeMap = nodesArray.reduce((acc, node) => {\n const key = node?.getAttribute?.('data-key');\n const value = node?.getBoundingClientRect().width;\n\n return {\n ...acc,\n [key]: value,\n };\n }, {});\n\n if (Object.values(sizeMap).length === validComponents.length) {\n if (!isEqual(widthDict, sizeMap)) {\n setWidthDict(sizeMap);\n }\n }\n\n prevComponentsRef.current = validComponents;\n });\n\n return { componentsWidth: widthDict, hiddenElements };\n}\n\n// NOTE: Calculate the width of Toggler Component\nexport function useAppFilterTogglerWidth() {\n const [width, setWidth] = useState(null);\n\n useEffect(() => {\n const element = document.createElement('div');\n element.style.position = 'absolute';\n element.style.visibility = 'hidden';\n document.body.appendChild(element);\n\n ReactDOM.render(\n <MuiThemeProvider theme={theme.darkTheme}>\n <FiltersToggler />\n </MuiThemeProvider>,\n element,\n () => {\n const dims = element.getBoundingClientRect();\n element.remove();\n setWidth(dims.width);\n }\n );\n }, []);\n\n return width;\n}\n"],"names":["useFilterLayout","components","componentsWidth","appFilterTogglerWidth","appWidth","useState","_useState2","_slicedToArray","_useState","layout","setLayout","useEffect","filtersComponent","getStartComponent","goalComponent","getMiddleComponent","switchComponent","getEndComponents","hasFiltersAndGoals","hasFiltersAndSwitch","hasAll","filtersWidth","key","LARGE_SIZE_LAYOUT","MEDIUM_SIZE_LAYOUT","startWidth","endWidth","middleWidth","SMALL_SIZE_LAYOUT","useComonentsWidth","hiddenElementsRef","useRef","_useState4","_useState3","widthDict","setWidthDict","prevComponentsRef","validComponents","filter","component","hiddenElements","_jsx","ref","style","position","width","height","overflow","children","map","index","_hiddenElementsRef$cu","isEqual","current","sizeMap","Array","from","childNodes","reduce","acc","node","_node$getAttribute","getAttribute","call","value","getBoundingClientRect","_objectSpread","_defineProperty","Object","values","length","useAppFilterTogglerWidth","_useState6","_useState5","setWidth","element","document","createElement","visibility","body","appendChild","ReactDOM","render","MuiThemeProvider","theme","FiltersToggler","dims","remove"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/PinnableFilters/effects/index.js"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport ReactDOM from 'react-dom';\nimport { isEqual } from 'lodash';\nimport { MuiThemeProvider } from '@material-ui/core/styles';\n\nimport FiltersToggler from '../components/FiltersToggler';\nimport { getEndComponents, getMiddleComponent, getStartComponent } from '../utils';\nimport { LARGE_SIZE_LAYOUT, MEDIUM_SIZE_LAYOUT, SMALL_SIZE_LAYOUT } from '../constants';\n\nimport { theme } from '~/config';\n\n// NOTE: Determine layout according to the width of elements\nexport function useFilterLayout(components, componentsWidth, appFilterTogglerWidth, appWidth) {\n const [layout, setLayout] = useState(null);\n\n useEffect(() => {\n if (!appWidth || !componentsWidth) {\n return;\n }\n\n const filtersComponent = getStartComponent(components);\n const goalComponent = getMiddleComponent(components);\n const switchComponent = getEndComponents(components);\n\n const hasFiltersOnly = filtersComponent && !goalComponent && !switchComponent;\n const hasFiltersAndGoals = filtersComponent && goalComponent && !switchComponent;\n const hasFiltersAndSwitch = filtersComponent && !goalComponent && switchComponent;\n const hasAll = filtersComponent && goalComponent && switchComponent;\n\n if (hasFiltersOnly) {\n const filtersWidth = componentsWidth[filtersComponent.key];\n\n if (filtersWidth <= appWidth) {\n setLayout(LARGE_SIZE_LAYOUT);\n return;\n }\n\n if (filtersWidth <= appWidth / 2) {\n setLayout(MEDIUM_SIZE_LAYOUT);\n return;\n }\n } else if (hasFiltersAndGoals || hasFiltersAndSwitch) {\n const startWidth = componentsWidth[filtersComponent.key];\n const endWidth = hasFiltersAndGoals\n ? componentsWidth[goalComponent.key]\n : componentsWidth[switchComponent.key];\n\n if (startWidth + endWidth <= appWidth) {\n setLayout(LARGE_SIZE_LAYOUT);\n return;\n }\n\n if (appFilterTogglerWidth + endWidth <= appWidth) {\n setLayout(MEDIUM_SIZE_LAYOUT);\n return;\n }\n } else if (hasAll) {\n const startWidth = componentsWidth[filtersComponent.key];\n const middleWidth = componentsWidth[goalComponent.key];\n const endWidth = componentsWidth[switchComponent.key];\n\n if (startWidth + middleWidth + endWidth <= appWidth) {\n setLayout(LARGE_SIZE_LAYOUT);\n return;\n }\n\n if (appFilterTogglerWidth + middleWidth + endWidth <= appWidth) {\n setLayout(MEDIUM_SIZE_LAYOUT);\n return;\n }\n\n if (appFilterTogglerWidth + endWidth <= appWidth) {\n setLayout(SMALL_SIZE_LAYOUT);\n return;\n }\n }\n\n setLayout(SMALL_SIZE_LAYOUT);\n }, [componentsWidth, appWidth]);\n\n return layout;\n}\n\n// NOTE: Calculate the width of child components here\nexport function useComonentsWidth(components) {\n // const widthRef = useRef({});\n const hiddenElementsRef = useRef();\n const [widthDict, setWidthDict] = useState(null);\n const prevComponentsRef = useRef({});\n\n const validComponents = components.filter(component => !!component);\n const hiddenElements = (\n <div\n ref={hiddenElementsRef}\n style={{ position: 'absolute', width: 0, height: 0, overflow: 'hidden' }}\n >\n {validComponents.map((component, index) => {\n return (\n // eslint-disable-next-line react/no-array-index-key\n <div key={index} data-key={component?.key} style={{ position: 'absolute' }}>\n {component}\n </div>\n );\n })}\n </div>\n );\n\n // NOTE: Calcualte width of each components\n useEffect(() => {\n // NOTE: Don't calcuate width again\n if (isEqual(validComponents, prevComponentsRef.current)) {\n return;\n }\n\n const nodesArray = Array.from(hiddenElementsRef.current?.childNodes);\n const sizeMap = nodesArray.reduce((acc, node) => {\n const key = node?.getAttribute?.('data-key');\n const value = node?.getBoundingClientRect().width;\n\n return {\n ...acc,\n [key]: value,\n };\n }, {});\n\n if (Object.values(sizeMap).length === validComponents.length) {\n if (!isEqual(widthDict, sizeMap)) {\n setWidthDict(sizeMap);\n }\n }\n\n prevComponentsRef.current = validComponents;\n });\n\n return { componentsWidth: widthDict, hiddenElements };\n}\n\n// NOTE: Calculate the width of Toggler Component\nexport function useAppFilterTogglerWidth() {\n const [width, setWidth] = useState(null);\n\n useEffect(() => {\n const element = document.createElement('div');\n element.style.position = 'absolute';\n element.style.visibility = 'hidden';\n document.body.appendChild(element);\n\n ReactDOM.render(\n <MuiThemeProvider theme={theme.darkTheme}>\n <FiltersToggler />\n </MuiThemeProvider>,\n element,\n () => {\n const dims = element.getBoundingClientRect();\n element.remove();\n setWidth(dims.width);\n }\n );\n }, []);\n\n return width;\n}\n"],"names":["useFilterLayout","components","componentsWidth","appFilterTogglerWidth","appWidth","useState","_useState2","_slicedToArray","_useState","layout","setLayout","useEffect","filtersComponent","getStartComponent","goalComponent","getMiddleComponent","switchComponent","getEndComponents","hasFiltersAndGoals","hasFiltersAndSwitch","hasAll","filtersWidth","key","LARGE_SIZE_LAYOUT","MEDIUM_SIZE_LAYOUT","startWidth","endWidth","middleWidth","SMALL_SIZE_LAYOUT","useComonentsWidth","hiddenElementsRef","useRef","_useState4","_useState3","widthDict","setWidthDict","prevComponentsRef","validComponents","filter","component","hiddenElements","_jsx","ref","style","position","width","height","overflow","children","map","index","_hiddenElementsRef$cu","isEqual","current","sizeMap","Array","from","childNodes","reduce","acc","node","_node$getAttribute","getAttribute","call","value","getBoundingClientRect","_objectSpread","_defineProperty","Object","values","length","useAppFilterTogglerWidth","_useState6","_useState5","setWidth","element","document","createElement","visibility","body","appendChild","ReactDOM","render","MuiThemeProvider","theme","FiltersToggler","dims","remove"],"mappings":"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"}
package/config/index.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import * as theme from './theme';
2
2
  import { initHighcharts } from './highcharts';
3
3
  import { MAP_BOX_ACCESS_TOKEN } from './mapbox';
4
- export { theme, initHighcharts, MAP_BOX_ACCESS_TOKEN };
4
+ import { initGlobalDependencies } from './initGlobalDependencies';
5
+ export { theme, initHighcharts, MAP_BOX_ACCESS_TOKEN, initGlobalDependencies };
5
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.js"],"names":[],"mappings":"uBAAuB,SAAS;+BACD,cAAc;qCACR,UAAU"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.js"],"names":[],"mappings":"uBAAuB,SAAS;+BACD,cAAc;qCACR,UAAU;uCACR,0BAA0B"}
package/config/index.js CHANGED
@@ -1,2 +1,2 @@
1
- import*as h from"./theme/index.js";export{h as theme};export{initHighcharts}from"./highcharts/highcharts.js";export{MAP_BOX_ACCESS_TOKEN}from"./mapbox/index.js";
1
+ import*as e from"./theme/index.js";export{e as theme};export{initHighcharts}from"./highcharts/highcharts.js";export{MAP_BOX_ACCESS_TOKEN}from"./mapbox/index.js";export{initGlobalDependencies}from"./initGlobalDependencies.js";
2
2
  //# sourceMappingURL=index.js.map
@@ -1,2 +1,2 @@
1
- export {};
1
+ export function initGlobalDependencies(): void;
2
2
  //# sourceMappingURL=initGlobalDependencies.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"initGlobalDependencies.d.ts","sourceRoot":"","sources":["../../src/config/initGlobalDependencies.js"],"names":[],"mappings":""}
1
+ {"version":3,"file":"initGlobalDependencies.d.ts","sourceRoot":"","sources":["../../src/config/initGlobalDependencies.js"],"names":[],"mappings":"AAIA,+CAGC"}
@@ -1,2 +1,2 @@
1
- import{initHighcharts as h}from"./highcharts/highcharts.js";import"./extendNative.js";h();
1
+ import{initHighcharts as t}from"./highcharts/highcharts.js";import{initializeSocketClient as i}from"../clients/subscriptions.js";import"./extendNative.js";function r(){t(),i()}export{r as initGlobalDependencies};
2
2
  //# sourceMappingURL=initGlobalDependencies.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"initGlobalDependencies.js","sources":["../../src/config/initGlobalDependencies.js"],"sourcesContent":["import { initHighcharts } from '~/config/highcharts';\nimport './extendNative.js';\n\ninitHighcharts();\n"],"names":["initHighcharts"],"mappings":"sFAGAA"}
1
+ {"version":3,"file":"initGlobalDependencies.js","sources":["../../src/config/initGlobalDependencies.js"],"sourcesContent":["import { initHighcharts } from '~/config/highcharts';\nimport { initializeSocketClient } from '~/clients/subscriptions';\nimport './extendNative.js';\n\nexport function initGlobalDependencies() {\n initHighcharts();\n initializeSocketClient();\n}\n"],"names":["initGlobalDependencies","initHighcharts","initializeSocketClient"],"mappings":"2JAIO,SAASA,IACdC,IACAC,GACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"useSubscriptions.d.ts","sourceRoot":"","sources":["../../src/effects/useSubscriptions.js"],"names":[],"mappings":";AA0EA;;;;;;;;;;GAUG;AACH,iDATW,MAAS,KAAQ,gCACjB,MAAM;;;IAsGhB"}
1
+ {"version":3,"file":"useSubscriptions.d.ts","sourceRoot":"","sources":["../../src/effects/useSubscriptions.js"],"names":[],"mappings":";AA0EA;;;;;;;;;;GAUG;AACH,iDATW,MAAS,KAAQ,gCACjB,MAAM;;;IAuGhB"}
@@ -1,2 +1,2 @@
1
- import r from"@babel/runtime/helpers/slicedToArray";import t from"@babel/runtime/helpers/asyncToGenerator";import e from"@babel/runtime/helpers/defineProperty";import n from"@babel/runtime/regenerator";import{parse as u}from"querystring";import{useState as a,useRef as i,useMemo as o,useEffect as c}from"react";import s from"uuid/v1";import{castArray as p,differenceBy as f,omit as l,concat as m,merge as b,mapValues as d}from"lodash";import{getSubscriptionId as y}from"../clients/subscriptions.js";import{getAppKeyFromStackTrace as v}from"../clients/utils.js";import{getAppStorage as h,getDataAppStorage as O,getDataAppStorageAggregate as w}from"../clients/jsonApi/index.js";function g(r,t){var e=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))),e.push.apply(e,n)}return e}function j(r){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?g(Object(n),!0).forEach((function(t){e(r,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(n)):g(Object(n)).forEach((function(t){Object.defineProperty(r,t,Object.getOwnPropertyDescriptor(n,t))}))}return r}function I(r,t,e){var n=y(r,t);return j(j({},r),{},{hookId:t,subId:n,appInstanceId:n,app_key:e})}function k(r,t){return x.apply(this,arguments)}function x(){return x=t(n.mark((function r(e,u){var a,i,o;return n.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return a=u.timeQuery,i=u.appKey,o=e.map(function(){var r=t(n.mark((function r(t){var e,u,o,c,s,p,f,l,m;return n.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(e=t.provider,u=t.collection,o=t.assetId,c=t.subscribeOnly,s=t.params,!c){r.next=3;break}return r.abrupt("return",null);case 3:return p=s.query,f=a?"{timestamp#lte#".concat(a.timestamp.$lte):"",l=p&&f?"AND":"",m="".concat(p).concat(l).concat(f),r.prev=7,r.next=10,h(e,u,o,j(j(j({},s),m?{query:m}:{}),{},{appKey:i}));case 10:return r.abrupt("return",r.sent);case 13:return r.prev=13,r.t0=r.catch(7),r.abrupt("return",[]);case 16:case"end":return r.stop()}}),r,null,[[7,13]])})));return function(t){return r.apply(this,arguments)}}()),r.abrupt("return",Promise.all(o));case 3:case"end":return r.stop()}}),r)}))),x.apply(this,arguments)}function P(r,t){return E.apply(this,arguments)}function E(){return E=t(n.mark((function r(e,u){var a,i,o;return n.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return a=u.timeQuery,i=u.appKey,o=e.map(function(){var r=t(n.mark((function r(t){var e,u,o,c,s,p,f,l,m,y,v,h;return n.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(e=t.provider,u=t.collection,o=t.assetId,c=t.subscribeOnly,s=t.params,p=void 0===s?{}:s,!c){r.next=3;break}return r.abrupt("return",null);case 3:if(!p.aggregate){r.next=5;break}return r.abrupt("return",w(e,u,j({},d(p.aggregate,JSON.stringify))));case 5:return f=JSON.stringify(b({asset_id:o},p.query,a)),l=p.limit,m=void 0===l?1:l,y=p.sort,v=void 0===y?'{"timestamp": 1}':y,r.prev=7,h=j(j({},p),{},{limit:m,sort:v,query:f,appKey:i}),r.next=11,O(e,u,h);case 11:return r.abrupt("return",r.sent);case 14:return r.prev=14,r.t0=r.catch(7),r.abrupt("return",[]);case 17:case"end":return r.stop()}}),r,null,[[7,14]])})));return function(t){return r.apply(this,arguments)}}()),r.abrupt("return",Promise.all(o));case 3:case"end":return r.stop()}}),r)}))),E.apply(this,arguments)}function D(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},b=n.timestamp,d=n.isOldApiUsed,y=a({}),h=r(y,2),O=h[0],w=h[1],g=i();g.current||(g.current=s());var x=window[Symbol.for("socket")],E=x.subscribe,D=x.unsubscribe,S=x.socket,q=o((function(){return v()}),[]),A=i([]),K=p(t).map((function(r){return I(r,g.current,q)})),N=K.map((function(r){return r.subId})).join(),Q=o((function(){if(b)return{timestamp:{$lte:b}};var r=u(window.location.search).time;return r?{timestamp:{$lte:new Date(r)/1e3}}:null}),[window.location.search,b]);return c((function(){var r=function(r){r.hookId===g.current&&w((function(t){var n=r.data;return r.subId in t&&!r.subscribeOnly&&(n=m(t[r.subId],r.data)),r.params&&r.params.limit&&(n=n.slice(-r.params.limit)),j(j({},t),{},e({},r.subId,n))}))};return S&&S.on("data",r),function(){return S&&S.off("data",r)}}),[]),c((function(){A.current.forEach(D),A.current=[]}),[Q]),c((function(){var r=A.current,t=f(K,r,"subId"),e=f(r,K,"subId");t.forEach((function(r){Q&&!r.alwaysSubscribe||E(r)})),e.forEach(D),A.current=K,(d?k:P)(t,{timeQuery:Q,appKey:q,isOldApiUsed:d}).then((function(r){return w((function(n){var u=l(n,e.map((function(r){return r.subId})));return t.forEach((function(t,e){null!==r[e]&&(u[t.subId]=r[e])})),u}))}))}),[N,Q]),c((function(){return function(){return A.current.forEach(D)}}),[]),o((function(){return K.map((function(r){var t=r.subId;return{loading:!(t in O),data:O[t]}}))}),[O,N])}export{D as default};
1
+ import r from"@babel/runtime/helpers/slicedToArray";import t from"@babel/runtime/helpers/asyncToGenerator";import e from"@babel/runtime/helpers/defineProperty";import n from"@babel/runtime/regenerator";import{parse as u}from"querystring";import{useState as a,useRef as i,useMemo as o,useEffect as c}from"react";import s from"uuid/v1";import{castArray as p,differenceBy as f,omit as l,concat as m,merge as b,mapValues as d}from"lodash";import{getSubscriptionId as y}from"../clients/subscriptions.js";import{getAppKeyFromStackTrace as v}from"../clients/utils.js";import{getAppStorage as h,getDataAppStorage as O,getDataAppStorageAggregate as w}from"../clients/jsonApi/index.js";function g(r,t){var e=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(r,t).enumerable}))),e.push.apply(e,n)}return e}function j(r){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?g(Object(n),!0).forEach((function(t){e(r,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(n)):g(Object(n)).forEach((function(t){Object.defineProperty(r,t,Object.getOwnPropertyDescriptor(n,t))}))}return r}function I(r,t,e){var n=y(r,t);return j(j({},r),{},{hookId:t,subId:n,appInstanceId:n,app_key:e})}function k(r,t){return x.apply(this,arguments)}function x(){return x=t(n.mark((function r(e,u){var a,i,o;return n.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return a=u.timeQuery,i=u.appKey,o=e.map(function(){var r=t(n.mark((function r(t){var e,u,o,c,s,p,f,l,m;return n.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(e=t.provider,u=t.collection,o=t.assetId,c=t.subscribeOnly,s=t.params,!c){r.next=3;break}return r.abrupt("return",null);case 3:return p=s.query,f=a?"{timestamp#lte#".concat(a.timestamp.$lte):"",l=p&&f?"AND":"",m="".concat(p).concat(l).concat(f),r.prev=7,r.next=10,h(e,u,o,j(j(j({},s),m?{query:m}:{}),{},{appKey:i}));case 10:return r.abrupt("return",r.sent);case 13:return r.prev=13,r.t0=r.catch(7),r.abrupt("return",[]);case 16:case"end":return r.stop()}}),r,null,[[7,13]])})));return function(t){return r.apply(this,arguments)}}()),r.abrupt("return",Promise.all(o));case 3:case"end":return r.stop()}}),r)}))),x.apply(this,arguments)}function P(r,t){return E.apply(this,arguments)}function E(){return E=t(n.mark((function r(e,u){var a,i,o;return n.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:return a=u.timeQuery,i=u.appKey,o=e.map(function(){var r=t(n.mark((function r(t){var e,u,o,c,s,p,f,l,m,y,v,h;return n.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(e=t.provider,u=t.collection,o=t.assetId,c=t.subscribeOnly,s=t.params,p=void 0===s?{}:s,!c){r.next=3;break}return r.abrupt("return",null);case 3:if(!p.aggregate){r.next=5;break}return r.abrupt("return",w(e,u,j({},d(p.aggregate,JSON.stringify))));case 5:return f=JSON.stringify(b({asset_id:o},p.query,a)),l=p.limit,m=void 0===l?1:l,y=p.sort,v=void 0===y?'{"timestamp": 1}':y,r.prev=7,h=j(j({},p),{},{limit:m,sort:v,query:f,appKey:i}),r.next=11,O(e,u,h);case 11:return r.abrupt("return",r.sent);case 14:return r.prev=14,r.t0=r.catch(7),r.abrupt("return",[]);case 17:case"end":return r.stop()}}),r,null,[[7,14]])})));return function(t){return r.apply(this,arguments)}}()),r.abrupt("return",Promise.all(o));case 3:case"end":return r.stop()}}),r)}))),E.apply(this,arguments)}function D(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},b=n.timestamp,d=n.isOldApiUsed,y=a({}),h=r(y,2),O=h[0],w=h[1],g=i();g.current||(g.current=s());var x=window[Symbol.for("socket")],E=x.subscribe,D=x.unsubscribe,S=x.socket,q=o((function(){return v()}),[]),A=i([]),K=p(t).map((function(r){return I(r,g.current,q)})),N=K.map((function(r){return r.subId})).join(),Q=o((function(){if(b)return{timestamp:{$lte:b}};var r=u(window.location.search).time;return r?{timestamp:{$lte:new Date(r)/1e3}}:null}),[window.location.search,b]);return c((function(){var r=function(r){r.hookId===g.current&&w((function(t){var n=r.data;return r.subId in t&&!r.subscribeOnly&&(n=m(t[r.subId],r.data)),r.params&&r.params.limit&&(n=n.slice(-r.params.limit)),j(j({},t),{},e({},r.subId,n))}))};return S&&S.on("data",r),function(){S&&S.off("data",r)}}),[]),c((function(){A.current.forEach(D),A.current=[]}),[Q]),c((function(){var r=A.current,t=f(K,r,"subId"),e=f(r,K,"subId");t.forEach((function(r){Q&&!r.alwaysSubscribe||E(r)})),e.forEach(D),A.current=K,(d?k:P)(t,{timeQuery:Q,appKey:q,isOldApiUsed:d}).then((function(r){return w((function(n){var u=l(n,e.map((function(r){return r.subId})));return t.forEach((function(t,e){null!==r[e]&&(u[t.subId]=r[e])})),u}))}))}),[N,Q]),c((function(){return function(){return A.current.forEach(D)}}),[]),o((function(){return K.map((function(r){var t=r.subId;return{loading:!(t in O),data:O[t]}}))}),[O,N])}export{D as default};
2
2
  //# sourceMappingURL=useSubscriptions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useSubscriptions.js","sources":["../../src/effects/useSubscriptions.js"],"sourcesContent":["// NOTE: This is a deprecated module, but is still used in the codebase (some devcenter apps)\n// We don't support it, dc devs should refactor their code to use socketClient directly\nimport { parse } from 'querystring';\n\nimport { useState, useEffect, useRef, useMemo } from 'react';\nimport uuidV1 from 'uuid/v1';\nimport { castArray, omit, differenceBy, concat, merge, mapValues } from 'lodash';\n\nimport { getSubscriptionId } from '../clients/subscriptions';\n\nimport { getAppKeyFromStackTrace } from '~/clients/utils';\nimport { getAppStorage, getDataAppStorage, getDataAppStorageAggregate } from '~/clients/jsonApi';\n\nfunction getSubscriptionWithId(sub, hookId, appKey) {\n const subId = getSubscriptionId(sub, hookId);\n return { ...sub, hookId, subId, appInstanceId: subId, app_key: appKey };\n}\n\nasync function fetchInitialSubscriptionsDataDeprecated(subscriptions, { timeQuery, appKey }) {\n const requests = subscriptions.map(\n async ({ provider, collection, assetId, subscribeOnly, params }) => {\n if (subscribeOnly) return null;\n const queryFromParameters = params.query;\n const queryFromTime = timeQuery ? `{timestamp#lte#${timeQuery.timestamp.$lte}` : '';\n const separator = queryFromParameters && queryFromTime ? 'AND' : '';\n const query = `${queryFromParameters}${separator}${queryFromTime}`;\n\n try {\n return await getAppStorage(provider, collection, assetId, {\n ...params,\n ...(query ? { query } : {}),\n appKey,\n });\n } catch (e) {\n return [];\n }\n }\n );\n return Promise.all(requests);\n}\n\nasync function fetchInitialSubscriptionsData(subscriptions, { timeQuery, appKey }) {\n const requests = subscriptions.map(\n async ({ provider, collection, assetId, subscribeOnly, params = {} }) => {\n if (subscribeOnly) return null;\n\n // NOTE: Use different endpoint for aggregate queries\n // https://data.qa.corva.ai/docs#/default/aggregate_api_v1_data__provider___dataset__aggregate__get\n if (params.aggregate)\n return getDataAppStorageAggregate(provider, collection, {\n ...mapValues(params.aggregate, JSON.stringify),\n });\n\n const query = JSON.stringify(merge({ asset_id: assetId }, params.query, timeQuery));\n const { limit = 1, sort = '{\"timestamp\": 1}' } = params;\n\n try {\n const options = {\n ...params,\n limit,\n sort,\n query,\n appKey,\n };\n\n return await getDataAppStorage(provider, collection, options);\n } catch (e) {\n return [];\n }\n }\n );\n return Promise.all(requests);\n}\n\n/**\n * A hook to subscribe to the corva socket updates\n * @param {Object | Object[]} subscriptions - subscription params\n * @param {number} subscriptions.limit - only save given amount of records\n * @param {boolean} subscriptions.subscribeOnly - do NOT send initial requests for the data\n * @param {boolean} subscriptions.alwaysSubscribe - will always subscribe, even when well timeline used\n * and do NOT store previously received data if true\n * @param {Object | Object} options - various hook options\n * @param {Object | Object} options.timestamp - requested time (usually from well timeline).\n * If provided only the initial request is being sent with the {\"timestamp\": {\"$lte\":time}} query added.\n */\nfunction useSubscriptions(subscriptions, { timestamp, isOldApiUsed } = {}) {\n const [data, setData] = useState({});\n // NOTE: Declare this hook id to differentiate between hooks\n const hookIdRef = useRef();\n if (!hookIdRef.current) hookIdRef.current = uuidV1();\n const { subscribe, unsubscribe, socket } = window[Symbol.for('socket')];\n const appKey = useMemo(() => getAppKeyFromStackTrace(), []);\n\n // NOTE: Save previous subscriptions to detect added/removed subscriptions\n const prevSubscriptionsRef = useRef([]);\n const currentSubscriptions = castArray(subscriptions).map(sub =>\n getSubscriptionWithId(sub, hookIdRef.current, appKey)\n );\n\n // NOTE: This string is used to trigger effects\n const currentSubscriptionsIdsJoined = currentSubscriptions.map(sub => sub.subId).join();\n const timeQuery = useMemo(() => {\n if (timestamp) return { timestamp: { $lte: timestamp } };\n const timeFromLocation = parse(window.location.search).time;\n return timeFromLocation ? { timestamp: { $lte: new Date(timeFromLocation) / 1000 } } : null;\n }, [window.location.search, timestamp]);\n\n useEffect(() => {\n const onDataReceive = event => {\n // NOTE: Skip other effects subscriptions' events\n if (event.hookId !== hookIdRef.current) return;\n setData(prevData => {\n let nextData = event.data;\n if (event.subId in prevData && !event.subscribeOnly) {\n nextData = concat(prevData[event.subId], event.data);\n }\n\n if (event.params && event.params.limit) nextData = nextData.slice(-event.params.limit);\n\n return {\n ...prevData,\n [event.subId]: nextData,\n };\n });\n };\n if (socket) socket.on('data', onDataReceive);\n // NOTE: Delete onDataReceive callback on unmounting\n return () => socket && socket.off('data', onDataReceive);\n }, []);\n\n useEffect(() => {\n const { current: prevSubscriptions } = prevSubscriptionsRef;\n prevSubscriptions.forEach(unsubscribe);\n prevSubscriptionsRef.current = [];\n }, [timeQuery]);\n\n useEffect(() => {\n const { current: prevSubscriptions } = prevSubscriptionsRef;\n const addedSubscriptions = differenceBy(currentSubscriptions, prevSubscriptions, 'subId');\n const deletedSubscriptions = differenceBy(prevSubscriptions, currentSubscriptions, 'subId');\n addedSubscriptions.forEach(subscription => {\n // NOTE: only subscribe when the timestamp wasn't provided (well timeline wasn't used)\n if (!timeQuery || subscription.alwaysSubscribe) subscribe(subscription);\n });\n deletedSubscriptions.forEach(unsubscribe);\n\n prevSubscriptionsRef.current = currentSubscriptions;\n\n // NOTE: Migrate to new api after https://corvaqa.atlassian.net/browse/DC-1090 is done\n const fetchFunc = isOldApiUsed\n ? fetchInitialSubscriptionsDataDeprecated\n : fetchInitialSubscriptionsData;\n fetchFunc(addedSubscriptions, { timeQuery, appKey, isOldApiUsed }).then(subsData =>\n setData(prevData => {\n // NOTE: Here we omit data from deleted subscriptions\n const nextData = omit(\n prevData,\n deletedSubscriptions.map(sub => sub.subId)\n );\n\n addedSubscriptions.forEach((sub, idx) => {\n if (subsData[idx] !== null) nextData[sub.subId] = subsData[idx];\n });\n return nextData;\n })\n );\n }, [currentSubscriptionsIdsJoined, timeQuery]);\n\n // NOTE: Clear all subscriptions on unmounting\n useEffect(() => () => prevSubscriptionsRef.current.forEach(unsubscribe), []);\n\n return useMemo(\n () =>\n currentSubscriptions.map(({ subId }) => ({\n loading: !(subId in data),\n data: data[subId],\n })),\n [data, currentSubscriptionsIdsJoined]\n );\n}\n\nexport default useSubscriptions;\n"],"names":["getSubscriptionWithId","sub","hookId","appKey","subId","getSubscriptionId","_objectSpread","appInstanceId","app_key","fetchInitialSubscriptionsDataDeprecated","_x","_x2","_fetchInitialSubscriptionsDataDeprecated","apply","this","arguments","_asyncToGenerator","_regeneratorRuntime","mark","subscriptions","_ref","timeQuery","requests","wrap","_context2","prev","next","map","_ref6","_callee","_ref5","provider","collection","assetId","subscribeOnly","params","queryFromParameters","queryFromTime","separator","query","_context","abrupt","timestamp","$lte","getAppStorage","sent","t0","stop","_x5","Promise","all","_callee2","fetchInitialSubscriptionsData","_x3","_x4","_fetchInitialSubscriptionsData","_ref2","_context4","_ref8","_callee3","_ref7","_ref7$params","_params$limit","limit","_params$sort","sort","options","_context3","aggregate","getDataAppStorageAggregate","mapValues","JSON","stringify","merge","asset_id","getDataAppStorage","_x6","_callee4","useSubscriptions","_ref3","length","undefined","isOldApiUsed","_useState","useState","_useState2","_slicedToArray","data","setData","hookIdRef","useRef","current","uuidV1","window","Symbol","for","subscribe","unsubscribe","socket","useMemo","getAppKeyFromStackTrace","prevSubscriptionsRef","currentSubscriptions","castArray","currentSubscriptionsIdsJoined","join","timeFromLocation","parse","location","search","time","Date","useEffect","onDataReceive","event","prevData","nextData","concat","slice","on","off","forEach","prevSubscriptions","addedSubscriptions","differenceBy","deletedSubscriptions","subscription","alwaysSubscribe","then","subsData","omit","idx","_ref4","loading"],"mappings":"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"}
1
+ {"version":3,"file":"useSubscriptions.js","sources":["../../src/effects/useSubscriptions.js"],"sourcesContent":["// NOTE: This is a deprecated module, but is still used in the codebase (some devcenter apps)\n// We don't support it, dc devs should refactor their code to use socketClient directly\nimport { parse } from 'querystring';\n\nimport { useState, useEffect, useRef, useMemo } from 'react';\nimport uuidV1 from 'uuid/v1';\nimport { castArray, omit, differenceBy, concat, merge, mapValues } from 'lodash';\n\nimport { getSubscriptionId } from '../clients/subscriptions';\n\nimport { getAppKeyFromStackTrace } from '~/clients/utils';\nimport { getAppStorage, getDataAppStorage, getDataAppStorageAggregate } from '~/clients/jsonApi';\n\nfunction getSubscriptionWithId(sub, hookId, appKey) {\n const subId = getSubscriptionId(sub, hookId);\n return { ...sub, hookId, subId, appInstanceId: subId, app_key: appKey };\n}\n\nasync function fetchInitialSubscriptionsDataDeprecated(subscriptions, { timeQuery, appKey }) {\n const requests = subscriptions.map(\n async ({ provider, collection, assetId, subscribeOnly, params }) => {\n if (subscribeOnly) return null;\n const queryFromParameters = params.query;\n const queryFromTime = timeQuery ? `{timestamp#lte#${timeQuery.timestamp.$lte}` : '';\n const separator = queryFromParameters && queryFromTime ? 'AND' : '';\n const query = `${queryFromParameters}${separator}${queryFromTime}`;\n\n try {\n return await getAppStorage(provider, collection, assetId, {\n ...params,\n ...(query ? { query } : {}),\n appKey,\n });\n } catch (e) {\n return [];\n }\n }\n );\n return Promise.all(requests);\n}\n\nasync function fetchInitialSubscriptionsData(subscriptions, { timeQuery, appKey }) {\n const requests = subscriptions.map(\n async ({ provider, collection, assetId, subscribeOnly, params = {} }) => {\n if (subscribeOnly) return null;\n\n // NOTE: Use different endpoint for aggregate queries\n // https://data.qa.corva.ai/docs#/default/aggregate_api_v1_data__provider___dataset__aggregate__get\n if (params.aggregate)\n return getDataAppStorageAggregate(provider, collection, {\n ...mapValues(params.aggregate, JSON.stringify),\n });\n\n const query = JSON.stringify(merge({ asset_id: assetId }, params.query, timeQuery));\n const { limit = 1, sort = '{\"timestamp\": 1}' } = params;\n\n try {\n const options = {\n ...params,\n limit,\n sort,\n query,\n appKey,\n };\n\n return await getDataAppStorage(provider, collection, options);\n } catch (e) {\n return [];\n }\n }\n );\n return Promise.all(requests);\n}\n\n/**\n * A hook to subscribe to the corva socket updates\n * @param {Object | Object[]} subscriptions - subscription params\n * @param {number} subscriptions.limit - only save given amount of records\n * @param {boolean} subscriptions.subscribeOnly - do NOT send initial requests for the data\n * @param {boolean} subscriptions.alwaysSubscribe - will always subscribe, even when well timeline used\n * and do NOT store previously received data if true\n * @param {Object | Object} options - various hook options\n * @param {Object | Object} options.timestamp - requested time (usually from well timeline).\n * If provided only the initial request is being sent with the {\"timestamp\": {\"$lte\":time}} query added.\n */\nfunction useSubscriptions(subscriptions, { timestamp, isOldApiUsed } = {}) {\n const [data, setData] = useState({});\n // NOTE: Declare this hook id to differentiate between hooks\n const hookIdRef = useRef();\n if (!hookIdRef.current) hookIdRef.current = uuidV1();\n const { subscribe, unsubscribe, socket } = window[Symbol.for('socket')];\n const appKey = useMemo(() => getAppKeyFromStackTrace(), []);\n\n // NOTE: Save previous subscriptions to detect added/removed subscriptions\n const prevSubscriptionsRef = useRef([]);\n const currentSubscriptions = castArray(subscriptions).map(sub =>\n getSubscriptionWithId(sub, hookIdRef.current, appKey)\n );\n\n // NOTE: This string is used to trigger effects\n const currentSubscriptionsIdsJoined = currentSubscriptions.map(sub => sub.subId).join();\n const timeQuery = useMemo(() => {\n if (timestamp) return { timestamp: { $lte: timestamp } };\n const timeFromLocation = parse(window.location.search).time;\n return timeFromLocation ? { timestamp: { $lte: new Date(timeFromLocation) / 1000 } } : null;\n }, [window.location.search, timestamp]);\n\n useEffect(() => {\n const onDataReceive = event => {\n // NOTE: Skip other effects subscriptions' events\n if (event.hookId !== hookIdRef.current) return;\n setData(prevData => {\n let nextData = event.data;\n if (event.subId in prevData && !event.subscribeOnly) {\n nextData = concat(prevData[event.subId], event.data);\n }\n\n if (event.params && event.params.limit) nextData = nextData.slice(-event.params.limit);\n\n return {\n ...prevData,\n [event.subId]: nextData,\n };\n });\n };\n if (socket) socket.on('data', onDataReceive);\n return () => {\n if (socket) socket.off('data', onDataReceive);\n };\n }, []);\n\n useEffect(() => {\n const { current: prevSubscriptions } = prevSubscriptionsRef;\n prevSubscriptions.forEach(unsubscribe);\n prevSubscriptionsRef.current = [];\n }, [timeQuery]);\n\n useEffect(() => {\n const { current: prevSubscriptions } = prevSubscriptionsRef;\n const addedSubscriptions = differenceBy(currentSubscriptions, prevSubscriptions, 'subId');\n const deletedSubscriptions = differenceBy(prevSubscriptions, currentSubscriptions, 'subId');\n addedSubscriptions.forEach(subscription => {\n // NOTE: only subscribe when the timestamp wasn't provided (well timeline wasn't used)\n if (!timeQuery || subscription.alwaysSubscribe) subscribe(subscription);\n });\n deletedSubscriptions.forEach(unsubscribe);\n\n prevSubscriptionsRef.current = currentSubscriptions;\n\n // NOTE: Migrate to new api after https://corvaqa.atlassian.net/browse/DC-1090 is done\n const fetchFunc = isOldApiUsed\n ? fetchInitialSubscriptionsDataDeprecated\n : fetchInitialSubscriptionsData;\n fetchFunc(addedSubscriptions, { timeQuery, appKey, isOldApiUsed }).then(subsData =>\n setData(prevData => {\n // NOTE: Here we omit data from deleted subscriptions\n const nextData = omit(\n prevData,\n deletedSubscriptions.map(sub => sub.subId)\n );\n\n addedSubscriptions.forEach((sub, idx) => {\n if (subsData[idx] !== null) nextData[sub.subId] = subsData[idx];\n });\n return nextData;\n })\n );\n }, [currentSubscriptionsIdsJoined, timeQuery]);\n\n // NOTE: Clear all subscriptions on unmounting\n useEffect(() => () => prevSubscriptionsRef.current.forEach(unsubscribe), []);\n\n return useMemo(\n () =>\n currentSubscriptions.map(({ subId }) => ({\n loading: !(subId in data),\n data: data[subId],\n })),\n [data, currentSubscriptionsIdsJoined]\n );\n}\n\nexport default useSubscriptions;\n"],"names":["getSubscriptionWithId","sub","hookId","appKey","subId","getSubscriptionId","_objectSpread","appInstanceId","app_key","fetchInitialSubscriptionsDataDeprecated","_x","_x2","_fetchInitialSubscriptionsDataDeprecated","apply","this","arguments","_asyncToGenerator","_regeneratorRuntime","mark","subscriptions","_ref","timeQuery","requests","wrap","_context2","prev","next","map","_ref6","_callee","_ref5","provider","collection","assetId","subscribeOnly","params","queryFromParameters","queryFromTime","separator","query","_context","abrupt","timestamp","$lte","getAppStorage","sent","t0","stop","_x5","Promise","all","_callee2","fetchInitialSubscriptionsData","_x3","_x4","_fetchInitialSubscriptionsData","_ref2","_context4","_ref8","_callee3","_ref7","_ref7$params","_params$limit","limit","_params$sort","sort","options","_context3","aggregate","getDataAppStorageAggregate","mapValues","JSON","stringify","merge","asset_id","getDataAppStorage","_x6","_callee4","useSubscriptions","_ref3","length","undefined","isOldApiUsed","_useState","useState","_useState2","_slicedToArray","data","setData","hookIdRef","useRef","current","uuidV1","window","Symbol","for","subscribe","unsubscribe","socket","useMemo","getAppKeyFromStackTrace","prevSubscriptionsRef","currentSubscriptions","castArray","currentSubscriptionsIdsJoined","join","timeFromLocation","parse","location","search","time","Date","useEffect","onDataReceive","event","prevData","nextData","concat","slice","on","off","forEach","prevSubscriptions","addedSubscriptions","differenceBy","deletedSubscriptions","subscription","alwaysSubscribe","then","subsData","omit","idx","_ref4","loading"],"mappings":"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"}
package/index.d.ts CHANGED
@@ -14,6 +14,7 @@ export const theme: {
14
14
  theme: typeof themeObject;
15
15
  initHighcharts: typeof config.initHighcharts;
16
16
  MAP_BOX_ACCESS_TOKEN: "pk.eyJ1IjoiY29ydmEtYWkiLCJhIjoiY2tzeXg1Ym84Mm53NjJvbnZvZ3JxajVwayJ9.3B6ubssBj1UCqN5o25X6pw";
17
+ initGlobalDependencies: typeof config.initGlobalDependencies;
17
18
  };
18
19
  import * as utils from './utils';
19
20
  import * as testing from './testing';