@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.
- package/cjs-bundle/clients/index.js +1 -1
- package/cjs-bundle/clients/index.js.map +1 -1
- package/cjs-bundle/clients/subscriptions.js +1 -1
- package/cjs-bundle/clients/subscriptions.js.map +1 -1
- package/cjs-bundle/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js +1 -1
- package/cjs-bundle/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js.map +1 -1
- package/cjs-bundle/components/OffsetWellPickerV2/components/Map/Map.js +1 -1
- package/cjs-bundle/components/OffsetWellPickerV2/components/Map/Map.js.map +1 -1
- package/cjs-bundle/components/PinnableFilters/effects/index.js +1 -1
- package/cjs-bundle/components/PinnableFilters/effects/index.js.map +1 -1
- package/cjs-bundle/config/index.js +1 -1
- package/cjs-bundle/config/initGlobalDependencies.js +1 -1
- package/cjs-bundle/config/initGlobalDependencies.js.map +1 -1
- package/cjs-bundle/effects/useSubscriptions.js +1 -1
- package/cjs-bundle/effects/useSubscriptions.js.map +1 -1
- package/clients/index.d.ts +1 -3
- package/clients/index.d.ts.map +1 -1
- package/clients/index.js +1 -1
- package/clients/index.js.map +1 -1
- package/clients/subscriptions.js +1 -1
- package/clients/subscriptions.js.map +1 -1
- package/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.d.ts.map +1 -1
- package/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js +1 -1
- package/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js.map +1 -1
- package/components/OffsetWellPickerV2/components/Map/Map.js +1 -1
- package/components/OffsetWellPickerV2/components/Map/Map.js.map +1 -1
- package/components/PinnableFilters/effects/index.js +1 -1
- package/components/PinnableFilters/effects/index.js.map +1 -1
- package/config/index.d.ts +2 -1
- package/config/index.d.ts.map +1 -1
- package/config/index.js +1 -1
- package/config/initGlobalDependencies.d.ts +1 -1
- package/config/initGlobalDependencies.d.ts.map +1 -1
- package/config/initGlobalDependencies.js +1 -1
- package/config/initGlobalDependencies.js.map +1 -1
- package/effects/useSubscriptions.d.ts.map +1 -1
- package/effects/useSubscriptions.js +1 -1
- package/effects/useSubscriptions.js.map +1 -1
- package/index.d.ts +1 -0
- package/index.d.ts.map +1 -1
- 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=
|
|
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
|
package/clients/index.js.map
CHANGED
|
@@ -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
|
|
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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"}
|
package/clients/subscriptions.js
CHANGED
|
@@ -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)}))
|
|
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
|
|
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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"}
|
package/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DevCenterIsolatedAppPage.d.ts","sourceRoot":"","sources":["../../../../src/components/DevCenter/IsolatedDevCenterAppContainer/DevCenterIsolatedAppPage.js"],"names":[],"mappings":"
|
|
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
|
|
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 '~/
|
|
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
|
|
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
|
|
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":"
|
|
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
|
-
|
|
4
|
+
import { initGlobalDependencies } from './initGlobalDependencies';
|
|
5
|
+
export { theme, initHighcharts, MAP_BOX_ACCESS_TOKEN, initGlobalDependencies };
|
|
5
6
|
//# sourceMappingURL=index.d.ts.map
|
package/config/index.d.ts.map
CHANGED
|
@@ -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
|
|
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
|
|
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\
|
|
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;;;
|
|
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(){
|
|
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';
|