@corva/ui 3.67.0-9 → 3.68.0-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/cjs-bundle/components/BICOffsetPickerDialog/components/Map/Map.css.js +1 -1
  2. package/cjs-bundle/components/BICOffsetPickerDialog/components/Map/Map.js +1 -1
  3. package/cjs-bundle/components/BICOffsetPickerDialog/components/Map/Map.js.map +1 -1
  4. package/cjs-bundle/components/BICOffsetPickerDialog/effects/index.js +1 -1
  5. package/cjs-bundle/components/BICOffsetPickerDialog/effects/index.js.map +1 -1
  6. package/cjs-bundle/components/OffsetWellMap/OffsetWellMap.js +1 -1
  7. package/cjs-bundle/components/OffsetWellMap/OffsetWellMap.js.map +1 -1
  8. package/cjs-bundle/components/OffsetWellMap/OffsetWellMap.module.css.js +1 -1
  9. package/cjs-bundle/components/OffsetWellMap/WellTooltip.module.css.js +1 -1
  10. package/cjs-bundle/components/OffsetWellPickerV2/components/Map/Map.css.js +1 -1
  11. package/cjs-bundle/components/OffsetWellPickerV2/components/Map/Map.js +1 -1
  12. package/cjs-bundle/components/OffsetWellPickerV2/components/Map/Map.js.map +1 -1
  13. package/cjs-bundle/components/OffsetWellPickerV2/effects/index.js +1 -1
  14. package/cjs-bundle/components/OffsetWellPickerV2/effects/index.js.map +1 -1
  15. package/cjs-bundle/components/OffsetWellPickerV3/components/CustomSelectionView/components/Map/Map.css.js +1 -1
  16. package/cjs-bundle/components/OffsetWellPickerV3/components/CustomSelectionView/components/Map/Map.js +1 -1
  17. package/cjs-bundle/components/OffsetWellPickerV3/components/CustomSelectionView/components/Map/Map.js.map +1 -1
  18. package/cjs-bundle/components/OffsetWellPickerV3/components/CustomSelectionView/effects/index.js +1 -1
  19. package/cjs-bundle/components/OffsetWellPickerV3/components/CustomSelectionView/effects/index.js.map +1 -1
  20. package/cjs-bundle/components/OffsetWellPickerV5/components/Map/OffsetWellMap/OffsetWellMap.js +1 -1
  21. package/cjs-bundle/components/OffsetWellPickerV5/components/MapPreloader/MapPreloader.js +1 -1
  22. package/cjs-bundle/components/PinnableFilters/effects/index.js +1 -1
  23. package/cjs-bundle/components/PinnableFilters/effects/index.js.map +1 -1
  24. package/cjs-bundle/componentsV2/CompletionsOffsetWellPicker/AssetFilters/useOptions.js +1 -1
  25. package/cjs-bundle/componentsV2/CompletionsOffsetWellPicker/CompletionsOffsetWellPicker.js +1 -1
  26. package/cjs-bundle/componentsV2/CompletionsOffsetWellPicker/PadsTable/PadsTableBody.js +1 -1
  27. package/cjs-bundle/componentsV2/CompletionsOffsetWellPicker/hooks/usePadsByRadius.js +1 -1
  28. package/cjs-bundle/config/index.js +1 -1
  29. package/cjs-bundle/config/mapbox/index.js +1 -1
  30. package/cjs-bundle/config/mapbox/index.js.map +1 -1
  31. package/cjs-bundle/config/mapboxGl/index.js +2 -0
  32. package/cjs-bundle/config/mapboxGl/index.js.map +1 -0
  33. package/cjs-bundle/config/mapboxLabelPolicy/index.js +2 -0
  34. package/cjs-bundle/config/mapboxLabelPolicy/index.js.map +1 -0
  35. package/cjs-bundle/styles/mapbox.global.css.js +1 -1
  36. package/components/BICOffsetPickerDialog/components/Map/Map.css.js +1 -1
  37. package/components/BICOffsetPickerDialog/components/Map/Map.d.ts.map +1 -1
  38. package/components/BICOffsetPickerDialog/components/Map/Map.js +1 -1
  39. package/components/BICOffsetPickerDialog/components/Map/Map.js.map +1 -1
  40. package/components/BICOffsetPickerDialog/effects/index.js +1 -1
  41. package/components/BICOffsetPickerDialog/effects/index.js.map +1 -1
  42. package/components/OffsetWellMap/OffsetWellMap.d.ts.map +1 -1
  43. package/components/OffsetWellMap/OffsetWellMap.js +1 -1
  44. package/components/OffsetWellMap/OffsetWellMap.js.map +1 -1
  45. package/components/OffsetWellMap/OffsetWellMap.module.css.js +1 -1
  46. package/components/OffsetWellMap/WellTooltip.module.css.js +1 -1
  47. package/components/OffsetWellPickerV2/components/Map/Map.css.js +1 -1
  48. package/components/OffsetWellPickerV2/components/Map/Map.d.ts.map +1 -1
  49. package/components/OffsetWellPickerV2/components/Map/Map.js +1 -1
  50. package/components/OffsetWellPickerV2/components/Map/Map.js.map +1 -1
  51. package/components/OffsetWellPickerV2/effects/index.js +1 -1
  52. package/components/OffsetWellPickerV2/effects/index.js.map +1 -1
  53. package/components/OffsetWellPickerV3/components/CustomSelectionView/components/Map/Map.css.js +1 -1
  54. package/components/OffsetWellPickerV3/components/CustomSelectionView/components/Map/Map.d.ts.map +1 -1
  55. package/components/OffsetWellPickerV3/components/CustomSelectionView/components/Map/Map.js +1 -1
  56. package/components/OffsetWellPickerV3/components/CustomSelectionView/components/Map/Map.js.map +1 -1
  57. package/components/OffsetWellPickerV3/components/CustomSelectionView/effects/index.js +1 -1
  58. package/components/OffsetWellPickerV3/components/CustomSelectionView/effects/index.js.map +1 -1
  59. package/components/OffsetWellPickerV5/components/Map/OffsetWellMap/OffsetWellMap.d.ts.map +1 -1
  60. package/components/OffsetWellPickerV5/components/Map/OffsetWellMap/OffsetWellMap.js +1 -1
  61. package/components/OffsetWellPickerV5/components/Map/OffsetWellMap/hooks/useMapTooltipState.d.ts +1 -1
  62. package/components/OffsetWellPickerV5/components/Map/OffsetWellMap/hooks/useOffsetWellMapState.d.ts +1 -1
  63. package/components/OffsetWellPickerV5/components/MapPreloader/MapPreloader.d.ts.map +1 -1
  64. package/components/OffsetWellPickerV5/components/MapPreloader/MapPreloader.js +1 -1
  65. package/components/PinnableFilters/effects/index.js +1 -1
  66. package/components/PinnableFilters/effects/index.js.map +1 -1
  67. package/componentsV2/CompletionsOffsetWellPicker/AssetFilters/AssetFilters.d.ts +1 -1
  68. package/componentsV2/CompletionsOffsetWellPicker/AssetFilters/AssetFilters.d.ts.map +1 -1
  69. package/componentsV2/CompletionsOffsetWellPicker/AssetFilters/useOptions.d.ts +1 -1
  70. package/componentsV2/CompletionsOffsetWellPicker/AssetFilters/useOptions.d.ts.map +1 -1
  71. package/componentsV2/CompletionsOffsetWellPicker/AssetFilters/useOptions.js +1 -1
  72. package/componentsV2/CompletionsOffsetWellPicker/CompletionsOffsetWellPicker.js +1 -1
  73. package/componentsV2/CompletionsOffsetWellPicker/PadsTable/PadsTableBody.js +1 -1
  74. package/componentsV2/CompletionsOffsetWellPicker/hooks/__tests__/usePadsByRadius.test.d.ts +2 -0
  75. package/componentsV2/CompletionsOffsetWellPicker/hooks/__tests__/usePadsByRadius.test.d.ts.map +1 -0
  76. package/componentsV2/CompletionsOffsetWellPicker/hooks/usePadsByRadius.d.ts +1 -1
  77. package/componentsV2/CompletionsOffsetWellPicker/hooks/usePadsByRadius.d.ts.map +1 -1
  78. package/componentsV2/CompletionsOffsetWellPicker/hooks/usePadsByRadius.js +1 -1
  79. package/componentsV2/CompletionsOffsetWellPicker/types.d.ts +1 -1
  80. package/componentsV2/CompletionsOffsetWellPicker/types.d.ts.map +1 -1
  81. package/config/index.d.ts +2 -1
  82. package/config/index.d.ts.map +1 -1
  83. package/config/index.js +1 -1
  84. package/config/mapbox/index.d.ts.map +1 -1
  85. package/config/mapbox/index.js +1 -1
  86. package/config/mapbox/index.js.map +1 -1
  87. package/config/mapboxGl/index.d.ts +3 -0
  88. package/config/mapboxGl/index.d.ts.map +1 -0
  89. package/config/mapboxGl/index.js +2 -0
  90. package/config/mapboxGl/index.js.map +1 -0
  91. package/config/mapboxLabelPolicy/__tests__/index.test.d.ts +2 -0
  92. package/config/mapboxLabelPolicy/__tests__/index.test.d.ts.map +1 -0
  93. package/config/mapboxLabelPolicy/index.d.ts +5 -0
  94. package/config/mapboxLabelPolicy/index.d.ts.map +1 -0
  95. package/config/mapboxLabelPolicy/index.js +2 -0
  96. package/config/mapboxLabelPolicy/index.js.map +1 -0
  97. package/index.d.ts +1 -0
  98. package/index.d.ts.map +1 -1
  99. package/mcp-server/server.mjs +1 -1
  100. package/package.json +1 -2
  101. package/styles/mapbox.global.css +8 -1
  102. package/styles/mapbox.global.css.js +1 -1
  103. package/tsconfig.tsbuildinfo +1 -1
@@ -1,2 +1,2 @@
1
- import r from"@babel/runtime/helpers/defineProperty";import e from"@babel/runtime/helpers/toConsumableArray";import t from"@babel/runtime/helpers/slicedToArray";import{useMemo as n,useRef as o,useState as c,useEffect as i,createElement as u}from"react";import l from"react-dom";import{get as a}from"lodash";import s from"classnames";import{Tooltip as d}from"@material-ui/core";import{Add as f,Remove as m}from"@material-ui/icons";import p from"mapbox.js";import{usePreviousWells as v}from"./effects/usePreviousWells.js";import{WellTooltip as h}from"./WellTooltip.js";import{getAllFormations as b}from"./utils.js";import y from"./OffsetWellMap.module.css.js";import{mapbox as C}from"../../utils/index.js";import{jsx as B,jsxs as g,Fragment as k}from"react/jsx-runtime";var D=C.isValidCoordinates,O=[29.749907,-95.358421],T=["_renderer","_bounds","min"],N=function(C){var N=C.isViewOnly,x=C.subjectWell,z=void 0===x?null:x,E=C.wells,F=C.offsetWellIds,L=C.radius,W=C.handleChanageOffsetWell,j=C.handleChangeOffsetWell,w=void 0===j?W:j,S=C.activeWellId,Z=C.isClickable,M=void 0===Z||Z,_=C.classes,I=void 0===_?{}:_,G=n((function(){return z&&a(z,"topHole.coordinates")}),[z]),P=n((function(){return b(E)}),[E]),V=o(),A=o(),H=o(),U=o(),q=o(null),J=c(!1),K=t(J,2),Q=K[0],R=K[1],X=o(),Y=o(),$=(null==z?void 0:z.id)===S,rr=v(E),er=c(null),tr=t(er,2),nr=tr[0],or=tr[1],cr=c(3),ir=t(cr,2),ur=ir[0],lr=ir[1],ar=o(new Map),sr=o([]),dr=o(null);i((function(){V.current=p.mapbox.map(V.current,null,{attributionControl:!1,scrollWheelZoom:!1,zoomControl:!1}).setView(O,3).on("zoomend",(function(){return lr(V.current.getZoom())})),V.current.doubleClickZoom.disable(),p.mapbox.styleLayer("mapbox://styles/mapbox/dark-v9").addTo(V.current);var r=V.current;return function(){r.off("layerremove"),r.remove(),V.current=null,A.current=null,U.current=null}}),[]),i((function(){if(V.current){if(A.current&&(V.current.removeLayer(A.current),A.current=null),H.current&&V.current.removeLayer(H.current),!G)return A.current=null,void(H.current=null);L&&(A.current=p.circle(G,1609.34*L,{stroke:!1,fill:!0,fillOpacity:.2,fillColor:"#03BCD4",className:"circle_500"}),A.current.addTo(V.current))}}),[L,G]);var fr=function(r,e,t,n,o,c){c&&(r.setStyle({fillColor:"#63EFFF"}),R(!0)),q.current=p.circleMarker(e,{radius:c?5:12,stroke:!1,fill:!0,fillOpacity:.24,fillColor:c?"#63EFFF":t,className:"circle_highlight"}),q.current.addEventListener("mouseout",(function(){U.current.removeFrom(V.current),U.current=p.featureGroup(X.current),U.current.addTo(V.current),V.current.closePopup(),c&&(r.setStyle({fillColor:"#03BCD4"}),R(!1))})),q.current.addEventListener("click",(function(){N||w(n,!o)}));var i=X.current.concat(q.current);U.current.removeFrom(V.current),U.current=p.featureGroup(i),U.current.addTo(V.current)},mr=function(r,e,t,n,o){var c=document.createElement("div"),i=u(h(),{isViewOnly:N,well:r,color:a(P,r.formation,"#BDBDBD"),isOffsetWell:e,isSubjectWell:t,offset:o,isClickable:M});l.render(B(k,{children:i}),c),p.popup().setLatLng(n).setContent(c).openOn(V.current)};i((function(){if(V.current&&E&&F){V.current.closePopup();var r=new Set(F),t=new Set(sr.current);if(E===rr&&dr.current===S&&E.every((function(r){return r.id}))&&r.size===t.size){var n=E.filter((function(e){return t.has(e.id)!==r.has(e.id)&&e.id!==(null==z?void 0:z.id)}));if(n.length>0&&n.length<10)return n.forEach((function(r){var e=ar.current.get(r.id);if(e){var t=F.includes(r.id),n=a(P,r.formation,"#BDBDBD"),o=t?.7:.3;e.setStyle({fillOpacity:o,fillColor:n})}})),sr.current=e(F),void(dr.current=S)}U.current&&U.current.removeFrom(V.current),ar.current.clear();var o=[],c=[],i=[];E.forEach((function(r){r.id!==(null==z?void 0:z.id)&&(F.includes(r.id)?c.push(r):i.push(r))})),[].concat(i,c,[z]).forEach((function(r){var e,t=null==r||null===(e=r.topHole)||void 0===e?void 0:e.coordinates;if(t&&D(t)){var n=(null==z?void 0:z.id)===r.id,c=F.includes(r.id)&&!n,i=n?"#03BCD4":a(P,r.formation,"#BDBDBD"),u=c?.7:.3;if(c){var l=p.circleMarker(t,{radius:12,stroke:!1,fill:!0,fillColor:i,className:"circle_500",fillOpacity:.08});o.push(l)}var s=p.circleMarker(t,{radius:5,stroke:!1,fill:!0,fillOpacity:n?1:u,fillColor:i,className:"circle_500"});if(s.addEventListener("mouseover",(function(e){var o=[0,0];nr&&a(e.target,T)&&(o=[a(e.target,T).x-nr.x,a(e.target,T).y-nr.y]),mr(r,c,n,t,o),fr(s,t,i,r,c,n)})),n&&(Y.current=s),r.id&&ar.current.set(r.id,s),o.push(s),r.id===S&&!$){var d=p.circleMarker(t,{radius:12,stroke:!1,fill:!0,fillOpacity:.24,fillColor:i,className:"circle_1200"});o.push(d)}}})),o.length&&(U.current=p.featureGroup(o),U.current.addTo(V.current)),X.current=o,sr.current=e(F),dr.current=S,setTimeout((function(){A.current&&A.current.bringToBack(),L<3e3&&V.current&&A.current&&E!==rr&&V.current.fitBounds(A.current.getBounds(),{padding:[5,5]})}),500)}}),[z,E,F,nr]),i((function(){if(Q&&a(V.current,T)&&nr){var r=[a(V.current,T).x-nr.x,a(V.current,T).y-nr.y];mr(z,!1,!0,G,r)}}),[Q,nr,z,G]),i((function(){if(V.current&&G){H.current&&H.current.removeFrom(V.current);var r=p.icon({iconUrl:Q||$?"/static/media/5e9c4959259cb12c11b2c5eaf27eb3ad.svg":"/static/media/9efe5882f31d2f22bd57af92069d0a3e.svg",iconSize:Q||$?[70,20]:[62,12],iconAnchor:Q||$?[35,29]:[31,25],className:"dot"});H.current=p.marker(G,{icon:r}),H.current.addTo(V.current),Y.current&&(H.current.addEventListener("mouseover",(function(){R(!0),fr(Y.current,G,"#03BCD4",z,!0,!0)})),H.current.addEventListener("mouseout",(function(){U.current.removeFrom(V.current),U.current=p.featureGroup(X.current),U.current.addTo(V.current),V.current.closePopup(),Y.current.setStyle({fillColor:"#03BCD4"}),R(!1)})))}}),[Q,G,L,z,$,nr]),i((function(){L>3e3?V.current.setZoom(1):setTimeout((function(){A.current&&A.current.bringToBack(),z?V.current&&A.current&&L&&V.current.fitBounds(A.current.getBounds(),{padding:[5,5]}):V.current&&U.current&&V.current.fitBounds(U.current.getBounds()),G&&V.current&&V.current.panTo(G,{duration:.7,easeLinearity:.25}),a(V.current,T)&&or(a(V.current,T))}),500)}),[L,z,G]);var pr=function(){V.current.setZoom(ur+1)};return B("div",{className:s(y.mapView,I.root),children:B("div",{className:s(y.mapMain,I.map),ref:V,onDoubleClick:pr,children:g("div",{className:y.zoomGroup,children:[B(d,{title:ur<18?"Zoom in":"",placement:"left",children:B("div",{className:s(y.zoomButton,r({},y.zoomDisabled,18===ur)),onClick:pr,children:B(f,{className:y.zoomInOutIcon})})}),B(d,{title:ur>1?"Zoom out":"",placement:"left",children:B("div",{className:s(y.zoomButton,r({},y.zoomDisabled,1===ur)),onClick:function(){ur>1&&V.current.setZoom(ur-1)},children:B(m,{className:y.zoomInOutIcon})})})]})})})};export{N as default};
1
+ import e from"@babel/runtime/helpers/defineProperty";import r from"@babel/runtime/helpers/slicedToArray";import{useMemo as t,useRef as l,useState as o,useEffect as i,createElement as c}from"react";import n from"react-dom";import{get as u}from"lodash";import s from"classnames";import{Tooltip as a}from"@material-ui/core";import{Add as d,Remove as f}from"@material-ui/icons";import"mapbox-gl/dist/mapbox-gl.css";import{usePreviousWells as m}from"./effects/usePreviousWells.js";import{WellTooltip as v}from"./WellTooltip.js";import{getAllFormations as h}from"./utils.js";import p from"./OffsetWellMap.module.css.js";import"../../config/mapboxGl/index.js";import{mapbox as g}from"../../utils/index.js";import{jsx as y,jsxs as w,Fragment as b}from"react/jsx-runtime";import W from"mapbox-gl";var j=g.isValidCoordinates,C=[29.749907,-95.358421],F={type:"FeatureCollection",features:[]},B=["==",["id"],-1],L=function(e){var t=r(e,2),l=t[0];return[t[1],l]},D=function(e,t){for(var l=r(e,2),o=l[0],i=l[1],c=arguments.length>2&&void 0!==arguments[2]?arguments[2]:64,n=t/(111320*Math.cos(o*Math.PI/180)),u=t/110574,s=[],a=0;a<=c;a+=1){var d=a/c*2*Math.PI;s.push([i+n*Math.cos(d),o+u*Math.sin(d)])}return{type:"Polygon",coordinates:[s]}},M=function(g){var M=g.isViewOnly,O=g.subjectWell,x=void 0===O?null:O,S=g.wells,k=g.offsetWellIds,P=g.radius,z=g.handleChanageOffsetWell,I=g.handleChangeOffsetWell,Z=void 0===I?z:I,E=g.activeWellId,N=g.isClickable,T=void 0===N||N,V=g.classes,A=void 0===V?{}:V,G=t((function(){return x&&u(x,"topHole.coordinates")}),[x]),H=t((function(){return h(S)}),[S]),q=l(),R=l(),J=l(),K=l(null),Q=l(null),U=l(),X=l(new Map),Y=l(null),$=l(null),_=o(!1),ee=r(_,2),re=ee[0],te=ee[1],le=(null==x?void 0:x.id)===E,oe=m(S),ie=o(!1),ce=r(ie,2),ne=ce[0],ue=ce[1],se=o(3),ae=r(se,2),de=ae[0],fe=ae[1];i((function(){var e=new W.Map({container:q.current,style:"mapbox://styles/mapbox/dark-v9",center:L(C),zoom:3,maxZoom:18,attributionControl:!1,scrollZoom:!1,doubleClickZoom:!1});return R.current=e,e.on("zoomend",(function(){return fe(Math.round(e.getZoom()))})),e.on("load",(function(){e.addSource("radius-circle",{type:"geojson",data:F}),e.addLayer({id:"radius-circle-fill",type:"fill",source:"radius-circle",paint:{"fill-color":"#03BCD4","fill-opacity":.2}}),e.addSource("wells",{type:"geojson",data:F}),e.addLayer({id:"wells-halo",type:"circle",source:"wells",filter:["==",["get","isOffsetWell"],!0],paint:{"circle-radius":12,"circle-color":["get","color"],"circle-opacity":.08}}),e.addLayer({id:"wells-circle",type:"circle",source:"wells",layout:{"circle-sort-key":["get","order"]},paint:{"circle-radius":5,"circle-color":["get","color"],"circle-opacity":["get","opacity"]}}),e.addLayer({id:"wells-active-highlight",type:"circle",source:"wells",filter:["==",["get","isActive"],!0],paint:{"circle-radius":12,"circle-color":["get","color"],"circle-opacity":.24}}),e.addLayer({id:"wells-hover-highlight",type:"circle",source:"wells",filter:B,paint:{"circle-radius":["case",["get","isSubjectWell"],5,12],"circle-color":["case",["get","isSubjectWell"],"#63EFFF",["get","color"]],"circle-opacity":.24}}),ue(!0)})),function(){e.remove(),R.current=null,J.current=null,U.current=null,K.current=null,Q.current=null}}),[]),i((function(){var e,t,l,o,i,c;K.current=G&&P?(e=1609.34*P,t=r(G,2),l=t[0],o=t[1],i=e/(111320*Math.cos(l*Math.PI/180)),[[o-i,l-(c=e/110574)],[o+i,l+c]]):null;var n=R.current;n&&ne&&n.getSource("radius-circle").setData(G&&P?{type:"Feature",properties:{},geometry:D(G,1609.34*P)}:F)}),[P,G,ne]);var me=function(e,r,t,l){var o=document.createElement("div"),i=c(v(),{isViewOnly:M,well:e,color:u(H,e.formation,"#BDBDBD"),isOffsetWell:r,isSubjectWell:t,isClickable:T});n.render(y(b,{children:i}),o),J.current||(J.current=new W.Popup({closeButton:!1,offset:12})),J.current.setLngLat(L(l)).setDOMContent(o).addTo(R.current)};i((function(){var e=R.current;e&&ne&&e.setPaintProperty("wells-circle","circle-color",re?["case",["get","isSubjectWell"],"#63EFFF",["get","color"]]:["get","color"])}),[re,ne]),i((function(){var e;if(S&&k){null===(e=J.current)||void 0===e||e.remove();var r=[],t=[];S.forEach((function(e){e.id!==(null==x?void 0:x.id)&&(k.includes(e.id)?r.push(e):t.push(e))}));var l=[].concat(t,r,[x]),o=[],i=new W.LngLatBounds;X.current.clear(),Y.current=null,l.forEach((function(e,r){var t,l=null==e||null===(t=e.topHole)||void 0===t?void 0:t.coordinates;if(l&&j(l)){var c=(null==x?void 0:x.id)===e.id,n=k.includes(e.id)&&!c,s=c?"#03BCD4":u(H,e.formation,"#BDBDBD"),a=n?.7:.3;o.push({type:"Feature",id:r,geometry:{type:"Point",coordinates:L(l)},properties:{color:s,opacity:c?1:a,isSubjectWell:c,isOffsetWell:n,isActive:e.id===E&&!le,order:r}}),X.current.set(r,{well:e,coords:l,isOffsetWell:n,isSubjectWell:c}),c&&(Y.current=r),i.extend(L(l))}})),Q.current=o.length?i:null;var c=R.current;if(c&&ne){c.getSource("wells").setData({type:"FeatureCollection",features:o}),c.setFilter("wells-hover-highlight",B),$.current=null;var n=function(e){var r,t=null===(r=e.features)||void 0===r?void 0:r[0];if(t&&$.current!==t.id){var l=X.current.get(t.id);l&&($.current=t.id,c.getCanvas().style.cursor="pointer",c.setFilter("wells-hover-highlight",["==",["id"],t.id]),me(l.well,l.isOffsetWell,l.isSubjectWell,l.coords),l.isSubjectWell&&te(!0))}},s=function(e){var r;if(null==e||!e.point||!c.queryRenderedFeatures(e.point,{layers:["wells-circle","wells-hover-highlight"]}).length){var t=null!==$.current&&$.current===Y.current;$.current=null,c.getCanvas().style.cursor="",c.setFilter("wells-hover-highlight",B),null===(r=J.current)||void 0===r||r.remove(),t&&te(!1)}},a=function(e){var r,t;if(!M){var l=X.current.get(null===(r=e.features)||void 0===r||null===(t=r[0])||void 0===t?void 0:t.id);l&&Z(l.well,!l.isOffsetWell)}};return c.on("mousemove","wells-circle",n),c.on("mouseleave","wells-circle",s),c.on("mouseleave","wells-hover-highlight",s),c.on("click","wells-circle",a),setTimeout((function(){P<3e3&&R.current&&K.current&&S!==oe&&R.current.fitBounds(K.current,{padding:5})}),500),function(){c.off("mousemove","wells-circle",n),c.off("mouseleave","wells-circle",s),c.off("mouseleave","wells-hover-highlight",s),c.off("click","wells-circle",a)}}}}),[x,S,k,E,ne]),i((function(){var e=R.current;if(U.current&&(U.current.remove(),U.current=null),e&&G){var t=re||le,l=document.createElement("img");l.src=t?"/static/media/5e9c4959259cb12c11b2c5eaf27eb3ad.svg":"/static/media/9efe5882f31d2f22bd57af92069d0a3e.svg";var o=r(t?[70,20]:[62,12],2),i=o[0],c=o[1],n=r(t?[35,29]:[31,25],2),u=n[0],s=n[1];l.width=i,l.height=c,l.addEventListener("mouseover",(function(){te(!0),null!==Y.current&&e.getLayer("wells-hover-highlight")&&($.current=Y.current,e.setFilter("wells-hover-highlight",["==",["id"],Y.current])),me(x,!1,!0,G)})),l.addEventListener("mouseout",(function(){var r;$.current=null,e.getLayer("wells-hover-highlight")&&e.setFilter("wells-hover-highlight",B),null===(r=J.current)||void 0===r||r.remove(),te(!1)})),U.current=new W.Marker({element:l,anchor:"center",offset:[i/2-u,c/2-s]}).setLngLat(L(G)).addTo(e)}}),[re,G,P,x,le]),i((function(){P>3e3?R.current.setZoom(1):setTimeout((function(){x?R.current&&K.current&&P&&R.current.fitBounds(K.current,{padding:5}):R.current&&Q.current&&R.current.fitBounds(Q.current),G&&R.current&&R.current.easeTo({center:L(G),duration:700})}),500)}),[P,x,G]);var ve=function(){R.current.setZoom(de+1)};return y("div",{className:s(p.mapView,A.root),children:y("div",{className:s(p.mapMain,A.map),ref:q,onDoubleClick:ve,children:w("div",{className:p.zoomGroup,children:[y(a,{title:de<18?"Zoom in":"",placement:"left",children:y("div",{className:s(p.zoomButton,e({},p.zoomDisabled,18===de)),onClick:ve,children:y(d,{className:p.zoomInOutIcon})})}),y(a,{title:de>1?"Zoom out":"",placement:"left",children:y("div",{className:s(p.zoomButton,e({},p.zoomDisabled,1===de)),onClick:function(){de>1&&R.current.setZoom(de-1)},children:y(f,{className:p.zoomInOutIcon})})})]})})})};export{M as default};
2
2
  //# sourceMappingURL=OffsetWellMap.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OffsetWellMap.js","sources":["../../../src/components/OffsetWellMap/OffsetWellMap.js"],"sourcesContent":["import { createElement, useRef, useEffect, useState, useMemo } from 'react';\nimport ReactDOM from 'react-dom';\nimport { get } from 'lodash';\nimport classNames from 'classnames';\nimport { Tooltip } from '@material-ui/core';\nimport { Add as ZoomInIcon, Remove as ZoomOutIcon } from '@material-ui/icons';\nimport L from 'mapbox.js';\n\nimport SubjectWellIcon from './CustomIcon/SubjectWellIcon.svg';\nimport SubjectHighlightWellIcon from './CustomIcon/SubjectHighlightWellIcon.svg';\nimport { usePreviousWells } from './effects';\nimport { WellTooltip } from './WellTooltip';\nimport { getAllFormations } from './utils';\n\nimport styles from './OffsetWellMap.module.css';\n\nimport { mapbox } from '~/utils';\n\nconst { isValidCoordinates } = mapbox;\nconst DEFAULT_COORDS = [29.749907, -95.358421];\nconst WELL_MARKER_SIZE = 5;\nconst HIGHLIGHT_MARKER_SIZE = 12;\nconst OFFSET_WELL_COLOR = '#03BCD4';\nconst RADIUS_CIRCLE_COLOR = '#03BCD4';\nconst HIGHLIGHT_WELL_COLOR = '#63EFFF';\nconst METERS_IN_MILE = 1609.34;\nconst ZOOM_INIT_VALUE = 3;\nconst ZOOM_MAX_VALUE = 18;\nconst ZOOM_MIN_VALUE = 1;\nconst MAX_RADIUS = 3000;\n\nconst bounds = ['_renderer', '_bounds', 'min'];\n\n/** @type {React.FC<import('./OffsetWellMapProps').OffsetWellMapProps>} */\nconst OffsetWellMap = ({\n isViewOnly,\n subjectWell = null,\n wells,\n offsetWellIds,\n radius,\n handleChanageOffsetWell,\n handleChangeOffsetWell = handleChanageOffsetWell,\n activeWellId,\n isClickable = true,\n classes = {},\n}) => {\n const subjectWellCoords = useMemo(() => {\n return subjectWell && get(subjectWell, 'topHole.coordinates');\n }, [subjectWell]);\n const formationColors = useMemo(() => getAllFormations(wells), [wells]);\n\n const mapRef = useRef();\n const radiusCircleRef = useRef();\n const subjectIconRef = useRef();\n const markersGroupRef = useRef();\n const highlightMarkerRef = useRef(null);\n const [isSubjectWellHovered, setIsSubjectWellHovered] = useState(false);\n const wellMarkers = useRef();\n const subjectWellMarker = useRef();\n const isActiveWellIsSubjectWell = subjectWell?.id === activeWellId;\n const prevWells = usePreviousWells(wells);\n const [initBounds, setInitBounds] = useState(null);\n const [zoom, setZoom] = useState(ZOOM_INIT_VALUE);\n\n const markerMap = useRef(new Map());\n const prevOffsetWellIds = useRef([]);\n const prevActiveWellId = useRef(null);\n\n // NOTE: Initialize map\n useEffect(() => {\n mapRef.current = L.mapbox\n .map(mapRef.current, null, {\n attributionControl: false,\n scrollWheelZoom: false,\n zoomControl: false,\n })\n .setView(DEFAULT_COORDS, ZOOM_INIT_VALUE)\n .on('zoomend', () => setZoom(mapRef.current.getZoom()));\n mapRef.current.doubleClickZoom.disable();\n\n L.mapbox.styleLayer('mapbox://styles/mapbox/dark-v9').addTo(mapRef.current);\n\n // NOTE: React nulls the DOM ref before deferred effect cleanup runs, so keep the map in a local\n const map = mapRef.current;\n return () => {\n // NOTE: mapbox.js defers _updateMapFeedbackLink on layerremove; after remove() it crashes on the deleted control container\n map.off('layerremove');\n map.remove();\n mapRef.current = null;\n radiusCircleRef.current = null;\n markersGroupRef.current = null;\n };\n }, []);\n\n // NOTE: Radius circle\n useEffect(() => {\n if (!mapRef.current) {\n return;\n }\n\n // NOTE: Clean up\n if (radiusCircleRef.current) {\n mapRef.current.removeLayer(radiusCircleRef.current);\n radiusCircleRef.current = null;\n }\n if (subjectIconRef.current) {\n mapRef.current.removeLayer(subjectIconRef.current);\n }\n\n if (!subjectWellCoords) {\n radiusCircleRef.current = null;\n subjectIconRef.current = null;\n return;\n }\n\n if (radius) {\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(mapRef.current);\n }\n }, [radius, subjectWellCoords]);\n\n // NOTE: Highlight marker\n const handleHighlightMarker = (\n currentMarker,\n coords,\n color,\n well,\n isOffsetWell,\n isSubjectWell\n ) => {\n if (isSubjectWell) {\n currentMarker.setStyle({ fillColor: HIGHLIGHT_WELL_COLOR });\n setIsSubjectWellHovered(true);\n }\n\n highlightMarkerRef.current = L.circleMarker(coords, {\n radius: isSubjectWell ? WELL_MARKER_SIZE : HIGHLIGHT_MARKER_SIZE,\n stroke: false,\n fill: true,\n fillOpacity: 0.24,\n fillColor: isSubjectWell ? HIGHLIGHT_WELL_COLOR : color,\n className: 'circle_highlight',\n });\n\n highlightMarkerRef.current.addEventListener('mouseout', () => {\n markersGroupRef.current.removeFrom(mapRef.current);\n markersGroupRef.current = L.featureGroup(wellMarkers.current);\n markersGroupRef.current.addTo(mapRef.current);\n mapRef.current.closePopup();\n if (isSubjectWell) {\n currentMarker.setStyle({ fillColor: OFFSET_WELL_COLOR });\n setIsSubjectWellHovered(false);\n }\n });\n\n highlightMarkerRef.current.addEventListener('click', () => {\n if (isViewOnly) return;\n if (isOffsetWell) {\n handleChangeOffsetWell(well, false);\n } else {\n handleChangeOffsetWell(well, true);\n }\n });\n\n const newMarkers = wellMarkers.current.concat(highlightMarkerRef.current);\n markersGroupRef.current.removeFrom(mapRef.current);\n markersGroupRef.current = L.featureGroup(newMarkers);\n markersGroupRef.current.addTo(mapRef.current);\n };\n\n const showTooltip = (well, isOffsetWell, isSubjectWell, coords, offset) => {\n const popUpContainer = document.createElement('div');\n const popUpContent = createElement(WellTooltip(), {\n isViewOnly,\n well,\n color: get(formationColors, well.formation, '#BDBDBD'),\n isOffsetWell,\n isSubjectWell,\n offset,\n isClickable,\n });\n ReactDOM.render(<>{popUpContent}</>, popUpContainer);\n L.popup().setLatLng(coords).setContent(popUpContainer).openOn(mapRef.current);\n };\n\n // NOTE: Well markers\n useEffect(() => {\n if (!mapRef.current || !wells || !offsetWellIds) {\n return;\n }\n\n mapRef.current.closePopup();\n\n const currentOffsetSet = new Set(offsetWellIds);\n const prevOffsetSet = new Set(prevOffsetWellIds.current);\n const onlyOffsetStatusChanged =\n wells === prevWells &&\n prevActiveWellId.current === activeWellId &&\n wells.every(well => well.id) &&\n currentOffsetSet.size === prevOffsetSet.size;\n\n if (onlyOffsetStatusChanged) {\n // only change markers that changed offset status\n const changedWells = wells.filter(well => {\n const wasOffset = prevOffsetSet.has(well.id);\n const isOffset = currentOffsetSet.has(well.id);\n return wasOffset !== isOffset && well.id !== subjectWell?.id;\n });\n\n if (changedWells.length > 0 && changedWells.length < 10) {\n changedWells.forEach(well => {\n const existingMarker = markerMap.current.get(well.id);\n if (existingMarker) {\n const isOffsetWell = offsetWellIds.includes(well.id);\n const color = get(formationColors, well.formation, '#BDBDBD');\n const opacity = isOffsetWell ? 0.7 : 0.3;\n\n existingMarker.setStyle({\n fillOpacity: opacity,\n fillColor: color,\n });\n }\n });\n\n prevOffsetWellIds.current = [...offsetWellIds];\n prevActiveWellId.current = activeWellId;\n return;\n }\n }\n\n // NOTE: Clean up\n if (markersGroupRef.current) {\n markersGroupRef.current.removeFrom(mapRef.current);\n }\n markerMap.current.clear();\n\n const markers = [];\n const offsetWells = [];\n const unSelectedWells = [];\n wells.forEach(well => {\n if (well.id !== subjectWell?.id) {\n if (offsetWellIds.includes(well.id)) {\n offsetWells.push(well);\n } else {\n unSelectedWells.push(well);\n }\n }\n });\n const sortedWells = [...unSelectedWells, ...offsetWells, subjectWell];\n sortedWells.forEach(well => {\n const coords = well?.topHole?.coordinates;\n\n if (coords && isValidCoordinates(coords)) {\n const isSubjectWell = subjectWell?.id === well.id;\n const isOffsetWell = offsetWellIds.includes(well.id) && !isSubjectWell;\n const color = isSubjectWell\n ? OFFSET_WELL_COLOR\n : get(formationColors, well.formation, '#BDBDBD');\n const opacity = isOffsetWell ? 0.7 : 0.3;\n\n if (isOffsetWell) {\n const newHighlightMarker = L.circleMarker(coords, {\n radius: HIGHLIGHT_MARKER_SIZE,\n stroke: false,\n fill: true,\n fillColor: color,\n className: 'circle_500',\n fillOpacity: 0.08,\n });\n markers.push(newHighlightMarker);\n }\n\n const newMarker = L.circleMarker(coords, {\n radius: WELL_MARKER_SIZE,\n stroke: false,\n fill: true,\n fillOpacity: isSubjectWell ? 1 : opacity,\n fillColor: color,\n className: 'circle_500',\n });\n\n newMarker.addEventListener('mouseover', e => {\n let offset = [0, 0];\n if (initBounds && get(e.target, bounds)) {\n offset = [\n get(e.target, bounds).x - initBounds.x,\n get(e.target, bounds).y - initBounds.y,\n ];\n }\n showTooltip(well, isOffsetWell, isSubjectWell, coords, offset);\n\n // Highlight\n handleHighlightMarker(newMarker, coords, color, well, isOffsetWell, isSubjectWell);\n });\n\n if (isSubjectWell) {\n subjectWellMarker.current = newMarker;\n }\n\n if (well.id) {\n markerMap.current.set(well.id, newMarker);\n }\n\n markers.push(newMarker);\n\n if (well.id === activeWellId && !isActiveWellIsSubjectWell) {\n const highlightMarker = L.circleMarker(coords, {\n radius: HIGHLIGHT_MARKER_SIZE,\n stroke: false,\n fill: true,\n fillOpacity: 0.24,\n fillColor: color,\n className: 'circle_1200',\n });\n markers.push(highlightMarker);\n }\n }\n });\n\n if (markers.length) {\n markersGroupRef.current = L.featureGroup(markers);\n markersGroupRef.current.addTo(mapRef.current);\n }\n wellMarkers.current = markers;\n\n prevOffsetWellIds.current = [...offsetWellIds];\n prevActiveWellId.current = activeWellId;\n\n setTimeout(() => {\n if (radiusCircleRef.current) {\n radiusCircleRef.current.bringToBack();\n }\n\n if (radius < MAX_RADIUS && mapRef.current && radiusCircleRef.current && wells !== prevWells) {\n mapRef.current.fitBounds(radiusCircleRef.current.getBounds(), { padding: [5, 5] });\n }\n }, 500);\n }, [subjectWell, wells, offsetWellIds, initBounds]);\n\n // NOTE: Subject Well Icon\n\n useEffect(() => {\n if (!isSubjectWellHovered) return;\n if (get(mapRef.current, bounds) && initBounds) {\n const offset = [\n get(mapRef.current, bounds).x - initBounds.x,\n get(mapRef.current, bounds).y - initBounds.y,\n ];\n showTooltip(subjectWell, false, true, subjectWellCoords, offset);\n }\n }, [isSubjectWellHovered, initBounds, subjectWell, subjectWellCoords]);\n\n useEffect(() => {\n if (!mapRef.current || !subjectWellCoords) return;\n\n if (subjectIconRef.current) {\n subjectIconRef.current.removeFrom(mapRef.current);\n }\n\n const icon = L.icon({\n iconUrl:\n isSubjectWellHovered || isActiveWellIsSubjectWell\n ? SubjectHighlightWellIcon\n : SubjectWellIcon,\n iconSize: isSubjectWellHovered || isActiveWellIsSubjectWell ? [70, 20] : [62, 12],\n iconAnchor: isSubjectWellHovered || isActiveWellIsSubjectWell ? [35, 29] : [31, 25],\n className: 'dot',\n });\n subjectIconRef.current = L.marker(subjectWellCoords, { icon });\n subjectIconRef.current.addTo(mapRef.current);\n\n if (subjectWellMarker.current) {\n subjectIconRef.current.addEventListener('mouseover', () => {\n setIsSubjectWellHovered(true);\n\n handleHighlightMarker(\n subjectWellMarker.current,\n subjectWellCoords,\n OFFSET_WELL_COLOR,\n subjectWell,\n true,\n true\n );\n });\n\n subjectIconRef.current.addEventListener('mouseout', () => {\n markersGroupRef.current.removeFrom(mapRef.current);\n markersGroupRef.current = L.featureGroup(wellMarkers.current);\n markersGroupRef.current.addTo(mapRef.current);\n mapRef.current.closePopup();\n subjectWellMarker.current.setStyle({ fillColor: OFFSET_WELL_COLOR });\n setIsSubjectWellHovered(false);\n });\n }\n }, [\n isSubjectWellHovered,\n subjectWellCoords,\n radius,\n subjectWell,\n isActiveWellIsSubjectWell,\n initBounds,\n ]);\n\n // NOTE: Map Update\n useEffect(() => {\n if (radius > MAX_RADIUS) {\n mapRef.current.setZoom(1);\n return;\n }\n setTimeout(() => {\n if (radiusCircleRef.current) {\n radiusCircleRef.current.bringToBack();\n }\n if (subjectWell) {\n if (mapRef.current && radiusCircleRef.current && radius) {\n mapRef.current.fitBounds(radiusCircleRef.current.getBounds(), {\n padding: [5, 5],\n });\n }\n } else if (mapRef.current && markersGroupRef.current) {\n mapRef.current.fitBounds(markersGroupRef.current.getBounds());\n }\n if (subjectWellCoords && mapRef.current) {\n mapRef.current.panTo(subjectWellCoords, {\n duration: 0.7,\n easeLinearity: 0.25,\n });\n }\n if (get(mapRef.current, bounds)) {\n setInitBounds(get(mapRef.current, bounds));\n }\n }, 500);\n }, [radius, subjectWell, subjectWellCoords]);\n\n const handleZoomIn = () => {\n mapRef.current.setZoom(zoom + 1);\n };\n\n const handleZoomOut = () => {\n if (zoom > 1) {\n mapRef.current.setZoom(zoom - 1);\n }\n };\n\n return (\n <div className={classNames(styles.mapView, classes.root)}>\n <div\n className={classNames(styles.mapMain, classes.map)}\n ref={mapRef}\n onDoubleClick={handleZoomIn}\n >\n <div className={styles.zoomGroup}>\n <Tooltip title={zoom < ZOOM_MAX_VALUE ? 'Zoom in' : ''} placement=\"left\">\n <div\n className={classNames(styles.zoomButton, {\n [styles.zoomDisabled]: zoom === ZOOM_MAX_VALUE,\n })}\n onClick={handleZoomIn}\n >\n <ZoomInIcon className={styles.zoomInOutIcon} />\n </div>\n </Tooltip>\n <Tooltip title={zoom > ZOOM_MIN_VALUE ? 'Zoom out' : ''} placement=\"left\">\n <div\n className={classNames(styles.zoomButton, {\n [styles.zoomDisabled]: zoom === ZOOM_MIN_VALUE,\n })}\n onClick={handleZoomOut}\n >\n <ZoomOutIcon className={styles.zoomInOutIcon} />\n </div>\n </Tooltip>\n </div>\n </div>\n </div>\n );\n};\n\nexport default OffsetWellMap;\n"],"names":["isValidCoordinates","mapbox","DEFAULT_COORDS","bounds","OffsetWellMap","_ref","isViewOnly","_ref$subjectWell","subjectWell","wells","offsetWellIds","radius","handleChanageOffsetWell","_ref$handleChangeOffs","handleChangeOffsetWell","activeWellId","_ref$isClickable","isClickable","_ref$classes","classes","subjectWellCoords","useMemo","get","formationColors","getAllFormations","mapRef","useRef","radiusCircleRef","subjectIconRef","markersGroupRef","highlightMarkerRef","useState","_useState2","_slicedToArray","_useState","isSubjectWellHovered","setIsSubjectWellHovered","wellMarkers","subjectWellMarker","isActiveWellIsSubjectWell","id","prevWells","usePreviousWells","_useState4","_useState3","initBounds","setInitBounds","_useState6","_useState5","zoom","setZoom","markerMap","Map","prevOffsetWellIds","prevActiveWellId","useEffect","current","L","map","attributionControl","scrollWheelZoom","zoomControl","setView","on","getZoom","doubleClickZoom","disable","styleLayer","addTo","off","remove","removeLayer","circle","stroke","fill","fillOpacity","fillColor","className","handleHighlightMarker","currentMarker","coords","color","well","isOffsetWell","isSubjectWell","setStyle","circleMarker","addEventListener","removeFrom","featureGroup","closePopup","newMarkers","concat","showTooltip","offset","popUpContainer","document","createElement","popUpContent","WellTooltip","formation","ReactDOM","render","_jsx","_Fragment","children","popup","setLatLng","setContent","openOn","currentOffsetSet","Set","prevOffsetSet","every","size","changedWells","filter","has","length","forEach","existingMarker","includes","opacity","clear","markers","offsetWells","unSelectedWells","push","_well$topHole","topHole","coordinates","newHighlightMarker","newMarker","e","target","x","y","set","highlightMarker","setTimeout","bringToBack","fitBounds","getBounds","padding","icon","iconUrl","iconSize","iconAnchor","marker","panTo","duration","easeLinearity","handleZoomIn","classNames","styles","mapView","root","mapMain","ref","onDoubleClick","_jsxs","zoomGroup","Tooltip","title","placement","zoomButton","_defineProperty","zoomDisabled","onClick","ZoomInIcon","zoomInOutIcon","ZoomOutIcon"],"mappings":"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"}
1
+ {"version":3,"file":"OffsetWellMap.js","sources":["../../../src/components/OffsetWellMap/OffsetWellMap.js"],"sourcesContent":["import { createElement, useRef, useEffect, useState, useMemo } from 'react';\nimport ReactDOM from 'react-dom';\nimport { get } from 'lodash';\nimport classNames from 'classnames';\nimport { Tooltip } from '@material-ui/core';\nimport { Add as ZoomInIcon, Remove as ZoomOutIcon } from '@material-ui/icons';\nimport 'mapbox-gl/dist/mapbox-gl.css';\n\nimport SubjectWellIcon from './CustomIcon/SubjectWellIcon.svg';\nimport SubjectHighlightWellIcon from './CustomIcon/SubjectHighlightWellIcon.svg';\nimport { usePreviousWells } from './effects';\nimport { WellTooltip } from './WellTooltip';\nimport { getAllFormations } from './utils';\n\nimport styles from './OffsetWellMap.module.css';\n\nimport mapboxgl from '~/config/mapboxGl';\nimport { mapbox } from '~/utils';\n\nconst { isValidCoordinates } = mapbox;\nconst DEFAULT_COORDS = [29.749907, -95.358421];\nconst WELL_MARKER_SIZE = 5;\nconst HIGHLIGHT_MARKER_SIZE = 12;\nconst OFFSET_WELL_COLOR = '#03BCD4';\nconst RADIUS_CIRCLE_COLOR = '#03BCD4';\nconst HIGHLIGHT_WELL_COLOR = '#63EFFF';\nconst METERS_IN_MILE = 1609.34;\nconst ZOOM_INIT_VALUE = 3;\nconst ZOOM_MAX_VALUE = 18;\nconst ZOOM_MIN_VALUE = 1;\nconst MAX_RADIUS = 3000;\n\nconst RADIUS_SOURCE_ID = 'radius-circle';\nconst RADIUS_LAYER_ID = 'radius-circle-fill';\nconst WELLS_SOURCE_ID = 'wells';\nconst WELLS_HALO_LAYER_ID = 'wells-halo';\nconst WELLS_LAYER_ID = 'wells-circle';\nconst WELLS_ACTIVE_LAYER_ID = 'wells-active-highlight';\nconst WELLS_HOVER_LAYER_ID = 'wells-hover-highlight';\nconst EMPTY_FEATURE_COLLECTION = { type: 'FeatureCollection', features: [] };\nconst NO_HOVER_FILTER = ['==', ['id'], -1];\n\n// NOTE: Props keep the Leaflet [lat, lng] convention; mapbox-gl expects [lng, lat]\nconst toLngLat = ([lat, lng]) => [lng, lat];\n\n// NOTE: mapbox-gl circle layers are pixel-radius, so approximate the meter radius with a polygon\nconst makeCirclePolygon = ([lat, lng], radiusMeters, points = 64) => {\n const degreesLng = radiusMeters / (111320 * Math.cos((lat * Math.PI) / 180));\n const degreesLat = radiusMeters / 110574;\n const ring = [];\n for (let i = 0; i <= points; i += 1) {\n const theta = (i / points) * 2 * Math.PI;\n ring.push([lng + degreesLng * Math.cos(theta), lat + degreesLat * Math.sin(theta)]);\n }\n return { type: 'Polygon', coordinates: [ring] };\n};\n\nconst getCircleBounds = ([lat, lng], radiusMeters) => {\n const degreesLng = radiusMeters / (111320 * Math.cos((lat * Math.PI) / 180));\n const degreesLat = radiusMeters / 110574;\n return [\n [lng - degreesLng, lat - degreesLat],\n [lng + degreesLng, lat + degreesLat],\n ];\n};\n\n/** @type {React.FC<import('./OffsetWellMapProps').OffsetWellMapProps>} */\nconst OffsetWellMap = ({\n isViewOnly,\n subjectWell = null,\n wells,\n offsetWellIds,\n radius,\n handleChanageOffsetWell,\n handleChangeOffsetWell = handleChanageOffsetWell,\n activeWellId,\n isClickable = true,\n classes = {},\n}) => {\n const subjectWellCoords = useMemo(() => {\n return subjectWell && get(subjectWell, 'topHole.coordinates');\n }, [subjectWell]);\n const formationColors = useMemo(() => getAllFormations(wells), [wells]);\n\n const containerRef = useRef();\n const mapRef = useRef();\n const popupRef = useRef();\n const radiusBoundsRef = useRef(null);\n const wellsBoundsRef = useRef(null);\n const subjectIconRef = useRef();\n const wellByFeatureIdRef = useRef(new Map());\n const subjectFeatureIdRef = useRef(null);\n const hoveredFeatureIdRef = useRef(null);\n const [isSubjectWellHovered, setIsSubjectWellHovered] = useState(false);\n const isActiveWellIsSubjectWell = subjectWell?.id === activeWellId;\n const prevWells = usePreviousWells(wells);\n const [isMapReady, setIsMapReady] = useState(false);\n const [zoom, setZoom] = useState(ZOOM_INIT_VALUE);\n\n // NOTE: Initialize map\n useEffect(() => {\n const map = new mapboxgl.Map({\n container: containerRef.current,\n style: 'mapbox://styles/mapbox/dark-v9',\n center: toLngLat(DEFAULT_COORDS),\n zoom: ZOOM_INIT_VALUE,\n // NOTE: keep the zoom buttons' disable logic (zoom === ZOOM_MAX_VALUE) reachable\n maxZoom: ZOOM_MAX_VALUE,\n attributionControl: false,\n scrollZoom: false,\n doubleClickZoom: false,\n });\n mapRef.current = map;\n\n // NOTE: GL zoom is fractional where Leaflet was integer\n map.on('zoomend', () => setZoom(Math.round(map.getZoom())));\n\n // NOTE: Sources/layers can only be added after the style loads\n map.on('load', () => {\n map.addSource(RADIUS_SOURCE_ID, { type: 'geojson', data: EMPTY_FEATURE_COLLECTION });\n map.addLayer({\n id: RADIUS_LAYER_ID,\n type: 'fill',\n source: RADIUS_SOURCE_ID,\n paint: {\n 'fill-color': RADIUS_CIRCLE_COLOR,\n 'fill-opacity': 0.2,\n },\n });\n\n map.addSource(WELLS_SOURCE_ID, { type: 'geojson', data: EMPTY_FEATURE_COLLECTION });\n map.addLayer({\n id: WELLS_HALO_LAYER_ID,\n type: 'circle',\n source: WELLS_SOURCE_ID,\n filter: ['==', ['get', 'isOffsetWell'], true],\n paint: {\n 'circle-radius': HIGHLIGHT_MARKER_SIZE,\n 'circle-color': ['get', 'color'],\n 'circle-opacity': 0.08,\n },\n });\n map.addLayer({\n id: WELLS_LAYER_ID,\n type: 'circle',\n source: WELLS_SOURCE_ID,\n layout: {\n 'circle-sort-key': ['get', 'order'],\n },\n paint: {\n 'circle-radius': WELL_MARKER_SIZE,\n 'circle-color': ['get', 'color'],\n 'circle-opacity': ['get', 'opacity'],\n },\n });\n map.addLayer({\n id: WELLS_ACTIVE_LAYER_ID,\n type: 'circle',\n source: WELLS_SOURCE_ID,\n filter: ['==', ['get', 'isActive'], true],\n paint: {\n 'circle-radius': HIGHLIGHT_MARKER_SIZE,\n 'circle-color': ['get', 'color'],\n 'circle-opacity': 0.24,\n },\n });\n map.addLayer({\n id: WELLS_HOVER_LAYER_ID,\n type: 'circle',\n source: WELLS_SOURCE_ID,\n filter: NO_HOVER_FILTER,\n paint: {\n 'circle-radius': [\n 'case',\n ['get', 'isSubjectWell'],\n WELL_MARKER_SIZE,\n HIGHLIGHT_MARKER_SIZE,\n ],\n 'circle-color': [\n 'case',\n ['get', 'isSubjectWell'],\n HIGHLIGHT_WELL_COLOR,\n ['get', 'color'],\n ],\n 'circle-opacity': 0.24,\n },\n });\n\n setIsMapReady(true);\n });\n\n return () => {\n map.remove();\n mapRef.current = null;\n popupRef.current = null;\n subjectIconRef.current = null;\n radiusBoundsRef.current = null;\n wellsBoundsRef.current = null;\n };\n }, []);\n\n // NOTE: Radius circle\n useEffect(() => {\n radiusBoundsRef.current =\n subjectWellCoords && radius\n ? getCircleBounds(subjectWellCoords, radius * METERS_IN_MILE)\n : null;\n\n const map = mapRef.current;\n if (!map || !isMapReady) {\n return;\n }\n\n map.getSource(RADIUS_SOURCE_ID).setData(\n subjectWellCoords && radius\n ? {\n type: 'Feature',\n properties: {},\n geometry: makeCirclePolygon(subjectWellCoords, radius * METERS_IN_MILE),\n }\n : EMPTY_FEATURE_COLLECTION\n );\n }, [radius, subjectWellCoords, isMapReady]);\n\n const showTooltip = (well, isOffsetWell, isSubjectWell, coords) => {\n const popUpContainer = document.createElement('div');\n const popUpContent = createElement(WellTooltip(), {\n isViewOnly,\n well,\n color: get(formationColors, well.formation, '#BDBDBD'),\n isOffsetWell,\n isSubjectWell,\n isClickable,\n });\n ReactDOM.render(<>{popUpContent}</>, popUpContainer);\n if (!popupRef.current) {\n popupRef.current = new mapboxgl.Popup({\n closeButton: false,\n offset: HIGHLIGHT_MARKER_SIZE,\n });\n }\n popupRef.current\n .setLngLat(toLngLat(coords))\n .setDOMContent(popUpContainer)\n .addTo(mapRef.current);\n };\n\n // NOTE: Subject well hover swaps the subject marker color\n useEffect(() => {\n const map = mapRef.current;\n if (!map || !isMapReady) {\n return;\n }\n\n map.setPaintProperty(\n WELLS_LAYER_ID,\n 'circle-color',\n isSubjectWellHovered\n ? ['case', ['get', 'isSubjectWell'], HIGHLIGHT_WELL_COLOR, ['get', 'color']]\n : ['get', 'color']\n );\n }, [isSubjectWellHovered, isMapReady]);\n\n // NOTE: Well markers\n useEffect(() => {\n if (!wells || !offsetWellIds) {\n return undefined;\n }\n\n popupRef.current?.remove();\n\n const offsetWells = [];\n const unSelectedWells = [];\n wells.forEach(well => {\n if (well.id !== subjectWell?.id) {\n if (offsetWellIds.includes(well.id)) {\n offsetWells.push(well);\n } else {\n unSelectedWells.push(well);\n }\n }\n });\n const sortedWells = [...unSelectedWells, ...offsetWells, subjectWell];\n\n const features = [];\n const wellsBounds = new mapboxgl.LngLatBounds();\n wellByFeatureIdRef.current.clear();\n subjectFeatureIdRef.current = null;\n sortedWells.forEach((well, index) => {\n const coords = well?.topHole?.coordinates;\n\n if (coords && isValidCoordinates(coords)) {\n const isSubjectWell = subjectWell?.id === well.id;\n const isOffsetWell = offsetWellIds.includes(well.id) && !isSubjectWell;\n const color = isSubjectWell\n ? OFFSET_WELL_COLOR\n : get(formationColors, well.formation, '#BDBDBD');\n const opacity = isOffsetWell ? 0.7 : 0.3;\n\n features.push({\n type: 'Feature',\n id: index,\n geometry: { type: 'Point', coordinates: toLngLat(coords) },\n properties: {\n color,\n opacity: isSubjectWell ? 1 : opacity,\n isSubjectWell,\n isOffsetWell,\n isActive: well.id === activeWellId && !isActiveWellIsSubjectWell,\n order: index,\n },\n });\n wellByFeatureIdRef.current.set(index, { well, coords, isOffsetWell, isSubjectWell });\n if (isSubjectWell) {\n subjectFeatureIdRef.current = index;\n }\n wellsBounds.extend(toLngLat(coords));\n }\n });\n wellsBoundsRef.current = features.length ? wellsBounds : null;\n\n const map = mapRef.current;\n if (!map || !isMapReady) {\n return undefined;\n }\n\n map.getSource(WELLS_SOURCE_ID).setData({ type: 'FeatureCollection', features });\n map.setFilter(WELLS_HOVER_LAYER_ID, NO_HOVER_FILTER);\n hoveredFeatureIdRef.current = null;\n\n const handleMouseMove = e => {\n const feature = e.features?.[0];\n if (!feature || hoveredFeatureIdRef.current === feature.id) {\n return;\n }\n const entry = wellByFeatureIdRef.current.get(feature.id);\n if (!entry) {\n return;\n }\n\n hoveredFeatureIdRef.current = feature.id;\n map.getCanvas().style.cursor = 'pointer';\n\n // Highlight\n map.setFilter(WELLS_HOVER_LAYER_ID, ['==', ['id'], feature.id]);\n showTooltip(entry.well, entry.isOffsetWell, entry.isSubjectWell, entry.coords);\n if (entry.isSubjectWell) {\n setIsSubjectWellHovered(true);\n }\n };\n\n const handleMouseLeave = e => {\n // NOTE: Leaflet cleared hover on leaving the ENLARGED highlight marker, so keep the\n // hover while the cursor is still over the hover halo (or another well marker)\n if (\n e?.point &&\n map.queryRenderedFeatures(e.point, { layers: [WELLS_LAYER_ID, WELLS_HOVER_LAYER_ID] })\n .length\n ) {\n return;\n }\n const wasSubjectWell =\n hoveredFeatureIdRef.current !== null &&\n hoveredFeatureIdRef.current === subjectFeatureIdRef.current;\n hoveredFeatureIdRef.current = null;\n map.getCanvas().style.cursor = '';\n map.setFilter(WELLS_HOVER_LAYER_ID, NO_HOVER_FILTER);\n popupRef.current?.remove();\n if (wasSubjectWell) {\n setIsSubjectWellHovered(false);\n }\n };\n\n const handleClick = e => {\n if (isViewOnly) return;\n const entry = wellByFeatureIdRef.current.get(e.features?.[0]?.id);\n if (!entry) {\n return;\n }\n handleChangeOffsetWell(entry.well, !entry.isOffsetWell);\n };\n\n map.on('mousemove', WELLS_LAYER_ID, handleMouseMove);\n map.on('mouseleave', WELLS_LAYER_ID, handleMouseLeave);\n map.on('mouseleave', WELLS_HOVER_LAYER_ID, handleMouseLeave);\n map.on('click', WELLS_LAYER_ID, handleClick);\n\n setTimeout(() => {\n if (radius < MAX_RADIUS && mapRef.current && radiusBoundsRef.current && wells !== prevWells) {\n mapRef.current.fitBounds(radiusBoundsRef.current, { padding: 5 });\n }\n }, 500);\n\n return () => {\n map.off('mousemove', WELLS_LAYER_ID, handleMouseMove);\n map.off('mouseleave', WELLS_LAYER_ID, handleMouseLeave);\n map.off('mouseleave', WELLS_HOVER_LAYER_ID, handleMouseLeave);\n map.off('click', WELLS_LAYER_ID, handleClick);\n };\n }, [subjectWell, wells, offsetWellIds, activeWellId, isMapReady]);\n\n // NOTE: Subject Well Icon\n\n useEffect(() => {\n const map = mapRef.current;\n\n if (subjectIconRef.current) {\n subjectIconRef.current.remove();\n subjectIconRef.current = null;\n }\n\n if (!map || !subjectWellCoords) return;\n\n const isHighlighted = isSubjectWellHovered || isActiveWellIsSubjectWell;\n const icon = document.createElement('img');\n icon.src = isHighlighted ? SubjectHighlightWellIcon : SubjectWellIcon;\n const [iconWidth, iconHeight] = isHighlighted ? [70, 20] : [62, 12];\n const [anchorX, anchorY] = isHighlighted ? [35, 29] : [31, 25];\n icon.width = iconWidth;\n icon.height = iconHeight;\n\n icon.addEventListener('mouseover', () => {\n setIsSubjectWellHovered(true);\n\n // Highlight\n if (subjectFeatureIdRef.current !== null && map.getLayer(WELLS_HOVER_LAYER_ID)) {\n hoveredFeatureIdRef.current = subjectFeatureIdRef.current;\n map.setFilter(WELLS_HOVER_LAYER_ID, ['==', ['id'], subjectFeatureIdRef.current]);\n }\n showTooltip(subjectWell, false, true, subjectWellCoords);\n });\n\n icon.addEventListener('mouseout', () => {\n hoveredFeatureIdRef.current = null;\n if (map.getLayer(WELLS_HOVER_LAYER_ID)) {\n map.setFilter(WELLS_HOVER_LAYER_ID, NO_HOVER_FILTER);\n }\n popupRef.current?.remove();\n setIsSubjectWellHovered(false);\n });\n\n subjectIconRef.current = new mapboxgl.Marker({\n element: icon,\n anchor: 'center',\n // NOTE: Leaflet anchored the icon at [anchorX, anchorY] from its top-left corner\n offset: [iconWidth / 2 - anchorX, iconHeight / 2 - anchorY],\n })\n .setLngLat(toLngLat(subjectWellCoords))\n .addTo(map);\n }, [isSubjectWellHovered, subjectWellCoords, radius, subjectWell, isActiveWellIsSubjectWell]);\n\n // NOTE: Map Update\n useEffect(() => {\n if (radius > MAX_RADIUS) {\n mapRef.current.setZoom(1);\n return;\n }\n setTimeout(() => {\n if (subjectWell) {\n if (mapRef.current && radiusBoundsRef.current && radius) {\n mapRef.current.fitBounds(radiusBoundsRef.current, { padding: 5 });\n }\n } else if (mapRef.current && wellsBoundsRef.current) {\n mapRef.current.fitBounds(wellsBoundsRef.current);\n }\n if (subjectWellCoords && mapRef.current) {\n mapRef.current.easeTo({ center: toLngLat(subjectWellCoords), duration: 700 });\n }\n }, 500);\n }, [radius, subjectWell, subjectWellCoords]);\n\n const handleZoomIn = () => {\n mapRef.current.setZoom(zoom + 1);\n };\n\n const handleZoomOut = () => {\n if (zoom > 1) {\n mapRef.current.setZoom(zoom - 1);\n }\n };\n\n return (\n <div className={classNames(styles.mapView, classes.root)}>\n <div\n className={classNames(styles.mapMain, classes.map)}\n ref={containerRef}\n onDoubleClick={handleZoomIn}\n >\n <div className={styles.zoomGroup}>\n <Tooltip title={zoom < ZOOM_MAX_VALUE ? 'Zoom in' : ''} placement=\"left\">\n <div\n className={classNames(styles.zoomButton, {\n [styles.zoomDisabled]: zoom === ZOOM_MAX_VALUE,\n })}\n onClick={handleZoomIn}\n >\n <ZoomInIcon className={styles.zoomInOutIcon} />\n </div>\n </Tooltip>\n <Tooltip title={zoom > ZOOM_MIN_VALUE ? 'Zoom out' : ''} placement=\"left\">\n <div\n className={classNames(styles.zoomButton, {\n [styles.zoomDisabled]: zoom === ZOOM_MIN_VALUE,\n })}\n onClick={handleZoomOut}\n >\n <ZoomOutIcon className={styles.zoomInOutIcon} />\n </div>\n </Tooltip>\n </div>\n </div>\n </div>\n );\n};\n\nexport default OffsetWellMap;\n"],"names":["isValidCoordinates","mapbox","DEFAULT_COORDS","EMPTY_FEATURE_COLLECTION","type","features","NO_HOVER_FILTER","toLngLat","_ref","_ref2","_slicedToArray","lat","makeCirclePolygon","_ref3","radiusMeters","_ref4","lng","points","degreesLng","Math","cos","PI","degreesLat","ring","i","theta","push","sin","coordinates","OffsetWellMap","_ref7","isViewOnly","_ref7$subjectWell","subjectWell","wells","offsetWellIds","radius","handleChanageOffsetWell","_ref7$handleChangeOff","handleChangeOffsetWell","activeWellId","_ref7$isClickable","isClickable","_ref7$classes","classes","subjectWellCoords","useMemo","get","formationColors","getAllFormations","containerRef","useRef","mapRef","popupRef","radiusBoundsRef","wellsBoundsRef","subjectIconRef","wellByFeatureIdRef","Map","subjectFeatureIdRef","hoveredFeatureIdRef","useState","_useState2","_useState","isSubjectWellHovered","setIsSubjectWellHovered","isActiveWellIsSubjectWell","id","prevWells","usePreviousWells","_useState4","_useState3","isMapReady","setIsMapReady","_useState6","_useState5","zoom","setZoom","useEffect","map","mapboxgl","container","current","style","center","maxZoom","attributionControl","scrollZoom","doubleClickZoom","on","round","getZoom","addSource","data","addLayer","source","paint","filter","layout","remove","_ref6","getSource","setData","properties","geometry","showTooltip","well","isOffsetWell","isSubjectWell","coords","popUpContainer","document","createElement","popUpContent","WellTooltip","color","formation","ReactDOM","render","_jsx","_Fragment","children","Popup","closeButton","offset","setLngLat","setDOMContent","addTo","setPaintProperty","_popupRef$current","offsetWells","unSelectedWells","forEach","includes","sortedWells","wellsBounds","LngLatBounds","clear","index","_well$topHole","topHole","opacity","isActive","order","set","extend","length","setFilter","handleMouseMove","e","_e$features","feature","entry","getCanvas","cursor","handleMouseLeave","_popupRef$current2","point","queryRenderedFeatures","layers","wasSubjectWell","handleClick","_e$features2","_e$features2$","setTimeout","fitBounds","padding","off","isHighlighted","icon","src","_ref9","iconWidth","iconHeight","_ref11","anchorX","anchorY","width","height","addEventListener","getLayer","_popupRef$current3","Marker","element","anchor","easeTo","duration","handleZoomIn","className","classNames","styles","mapView","root","mapMain","ref","onDoubleClick","_jsxs","zoomGroup","Tooltip","title","placement","zoomButton","_defineProperty","zoomDisabled","onClick","ZoomInIcon","zoomInOutIcon","ZoomOutIcon"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import e from'./../../ext-esm/style-inject/dist/style-inject.es.js';var o={mapView:"OffsetWellMap-module_mapView__EwhHO",zoomGroup:"OffsetWellMap-module_zoomGroup__qCVgz",zoomButton:"OffsetWellMap-module_zoomButton__oZIkU",zoomDisabled:"OffsetWellMap-module_zoomDisabled__60g-G",zoomInOutIcon:"OffsetWellMap-module_zoomInOutIcon__tUzKY",mapMain:"OffsetWellMap-module_mapMain__IYEA1"};e(".OffsetWellMap-module_mapView__EwhHO{width:100%}.OffsetWellMap-module_zoomGroup__qCVgz{bottom:12px;display:flex;flex-direction:column;gap:4px;position:absolute;right:12px;z-index:9}.OffsetWellMap-module_zoomButton__oZIkU{align-items:center;background:var(--palette-background-b-6);border-radius:4px;color:var(--palette-primary-text-6);cursor:pointer;display:flex;font-size:22px;height:32px;justify-content:center;text-align:center;user-select:none;width:32px}.OffsetWellMap-module_zoomButton__oZIkU:hover{background:var(--palette-background-b-7);color:#fff}.OffsetWellMap-module_zoomDisabled__60g-G{cursor:not-allowed}.OffsetWellMap-module_zoomDisabled__60g-G:hover{background:var(--palette-background-b-6);color:var(--palette-primary-text-6)}.OffsetWellMap-module_zoomInOutIcon__tUzKY{font-size:1rem!important}.OffsetWellMap-module_mapMain__IYEA1{background-color:var(--palette-background-b-9);border:1px solid var(--palette-background-b-9);border-radius:4px;flex:100;height:200px;position:relative;width:100%}.OffsetWellMap-module_mapView__EwhHO .leaflet-popup{left:0!important;top:0!important;transform:none!important}.OffsetWellMap-module_mapView__EwhHO .leaflet-popup-content-wrapper{background-color:transparent;border-radius:4px;opacity:.9}.OffsetWellMap-module_mapView__EwhHO .leaflet-popup-content{padding:8px}.OffsetWellMap-module_mapView__EwhHO .leaflet-popup-close-button,.OffsetWellMap-module_mapView__EwhHO .leaflet-popup-tip{display:none}.OffsetWellMap-module_mapView__EwhHO .leaflet-control-zoom{background:none;border:none;box-shadow:none}.OffsetWellMap-module_mapView__EwhHO .leaflet-control-zoom a{align-items:center;background:var(--palette-background-b-6);border-radius:4px;color:var(--palette-primary-text-6);content:unset;display:flex;font-size:20px;height:30px;justify-content:center;margin-top:4px;opacity:1;text-align:center;text-indent:unset;width:30px}.OffsetWellMap-module_mapView__EwhHO .leaflet-control-zoom a:hover{background:var(--palette-background-b-7);border-radius:4px;color:var(--palette-primary-text-1)}.OffsetWellMap-module_mapView__EwhHO .leaflet-touch .leaflet-bar,.OffsetWellMap-module_mapView__EwhHO .leaflet-touch .leaflet-control-layers{background-clip:padding-box;border:0 solid transparent}");export{o as default};
1
+ import e from'./../../ext-esm/style-inject/dist/style-inject.es.js';var o={mapView:"OffsetWellMap-module_mapView__EwhHO",zoomGroup:"OffsetWellMap-module_zoomGroup__qCVgz",zoomButton:"OffsetWellMap-module_zoomButton__oZIkU",zoomDisabled:"OffsetWellMap-module_zoomDisabled__60g-G",zoomInOutIcon:"OffsetWellMap-module_zoomInOutIcon__tUzKY",mapMain:"OffsetWellMap-module_mapMain__IYEA1"};e(".OffsetWellMap-module_mapView__EwhHO{width:100%}.OffsetWellMap-module_zoomGroup__qCVgz{bottom:12px;display:flex;flex-direction:column;gap:4px;position:absolute;right:12px;z-index:9}.OffsetWellMap-module_zoomButton__oZIkU{align-items:center;background:var(--palette-background-b-6);border-radius:4px;color:var(--palette-primary-text-6);cursor:pointer;display:flex;font-size:22px;height:32px;justify-content:center;text-align:center;user-select:none;width:32px}.OffsetWellMap-module_zoomButton__oZIkU:hover{background:var(--palette-background-b-7);color:#fff}.OffsetWellMap-module_zoomDisabled__60g-G{cursor:not-allowed}.OffsetWellMap-module_zoomDisabled__60g-G:hover{background:var(--palette-background-b-6);color:var(--palette-primary-text-6)}.OffsetWellMap-module_zoomInOutIcon__tUzKY{font-size:1rem!important}.OffsetWellMap-module_mapMain__IYEA1{background-color:var(--palette-background-b-9);border:1px solid var(--palette-background-b-9);border-radius:4px;flex:100;height:200px;position:relative;width:100%}.OffsetWellMap-module_mapView__EwhHO .mapboxgl-popup-content{background-color:transparent;box-shadow:none;opacity:.9;padding:0}.OffsetWellMap-module_mapView__EwhHO .mapboxgl-popup-tip{display:none}");export{o as default};
2
2
  //# sourceMappingURL=OffsetWellMap.module.css.js.map
@@ -1,2 +1,2 @@
1
- import o from'./../../ext-esm/style-inject/dist/style-inject.es.js';var l={wellTooltip:"WellTooltip-module_wellTooltip__-U3-H",commonItem:"WellTooltip-module_commonItem__NxlCt",wellName:"WellTooltip-module_wellName__vrUth",tooltipItem:"WellTooltip-module_tooltipItem__FFmW9",unit:"WellTooltip-module_unit__qbuWG",formationItem:"WellTooltip-module_formationItem__JK-Vs",formation:"WellTooltip-module_formation__9geyr",info:"WellTooltip-module_info__hvxAd",infoIcon:"WellTooltip-module_infoIcon__tsnME",blockIcon:"WellTooltip-module_blockIcon__t7NSY",infoLabel:"WellTooltip-module_infoLabel__4FPIc"};o(".WellTooltip-module_wellTooltip__-U3-H{background-color:var(--palette-background-b-8);border-radius:4px;color:var(--palette-primary-text-1);display:flex;flex-direction:column;font-family:Roboto;font-style:normal;gap:4px;min-width:180px;padding:8px;position:absolute;width:fit-content}.WellTooltip-module_commonItem__NxlCt{max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.WellTooltip-module_wellName__vrUth{font-size:12px;font-weight:400;line-height:16px;padding-bottom:4px}.WellTooltip-module_tooltipItem__FFmW9{font-size:14px;font-weight:400;line-height:20px}.WellTooltip-module_unit__qbuWG{color:var(--palette-primary-text-6);font-size:12px;font-weight:400;line-height:14px}.WellTooltip-module_formationItem__JK-Vs{align-items:center;display:flex;flex-direction:row;font-size:14px;font-weight:400;line-height:20px}.WellTooltip-module_formation__9geyr{border-radius:50%;height:8px;margin-left:8px;margin-right:4px;width:8px}.WellTooltip-module_info__hvxAd{align-items:center;display:flex;flex-direction:row;gap:4px;padding-top:8px}.WellTooltip-module_infoIcon__tsnME{color:#64b5f6!important;font-size:16px!important;position:relative!important}.WellTooltip-module_blockIcon__t7NSY{color:#dadada!important;font-size:16px!important;position:relative!important}.WellTooltip-module_infoLabel__4FPIc{color:var(--palette-primary-text-6);font-size:12px;font-weight:400;line-height:16px}");export{l as default};
1
+ import o from'./../../ext-esm/style-inject/dist/style-inject.es.js';var l={wellTooltip:"WellTooltip-module_wellTooltip__-U3-H",commonItem:"WellTooltip-module_commonItem__NxlCt",wellName:"WellTooltip-module_wellName__vrUth",tooltipItem:"WellTooltip-module_tooltipItem__FFmW9",unit:"WellTooltip-module_unit__qbuWG",formationItem:"WellTooltip-module_formationItem__JK-Vs",formation:"WellTooltip-module_formation__9geyr",info:"WellTooltip-module_info__hvxAd",infoIcon:"WellTooltip-module_infoIcon__tsnME",blockIcon:"WellTooltip-module_blockIcon__t7NSY",infoLabel:"WellTooltip-module_infoLabel__4FPIc"};o(".WellTooltip-module_wellTooltip__-U3-H{background-color:var(--palette-background-b-8);border-radius:4px;color:var(--palette-primary-text-1);display:flex;flex-direction:column;font-family:Roboto;font-style:normal;gap:4px;min-width:180px;padding:8px;width:fit-content}.WellTooltip-module_commonItem__NxlCt{max-width:300px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.WellTooltip-module_wellName__vrUth{font-size:12px;font-weight:400;line-height:16px;padding-bottom:4px}.WellTooltip-module_tooltipItem__FFmW9{font-size:14px;font-weight:400;line-height:20px}.WellTooltip-module_unit__qbuWG{color:var(--palette-primary-text-6);font-size:12px;font-weight:400;line-height:14px}.WellTooltip-module_formationItem__JK-Vs{align-items:center;display:flex;flex-direction:row;font-size:14px;font-weight:400;line-height:20px}.WellTooltip-module_formation__9geyr{border-radius:50%;height:8px;margin-left:8px;margin-right:4px;width:8px}.WellTooltip-module_info__hvxAd{align-items:center;display:flex;flex-direction:row;gap:4px;padding-top:8px}.WellTooltip-module_infoIcon__tsnME{color:#64b5f6!important;font-size:16px!important;position:relative!important}.WellTooltip-module_blockIcon__t7NSY{color:#dadada!important;font-size:16px!important;position:relative!important}.WellTooltip-module_infoLabel__4FPIc{color:var(--palette-primary-text-6);font-size:12px;font-weight:400;line-height:16px}");export{l as default};
2
2
  //# sourceMappingURL=WellTooltip.module.css.js.map
@@ -1,2 +1,2 @@
1
- import a from'./../../../../ext-esm/style-inject/dist/style-inject.es.js';var e={map:"Map_map__cq-fM",mapMain:"Map_mapMain__llG4C",mapFooter:"Map_mapFooter__0m62e",mapFooterItem:"Map_mapFooterItem__wJdaF",mapFooterItemSquare:"Map_mapFooterItemSquare__UjAeE",mapFooterItemLabel:"Map_mapFooterItemLabel__jKEkY"};a(".Map_map__cq-fM{width:100%}.Map_mapMain__llG4C{background-color:#414141;border-radius:4px;flex:100;height:250px;width:100%}.Map_mapFooter__0m62e{display:flex;flex:1;flex-wrap:wrap;padding-bottom:5px;padding-top:5px}.Map_mapFooterItem__wJdaF{align-items:center;display:flex;margin-right:10px;white-space:nowrap}.Map_mapFooterItemSquare__UjAeE{border-radius:50%;height:8px;margin-right:5px;width:8px}.Map_mapFooterItemLabel__jKEkY{color:#ccc;font-size:11px}.Map_map__cq-fM .leaflet-popup-content-wrapper{background-color:#414141;border-radius:4px;box-shadow:0 5px 5px rgba(0,0,0,.2),0 3px 14px rgba(0,0,0,.12),0 8px 10px rgba(0,0,0,.14)}.Map_map__cq-fM .leaflet-popup-content{padding:10px 16px;width:420px!important}.Map_map__cq-fM .leaflet-popup-close-button,.Map_map__cq-fM .leaflet-popup-tip{display:none}.Map_map__cq-fM .leaflet-control-zoom{background:none;border:none;box-shadow:none}.Map_map__cq-fM .leaflet-control-zoom a{background-image:none;background:#272727;color:#bdbdbd}.Map_map__cq-fM .leaflet-control-zoom a,.Map_map__cq-fM .leaflet-control-zoom a:hover{align-items:center;border-radius:4px;content:unset;display:flex;font-size:22px;height:32px;justify-content:center;margin-top:4px;opacity:1;text-align:center;text-indent:unset;width:32px}.Map_map__cq-fM .leaflet-control-zoom a:hover{background:#303030;background-image:none;color:#fff}.Map_map__cq-fM .leaflet-touch .leaflet-bar,.Map_map__cq-fM .leaflet-touch .leaflet-control-layers{background-clip:padding-box;border:0 solid transparent}");export{e as default};
1
+ import p from'./../../../../ext-esm/style-inject/dist/style-inject.es.js';var a={map:"Map_map__cq-fM",mapMain:"Map_mapMain__llG4C",mapFooter:"Map_mapFooter__0m62e",mapFooterItem:"Map_mapFooterItem__wJdaF",mapFooterItemSquare:"Map_mapFooterItemSquare__UjAeE",mapFooterItemLabel:"Map_mapFooterItemLabel__jKEkY"};p(".Map_map__cq-fM{width:100%}.Map_mapMain__llG4C{background-color:#414141;border-radius:4px;flex:100;height:250px;width:100%}.Map_mapFooter__0m62e{display:flex;flex:1;flex-wrap:wrap;padding-bottom:5px;padding-top:5px}.Map_mapFooterItem__wJdaF{align-items:center;display:flex;margin-right:10px;white-space:nowrap}.Map_mapFooterItemSquare__UjAeE{border-radius:50%;height:8px;margin-right:5px;width:8px}.Map_mapFooterItemLabel__jKEkY{color:#ccc;font-size:11px}.Map_map__cq-fM .mapboxgl-popup-content{background-color:#414141;border-radius:4px;box-shadow:0 5px 5px rgba(0,0,0,.2),0 3px 14px rgba(0,0,0,.12),0 8px 10px rgba(0,0,0,.14);padding:10px 16px;width:420px!important}.Map_map__cq-fM .mapboxgl-popup-tip{display:none}.Map_map__cq-fM .mapboxgl-ctrl-group{background:none;border:none;box-shadow:none}.Map_map__cq-fM .mapboxgl-ctrl-group button{background:#272727;border:none;border-radius:4px;height:32px;margin-top:4px;width:32px}.Map_map__cq-fM .mapboxgl-ctrl-group button .mapboxgl-ctrl-icon{filter:invert(.8)}.Map_map__cq-fM .mapboxgl-ctrl-group button:hover{background:#303030}.Map_map__cq-fM .mapboxgl-ctrl-group button:hover .mapboxgl-ctrl-icon{filter:invert(1)}");export{a as default};
2
2
  //# sourceMappingURL=Map.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Map.d.ts","sourceRoot":"","sources":["../../../../../src/components/OffsetWellPickerV2/components/Map/Map.js"],"names":[],"mappings":";;AAsCA;;;;;;;;;gBAyOC;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBA7QqB,YAAY;AAgBlC,gDAAyC,EAAE,CAAC;AAC5C,wCAAiC,CAAC,CAAC"}
1
+ {"version":3,"file":"Map.d.ts","sourceRoot":"","sources":["../../../../../src/components/OffsetWellPickerV2/components/Map/Map.js"],"names":[],"mappings":";;AAuDA;;;;;;;;;gBAqRC;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBA1UqB,YAAY;AAelC,gDAAyC,EAAE,CAAC;AAC5C,wCAAiC,CAAC,CAAC"}
@@ -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 i,useEffect as n,createElement as s}from"react";import a from"react-dom";import c from"prop-types";import l from"mapbox.js";import{get as u,sortBy as m}from"lodash";import{MuiThemeProvider as p}from"@material-ui/core/styles";import{usePrevious as h}from"../../effects/index.js";import d from"./Map.css.js";import{mapbox as f}from"../../../../utils/index.js";import{darkTheme as g}from"../../../../config/theme/index.js";import"@babel/runtime/helpers/asyncToGenerator";import"@babel/runtime/helpers/typeof";import"@babel/runtime/regenerator";import"highcharts-v8";import"highcharts-v8/highcharts-more";import"highcharts-v8/modules/solid-gauge";import"highcharts-v8/modules/heatmap";import"highcharts-v8/modules/boost";import"highcharts-v8/modules/exporting";import"highcharts-v8/modules/xrange";import"highcharts-v8/modules/dumbbell";import"highcharts-v8/modules/pattern-fill";import"highcharts-v8/modules/annotations";import"highcharts-multicolor-series-v8";import"highcharts";import"highcharts/highcharts-more";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"highcharts/modules/annotations";import"highcharts-multicolor-series";import"dompurify";import"../../../../config/mapbox/index.js";import"../../../../clients/subscriptions/constants.js";import"../../../../clients/subscriptions.v1.js";import"../../../../clients/subscriptions/subscriptions-client.factory.js";import"../../../../config/extendNative.js";import{jsx as b,jsxs as v}from"react/jsx-runtime";function F(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?F(Object(o),!0).forEach((function(t){r(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):F(Object(o)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(o,r))}))}return e}var j=f.isValidCoordinates,O=["#FF00FF","#F5BD80","#FF0000","#0080FF","#FF8000","#58ACFA","#FA58F4","#40FF00","#4B8A08","#40FF00","#D8F781"],x=[29.749907,-95.358421];function k(t){var c=t.subjectWell,f=t.wells,F=t.offsetWells,k=t.radius,N=t.subjectWellMarkerSize,P=t.wellMarkerSize,w=t.popUpFormatter,B=t.coordsDataPath,S=o(null),T=o(null),W=o(null),C=h(f),D=i((function(){return f.filter((function(r){return!c||c.id!==r.id}))}),[c,f]),M=i((function(){return c&&u(c,B)}),[c,B]),z=i((function(){var e=[],t=!1;D.forEach((function(r){"Null"===r.formation?t=!0:c&&c.formation===r.formation||e.includes(r.formation)||e.push(r.formation)}));var o=c?[c.formation].concat(m(e)):m(e);t&&!o.includes("Null")&&o.push("Null");var i=o.reduce((function(e,t,o){return y(y({},e),{},r({},t,O[o%O.length]))}),{});return[o,i]}),[c,D]),L=e(z,2),E=L[0],I=L[1];return n((function(){S.current=l.mapbox.map(S.current,null,{attributionControl:!1,scrollWheelZoom:!1,zoomControl:!1}).setView(x,1),l.control.zoom({position:"bottomright"}).addTo(S.current),l.mapbox.styleLayer("mapbox://styles/mapbox/dark-v9").addTo(S.current);var r=S.current;return function(){r.off("layerremove"),r.remove(),S.current=null,T.current=null,W.current=null}}),[]),n((function(){S.current&&(T.current&&S.current.removeLayer(T.current),M?(T.current=l.circle(M,1609.34*k,{stroke:!1,fill:!0,fillOpacity:.2,fillColor:"#03BCD4",className:"circle_500"}),T.current.addTo(S.current)):T.current=null)}),[k,M]),n((function(){if(S.current){S.current.closePopup(),W.current&&W.current.removeFrom(S.current);var r=F.map((function(r){return r.id})),e=[];f.forEach((function(t){var o=u(t,B);if(o&&j(o)){var i=c&&c.id===t.id,n=r.includes(t.id),m=i?N:P,h=i||n?"#00FFFF":I[t.formation],d=i||n?1:.3,f=l.circleMarker(o,{radius:m,stroke:!1,fill:!0,fillOpacity:d,fillColor:h,className:"circle_500"});f.addEventListener("mouseover",(function(){if(w){var r=document.createElement("div"),e=s(w,{well:t,color:I[t.formation]});a.render(b(p,{theme:g,children:e}),r),l.popup().setLatLng(o).setContent(r).openOn(S.current)}})),e.push(f)}})),e.length&&(W.current=l.featureGroup(e),W.current.addTo(S.current)),setTimeout((function(){T.current&&T.current.bringToBack(),S.current&&T.current&&f!==C&&S.current.fitBounds(T.current.getBounds(),{padding:[5,5]})}),500)}}),[c,f,F,I]),n((function(){setTimeout((function(){T.current&&T.current.bringToBack(),c?S.current&&T.current&&S.current.fitBounds(T.current.getBounds(),{padding:[5,5]}):S.current&&W.current&&S.current.fitBounds(W.current.getBounds())}),500)}),[k,c]),v("div",{className:d.map,children:[b("div",{className:d.mapMain,ref:S}),v("div",{className:d.mapFooter,children:[F&&v("div",{className:d.mapFooterItem,children:[b("div",{className:d.mapFooterItemSquare,style:{backgroundColor:"#00FFFF"}}),b("div",{className:d.mapFooterItemLabel,children:"Selected Offset Wells"})]}),E.map((function(r){return v("div",{className:d.mapFooterItem,children:[b("div",{className:d.mapFooterItemSquare,style:{backgroundColor:I[r]}}),b("div",{className:d.mapFooterItemLabel,children:r})]},r)}))]})]})}k.propTypes={subjectWell:c.shape({id:c.number,formation:c.string}),wells:c.arrayOf(c.shape({})).isRequired,offsetWells:c.arrayOf(c.shape({})),radius:c.number.isRequired,subjectWellMarkerSize:c.number,wellMarkerSize:c.number,popUpFormatter:c.func,coordsDataPath:c.string},k.defaultProps={subjectWell:null,subjectWellMarkerSize:10,wellMarkerSize:5,popUpFormatter:null,coordsDataPath:"settings.top_hole.coordinates",offsetWells:null};var N=t(k);export{N as default};
1
+ import r from"@babel/runtime/helpers/defineProperty";import e from"@babel/runtime/helpers/slicedToArray";import{memo as t,useRef as o,useState as i,useMemo as n,useEffect as a,createElement as l}from"react";import s from"react-dom";import c from"prop-types";import{get as u,sortBy as m}from"lodash";import{MuiThemeProvider as p}from"@material-ui/core/styles";import d from"./Map.css.js";import{mapbox as h}from"../../../../utils/index.js";import{darkTheme as f}from"../../../../config/theme/index.js";import"@babel/runtime/helpers/asyncToGenerator";import"@babel/runtime/helpers/typeof";import"@babel/runtime/regenerator";import"highcharts-v8";import"highcharts-v8/highcharts-more";import"highcharts-v8/modules/solid-gauge";import"highcharts-v8/modules/heatmap";import"highcharts-v8/modules/boost";import"highcharts-v8/modules/exporting";import"highcharts-v8/modules/xrange";import"highcharts-v8/modules/dumbbell";import"highcharts-v8/modules/pattern-fill";import"highcharts-v8/modules/annotations";import"highcharts-multicolor-series-v8";import"highcharts";import"highcharts/highcharts-more";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"highcharts/modules/annotations";import"highcharts-multicolor-series";import"dompurify";import"@babel/runtime/helpers/createClass";import"@babel/runtime/helpers/classCallCheck";import"@babel/runtime/helpers/assertThisInitialized";import"@babel/runtime/helpers/inherits";import"@babel/runtime/helpers/possibleConstructorReturn";import"@babel/runtime/helpers/getPrototypeOf";import"@babel/runtime/helpers/toArray";import"@babel/runtime/helpers/toConsumableArray";import"../../../../clients/subscriptions/constants.js";import"../../../../clients/subscriptions.v1.js";import"../../../../clients/subscriptions/subscriptions-client.factory.js";import"../../../../config/extendNative.js";import"../../../../config/mapboxGl/index.js";import"mapbox-gl/dist/mapbox-gl.css";import{jsxs as g,jsx as b}from"react/jsx-runtime";import v from"mapbox-gl";function y(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 F(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?y(Object(o),!0).forEach((function(t){r(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):y(Object(o)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(o,r))}))}return e}var j=h.isValidCoordinates,w=["#FF00FF","#F5BD80","#FF0000","#0080FF","#FF8000","#58ACFA","#FA58F4","#40FF00","#4B8A08","#40FF00","#D8F781"],O=[29.749907,-95.358421],x={type:"FeatureCollection",features:[]},C=function(r){var t=e(r,2),o=t[0];return[t[1],o]};function P(t){var c=t.subjectWell,h=t.wells,y=t.offsetWells,P=t.radius,S=t.subjectWellMarkerSize,M=t.wellMarkerSize,D=t.popUpFormatter,N=t.coordsDataPath,k=o(null),I=o(null),W=o(null),L=o(null),B=o(null),z=o(),A=i(!1),T=e(A,2),E=T[0],q=T[1],R=n((function(){return h.filter((function(r){return!c||c.id!==r.id}))}),[c,h]),U=n((function(){return c&&u(c,N)}),[c,N]),G=n((function(){var e=[],t=!1;R.forEach((function(r){"Null"===r.formation?t=!0:c&&c.formation===r.formation||e.includes(r.formation)||e.push(r.formation)}));var o=c?[c.formation].concat(m(e)):m(e);t&&!o.includes("Null")&&o.push("Null");var i=o.reduce((function(e,t,o){return F(F({},e),{},r({},t,w[o%w.length]))}),{});return[o,i]}),[c,R]),V=e(G,2),Z=V[0],_=V[1];return a((function(){I.current=new v.Map({container:k.current,style:"mapbox://styles/mapbox/dark-v9",center:C(O),zoom:1,attributionControl:!1,scrollZoom:!1}),I.current.addControl(new v.NavigationControl({showCompass:!1}),"bottom-right"),I.current.on("load",(function(){I.current.addSource("radius-circle",{type:"geojson",data:x}),I.current.addLayer({id:"radius-circle",type:"fill",source:"radius-circle",paint:{"fill-color":"#03BCD4","fill-opacity":.2}}),I.current.addSource("wells",{type:"geojson",data:x}),I.current.addLayer({id:"wells",type:"circle",source:"wells",paint:{"circle-radius":["get","radius"],"circle-color":["get","color"],"circle-opacity":["get","opacity"]}}),q(!0)}));var r=I.current;return function(){r.remove(),I.current=null,W.current=null,L.current=null}}),[]),a((function(){if(I.current&&E){if(!U)return I.current.getSource("radius-circle").setData(x),void(W.current=null);var r=function(r,t){for(var o=e(r,2),i=o[0],n=o[1],a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:64,l=[],s=t/(111320*Math.cos(i*Math.PI/180)),c=t/110574,u=0;u<=a;u+=1){var m=u/a*(2*Math.PI);l.push([n+s*Math.cos(m),i+c*Math.sin(m)])}return l}(U,1609.34*P);I.current.getSource("radius-circle").setData({type:"Feature",geometry:{type:"Polygon",coordinates:[r]}}),W.current=r.reduce((function(r,e){return r.extend(e)}),new v.LngLatBounds)}}),[P,U,E]),a((function(){var r;if(I.current&&E){var e=z.current;z.current=h,null===(r=B.current)||void 0===r||r.remove();var t=y.map((function(r){return r.id})),o=[],i={},n=new v.LngLatBounds;h.forEach((function(r){var e=u(r,N);if(e&&j(e)){var a=c&&c.id===r.id,l=t.includes(r.id),s=a?S:M,m=a||l?"#00FFFF":_[r.formation],p=a||l?1:.3;i[r.id]=r,n.extend(C(e)),o.push({type:"Feature",geometry:{type:"Point",coordinates:C(e)},properties:{wellId:r.id,radius:s,color:m,opacity:p}})}})),I.current.getSource("wells").setData({type:"FeatureCollection",features:o}),L.current=o.length?n:null;var a=I.current,m=null,d=function(r){a.getCanvas().style.cursor="pointer";var e=i[r.features[0].properties.wellId];if(e&&e.id!==m&&(m=e.id,D)){var t=document.createElement("div"),o=l(D,{well:e,color:_[e.formation]});s.render(b(p,{theme:f,children:o}),t),B.current||(B.current=new v.Popup({closeButton:!1,maxWidth:"none"})),B.current.setLngLat(C(u(e,N))).setDOMContent(t).addTo(a)}},g=function(){m=null,a.getCanvas().style.cursor=""};return a.on("mousemove","wells",d),a.on("mouseleave","wells",g),setTimeout((function(){I.current&&W.current&&h!==e&&I.current.fitBounds(W.current,{padding:5})}),500),function(){a.off("mousemove","wells",d),a.off("mouseleave","wells",g)}}}),[c,h,y,_,E]),a((function(){setTimeout((function(){c?I.current&&W.current&&I.current.fitBounds(W.current,{padding:5}):I.current&&L.current&&I.current.fitBounds(L.current)}),500)}),[P,c,E]),g("div",{className:d.map,children:[b("div",{className:d.mapMain,ref:k}),g("div",{className:d.mapFooter,children:[y&&g("div",{className:d.mapFooterItem,children:[b("div",{className:d.mapFooterItemSquare,style:{backgroundColor:"#00FFFF"}}),b("div",{className:d.mapFooterItemLabel,children:"Selected Offset Wells"})]}),Z.map((function(r){return g("div",{className:d.mapFooterItem,children:[b("div",{className:d.mapFooterItemSquare,style:{backgroundColor:_[r]}}),b("div",{className:d.mapFooterItemLabel,children:r})]},r)}))]})]})}P.propTypes={subjectWell:c.shape({id:c.number,formation:c.string}),wells:c.arrayOf(c.shape({})).isRequired,offsetWells:c.arrayOf(c.shape({})),radius:c.number.isRequired,subjectWellMarkerSize:c.number,wellMarkerSize:c.number,popUpFormatter:c.func,coordsDataPath:c.string},P.defaultProps={subjectWell:null,subjectWellMarkerSize:10,wellMarkerSize:5,popUpFormatter:null,coordsDataPath:"settings.top_hole.coordinates",offsetWells:null};var S=t(P);export{S 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 // NOTE: React nulls the DOM ref before deferred effect cleanup runs, so keep the map in a local\n const map = mapContainerRef.current;\n return () => {\n // NOTE: mapbox.js defers _updateMapFeedbackLink on layerremove; after remove() it crashes on the deleted control container\n map.off('layerremove');\n map.remove();\n mapContainerRef.current = null;\n radiusCircleRef.current = null;\n markersGroupRef.current = null;\n };\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","off","remove","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":"y1EAcA,IAAQA,EAAuBC,EAAvBD,mBAOFE,EAAS,CACb,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAGIC,EAAiB,CAAC,WAAY,WAGpC,SAASC,EASNC,GAAA,IARDC,IAAAA,YACAC,IAAAA,MACAC,IAAAA,YACAC,IAAAA,OACAC,IAAAA,sBACAC,IAAAA,eACAC,IAAAA,eACAC,IAAAA,eAEMC,EAAkBC,EAAO,MACzBC,EAAkBD,EAAO,MACzBE,EAAkBF,EAAO,MAEzBG,EAAYC,EAAYZ,GAExBa,EAAYC,GAAQ,WACxB,OAAOd,EAAMe,QAAO,SAAAC,GAAI,OAAKjB,GAAeA,EAAYkB,KAAOD,EAAKC,KACtE,GAAG,CAAClB,EAAaC,IAEXkB,EAAoBJ,GAAQ,WAChC,OAAOf,GAAeoB,EAAIpB,EAAaO,EACzC,GAAG,CAACP,EAAaO,IAGeQ,EAAAA,GAAQ,WAEtC,IAAMM,EAAiB,GACnBC,GAAmB,EAEvBR,EAAUS,SAAQ,SAAAN,GACO,SAAnBA,EAAKO,UACPF,GAAmB,EAEjBtB,GAAeA,EAAYwB,YAAcP,EAAKO,WAC/CH,EAAeI,SAASR,EAAKO,YAE9BH,EAAeK,KAAKT,EAAKO,UAE7B,IAEA,IAAMG,EAAmB3B,EACrB,CAACA,EAAYwB,WAAWI,OAAOC,EAAOR,IACtCQ,EAAOR,GAEPC,IAAqBK,EAAiBF,SAAS,SACjDE,EAAiBD,KAAK,QAGxB,IAAMI,EAASH,EAAiBI,QAC9B,SAACC,EAAQC,EAAMC,GAAG,OACbF,EAAAA,EAAAA,CAAAA,EAAAA,GACFC,CAAAA,EAAAA,EAAAA,CAAAA,EAAAA,EAAOrC,EAAOsC,EAAMtC,EAAOuC,SAC5B,GACF,CAAE,GAGJ,MAAO,CAACR,EAAkBG,EAC5B,GAAG,CAAC9B,EAAac,IAAWsB,EAAAC,EAAAC,EAAA,GAjCrBC,EAAUH,EAAA,GAAEI,EAASJ,EAAA,GAqL5B,OAjJAK,GAAU,WACRjC,EAAgBkC,QAAUC,EAAEhD,OACzBiD,IAAIpC,EAAgBkC,QAAS,KAAM,CAClCG,oBAAoB,EACpBC,iBAAiB,EACjBC,aAAa,IAEdC,QAAQnD,EAAgB,GAE3B8C,EAAEM,QACCC,KAAK,CACJC,SAAU,gBAEXC,MAAM5C,EAAgBkC,SACzBC,EAAEhD,OAAO0D,WAAW,kCAAkCD,MAAM5C,EAAgBkC,SAG5E,IAAME,EAAMpC,EAAgBkC,QAC5B,OAAO,WAELE,EAAIU,IAAI,eACRV,EAAIW,SACJ/C,EAAgBkC,QAAU,KAC1BhC,EAAgBgC,QAAU,KAC1B/B,EAAgB+B,QAAU,KAE7B,GAAE,IAGHD,GAAU,WACHjC,EAAgBkC,UAKjBhC,EAAgBgC,SAClBlC,EAAgBkC,QAAQc,YAAY9C,EAAgBgC,SAGjDvB,GAKLT,EAAgBgC,QAAUC,EAAEc,OAAOtC,EA9HhB,QA8HmChB,EAAyB,CAC7EuD,QAAQ,EACRC,MAAM,EACNC,YAAa,GACbC,UAnIsB,UAoItBC,UAAW,eAGbpD,EAAgBgC,QAAQU,MAAM5C,EAAgBkC,UAZ5ChC,EAAgBgC,QAAU,KAa9B,GAAG,CAACvC,EAAQgB,IAGZsB,GAAU,WACR,GAAKjC,EAAgBkC,QAArB,CAIAlC,EAAgBkC,QAAQqB,aAGpBpD,EAAgB+B,SAClB/B,EAAgB+B,QAAQsB,WAAWxD,EAAgBkC,SAGrD,IAAMuB,EAAgB/D,EAAY0C,KAAI,SAAA3B,GAAI,OAAIA,EAAKC,MAE7CgD,EAAU,GAChBjE,EAAMsB,SAAQ,SAAAN,GACZ,IAAMkD,EAAS/C,EAAIH,EAAMV,GAEzB,GAAI4D,GAAUzE,EAAmByE,GAAS,CACxC,IAAMC,EAAgBpE,GAAeA,EAAYkB,KAAOD,EAAKC,GACvDmD,EAAeJ,EAAcxC,SAASR,EAAKC,IAC3CoD,EAAIF,EAAgBhE,EAAwBC,EAC5CkE,EAAQH,GAAiBC,EA7Jb,UA6JgD7B,EAAUvB,EAAKO,WAC3EgD,EAAUJ,GAAiBC,EAAe,EAAI,GAE9CI,EAAY9B,EAAE+B,aAAaP,EAAQ,CACvChE,OAAQmE,EACRZ,QAAQ,EACRC,MAAM,EACNC,YAAaY,EACbX,UAAWU,EACXT,UAAW,eAGbW,EAAUE,iBAAiB,aAAa,WACtC,GAAIrE,EAAgB,CAElB,IAAMsE,EAAiBC,SAASC,cAAc,OACxCC,EAAeD,EAAcxE,EAAgB,CACjDW,KAAAA,EACAsD,MAAO/B,EAAUvB,EAAKO,aAGxBwD,EAASC,OACPC,EAACC,EAAgB,CAACC,MAAOA,EAAgBC,SAAEN,IAC3CH,GAGFjC,EAAE2C,QAAQC,UAAUpB,GAAQqB,WAAWZ,GAAgBa,OAAOjF,EAAgBkC,QAChF,CACF,IAEAwB,EAAQxC,KAAK+C,EACf,CACF,IAEIP,EAAQ/B,SACVxB,EAAgB+B,QAAUC,EAAE+C,aAAaxB,GACzCvD,EAAgB+B,QAAQU,MAAM5C,EAAgBkC,UAGhDiD,YAAW,WACLjF,EAAgBgC,SAClBhC,EAAgBgC,QAAQkD,cAGtBpF,EAAgBkC,SAAWhC,EAAgBgC,SAAWzC,IAAUW,GAClEJ,EAAgBkC,QAAQmD,UAAUnF,EAAgBgC,QAAQoD,YAAa,CAAEC,QAAS,CAAC,EAAG,IAEzF,GAAE,IAlEH,CAmED,GAAE,CAAC/F,EAAaC,EAAOC,EAAasC,IAErCC,GAAU,WACRkD,YAAW,WACLjF,EAAgBgC,SAClBhC,EAAgBgC,QAAQkD,cAEtB5F,EACEQ,EAAgBkC,SAAWhC,EAAgBgC,SAC7ClC,EAAgBkC,QAAQmD,UAAUnF,EAAgBgC,QAAQoD,YAAa,CACrEC,QAAS,CAAC,EAAG,KAGRvF,EAAgBkC,SAAW/B,EAAgB+B,SACpDlC,EAAgBkC,QAAQmD,UAAUlF,EAAgB+B,QAAQoD,YAE7D,GAAE,IACL,GAAG,CAAC3F,EAAQH,IAGVgG,EAAA,MAAA,CAAKlC,UAAWmC,EAAOrD,IAAIyC,SACzB,CAAAH,EAAA,MAAA,CAAKpB,UAAWmC,EAAOC,QAASC,IAAK3F,IAErCwF,EAAA,MAAA,CAAKlC,UAAWmC,EAAOG,UAAUf,SAAA,CAC9BnF,GACC8F,EAAA,MAAA,CAAKlC,UAAWmC,EAAOI,cAAchB,SACnC,CAAAH,EAAA,MAAA,CACEpB,UAAWmC,EAAOK,oBAClBC,MAAO,CAAEC,gBAzOG,aA2OdtB,EAAA,MAAA,CAAKpB,UAAWmC,EAAOQ,mBAAmBpB,SAAA,6BAI7C9C,EAAWK,KAAI,SAAAX,GAAI,OAClB+D,EAAA,MAAA,CAAKlC,UAAWmC,EAAOI,cAAchB,SACnC,CAAAH,EAAA,MAAA,CACEpB,UAAWmC,EAAOK,oBAClBC,MAAO,CAAEC,gBAAiBhE,EAAUP,MAEtCiD,EAAA,MAAA,CAAKpB,UAAWmC,EAAOQ,mBAAmBpB,SAAEpD,MALHA,EAMrC,SAKhB,CAEAnC,EAAS4G,UAAY,CACnB1G,YAAa2G,EAAUC,MAAM,CAC3B1F,GAAIyF,EAAUE,OACdrF,UAAWmF,EAAUG,SAEvB7G,MAAO0G,EAAUI,QAAQJ,EAAUC,MAAM,CAAA,IAAKI,WAC9C9G,YAAayG,EAAUI,QAAQJ,EAAUC,MAAM,CAAE,IACjDzG,OAAQwG,EAAUE,OAAOG,WACzB5G,sBAAuBuG,EAAUE,OACjCxG,eAAgBsG,EAAUE,OAC1BvG,eAAgBqG,EAAUM,KAC1B1G,eAAgBoG,EAAUG,QAG5BhH,EAASoH,aAAe,CACtBlH,YAAa,KACbI,sBA/QuC,GAgRvCC,eA/Q+B,EAgR/BC,eAAgB,KAChBC,eAAgB,gCAChBL,YAAa,MAGf,IAAeiH,EAAAA,EAAKrH"}
1
+ {"version":3,"file":"Map.js","sources":["../../../../../src/components/OffsetWellPickerV2/components/Map/Map.js"],"sourcesContent":["import { createElement, memo, useRef, useEffect, useMemo, useState } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { get, sortBy } from 'lodash';\nimport { MuiThemeProvider } from '@material-ui/core/styles';\n\nimport styles from './Map.css';\n\nimport { mapbox } from '~/utils';\nimport { theme } from '~/config';\nimport mapboxgl from '~/config/mapboxGl';\nimport 'mapbox-gl/dist/mapbox-gl.css';\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\nconst RADIUS_CIRCLE_ID = 'radius-circle';\nconst WELLS_ID = 'wells';\nconst EMPTY_FEATURE_COLLECTION = { type: 'FeatureCollection', features: [] };\n\nconst toLngLat = ([lat, lng]) => [lng, lat];\n\n// NOTE: mapbox-gl has no geographic-radius circle primitive, so approximate it with a polygon\nconst makeCirclePolygon = ([lat, lng], radiusMeters, points = 64) => {\n const ring = [];\n const distanceX = radiusMeters / (111320 * Math.cos((lat * Math.PI) / 180));\n const distanceY = radiusMeters / 110574;\n for (let i = 0; i <= points; i += 1) {\n const theta = (i / points) * (2 * Math.PI);\n ring.push([lng + distanceX * Math.cos(theta), lat + distanceY * Math.sin(theta)]);\n }\n return ring;\n};\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 mapRef = useRef(null);\n const radiusCircleBoundsRef = useRef(null);\n const markersBoundsRef = useRef(null);\n const popupRef = useRef(null);\n const prevWellsRef = useRef();\n const [isMapReady, setIsMapReady] = useState(false);\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 mapRef.current = new mapboxgl.Map({\n container: mapContainerRef.current,\n style: 'mapbox://styles/mapbox/dark-v9',\n center: toLngLat(DEFAULT_COORDS),\n zoom: 1,\n attributionControl: false,\n scrollZoom: false,\n });\n\n mapRef.current.addControl(\n new mapboxgl.NavigationControl({ showCompass: false }),\n 'bottom-right'\n );\n\n // NOTE: Sources/layers can only be added once the style has loaded.\n // The radius circle layer is added first so well markers render above it (was bringToBack)\n mapRef.current.on('load', () => {\n mapRef.current.addSource(RADIUS_CIRCLE_ID, {\n type: 'geojson',\n data: EMPTY_FEATURE_COLLECTION,\n });\n mapRef.current.addLayer({\n id: RADIUS_CIRCLE_ID,\n type: 'fill',\n source: RADIUS_CIRCLE_ID,\n paint: {\n 'fill-color': RADIUS_CIRCLE_COLOR,\n 'fill-opacity': 0.2,\n },\n });\n\n mapRef.current.addSource(WELLS_ID, { type: 'geojson', data: EMPTY_FEATURE_COLLECTION });\n mapRef.current.addLayer({\n id: WELLS_ID,\n type: 'circle',\n source: WELLS_ID,\n paint: {\n 'circle-radius': ['get', 'radius'],\n 'circle-color': ['get', 'color'],\n 'circle-opacity': ['get', 'opacity'],\n },\n });\n\n setIsMapReady(true);\n });\n\n const map = mapRef.current;\n return () => {\n map.remove();\n mapRef.current = null;\n radiusCircleBoundsRef.current = null;\n markersBoundsRef.current = null;\n };\n }, []);\n\n // NOTE: Radius circle\n useEffect(() => {\n if (!mapRef.current || !isMapReady) {\n return;\n }\n\n if (!subjectWellCoords) {\n mapRef.current.getSource(RADIUS_CIRCLE_ID).setData(EMPTY_FEATURE_COLLECTION);\n radiusCircleBoundsRef.current = null;\n return;\n }\n\n const ring = makeCirclePolygon(subjectWellCoords, radius * METERS_IN_MILE);\n mapRef.current.getSource(RADIUS_CIRCLE_ID).setData({\n type: 'Feature',\n geometry: { type: 'Polygon', coordinates: [ring] },\n });\n radiusCircleBoundsRef.current = ring.reduce(\n (bounds, coord) => bounds.extend(coord),\n new mapboxgl.LngLatBounds()\n );\n }, [radius, subjectWellCoords, isMapReady]);\n\n // NOTE: Well markers\n useEffect(() => {\n if (!mapRef.current || !isMapReady) {\n return undefined;\n }\n\n const prevWells = prevWellsRef.current;\n prevWellsRef.current = wells;\n\n popupRef.current?.remove();\n\n const offsetWellIds = offsetWells.map(well => well.id);\n\n const features = [];\n const wellsById = {};\n const bounds = new mapboxgl.LngLatBounds();\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 wellsById[well.id] = well;\n bounds.extend(toLngLat(coords));\n features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: toLngLat(coords) },\n properties: { wellId: well.id, radius: r, color, opacity },\n });\n }\n });\n\n mapRef.current.getSource(WELLS_ID).setData({ type: 'FeatureCollection', features });\n markersBoundsRef.current = features.length ? bounds : null;\n\n const map = mapRef.current;\n let hoveredWellId = null;\n\n const handleMouseMove = e => {\n map.getCanvas().style.cursor = 'pointer';\n\n const well = wellsById[e.features[0].properties.wellId];\n if (!well || well.id === hoveredWellId) {\n return;\n }\n hoveredWellId = well.id;\n\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 if (!popupRef.current) {\n popupRef.current = new mapboxgl.Popup({ closeButton: false, maxWidth: 'none' });\n }\n popupRef.current\n .setLngLat(toLngLat(get(well, coordsDataPath)))\n .setDOMContent(popUpContainer)\n .addTo(map);\n }\n };\n\n const handleMouseLeave = () => {\n hoveredWellId = null;\n map.getCanvas().style.cursor = '';\n };\n\n map.on('mousemove', WELLS_ID, handleMouseMove);\n map.on('mouseleave', WELLS_ID, handleMouseLeave);\n\n setTimeout(() => {\n if (mapRef.current && radiusCircleBoundsRef.current && wells !== prevWells) {\n mapRef.current.fitBounds(radiusCircleBoundsRef.current, { padding: 5 });\n }\n }, 500);\n\n return () => {\n map.off('mousemove', WELLS_ID, handleMouseMove);\n map.off('mouseleave', WELLS_ID, handleMouseLeave);\n };\n }, [subjectWell, wells, offsetWells, colorDict, isMapReady]);\n\n useEffect(() => {\n setTimeout(() => {\n if (subjectWell) {\n if (mapRef.current && radiusCircleBoundsRef.current) {\n mapRef.current.fitBounds(radiusCircleBoundsRef.current, {\n padding: 5,\n });\n }\n } else if (mapRef.current && markersBoundsRef.current) {\n mapRef.current.fitBounds(markersBoundsRef.current);\n }\n }, 500);\n }, [radius, subjectWell, isMapReady]);\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","EMPTY_FEATURE_COLLECTION","type","features","toLngLat","_ref","_ref2","_slicedToArray","lat","WellsMap","_ref5","subjectWell","wells","offsetWells","radius","subjectWellMarkerSize","wellMarkerSize","popUpFormatter","coordsDataPath","mapContainerRef","useRef","mapRef","radiusCircleBoundsRef","markersBoundsRef","popupRef","prevWellsRef","useState","_useState2","_useState","isMapReady","setIsMapReady","restWells","useMemo","filter","well","id","subjectWellCoords","get","restFormations","hasNullFormation","forEach","formation","includes","push","sortedFormations","concat","sortBy","colors","reduce","result","item","idx","length","_useMemo2","_useMemo","formations","colorDict","useEffect","current","mapboxgl","Map","container","style","center","zoom","attributionControl","scrollZoom","addControl","NavigationControl","showCompass","on","addSource","data","addLayer","source","paint","map","remove","getSource","setData","ring","_ref3","radiusMeters","_ref4","lng","points","distanceX","Math","cos","PI","distanceY","i","theta","sin","makeCirclePolygon","geometry","coordinates","bounds","coord","extend","LngLatBounds","_popupRef$current","prevWells","offsetWellIds","wellsById","coords","isWellSubject","isWellOffset","r","color","opacity","properties","wellId","hoveredWellId","handleMouseMove","e","getCanvas","cursor","popUpContainer","document","createElement","popUpContent","ReactDOM","render","_jsx","MuiThemeProvider","theme","children","Popup","closeButton","maxWidth","setLngLat","setDOMContent","addTo","handleMouseLeave","setTimeout","fitBounds","padding","off","_jsxs","className","styles","mapMain","ref","mapFooter","mapFooterItem","mapFooterItemSquare","backgroundColor","mapFooterItemLabel","propTypes","PropTypes","shape","number","string","arrayOf","isRequired","func","defaultProps","memo"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import t from"@babel/runtime/helpers/defineProperty";import n from"@babel/runtime/helpers/asyncToGenerator";import r from"@babel/runtime/helpers/slicedToArray";import e from"@babel/runtime/regenerator";import{useRef as o,useEffect as i,useState as s}from"react";import{get as a}from"lodash";import{fetchCompanies as c,fetchCompanyGoals as u,fetchWells as f,fetchMetricsData as p}from"../utils/apiCalls.js";import{METRICS_KEYS as l}from"../constants.js";import{mapbox as m}from"../../../utils/index.js";import{BENCHMARK_METRIC_GOAL as h}from"../../../constants/goals.js";import"../../../constants/segment.js";import"../../../constants/alerts.js";import"../../../constants/apps.js";import"../../../constants/drillstring.js";import"../../../constants/completion.js";import"../../../constants/appPackages.js";import"../../../constants/notifications.js";import"../../../constants/feed.js";import"../../../constants/bha.js";import"../../../constants/corvaCompanyId.js";import"../../GradientManager/configuration/constants.js";export{default as useBidirectionalFiltering}from"./biDirectionalFiltering.js";import{getCompanyGoalSetting as v}from"../../../utils/goals.js";function d(t,n){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var e=Object.getOwnPropertySymbols(t);n&&(e=e.filter((function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable}))),r.push.apply(r,e)}return r}function b(n){for(var r=1;r<arguments.length;r++){var e=null!=arguments[r]?arguments[r]:{};r%2?d(Object(e),!0).forEach((function(r){t(n,r,e[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(e)):d(Object(e)).forEach((function(t){Object.defineProperty(n,t,Object.getOwnPropertyDescriptor(e,t))}))}return n}var j=m.getAssetV2Coordinates,y=m.getDistanceByCoordinates;function g(t){var n=o();return i((function(){n.current=t})),n.current}function O(t,o,a){var u=s([]),f=r(u,2),p=f[0],l=f[1];return i((function(){function r(){return(r=n(e.mark((function n(){var r;return e.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(t){n.next=3;break}return l([]),n.abrupt("return");case 3:return n.next=5,c();case 5:r=n.sent,o&&(r=r.filter((function(t){return t.id===a}))),l(r);case 8:case"end":return n.stop()}}),n)})))).apply(this,arguments)}!function(){r.apply(this,arguments)}()}),[t]),p}function w(t){var o=s(null),a=r(o,2),c=a[0],f=a[1];return i((function(){function r(){return(r=n(e.mark((function n(){var r,o;return e.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,u(t);case 2:r=n.sent,o=v(r,h),f(o);case 5:case"end":return n.stop()}}),n)})))).apply(this,arguments)}f(null),function(){r.apply(this,arguments)}()}),[t]),c}function x(t,o){var a=s(null),c=r(a,2),u=c[0],p=c[1];return i((function(){function r(){return(r=n(e.mark((function n(){var r;return e.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(!t){n.next=6;break}return n.next=3,f(t,o);case 3:n.t0=n.sent,n.next=7;break;case 6:n.t0=null;case 7:r=n.t0,p(r);case 9:case"end":return n.stop()}}),n)})))).apply(this,arguments)}p(null),function(){r.apply(this,arguments)}()}),[t]),u}function k(t,n){var e=s(null),o=r(e,2),a=o[0],c=o[1];return i((function(){if(t){var r=n&&j(n,"topHole");if(r){var e=[];t.forEach((function(t){var n=j(t,"topHole");if(n){var o=parseFloat(y(r,n));e.push(b(b({},t),{},{distance:o}))}else e.push(t)})),c(e)}else c(t)}else c(t)}),[t,n]),a}function E(t,n,e){var o=s(null),a=r(o,2),c=a[0],u=a[1];return i((function(){if(n){var t=[];n.forEach((function(n){e.includes(n.id)&&n.is_usable&&t.push(n)})),u(t)}else u(null)}),[t,n,e]),c}function P(t,c){var u=o({}),f=s(!0),m=r(f,2),h=m[0],v=m[1],d=s(null),j=r(d,2),y=j[0],g=j[1];return i((function(){function r(){return(r=n(e.mark((function n(r){var o,i,s,f;return e.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,p(t,r);case 2:o=n.sent,i=new Map,o.forEach((function(t){var n,r=a(t,"asset_id"),e=a(t,"data.key");i.has(r)||i.set(r,new Map),null===(n=i.get(r))||void 0===n||n.set(e,t)})),s={},r.forEach((function(t){var n={},r=i.get(t);l.forEach((function(t){var e=null==r?void 0:r.get(t),o=a(e,"data.value");n[t]=Number.isFinite(o)?parseFloat(o).toFixed(2):null})),s[t]=n})),u.current=b(b({},u.current),s),f=[],c.forEach((function(t){f.push(b(b({},t),u.current[t.id]))})),v(!1),g(f);case 12:case"end":return n.stop()}}),n)})))).apply(this,arguments)}if(c)if(0!==c.length){var o=[];c.forEach((function(t){u.current[t.id]||o.push(t.id)})),v(!0),function(t){r.apply(this,arguments)}(o)}else g([]);else g(null)}),[c]),[h,y]}function D(t,n,r){var e=o(!1);i((function(){if(n){if(e.current){var o=[];n.forEach((function(n){n.distance<=t&&o.push(n.id)})),r(o)}e.current=!0}}),[t,n])}export{O as useCompanies,w as useCompanyMetricKey,P as useMetricsData,E as useOffsetWells,g as usePrevious,D as useRadiusWells,x as useWells,k as useWellsWithCoords};
1
+ import t from"@babel/runtime/helpers/defineProperty";import n from"@babel/runtime/helpers/asyncToGenerator";import r from"@babel/runtime/helpers/slicedToArray";import e from"@babel/runtime/regenerator";import{useState as o,useEffect as i,useRef as s}from"react";import{get as a}from"lodash";import{fetchCompanies as c,fetchCompanyGoals as u,fetchWells as f,fetchMetricsData as p}from"../utils/apiCalls.js";import{METRICS_KEYS as l}from"../constants.js";import{mapbox as m}from"../../../utils/index.js";import{BENCHMARK_METRIC_GOAL as h}from"../../../constants/goals.js";import"../../../constants/segment.js";import"../../../constants/alerts.js";import"../../../constants/apps.js";import"../../../constants/drillstring.js";import"../../../constants/completion.js";import"../../../constants/appPackages.js";import"../../../constants/notifications.js";import"../../../constants/feed.js";import"../../../constants/bha.js";import"../../../constants/corvaCompanyId.js";import"../../GradientManager/configuration/constants.js";export{default as useBidirectionalFiltering}from"./biDirectionalFiltering.js";import{getCompanyGoalSetting as v}from"../../../utils/goals.js";function d(t,n){var r=Object.keys(t);if(Object.getOwnPropertySymbols){var e=Object.getOwnPropertySymbols(t);n&&(e=e.filter((function(n){return Object.getOwnPropertyDescriptor(t,n).enumerable}))),r.push.apply(r,e)}return r}function b(n){for(var r=1;r<arguments.length;r++){var e=null!=arguments[r]?arguments[r]:{};r%2?d(Object(e),!0).forEach((function(r){t(n,r,e[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(n,Object.getOwnPropertyDescriptors(e)):d(Object(e)).forEach((function(t){Object.defineProperty(n,t,Object.getOwnPropertyDescriptor(e,t))}))}return n}var j=m.getAssetV2Coordinates,y=m.getDistanceByCoordinates;function g(t,s,a){var u=o([]),f=r(u,2),p=f[0],l=f[1];return i((function(){function r(){return(r=n(e.mark((function n(){var r;return e.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(t){n.next=3;break}return l([]),n.abrupt("return");case 3:return n.next=5,c();case 5:r=n.sent,s&&(r=r.filter((function(t){return t.id===a}))),l(r);case 8:case"end":return n.stop()}}),n)})))).apply(this,arguments)}!function(){r.apply(this,arguments)}()}),[t]),p}function O(t){var s=o(null),a=r(s,2),c=a[0],f=a[1];return i((function(){function r(){return(r=n(e.mark((function n(){var r,o;return e.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,u(t);case 2:r=n.sent,o=v(r,h),f(o);case 5:case"end":return n.stop()}}),n)})))).apply(this,arguments)}f(null),function(){r.apply(this,arguments)}()}),[t]),c}function w(t,s){var a=o(null),c=r(a,2),u=c[0],p=c[1];return i((function(){function r(){return(r=n(e.mark((function n(){var r;return e.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(!t){n.next=6;break}return n.next=3,f(t,s);case 3:n.t0=n.sent,n.next=7;break;case 6:n.t0=null;case 7:r=n.t0,p(r);case 9:case"end":return n.stop()}}),n)})))).apply(this,arguments)}p(null),function(){r.apply(this,arguments)}()}),[t]),u}function x(t,n){var e=o(null),s=r(e,2),a=s[0],c=s[1];return i((function(){if(t){var r=n&&j(n,"topHole");if(r){var e=[];t.forEach((function(t){var n=j(t,"topHole");if(n){var o=parseFloat(y(r,n));e.push(b(b({},t),{},{distance:o}))}else e.push(t)})),c(e)}else c(t)}else c(t)}),[t,n]),a}function k(t,n,e){var s=o(null),a=r(s,2),c=a[0],u=a[1];return i((function(){if(n){var t=[];n.forEach((function(n){e.includes(n.id)&&n.is_usable&&t.push(n)})),u(t)}else u(null)}),[t,n,e]),c}function E(t,c){var u=s({}),f=o(!0),m=r(f,2),h=m[0],v=m[1],d=o(null),j=r(d,2),y=j[0],g=j[1];return i((function(){function r(){return(r=n(e.mark((function n(r){var o,i,s,f;return e.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,p(t,r);case 2:o=n.sent,i=new Map,o.forEach((function(t){var n,r=a(t,"asset_id"),e=a(t,"data.key");i.has(r)||i.set(r,new Map),null===(n=i.get(r))||void 0===n||n.set(e,t)})),s={},r.forEach((function(t){var n={},r=i.get(t);l.forEach((function(t){var e=null==r?void 0:r.get(t),o=a(e,"data.value");n[t]=Number.isFinite(o)?parseFloat(o).toFixed(2):null})),s[t]=n})),u.current=b(b({},u.current),s),f=[],c.forEach((function(t){f.push(b(b({},t),u.current[t.id]))})),v(!1),g(f);case 12:case"end":return n.stop()}}),n)})))).apply(this,arguments)}if(c)if(0!==c.length){var o=[];c.forEach((function(t){u.current[t.id]||o.push(t.id)})),v(!0),function(t){r.apply(this,arguments)}(o)}else g([]);else g(null)}),[c]),[h,y]}function P(t,n,r){var e=s(!1);i((function(){if(n){if(e.current){var o=[];n.forEach((function(n){n.distance<=t&&o.push(n.id)})),r(o)}e.current=!0}}),[t,n])}export{g as useCompanies,O as useCompanyMetricKey,E as useMetricsData,k as useOffsetWells,P as useRadiusWells,w as useWells,x as useWellsWithCoords};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/OffsetWellPickerV2/effects/index.js"],"sourcesContent":["import { useEffect, useState, useRef } from 'react';\nimport { get } from 'lodash';\n\nimport { fetchWells, fetchCompanies, fetchMetricsData, fetchCompanyGoals } from '../utils/apiCalls';\nimport { METRICS_KEYS } from '../constants';\n\nimport { mapbox, goals } from '~/utils';\nimport { goals as goalsConstants } from '~/constants';\n\nexport { default as useBidirectionalFiltering } from './biDirectionalFiltering';\n\nconst { getAssetV2Coordinates, getDistanceByCoordinates } = mapbox;\n\nexport function usePrevious(value) {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n}\n\nexport function useCompanies(canViewCompanies, isAdvancedSearch, companyId) {\n const [companies, setCompanies] = useState([]);\n\n useEffect(() => {\n async function handleFetchCompanies() {\n if (!canViewCompanies) {\n setCompanies([]);\n return;\n }\n\n let data = await fetchCompanies();\n if (isAdvancedSearch) {\n data = data.filter(item => item.id === companyId);\n }\n setCompanies(data);\n }\n\n handleFetchCompanies();\n }, [canViewCompanies]);\n\n return companies;\n}\n\nexport function useCompanyMetricKey(companyId) {\n const [metricKey, setMetricKey] = useState(null);\n\n useEffect(() => {\n async function handleFetchCompanyMetric() {\n const companyGoals = await fetchCompanyGoals(companyId);\n const companyMetricKey = goals.getCompanyGoalSetting(\n companyGoals,\n goalsConstants.BENCHMARK_METRIC_GOAL\n );\n\n setMetricKey(companyMetricKey);\n }\n\n setMetricKey(null);\n handleFetchCompanyMetric();\n }, [companyId]);\n\n return metricKey;\n}\n\nexport function useWells(companyId, addWellsUsabilityInfo) {\n const [wells, setWells] = useState(null);\n\n useEffect(() => {\n async function handleFetchWells() {\n const data = companyId ? await fetchWells(companyId, addWellsUsabilityInfo) : null;\n setWells(data);\n }\n\n setWells(null);\n handleFetchWells();\n }, [companyId]);\n\n return wells;\n}\n\nexport function useWellsWithCoords(wells, subjectWell) {\n const [wellsWithCoords, setWellsWithCoords] = useState(null);\n\n useEffect(() => {\n if (!wells) {\n setWellsWithCoords(wells);\n return;\n }\n\n const subjectWellCoord = subjectWell && getAssetV2Coordinates(subjectWell, 'topHole');\n\n if (!subjectWellCoord) {\n setWellsWithCoords(wells);\n return;\n }\n const result = [];\n wells.forEach(well => {\n const coord = getAssetV2Coordinates(well, 'topHole');\n if (coord) {\n const distance = parseFloat(getDistanceByCoordinates(subjectWellCoord, coord));\n result.push({ ...well, distance });\n } else {\n result.push(well);\n }\n });\n\n setWellsWithCoords(result);\n }, [wells, subjectWell]);\n\n return wellsWithCoords;\n}\n\nexport function useOffsetWells(radius, allWells, selectedWellIds) {\n const [offsetWells, setOffsetWells] = useState(null);\n\n useEffect(() => {\n if (!allWells) {\n // still loading...\n setOffsetWells(null);\n return;\n }\n\n const result = [];\n // NOTE: Add selected wells\n allWells.forEach(well => {\n if (selectedWellIds.includes(well.id) && well.is_usable) {\n result.push(well);\n }\n });\n\n setOffsetWells(result);\n }, [radius, allWells, selectedWellIds]);\n return offsetWells;\n}\n\nexport function useMetricsData(companyId, wells) {\n const fetchedData = useRef({});\n\n const [loading, setLoading] = useState(true);\n const [data, setData] = useState(null);\n\n useEffect(() => {\n async function handleFetchMetricsData(wellIdsToFetch) {\n const records = await fetchMetricsData(companyId, wellIdsToFetch);\n\n // Build index: asset_id -> { metricKey -> record }\n const recordsByWell = new Map();\n\n records.forEach(item => {\n const wellId = get(item, 'asset_id');\n const key = get(item, 'data.key');\n\n if (!recordsByWell.has(wellId)) {\n recordsByWell.set(wellId, new Map());\n }\n\n recordsByWell.get(wellId)?.set(key, item);\n });\n\n const wellsMetrics = {};\n wellIdsToFetch.forEach(wellId => {\n const wellMetrics = {};\n const wellRecordMap = recordsByWell.get(wellId);\n\n METRICS_KEYS.forEach(metricsKey => {\n const record = wellRecordMap?.get(metricsKey);\n const value = get(record, 'data.value');\n wellMetrics[metricsKey] = Number.isFinite(value) ? parseFloat(value).toFixed(2) : null;\n });\n\n wellsMetrics[wellId] = wellMetrics;\n });\n\n // NOTE: Store previous fetching result\n fetchedData.current = {\n ...fetchedData.current,\n ...wellsMetrics,\n };\n\n const result = [];\n wells.forEach(well => {\n result.push({\n ...well,\n ...fetchedData.current[well.id],\n });\n });\n\n setLoading(false);\n setData(result);\n }\n\n if (!wells) {\n // still loading...\n setData(null);\n return;\n }\n\n if (wells.length === 0) {\n setData([]);\n return;\n }\n\n // NOTE: Make api calls for only missing wells\n const missingWellIds = [];\n wells.forEach(well => {\n if (!fetchedData.current[well.id]) {\n missingWellIds.push(well.id);\n }\n });\n\n setLoading(true);\n handleFetchMetricsData(missingWellIds);\n }, [wells]);\n\n return [loading, data];\n}\n\nexport function useRadiusWells(radius, filteredWellsWithCoords, setSelectedWellIds) {\n const initLoadingRef = useRef(false);\n useEffect(() => {\n if (filteredWellsWithCoords) {\n if (initLoadingRef.current) {\n const radiusWellIds = [];\n filteredWellsWithCoords.forEach(well => {\n if (well.distance <= radius) {\n radiusWellIds.push(well.id);\n }\n });\n setSelectedWellIds(radiusWellIds);\n }\n initLoadingRef.current = true;\n }\n }, [radius, filteredWellsWithCoords]);\n}\n"],"names":["getAssetV2Coordinates","mapbox","getDistanceByCoordinates","usePrevious","value","ref","useRef","useEffect","current","useCompanies","canViewCompanies","isAdvancedSearch","companyId","useState","_useState2","_slicedToArray","_useState","companies","setCompanies","_handleFetchCompanies","_asyncToGenerator","_regeneratorRuntime","mark","_callee","data","wrap","_context","prev","next","abrupt","fetchCompanies","sent","filter","item","id","stop","apply","this","arguments","handleFetchCompanies","useCompanyMetricKey","_useState4","_useState3","metricKey","setMetricKey","_handleFetchCompanyMetric","_callee2","companyGoals","companyMetricKey","_context2","fetchCompanyGoals","goals","goalsConstants","handleFetchCompanyMetric","useWells","addWellsUsabilityInfo","_useState6","_useState5","wells","setWells","_handleFetchWells","_callee3","_context3","fetchWells","t0","handleFetchWells","useWellsWithCoords","subjectWell","_useState8","_useState7","wellsWithCoords","setWellsWithCoords","subjectWellCoord","result","forEach","well","coord","distance","parseFloat","push","_objectSpread","useOffsetWells","radius","allWells","selectedWellIds","_useState10","_useState9","offsetWells","setOffsetWells","includes","is_usable","useMetricsData","fetchedData","_useState12","_useState11","loading","setLoading","_useState14","_useState13","setData","_handleFetchMetricsData","wellIdsToFetch","records","recordsByWell","wellsMetrics","_context4","fetchMetricsData","Map","_recordsByWell$get","wellId","get","key","has","set","wellMetrics","wellRecordMap","METRICS_KEYS","metricsKey","record","Number","isFinite","toFixed","_callee4","length","missingWellIds","_x","handleFetchMetricsData","useRadiusWells","filteredWellsWithCoords","setSelectedWellIds","initLoadingRef","radiusWellIds"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/OffsetWellPickerV2/effects/index.js"],"sourcesContent":["import { useEffect, useState, useRef } from 'react';\nimport { get } from 'lodash';\n\nimport { fetchWells, fetchCompanies, fetchMetricsData, fetchCompanyGoals } from '../utils/apiCalls';\nimport { METRICS_KEYS } from '../constants';\n\nimport { mapbox, goals } from '~/utils';\nimport { goals as goalsConstants } from '~/constants';\n\nexport { default as useBidirectionalFiltering } from './biDirectionalFiltering';\n\nconst { getAssetV2Coordinates, getDistanceByCoordinates } = mapbox;\n\nexport function usePrevious(value) {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n}\n\nexport function useCompanies(canViewCompanies, isAdvancedSearch, companyId) {\n const [companies, setCompanies] = useState([]);\n\n useEffect(() => {\n async function handleFetchCompanies() {\n if (!canViewCompanies) {\n setCompanies([]);\n return;\n }\n\n let data = await fetchCompanies();\n if (isAdvancedSearch) {\n data = data.filter(item => item.id === companyId);\n }\n setCompanies(data);\n }\n\n handleFetchCompanies();\n }, [canViewCompanies]);\n\n return companies;\n}\n\nexport function useCompanyMetricKey(companyId) {\n const [metricKey, setMetricKey] = useState(null);\n\n useEffect(() => {\n async function handleFetchCompanyMetric() {\n const companyGoals = await fetchCompanyGoals(companyId);\n const companyMetricKey = goals.getCompanyGoalSetting(\n companyGoals,\n goalsConstants.BENCHMARK_METRIC_GOAL\n );\n\n setMetricKey(companyMetricKey);\n }\n\n setMetricKey(null);\n handleFetchCompanyMetric();\n }, [companyId]);\n\n return metricKey;\n}\n\nexport function useWells(companyId, addWellsUsabilityInfo) {\n const [wells, setWells] = useState(null);\n\n useEffect(() => {\n async function handleFetchWells() {\n const data = companyId ? await fetchWells(companyId, addWellsUsabilityInfo) : null;\n setWells(data);\n }\n\n setWells(null);\n handleFetchWells();\n }, [companyId]);\n\n return wells;\n}\n\nexport function useWellsWithCoords(wells, subjectWell) {\n const [wellsWithCoords, setWellsWithCoords] = useState(null);\n\n useEffect(() => {\n if (!wells) {\n setWellsWithCoords(wells);\n return;\n }\n\n const subjectWellCoord = subjectWell && getAssetV2Coordinates(subjectWell, 'topHole');\n\n if (!subjectWellCoord) {\n setWellsWithCoords(wells);\n return;\n }\n const result = [];\n wells.forEach(well => {\n const coord = getAssetV2Coordinates(well, 'topHole');\n if (coord) {\n const distance = parseFloat(getDistanceByCoordinates(subjectWellCoord, coord));\n result.push({ ...well, distance });\n } else {\n result.push(well);\n }\n });\n\n setWellsWithCoords(result);\n }, [wells, subjectWell]);\n\n return wellsWithCoords;\n}\n\nexport function useOffsetWells(radius, allWells, selectedWellIds) {\n const [offsetWells, setOffsetWells] = useState(null);\n\n useEffect(() => {\n if (!allWells) {\n // still loading...\n setOffsetWells(null);\n return;\n }\n\n const result = [];\n // NOTE: Add selected wells\n allWells.forEach(well => {\n if (selectedWellIds.includes(well.id) && well.is_usable) {\n result.push(well);\n }\n });\n\n setOffsetWells(result);\n }, [radius, allWells, selectedWellIds]);\n return offsetWells;\n}\n\nexport function useMetricsData(companyId, wells) {\n const fetchedData = useRef({});\n\n const [loading, setLoading] = useState(true);\n const [data, setData] = useState(null);\n\n useEffect(() => {\n async function handleFetchMetricsData(wellIdsToFetch) {\n const records = await fetchMetricsData(companyId, wellIdsToFetch);\n\n // Build index: asset_id -> { metricKey -> record }\n const recordsByWell = new Map();\n\n records.forEach(item => {\n const wellId = get(item, 'asset_id');\n const key = get(item, 'data.key');\n\n if (!recordsByWell.has(wellId)) {\n recordsByWell.set(wellId, new Map());\n }\n\n recordsByWell.get(wellId)?.set(key, item);\n });\n\n const wellsMetrics = {};\n wellIdsToFetch.forEach(wellId => {\n const wellMetrics = {};\n const wellRecordMap = recordsByWell.get(wellId);\n\n METRICS_KEYS.forEach(metricsKey => {\n const record = wellRecordMap?.get(metricsKey);\n const value = get(record, 'data.value');\n wellMetrics[metricsKey] = Number.isFinite(value) ? parseFloat(value).toFixed(2) : null;\n });\n\n wellsMetrics[wellId] = wellMetrics;\n });\n\n // NOTE: Store previous fetching result\n fetchedData.current = {\n ...fetchedData.current,\n ...wellsMetrics,\n };\n\n const result = [];\n wells.forEach(well => {\n result.push({\n ...well,\n ...fetchedData.current[well.id],\n });\n });\n\n setLoading(false);\n setData(result);\n }\n\n if (!wells) {\n // still loading...\n setData(null);\n return;\n }\n\n if (wells.length === 0) {\n setData([]);\n return;\n }\n\n // NOTE: Make api calls for only missing wells\n const missingWellIds = [];\n wells.forEach(well => {\n if (!fetchedData.current[well.id]) {\n missingWellIds.push(well.id);\n }\n });\n\n setLoading(true);\n handleFetchMetricsData(missingWellIds);\n }, [wells]);\n\n return [loading, data];\n}\n\nexport function useRadiusWells(radius, filteredWellsWithCoords, setSelectedWellIds) {\n const initLoadingRef = useRef(false);\n useEffect(() => {\n if (filteredWellsWithCoords) {\n if (initLoadingRef.current) {\n const radiusWellIds = [];\n filteredWellsWithCoords.forEach(well => {\n if (well.distance <= radius) {\n radiusWellIds.push(well.id);\n }\n });\n setSelectedWellIds(radiusWellIds);\n }\n initLoadingRef.current = true;\n }\n }, [radius, filteredWellsWithCoords]);\n}\n"],"names":["getAssetV2Coordinates","mapbox","getDistanceByCoordinates","useCompanies","canViewCompanies","isAdvancedSearch","companyId","useState","_useState2","_slicedToArray","_useState","companies","setCompanies","useEffect","_handleFetchCompanies","_asyncToGenerator","_regeneratorRuntime","mark","_callee","data","wrap","_context","prev","next","abrupt","fetchCompanies","sent","filter","item","id","stop","apply","this","arguments","handleFetchCompanies","useCompanyMetricKey","_useState4","_useState3","metricKey","setMetricKey","_handleFetchCompanyMetric","_callee2","companyGoals","companyMetricKey","_context2","fetchCompanyGoals","goals","goalsConstants","handleFetchCompanyMetric","useWells","addWellsUsabilityInfo","_useState6","_useState5","wells","setWells","_handleFetchWells","_callee3","_context3","fetchWells","t0","handleFetchWells","useWellsWithCoords","subjectWell","_useState8","_useState7","wellsWithCoords","setWellsWithCoords","subjectWellCoord","result","forEach","well","coord","distance","parseFloat","push","_objectSpread","useOffsetWells","radius","allWells","selectedWellIds","_useState10","_useState9","offsetWells","setOffsetWells","includes","is_usable","useMetricsData","fetchedData","useRef","_useState12","_useState11","loading","setLoading","_useState14","_useState13","setData","_handleFetchMetricsData","wellIdsToFetch","records","recordsByWell","wellsMetrics","_context4","fetchMetricsData","Map","_recordsByWell$get","wellId","get","key","has","set","wellMetrics","wellRecordMap","METRICS_KEYS","metricsKey","record","value","Number","isFinite","toFixed","current","_callee4","length","missingWellIds","_x","handleFetchMetricsData","useRadiusWells","filteredWellsWithCoords","setSelectedWellIds","initLoadingRef","radiusWellIds"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import a from'./../../../../../../ext-esm/style-inject/dist/style-inject.es.js';var p={map:"Map_map__pdvR2",mapMain:"Map_mapMain__em8S8"};a(".Map_map__pdvR2{width:100%}.Map_mapMain__em8S8{background-color:#414141;border-radius:4px;flex:100;height:200px;width:100%}.Map_map__pdvR2 .leaflet-popup-content-wrapper{background-color:#414141;border-radius:4px;box-shadow:0 5px 5px rgba(0,0,0,.2),0 3px 14px rgba(0,0,0,.12),0 8px 10px rgba(0,0,0,.14)}.Map_map__pdvR2 .leaflet-popup-content{padding:10px 16px}.Map_map__pdvR2 .leaflet-popup-close-button,.Map_map__pdvR2 .leaflet-popup-tip{display:none}.Map_map__pdvR2 .leaflet-control-zoom{background:none;border:none;box-shadow:none}.Map_map__pdvR2 .leaflet-control-zoom a{background-image:none;background:#272727;color:#bdbdbd}.Map_map__pdvR2 .leaflet-control-zoom a,.Map_map__pdvR2 .leaflet-control-zoom a:hover{align-items:center;border-radius:4px;content:unset;display:flex;font-size:22px;height:32px;justify-content:center;margin-top:4px;opacity:1;text-align:center;text-indent:unset;width:32px}.Map_map__pdvR2 .leaflet-control-zoom a:hover{background:#303030;background-image:none;color:#fff}.Map_map__pdvR2 .leaflet-touch .leaflet-bar,.Map_map__pdvR2 .leaflet-touch .leaflet-control-layers{background-clip:padding-box;border:0 solid transparent}");export{p as default};
1
+ import p from'./../../../../../../ext-esm/style-inject/dist/style-inject.es.js';var a={map:"Map_map__pdvR2",mapMain:"Map_mapMain__em8S8"};p(".Map_map__pdvR2{width:100%}.Map_mapMain__em8S8{background-color:#414141;border-radius:4px;flex:100;height:200px;width:100%}.Map_map__pdvR2 .mapboxgl-popup-content{background-color:#414141;border-radius:4px;box-shadow:0 5px 5px rgba(0,0,0,.2),0 3px 14px rgba(0,0,0,.12),0 8px 10px rgba(0,0,0,.14);padding:10px 16px}.Map_map__pdvR2 .mapboxgl-popup-tip{display:none}.Map_map__pdvR2 .mapboxgl-ctrl-group{background:none;border:none;box-shadow:none}.Map_map__pdvR2 .mapboxgl-ctrl-group button{background:#272727;border:none;border-radius:4px;height:32px;margin-top:4px;width:32px}.Map_map__pdvR2 .mapboxgl-ctrl-group button .mapboxgl-ctrl-icon{filter:invert(.8)}.Map_map__pdvR2 .mapboxgl-ctrl-group button:hover{background:#303030}.Map_map__pdvR2 .mapboxgl-ctrl-group button:hover .mapboxgl-ctrl-icon{filter:invert(1)}");export{a as default};
2
2
  //# sourceMappingURL=Map.css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Map.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/OffsetWellPickerV3/components/CustomSelectionView/components/Map/Map.js"],"names":[],"mappings":";;AAsBA;;;;;;;;;;;gBAgMC;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBApNqB,YAAY"}
1
+ {"version":3,"file":"Map.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/OffsetWellPickerV3/components/CustomSelectionView/components/Map/Map.js"],"names":[],"mappings":";;AAuCA;;;;;;;;;;;gBAmPC;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBAxRqB,YAAY"}
@@ -1,2 +1,2 @@
1
- import{memo as r,useRef as e,useMemo as t,useEffect as n,createElement as o}from"react";import u from"react-dom";import i from"prop-types";import c from"mapbox.js";import{get as l,sortBy as s}from"lodash";import{usePrevious as a}from"../../effects/index.js";import f from"./Map.css.js";import{mapbox as d}from"../../../../../../utils/index.js";import{jsx as m,Fragment as p}from"react/jsx-runtime";var v=d.isValidCoordinates,h=[29.749907,-95.358421];function b(r){var i=r.open,d=r.subjectWell,b=r.wells,B=r.offsetWells,g=r.radius,D=r.formationColors,y=r.popUpFormatter,W=r.coordsDataPath,x=r.onAddOffsetWell,C=r.onDeleteOffsetWell,O=e(null),T=e(),j=e(null),F=e(null),k=a(b),L=t((function(){return d&&l(d,W)}),[d,W]);return n((function(){i&&!T.current&&(T.current=c.mapbox.map(O.current,null,{attributionControl:!1,scrollWheelZoom:!1,zoomControl:!1}).setView(h,1),c.control.zoom({position:"bottomright"}).addTo(T.current),c.mapbox.styleLayer("mapbox://styles/mapbox/dark-v9").addTo(T.current))}),[i]),n((function(){return function(){T.current&&(T.current.off("layerremove"),T.current.remove(),T.current=null,j.current=null,F.current=null)}}),[]),n((function(){T.current&&i&&(j.current&&T.current.removeLayer(j.current),L?(j.current=c.circle(L,1609.34*g,{stroke:!1,fill:!0,fillOpacity:.2,fillColor:"#03BCD4",className:"circle_500"}),j.current.addTo(T.current)):j.current=null)}),[g,L,i]),n((function(){if(T.current&&i){F.current&&F.current.removeFrom(T.current);var r=B.map((function(r){return r.id})),e=s(b,(function(e){return r.includes(e.id)})),t=[];e.forEach((function(e){var n=l(e,W);if(n&&v(n)){var i=d&&d.id===e.id,s=r.includes(e.id),a=i?10:5,f=i||s?"#00FFFF":l(D,e.formation,"#BDBDBD"),h=i||s?1:.3,b=c.circleMarker(n,{radius:a,stroke:!1,fill:!0,fillOpacity:h,fillColor:f,className:"circle_500"});b.addEventListener("mouseover",(function(){if(y){var r=document.createElement("div"),t=o(y,{well:e,color:l(D,e.formation,"#BDBDBD")});u.render(m(p,{children:t}),r),c.popup().setLatLng(n).setContent(r).openOn(T.current)}})),b.addEventListener("mouseout",(function(){T.current.closePopup()})),b.addEventListener("click",(function(){s&&!i?C(e.id):x(e.id)})),t.push(b)}})),t.length&&(F.current=c.featureGroup(t),F.current.addTo(T.current)),setTimeout((function(){j.current&&j.current.bringToBack(),T.current&&j.current&&b!==k&&T.current.fitBounds(j.current.getBounds(),{padding:[5,5]})}),500)}}),[d,b,B,i]),n((function(){i&&setTimeout((function(){j.current&&j.current.bringToBack(),d?T.current&&j.current&&T.current.fitBounds(j.current.getBounds(),{padding:[5,5]}):T.current&&F.current&&T.current.fitBounds(F.current.getBounds())}),500)}),[g,d,i]),m("div",{className:f.map,children:m("div",{className:f.mapMain,ref:O})})}b.propTypes={open:i.bool.isRequired,subjectWell:i.shape({id:i.number,formation:i.string}),wells:i.arrayOf(i.shape({})).isRequired,offsetWells:i.arrayOf(i.shape({})),radius:i.number.isRequired,formationColors:i.shape({}).isRequired,popUpFormatter:i.func,coordsDataPath:i.string,onAddOffsetWell:i.func.isRequired,onDeleteOffsetWell:i.func.isRequired},b.defaultProps={subjectWell:null,popUpFormatter:null,coordsDataPath:"settings.top_hole.coordinates",offsetWells:null};var B=r(b);export{B as default};
1
+ import e from"@babel/runtime/helpers/slicedToArray";import{memo as r,useRef as t,useState as o,useMemo as n,useEffect as u,createElement as l}from"react";import i from"react-dom";import c from"prop-types";import{get as a,sortBy as s}from"lodash";import d from"./Map.css.js";import{mapbox as f}from"../../../../../../utils/index.js";import"../../../../../../config/mapboxGl/index.js";import"mapbox-gl/dist/mapbox-gl.css";import{jsx as p,Fragment as m}from"react/jsx-runtime";import v from"mapbox-gl";var y=f.isValidCoordinates,g=[29.749907,-95.358421],h={type:"FeatureCollection",features:[]},w=function(r){var t=e(r,2),o=t[0];return[t[1],o]};function b(r){var c=r.open,f=r.subjectWell,b=r.wells,D=r.offsetWells,x=r.radius,B=r.formationColors,C=r.popUpFormatter,F=r.coordsDataPath,W=r.onAddOffsetWell,j=r.onDeleteOffsetWell,M=t(null),P=t(),L=t(null),O=t(null),q=t(null),R=t(),I=o(!1),S=e(I,2),T=S[0],k=S[1],A=n((function(){return f&&a(f,F)}),[f,F]);return u((function(){c&&!P.current&&(P.current=new v.Map({container:M.current,style:"mapbox://styles/mapbox/dark-v9",center:w(g),zoom:1,attributionControl:!1,scrollZoom:!1}),P.current.addControl(new v.NavigationControl({showCompass:!1}),"bottom-right"),P.current.on("load",(function(){P.current.addSource("radius-circle",{type:"geojson",data:h}),P.current.addLayer({id:"radius-circle",type:"fill",source:"radius-circle",paint:{"fill-color":"#03BCD4","fill-opacity":.2}}),P.current.addSource("wells",{type:"geojson",data:h}),P.current.addLayer({id:"wells",type:"circle",source:"wells",layout:{"circle-sort-key":["get","sortKey"]},paint:{"circle-radius":["get","radius"],"circle-color":["get","color"],"circle-opacity":["get","opacity"]}}),k(!0)})))}),[c]),u((function(){return function(){P.current&&(P.current.remove(),P.current=null,L.current=null,O.current=null)}}),[]),u((function(){if(P.current&&T&&c){if(!A)return P.current.getSource("radius-circle").setData(h),void(L.current=null);var r=function(r,t){for(var o=e(r,2),n=o[0],u=o[1],l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:64,i=[],c=t/(111320*Math.cos(n*Math.PI/180)),a=t/110574,s=0;s<=l;s+=1){var d=s/l*(2*Math.PI);i.push([u+c*Math.cos(d),n+a*Math.sin(d)])}return i}(A,1609.34*x);P.current.getSource("radius-circle").setData({type:"Feature",geometry:{type:"Polygon",coordinates:[r]}}),L.current=r.reduce((function(e,r){return e.extend(r)}),new v.LngLatBounds)}}),[x,A,c,T]),u((function(){if(P.current&&T&&c){var e=R.current;R.current=b;var r=D.map((function(e){return e.id})),t=s(b,(function(e){return r.includes(e.id)})),o=[],n={},u=new v.LngLatBounds;t.forEach((function(e){var t=a(e,F);if(t&&y(t)){var l=f&&f.id===e.id,i=r.includes(e.id),c=l?10:5,s=l||i?"#00FFFF":a(B,e.formation,"#BDBDBD"),d=l||i?1:.3;n[e.id]=e,u.extend(w(t)),o.push({type:"Feature",geometry:{type:"Point",coordinates:w(t)},properties:{wellId:e.id,radius:c,color:s,opacity:d,sortKey:i?1:0}})}})),P.current.getSource("wells").setData({type:"FeatureCollection",features:o}),O.current=o.length?u:null;var d=P.current,g=null,h=function(e){d.getCanvas().style.cursor="pointer";var r=n[e.features[0].properties.wellId];if(r&&r.id!==g&&(g=r.id,C)){var t=document.createElement("div"),o=l(C,{well:r,color:a(B,r.formation,"#BDBDBD")});i.render(p(m,{children:o}),t),q.current||(q.current=new v.Popup({closeButton:!1,maxWidth:"none"})),q.current.setLngLat(w(a(r,F))).setDOMContent(t).addTo(d)}},x=function(){var e;g=null,d.getCanvas().style.cursor="",null===(e=q.current)||void 0===e||e.remove()},M=function(e){var t=e.features[0].properties.wellId,o=f&&f.id===t;r.includes(t)&&!o?j(t):W(t)};return d.on("mousemove","wells",h),d.on("mouseleave","wells",x),d.on("click","wells",M),setTimeout((function(){P.current&&L.current&&b!==e&&P.current.fitBounds(L.current,{padding:5})}),500),function(){d.off("mousemove","wells",h),d.off("mouseleave","wells",x),d.off("click","wells",M)}}}),[f,b,D,c,T]),u((function(){c&&setTimeout((function(){f?P.current&&L.current&&P.current.fitBounds(L.current,{padding:5}):P.current&&O.current&&P.current.fitBounds(O.current)}),500)}),[x,f,c,T]),p("div",{className:d.map,children:p("div",{className:d.mapMain,ref:M})})}b.propTypes={open:c.bool.isRequired,subjectWell:c.shape({id:c.number,formation:c.string}),wells:c.arrayOf(c.shape({})).isRequired,offsetWells:c.arrayOf(c.shape({})),radius:c.number.isRequired,formationColors:c.shape({}).isRequired,popUpFormatter:c.func,coordsDataPath:c.string,onAddOffsetWell:c.func.isRequired,onDeleteOffsetWell:c.func.isRequired},b.defaultProps={subjectWell:null,popUpFormatter:null,coordsDataPath:"settings.top_hole.coordinates",offsetWells:null};var D=r(b);export{D as default};
2
2
  //# sourceMappingURL=Map.js.map