@corva/ui 3.67.0-0 → 3.67.0-2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs-bundle/components/BICOffsetPickerDialog/components/Map/Map.js +1 -1
- package/cjs-bundle/components/BICOffsetPickerDialog/components/Map/Map.js.map +1 -1
- package/cjs-bundle/components/OffsetWellMap/OffsetWellMap.js +1 -1
- package/cjs-bundle/components/OffsetWellMap/OffsetWellMap.js.map +1 -1
- package/cjs-bundle/components/OffsetWellPickerV2/components/Map/Map.js +1 -1
- package/cjs-bundle/components/OffsetWellPickerV2/components/Map/Map.js.map +1 -1
- package/cjs-bundle/components/OffsetWellPickerV3/components/CustomSelectionView/components/Map/Map.js +1 -1
- package/cjs-bundle/components/OffsetWellPickerV3/components/CustomSelectionView/components/Map/Map.js.map +1 -1
- package/cjs-bundle/componentsV2/Autocomplete/Autocomplete.scss.js +1 -1
- package/cjs-bundle/componentsV2/Autocomplete/AutocompleteMenuItem.js +1 -1
- package/cjs-bundle/componentsV2/Menu/MenuItem/MenuItem.js +1 -1
- package/cjs-bundle/componentsV2/Menu/MenuItem/MenuItem.scss.js +1 -1
- package/cjs-bundle/componentsV2/RadioAndCheckboxLabel/RadioAndCheckboxLabel.js +1 -1
- package/cjs-bundle/componentsV2/RadioAndCheckboxLabel/RadioAndCheckboxLabel.scss.js +1 -1
- package/components/BICOffsetPickerDialog/components/Map/Map.d.ts.map +1 -1
- package/components/BICOffsetPickerDialog/components/Map/Map.js +1 -1
- package/components/BICOffsetPickerDialog/components/Map/Map.js.map +1 -1
- package/components/OffsetWellMap/OffsetWellMap.d.ts.map +1 -1
- package/components/OffsetWellMap/OffsetWellMap.js +1 -1
- package/components/OffsetWellMap/OffsetWellMap.js.map +1 -1
- package/components/OffsetWellPickerV2/components/Map/Map.d.ts.map +1 -1
- package/components/OffsetWellPickerV2/components/Map/Map.js +1 -1
- package/components/OffsetWellPickerV2/components/Map/Map.js.map +1 -1
- package/components/OffsetWellPickerV3/components/CustomSelectionView/components/Map/Map.d.ts.map +1 -1
- package/components/OffsetWellPickerV3/components/CustomSelectionView/components/Map/Map.js +1 -1
- package/components/OffsetWellPickerV3/components/CustomSelectionView/components/Map/Map.js.map +1 -1
- package/componentsV2/Autocomplete/Autocomplete.scss.js +1 -1
- package/componentsV2/Autocomplete/AutocompleteMenuItem.d.ts.map +1 -1
- package/componentsV2/Autocomplete/AutocompleteMenuItem.js +1 -1
- package/componentsV2/Menu/MenuItem/MenuItem.d.ts.map +1 -1
- package/componentsV2/Menu/MenuItem/MenuItem.js +1 -1
- package/componentsV2/Menu/MenuItem/MenuItem.scss.js +1 -1
- package/componentsV2/RadioAndCheckboxLabel/RadioAndCheckboxLabel.d.ts.map +1 -1
- package/componentsV2/RadioAndCheckboxLabel/RadioAndCheckboxLabel.js +1 -1
- package/componentsV2/RadioAndCheckboxLabel/RadioAndCheckboxLabel.scss.js +1 -1
- package/mcp-server/server.mjs +5 -5
- package/package.json +1 -1
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{memo as r,useRef as e,useMemo as t,useEffect as
|
|
1
|
+
import{memo as r,useRef as e,useMemo as t,useEffect as n,createElement as o}from"react";import l from"react-dom";import u from"prop-types";import c from"mapbox.js";import{get as i}from"lodash";import{usePrevious as a}from"../../effects/index.js";import s from"./Map.css.js";import{mapbox as f}from"../../../../utils/index.js";import{jsx as m}from"react/jsx-runtime";var d=f.isValidCoordinates,p=[29.749907,-95.358421];function v(r){var u=r.subjectWell,f=r.wells,v=r.offsetWells,h=r.radius,b=r.subjectWellMarkerSize,k=r.wellMarkerSize,y=r.coordsDataPath,g=e(null),j=e(null),x=e(null),C=e(null),M=a(f),W=t((function(){return u&&i(u,y)}),[u,y]);n((function(){g.current=c.mapbox.map(g.current,null,{attributionControl:!1,scrollWheelZoom:!1,zoomControl:!1}).setView(p,1),c.control.zoom({position:"bottomright"}).addTo(g.current),c.mapbox.styleLayer("mapbox://styles/mapbox/dark-v9").addTo(g.current);var r=g.current;return function(){r.off("layerremove"),r.remove(),g.current=null,j.current=null,x.current=null}}),[]),n((function(){g.current&&(j.current&&g.current.removeLayer(j.current),W?(j.current=c.circle(W,1609.34*h,{stroke:!1,fill:!0,fillOpacity:.2,fillColor:"#03BCD4",className:"circle_500"}),j.current.addTo(g.current)):j.current=null)}),[h,W]);return n((function(){if(g.current){g.current.closePopup(),x.current&&x.current.removeFrom(g.current);var r=v.map((function(r){return r.id})),e=[];f.forEach((function(t){var n=i(t,y);if(n&&d(n)){var a=u&&u.id===t.id,s=r.includes(t.id),f=a?b:k,p=a||s?1:.3,v=c.circleMarker(n,{radius:f,stroke:!1,fill:!0,fillOpacity:p,fillColor:"#FFC107",className:"circle_500"});v.addEventListener("mouseover",(function(){var r=document.createElement("div"),u=o((function(r){var e=r.well;return m("div",{style:{color:"#fff",background:"##414141"},children:m("span",{style:{fontSize:"11px",lineHeight:"16px"},children:i(e,"name")})})}),{well:t});l.render(u,r),c.popup().setLatLng(n).setContent(r).openOn(g.current),function(r,e,t){C.current=c.circleMarker(e,{radius:3*t,stroke:!1,fill:!0,fillOpacity:.2,fillColor:"#FFC107",className:"circle_highlight"}),C.current.addEventListener("mouseout",(function(){x.current.removeFrom(g.current),x.current=c.featureGroup(r),x.current.addTo(g.current),g.current.closePopup()}));var n=r.concat(C.current);x.current=c.featureGroup(n),x.current.addTo(g.current)}(e,n,f)})),e.push(v)}})),e.length&&(x.current=c.featureGroup(e),x.current.addTo(g.current)),setTimeout((function(){j.current&&j.current.bringToBack(),g.current&&x.current&&f!==M&&g.current.fitBounds(x.current.getBounds())}),500)}}),[u,f,v]),m("div",{className:s.map,children:m("div",{className:s.mapMain,ref:g})})}v.propTypes={subjectWell:u.shape({id:u.number,formation:u.string}),wells:u.arrayOf(u.shape({})).isRequired,offsetWells:u.arrayOf(u.shape({})),radius:u.number.isRequired,subjectWellMarkerSize:u.number,wellMarkerSize:u.number,coordsDataPath:u.string},v.defaultProps={subjectWell:null,subjectWellMarkerSize:8,wellMarkerSize:5,coordsDataPath:"settings.top_hole.coordinates",offsetWells:null};var h=r(v);export{h as default};
|
|
2
2
|
//# sourceMappingURL=Map.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Map.js","sources":["../../../../../src/components/BICOffsetPickerDialog/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 } from 'lodash';\n\nimport { usePrevious } from '../../effects';\n\nimport styles from './Map.css';\n\nimport { mapbox } from '~/utils';\n\nconst { isValidCoordinates } = mapbox;\n\nconst RADIUS_CIRCLE_COLOR = '#03BCD4';\nconst METERS_IN_MILE = 1609.34;\nconst DEFAULT_SUBJECT_WELL_MARKER_SIZE = 8;\nconst DEFAULT_WELL_MARKER_SIZE = 5;\nconst OFFSET_WELL_COLOR = '#FFC107';\n\nconst DEFAULT_COORDS = [29.749907, -95.358421]; // TX coordinates\n\nconst toolTip =\n () =>\n // eslint-disable-next-line react/prop-types\n ({ well }) => {\n return (\n <div style={{ color: '#fff', background: '##414141' }}>\n <span style={{ fontSize: '11px', lineHeight: '16px' }}>{get(well, 'name')}</span>\n </div>\n );\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 coordsDataPath,\n}) {\n const mapContainerRef = useRef(null);\n const radiusCircleRef = useRef(null);\n const markersGroupRef = useRef(null);\n const highlightMarkerRef = useRef(null);\n\n const prevWells = usePrevious(wells);\n\n const subjectWellCoords = useMemo(() => {\n return subjectWell && get(subjectWell, coordsDataPath);\n }, [subjectWell, coordsDataPath]);\n\n // NOTE: Initialize map\n useEffect(() => {\n mapContainerRef.current = L.mapbox\n .map(mapContainerRef.current, null, {\n attributionControl: false,\n scrollWheelZoom: false,\n zoomControl: false,\n })\n .setView(DEFAULT_COORDS, 1);\n\n L.control\n .zoom({\n position: 'bottomright',\n })\n .addTo(mapContainerRef.current);\n L.mapbox.styleLayer('mapbox://styles/mapbox/dark-v9').addTo(mapContainerRef.current);\n }, []);\n\n // NOTE: Radius circle\n useEffect(() => {\n if (!mapContainerRef.current) {\n return;\n }\n\n // NOTE: Clean up\n if (radiusCircleRef.current) {\n mapContainerRef.current.removeLayer(radiusCircleRef.current);\n }\n\n if (!subjectWellCoords) {\n radiusCircleRef.current = null;\n return;\n }\n\n radiusCircleRef.current = L.circle(subjectWellCoords, radius * METERS_IN_MILE, {\n stroke: false,\n fill: true,\n fillOpacity: 0.2,\n fillColor: RADIUS_CIRCLE_COLOR,\n className: 'circle_500',\n });\n\n radiusCircleRef.current.addTo(mapContainerRef.current);\n }, [radius, subjectWellCoords]);\n\n const handleMouseOver = (markers, coords, r) => {\n highlightMarkerRef.current = L.circleMarker(coords, {\n radius: r * 3,\n stroke: false,\n fill: true,\n fillOpacity: 0.2,\n fillColor: OFFSET_WELL_COLOR,\n className: 'circle_highlight',\n });\n\n highlightMarkerRef.current.addEventListener('mouseout', () => {\n markersGroupRef.current.removeFrom(mapContainerRef.current);\n markersGroupRef.current = L.featureGroup(markers);\n markersGroupRef.current.addTo(mapContainerRef.current);\n\n mapContainerRef.current.closePopup();\n });\n\n const newMarkers = markers.concat(highlightMarkerRef.current);\n markersGroupRef.current = L.featureGroup(newMarkers);\n markersGroupRef.current.addTo(mapContainerRef.current);\n };\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 = OFFSET_WELL_COLOR;\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 // Tooltip\n const tooltipContainer = document.createElement('div');\n const tootipContent = createElement(toolTip(), { well });\n ReactDOM.render(tootipContent, tooltipContainer);\n L.popup().setLatLng(coords).setContent(tooltipContainer).openOn(mapContainerRef.current);\n\n // Highlight\n handleMouseOver(markers, coords, r);\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 && markersGroupRef.current && wells !== prevWells) {\n mapContainerRef.current.fitBounds(markersGroupRef.current.getBounds());\n }\n }, 500);\n }, [subjectWell, wells, offsetWells]);\n\n return (\n <div className={styles.map}>\n <div className={styles.mapMain} ref={mapContainerRef} />\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 coordsDataPath: PropTypes.string,\n};\n\nWellsMap.defaultProps = {\n subjectWell: null,\n subjectWellMarkerSize: DEFAULT_SUBJECT_WELL_MARKER_SIZE,\n wellMarkerSize: DEFAULT_WELL_MARKER_SIZE,\n coordsDataPath: 'settings.top_hole.coordinates',\n offsetWells: null,\n};\n\nexport default memo(WellsMap);\n"],"names":["isValidCoordinates","mapbox","DEFAULT_COORDS","WellsMap","_ref2","subjectWell","wells","offsetWells","radius","subjectWellMarkerSize","wellMarkerSize","coordsDataPath","mapContainerRef","useRef","radiusCircleRef","markersGroupRef","highlightMarkerRef","prevWells","usePrevious","subjectWellCoords","useMemo","get","useEffect","current","L","map","attributionControl","scrollWheelZoom","zoomControl","setView","control","zoom","position","addTo","styleLayer","removeLayer","circle","stroke","fill","fillOpacity","fillColor","className","closePopup","removeFrom","offsetWellIds","well","id","markers","forEach","coords","isWellSubject","isWellOffset","includes","r","opacity","newMarker","circleMarker","addEventListener","tooltipContainer","document","createElement","tootipContent","_ref","_jsx","style","color","background","children","fontSize","lineHeight","ReactDOM","render","popup","setLatLng","setContent","openOn","featureGroup","newMarkers","concat","handleMouseOver","push","length","setTimeout","bringToBack","fitBounds","getBounds","styles","mapMain","ref","propTypes","PropTypes","shape","number","formation","string","arrayOf","isRequired","defaultProps","memo"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Map.js","sources":["../../../../../src/components/BICOffsetPickerDialog/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 } from 'lodash';\n\nimport { usePrevious } from '../../effects';\n\nimport styles from './Map.css';\n\nimport { mapbox } from '~/utils';\n\nconst { isValidCoordinates } = mapbox;\n\nconst RADIUS_CIRCLE_COLOR = '#03BCD4';\nconst METERS_IN_MILE = 1609.34;\nconst DEFAULT_SUBJECT_WELL_MARKER_SIZE = 8;\nconst DEFAULT_WELL_MARKER_SIZE = 5;\nconst OFFSET_WELL_COLOR = '#FFC107';\n\nconst DEFAULT_COORDS = [29.749907, -95.358421]; // TX coordinates\n\nconst toolTip =\n () =>\n // eslint-disable-next-line react/prop-types\n ({ well }) => {\n return (\n <div style={{ color: '#fff', background: '##414141' }}>\n <span style={{ fontSize: '11px', lineHeight: '16px' }}>{get(well, 'name')}</span>\n </div>\n );\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 coordsDataPath,\n}) {\n const mapContainerRef = useRef(null);\n const radiusCircleRef = useRef(null);\n const markersGroupRef = useRef(null);\n const highlightMarkerRef = useRef(null);\n\n const prevWells = usePrevious(wells);\n\n const subjectWellCoords = useMemo(() => {\n return subjectWell && get(subjectWell, coordsDataPath);\n }, [subjectWell, coordsDataPath]);\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 const handleMouseOver = (markers, coords, r) => {\n highlightMarkerRef.current = L.circleMarker(coords, {\n radius: r * 3,\n stroke: false,\n fill: true,\n fillOpacity: 0.2,\n fillColor: OFFSET_WELL_COLOR,\n className: 'circle_highlight',\n });\n\n highlightMarkerRef.current.addEventListener('mouseout', () => {\n markersGroupRef.current.removeFrom(mapContainerRef.current);\n markersGroupRef.current = L.featureGroup(markers);\n markersGroupRef.current.addTo(mapContainerRef.current);\n\n mapContainerRef.current.closePopup();\n });\n\n const newMarkers = markers.concat(highlightMarkerRef.current);\n markersGroupRef.current = L.featureGroup(newMarkers);\n markersGroupRef.current.addTo(mapContainerRef.current);\n };\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 = OFFSET_WELL_COLOR;\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 // Tooltip\n const tooltipContainer = document.createElement('div');\n const tootipContent = createElement(toolTip(), { well });\n ReactDOM.render(tootipContent, tooltipContainer);\n L.popup().setLatLng(coords).setContent(tooltipContainer).openOn(mapContainerRef.current);\n\n // Highlight\n handleMouseOver(markers, coords, r);\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 && markersGroupRef.current && wells !== prevWells) {\n mapContainerRef.current.fitBounds(markersGroupRef.current.getBounds());\n }\n }, 500);\n }, [subjectWell, wells, offsetWells]);\n\n return (\n <div className={styles.map}>\n <div className={styles.mapMain} ref={mapContainerRef} />\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 coordsDataPath: PropTypes.string,\n};\n\nWellsMap.defaultProps = {\n subjectWell: null,\n subjectWellMarkerSize: DEFAULT_SUBJECT_WELL_MARKER_SIZE,\n wellMarkerSize: DEFAULT_WELL_MARKER_SIZE,\n coordsDataPath: 'settings.top_hole.coordinates',\n offsetWells: null,\n};\n\nexport default memo(WellsMap);\n"],"names":["isValidCoordinates","mapbox","DEFAULT_COORDS","WellsMap","_ref2","subjectWell","wells","offsetWells","radius","subjectWellMarkerSize","wellMarkerSize","coordsDataPath","mapContainerRef","useRef","radiusCircleRef","markersGroupRef","highlightMarkerRef","prevWells","usePrevious","subjectWellCoords","useMemo","get","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","well","id","markers","forEach","coords","isWellSubject","isWellOffset","includes","r","opacity","newMarker","circleMarker","addEventListener","tooltipContainer","document","createElement","tootipContent","_ref","_jsx","style","color","background","children","fontSize","lineHeight","ReactDOM","render","popup","setLatLng","setContent","openOn","featureGroup","newMarkers","concat","handleMouseOver","push","length","setTimeout","bringToBack","fitBounds","getBounds","styles","mapMain","ref","propTypes","PropTypes","shape","number","formation","string","arrayOf","isRequired","defaultProps","memo"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OffsetWellMap.d.ts","sourceRoot":"","sources":["../../../src/components/OffsetWellMap/OffsetWellMap.js"],"names":[],"mappings":";AAiCA,0EAA0E;AAC1E,6BADW,KAAK,CAAC,EAAE,CAAC,OAAO,sBAAsB,EAAE,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"OffsetWellMap.d.ts","sourceRoot":"","sources":["../../../src/components/OffsetWellMap/OffsetWellMap.js"],"names":[],"mappings":";AAiCA,0EAA0E;AAC1E,6BADW,KAAK,CAAC,EAAE,CAAC,OAAO,sBAAsB,EAAE,kBAAkB,CAAC,CAkcpE"}
|
|
@@ -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
|
|
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};
|
|
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\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) {\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","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 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":"gwBAM0B,IAYlBA,EAAuBC,EAAvBD,mBACFE,EAAiB,CAAC,WAAY,WAY9BC,EAAS,CAAC,YAAa,UAAW,OAGlCC,EAAgB,SAWhBC,GAAA,IAVJC,IAAAA,WAAUC,EAAAF,EACVG,YAAAA,aAAc,KAAID,EAClBE,IAAAA,MACAC,IAAAA,cACAC,IAAAA,OACAC,IAAAA,wBAAuBC,EAAAR,EACvBS,uBAAAA,aAAyBF,EAAuBC,EAChDE,IAAAA,aAAYC,EAAAX,EACZY,YAAAA,cAAkBD,EAAAE,EAAAb,EAClBc,QAAAA,OAAO,IAAAD,EAAG,CAAA,EAAEA,EAENE,EAAoBC,GAAQ,WAChC,OAAOb,GAAec,EAAId,EAAa,sBACzC,GAAG,CAACA,IACEe,EAAkBF,GAAQ,WAAA,OAAMG,EAAiBf,KAAQ,CAACA,IAE1DgB,EAASC,IACTC,EAAkBD,IAClBE,EAAiBF,IACjBG,EAAkBH,IAClBI,EAAqBJ,EAAO,MACsBK,EAAAA,GAAS,GAAMC,EAAAC,EAAAC,EAAA,GAAhEC,EAAoBH,EAAA,GAAEI,EAAuBJ,EAAA,GAC9CK,EAAcX,IACdY,EAAoBZ,IACpBa,GAA4B/B,aAAW,EAAXA,EAAagC,MAAOzB,EAChD0B,GAAYC,EAAiBjC,GACCsB,GAAAA,EAAS,MAAKY,GAAAV,EAAAW,GAAA,GAA3CC,GAAUF,GAAA,GAAEG,GAAaH,GAAA,GACRZ,GAAAA,EApCF,GAoC2BgB,GAAAd,EAAAe,GAAA,GAA1CC,GAAIF,GAAA,GAAEG,GAAOH,GAAA,GAEdI,GAAYzB,EAAO,IAAI0B,KACvBC,GAAoB3B,EAAO,IAC3B4B,GAAmB5B,EAAO,MAGhC6B,GAAU,WACR9B,EAAO+B,QAAUC,EAAExD,OAChByD,IAAIjC,EAAO+B,QAAS,KAAM,CACzBG,oBAAoB,EACpBC,iBAAiB,EACjBC,aAAa,IAEdC,QAAQ5D,EAlDS,GAmDjB6D,GAAG,WAAW,WAAA,OAAMb,GAAQzB,EAAO+B,QAAQQ,cAC9CvC,EAAO+B,QAAQS,gBAAgBC,UAE/BT,EAAExD,OAAOkE,WAAW,kCAAkCC,MAAM3C,EAAO+B,SAGnE,IAAME,EAAMjC,EAAO+B,QACnB,OAAO,WAELE,EAAIW,IAAI,eACRX,EAAIY,SACJ7C,EAAO+B,QAAU,KACjB7B,EAAgB6B,QAAU,KAC1B3B,EAAgB2B,QAAU,KAE7B,GAAE,IAGHD,GAAU,WACR,GAAK9B,EAAO+B,QAAZ,CAaA,GARI7B,EAAgB6B,UAClB/B,EAAO+B,QAAQe,YAAY5C,EAAgB6B,SAC3C7B,EAAgB6B,QAAU,MAExB5B,EAAe4B,SACjB/B,EAAO+B,QAAQe,YAAY3C,EAAe4B,UAGvCpC,EAGH,OAFAO,EAAgB6B,QAAU,UAC1B5B,EAAe4B,QAAU,MAIvB7C,IACFgB,EAAgB6B,QAAUC,EAAEe,OAAOpD,EA3FlB,QA2FqCT,EAAyB,CAC7E8D,QAAQ,EACRC,MAAM,EACNC,YAAa,GACbC,UAjGoB,UAkGpBC,UAAW,eAGblD,EAAgB6B,QAAQY,MAAM3C,EAAO+B,SA1BvC,CA4BF,GAAG,CAAC7C,EAAQS,IAGZ,IAAM0D,GAAwB,SAC5BC,EACAC,EACAC,EACAC,EACAC,EACAC,GAEIA,IACFL,EAAcM,SAAS,CAAET,UAlHF,YAmHvBxC,GAAwB,IAG1BN,EAAmB0B,QAAUC,EAAE6B,aAAaN,EAAQ,CAClDrE,OAAQyE,EA3HW,EACK,GA2HxBX,QAAQ,EACRC,MAAM,EACNC,YAAa,IACbC,UAAWQ,EA3HY,UA2H2BH,EAClDJ,UAAW,qBAGb/C,EAAmB0B,QAAQ+B,iBAAiB,YAAY,WACtD1D,EAAgB2B,QAAQgC,WAAW/D,EAAO+B,SAC1C3B,EAAgB2B,QAAUC,EAAEgC,aAAapD,EAAYmB,SACrD3B,EAAgB2B,QAAQY,MAAM3C,EAAO+B,SACrC/B,EAAO+B,QAAQkC,aACXN,IACFL,EAAcM,SAAS,CAAET,UAvIP,YAwIlBxC,GAAwB,GAE5B,IAEAN,EAAmB0B,QAAQ+B,iBAAiB,SAAS,WAC/CjF,GAEFQ,EAAuBoE,GADrBC,EAKN,IAEA,IAAMQ,EAAatD,EAAYmB,QAAQoC,OAAO9D,EAAmB0B,SACjE3B,EAAgB2B,QAAQgC,WAAW/D,EAAO+B,SAC1C3B,EAAgB2B,QAAUC,EAAEgC,aAAaE,GACzC9D,EAAgB2B,QAAQY,MAAM3C,EAAO+B,UAGjCqC,GAAc,SAACX,EAAMC,EAAcC,EAAeJ,EAAQc,GAC9D,IAAMC,EAAiBC,SAASC,cAAc,OACxCC,EAAeD,EAAcE,IAAe,CAChD7F,WAAAA,EACA4E,KAAAA,EACAD,MAAO3D,EAAIC,EAAiB2D,EAAKkB,UAAW,WAC5CjB,aAAAA,EACAC,cAAAA,EACAU,OAAAA,EACA7E,YAAAA,IAEFoF,EAASC,OAAOC,EAAAC,EAAA,CAAAC,SAAGP,IAAkBH,GACrCtC,EAAEiD,QAAQC,UAAU3B,GAAQ4B,WAAWb,GAAgBc,OAAOpF,EAAO+B,UAIvED,GAAU,WACR,GAAK9B,EAAO+B,SAAY/C,GAAUC,EAAlC,CAIAe,EAAO+B,QAAQkC,aAEf,IAAMoB,EAAmB,IAAIC,IAAIrG,GAC3BsG,EAAgB,IAAID,IAAI1D,GAAkBG,SAOhD,GALE/C,IAAUgC,IACVa,GAAiBE,UAAYzC,GAC7BN,EAAMwG,OAAM,SAAA/B,GAAI,OAAIA,EAAK1C,EAAE,KAC3BsE,EAAiBI,OAASF,EAAcE,KAEb,CAE3B,IAAMC,EAAe1G,EAAM2G,QAAO,SAAAlC,GAGhC,OAFkB8B,EAAcK,IAAInC,EAAK1C,MACxBsE,EAAiBO,IAAInC,EAAK1C,KACV0C,EAAK1C,MAAOhC,aAAAA,EAAAA,EAAagC,GAC5D,IAEA,GAAI2E,EAAaG,OAAS,GAAKH,EAAaG,OAAS,GAiBnD,OAhBAH,EAAaI,SAAQ,SAAArC,GACnB,IAAMsC,EAAiBrE,GAAUK,QAAQlC,IAAI4D,EAAK1C,IAClD,GAAIgF,EAAgB,CAClB,IAAMrC,EAAezE,EAAc+G,SAASvC,EAAK1C,IAC3CyC,EAAQ3D,EAAIC,EAAiB2D,EAAKkB,UAAW,WAC7CsB,EAAUvC,EAAe,GAAM,GAErCqC,EAAenC,SAAS,CACtBV,YAAa+C,EACb9C,UAAWK,GAEf,CACF,IAEA5B,GAAkBG,QAAc9C,EAAAA,QAChC4C,GAAiBE,QAAUzC,EAG/B,CAGIc,EAAgB2B,SAClB3B,EAAgB2B,QAAQgC,WAAW/D,EAAO+B,SAE5CL,GAAUK,QAAQmE,QAElB,IAAMC,EAAU,GACVC,EAAc,GACdC,EAAkB,GACxBrH,EAAM8G,SAAQ,SAAArC,GACRA,EAAK1C,MAAOhC,aAAAA,EAAAA,EAAagC,MACvB9B,EAAc+G,SAASvC,EAAK1C,IAC9BqF,EAAYE,KAAK7C,GAEjB4C,EAAgBC,KAAK7C,GAG3B,IACwB4C,GAAAA,OAAAA,EAAoBD,EAAW,CAAErH,IAC7C+G,SAAQ,SAAArC,GAAQ,IAAA8C,EACpBhD,EAASE,SAAA,QAAAA,EAAAA,EAAM+C,eAAN,IAAAD,OAAA9C,EAAA8C,EAAeE,YAE9B,GAAIlD,GAAUhF,EAAmBgF,GAAS,CACxC,IAAMI,GAAgB5E,aAAAA,EAAAA,EAAagC,MAAO0C,EAAK1C,GACzC2C,EAAezE,EAAc+G,SAASvC,EAAK1C,MAAQ4C,EACnDH,EAAQG,EAhPI,UAkPd9D,EAAIC,EAAiB2D,EAAKkB,UAAW,WACnCsB,EAAUvC,EAAe,GAAM,GAErC,GAAIA,EAAc,CAChB,IAAMgD,EAAqB1E,EAAE6B,aAAaN,EAAQ,CAChDrE,OAxPkB,GAyPlB8D,QAAQ,EACRC,MAAM,EACNE,UAAWK,EACXJ,UAAW,aACXF,YAAa,MAEfiD,EAAQG,KAAKI,EACf,CAEA,IAAMC,EAAY3E,EAAE6B,aAAaN,EAAQ,CACvCrE,OApQe,EAqQf8D,QAAQ,EACRC,MAAM,EACNC,YAAaS,EAAgB,EAAIsC,EACjC9C,UAAWK,EACXJ,UAAW,eA2Bb,GAxBAuD,EAAU7C,iBAAiB,aAAa,SAAA8C,GACtC,IAAIvC,EAAS,CAAC,EAAG,GACbjD,IAAcvB,EAAI+G,EAAEC,OAAQnI,KAC9B2F,EAAS,CACPxE,EAAI+G,EAAEC,OAAQnI,GAAQoI,EAAI1F,GAAW0F,EACrCjH,EAAI+G,EAAEC,OAAQnI,GAAQqI,EAAI3F,GAAW2F,IAGzC3C,GAAYX,EAAMC,EAAcC,EAAeJ,EAAQc,GAGvDhB,GAAsBsD,EAAWpD,EAAQC,EAAOC,EAAMC,EAAcC,EACtE,IAEIA,IACF9C,EAAkBkB,QAAU4E,GAG1BlD,EAAK1C,IACPW,GAAUK,QAAQiF,IAAIvD,EAAK1C,GAAI4F,GAGjCR,EAAQG,KAAKK,GAETlD,EAAK1C,KAAOzB,IAAiBwB,EAA2B,CAC1D,IAAMmG,EAAkBjF,EAAE6B,aAAaN,EAAQ,CAC7CrE,OArSkB,GAsSlB8D,QAAQ,EACRC,MAAM,EACNC,YAAa,IACbC,UAAWK,EACXJ,UAAW,gBAEb+C,EAAQG,KAAKW,EACf,CACF,CACF,IAEId,EAAQN,SACVzF,EAAgB2B,QAAUC,EAAEgC,aAAamC,GACzC/F,EAAgB2B,QAAQY,MAAM3C,EAAO+B,UAEvCnB,EAAYmB,QAAUoE,EAEtBvE,GAAkBG,QAAc9C,EAAAA,GAChC4C,GAAiBE,QAAUzC,EAE3B4H,YAAW,WACLhH,EAAgB6B,SAClB7B,EAAgB6B,QAAQoF,cAGtBjI,EAvTS,KAuTcc,EAAO+B,SAAW7B,EAAgB6B,SAAW/C,IAAUgC,IAChFhB,EAAO+B,QAAQqF,UAAUlH,EAAgB6B,QAAQsF,YAAa,CAAEC,QAAS,CAAC,EAAG,IAEhF,GAAE,IAnJH,CAoJD,GAAE,CAACvI,EAAaC,EAAOC,EAAemC,KAIvCU,GAAU,WACR,GAAKpB,GACDb,EAAIG,EAAO+B,QAASrD,IAAW0C,GAAY,CAC7C,IAAMiD,EAAS,CACbxE,EAAIG,EAAO+B,QAASrD,GAAQoI,EAAI1F,GAAW0F,EAC3CjH,EAAIG,EAAO+B,QAASrD,GAAQqI,EAAI3F,GAAW2F,GAE7C3C,GAAYrF,GAAa,GAAO,EAAMY,EAAmB0E,EAC3D,CACD,GAAE,CAAC3D,EAAsBU,GAAYrC,EAAaY,IAEnDmC,GAAU,WACR,GAAK9B,EAAO+B,SAAYpC,EAAxB,CAEIQ,EAAe4B,SACjB5B,EAAe4B,QAAQgC,WAAW/D,EAAO+B,SAG3C,IAAMwF,EAAOvF,EAAEuF,KAAK,CAClBC,QACE9G,GAAwBI,EA1WN,qDAAA,qDA6WpB2G,SAAU/G,GAAwBI,EAA4B,CAAC,GAAI,IAAM,CAAC,GAAI,IAC9E4G,WAAYhH,GAAwBI,EAA4B,CAAC,GAAI,IAAM,CAAC,GAAI,IAChFsC,UAAW,QAEbjD,EAAe4B,QAAUC,EAAE2F,OAAOhI,EAAmB,CAAE4H,KAAAA,IACvDpH,EAAe4B,QAAQY,MAAM3C,EAAO+B,SAEhClB,EAAkBkB,UACpB5B,EAAe4B,QAAQ+B,iBAAiB,aAAa,WACnDnD,GAAwB,GAExB0C,GACExC,EAAkBkB,QAClBpC,EA1WgB,UA4WhBZ,GACA,GACA,EAEJ,IAEAoB,EAAe4B,QAAQ+B,iBAAiB,YAAY,WAClD1D,EAAgB2B,QAAQgC,WAAW/D,EAAO+B,SAC1C3B,EAAgB2B,QAAUC,EAAEgC,aAAapD,EAAYmB,SACrD3B,EAAgB2B,QAAQY,MAAM3C,EAAO+B,SACrC/B,EAAO+B,QAAQkC,aACfpD,EAAkBkB,QAAQ6B,SAAS,CAAET,UAvXnB,YAwXlBxC,GAAwB,EAC1B,IAvCyC,CAyC7C,GAAG,CACDD,EACAf,EACAT,EACAH,EACA+B,EACAM,KAIFU,GAAU,WACJ5C,EA/XW,IAgYbc,EAAO+B,QAAQN,QAAQ,GAGzByF,YAAW,WACLhH,EAAgB6B,SAClB7B,EAAgB6B,QAAQoF,cAEtBpI,EACEiB,EAAO+B,SAAW7B,EAAgB6B,SAAW7C,GAC/Cc,EAAO+B,QAAQqF,UAAUlH,EAAgB6B,QAAQsF,YAAa,CAC5DC,QAAS,CAAC,EAAG,KAGRtH,EAAO+B,SAAW3B,EAAgB2B,SAC3C/B,EAAO+B,QAAQqF,UAAUhH,EAAgB2B,QAAQsF,aAE/C1H,GAAqBK,EAAO+B,SAC9B/B,EAAO+B,QAAQ6F,MAAMjI,EAAmB,CACtCkI,SAAU,GACVC,cAAe,MAGfjI,EAAIG,EAAO+B,QAASrD,IACtB2C,GAAcxB,EAAIG,EAAO+B,QAASrD,GAErC,GAAE,IACJ,GAAE,CAACQ,EAAQH,EAAaY,IAEzB,IAAMoI,GAAe,WACnB/H,EAAO+B,QAAQN,QAAQD,GAAO,IAShC,OACEsD,EAAA,MAAA,CAAK1B,UAAW4E,EAAWC,EAAOC,QAASxI,EAAQyI,MAAMnD,SACvDF,EAAA,MAAA,CACE1B,UAAW4E,EAAWC,EAAOG,QAAS1I,EAAQuC,KAC9CoG,IAAKrI,EACLsI,cAAeP,GAAa/C,SAE5BuD,EAAA,MAAA,CAAKnF,UAAW6E,EAAOO,UAAUxD,SAAA,CAC/BF,EAAC2D,EAAO,CAACC,MAAOlH,GAhbH,GAgb2B,UAAY,GAAImH,UAAU,OAAM3D,SACtEF,EAAA,MAAA,CACE1B,UAAW4E,EAAWC,EAAOW,WAAUC,EAAA,GACpCZ,EAAOa,aAnbD,KAmbgBtH,KAEzBuH,QAAShB,GAAa/C,SAEtBF,EAACkE,EAAU,CAAC5F,UAAW6E,EAAOgB,oBAGlCnE,EAAC2D,EAAO,CAACC,MAAOlH,GAzbH,EAyb2B,WAAa,GAAImH,UAAU,OAAM3D,SACvEF,EAAA,MAAA,CACE1B,UAAW4E,EAAWC,EAAOW,WAAUC,EAAA,GACpCZ,EAAOa,aA5bD,IA4bgBtH,KAEzBuH,QA7BU,WAChBvH,GAAO,GACTxB,EAAO+B,QAAQN,QAAQD,GAAO,IA2BCwD,SAEvBF,EAACoE,EAAW,CAAC9F,UAAW6E,EAAOgB,0BAO7C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Map.d.ts","sourceRoot":"","sources":["../../../../../src/components/OffsetWellPickerV2/components/Map/Map.js"],"names":[],"mappings":";;AAsCA;;;;;;;;;
|
|
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,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
|
|
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 c from"react-dom";import a 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 b}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-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-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 g,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 a=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!a||a.id!==r.id}))}),[a,f]),M=i((function(){return a&&u(a,B)}),[a,B]),z=i((function(){var e=[],t=!1;D.forEach((function(r){"Null"===r.formation?t=!0:a&&a.formation===r.formation||e.includes(r.formation)||e.push(r.formation)}));var o=a?[a.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]}),[a,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=a&&a.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]});c.render(g(p,{theme:b,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)}}),[a,f,F,I]),n((function(){setTimeout((function(){T.current&&T.current.bringToBack(),a?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,a]),v("div",{className:d.map,children:[g("div",{className:d.mapMain,ref:S}),v("div",{className:d.mapFooter,children:[F&&v("div",{className:d.mapFooterItem,children:[g("div",{className:d.mapFooterItemSquare,style:{backgroundColor:"#00FFFF"}}),g("div",{className:d.mapFooterItemLabel,children:"Selected Offset Wells"})]}),E.map((function(r){return v("div",{className:d.mapFooterItem,children:[g("div",{className:d.mapFooterItemSquare,style:{backgroundColor:I[r]}}),g("div",{className:d.mapFooterItemLabel,children:r})]},r)}))]})]})}k.propTypes={subjectWell:a.shape({id:a.number,formation:a.string}),wells:a.arrayOf(a.shape({})).isRequired,offsetWells:a.arrayOf(a.shape({})),radius:a.number.isRequired,subjectWellMarkerSize:a.number,wellMarkerSize:a.number,popUpFormatter:a.func,coordsDataPath:a.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};
|
|
2
2
|
//# sourceMappingURL=Map.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Map.js","sources":["../../../../../src/components/OffsetWellPickerV2/components/Map/Map.js"],"sourcesContent":["import { createElement, memo, useRef, useEffect, useMemo } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport L from 'mapbox.js';\nimport { get, sortBy } from 'lodash';\nimport { MuiThemeProvider } from '@material-ui/core/styles';\n\nimport { usePrevious } from '../../effects';\n\nimport styles from './Map.css';\n\nimport { mapbox } from '~/utils';\nimport { theme } from '~/config';\n\nconst { isValidCoordinates } = mapbox;\n\nconst RADIUS_CIRCLE_COLOR = '#03BCD4';\nconst METERS_IN_MILE = 1609.34;\nconst DEFAULT_SUBJECT_WELL_MARKER_SIZE = 10;\nconst DEFAULT_WELL_MARKER_SIZE = 5;\nconst OFFSET_WELL_COLOR = '#00FFFF';\nconst COLORS = [\n '#FF00FF',\n '#F5BD80',\n '#FF0000',\n '#0080FF',\n '#FF8000',\n '#58ACFA',\n '#FA58F4',\n '#40FF00',\n '#4B8A08',\n '#40FF00',\n '#D8F781',\n];\n\nconst DEFAULT_COORDS = [29.749907, -95.358421]; // TX coordinates\n\n// eslint-disable-next-line no-unused-vars\nfunction WellsMap({\n subjectWell,\n wells,\n offsetWells,\n radius,\n subjectWellMarkerSize,\n wellMarkerSize,\n popUpFormatter,\n coordsDataPath,\n}) {\n const mapContainerRef = useRef(null);\n const radiusCircleRef = useRef(null);\n const markersGroupRef = useRef(null);\n\n const prevWells = usePrevious(wells);\n\n const restWells = useMemo(() => {\n return wells.filter(well => !subjectWell || subjectWell.id !== well.id);\n }, [subjectWell, wells]);\n\n const subjectWellCoords = useMemo(() => {\n return subjectWell && get(subjectWell, coordsDataPath);\n }, [subjectWell, coordsDataPath]);\n\n // NOTE: Get well marker colors according to its target formation\n const [formations, colorDict] = useMemo(() => {\n // NOTE: Determine well marker colors\n const restFormations = [];\n let hasNullFormation = false;\n\n restWells.forEach(well => {\n if (well.formation === 'Null') {\n hasNullFormation = true;\n } else if (\n (!subjectWell || subjectWell.formation !== well.formation) &&\n !restFormations.includes(well.formation)\n ) {\n restFormations.push(well.formation);\n }\n });\n\n const sortedFormations = subjectWell\n ? [subjectWell.formation].concat(sortBy(restFormations))\n : sortBy(restFormations);\n\n if (hasNullFormation && !sortedFormations.includes('Null')) {\n sortedFormations.push('Null');\n }\n\n const colors = sortedFormations.reduce(\n (result, item, idx) => ({\n ...result,\n [item]: COLORS[idx % COLORS.length],\n }),\n {}\n );\n\n return [sortedFormations, colors];\n }, [subjectWell, restWells]);\n\n // NOTE: Initialize map\n useEffect(() => {\n mapContainerRef.current = L.mapbox\n .map(mapContainerRef.current, null, {\n attributionControl: false,\n scrollWheelZoom: false,\n zoomControl: false,\n })\n .setView(DEFAULT_COORDS, 1);\n\n L.control\n .zoom({\n position: 'bottomright',\n })\n .addTo(mapContainerRef.current);\n L.mapbox.styleLayer('mapbox://styles/mapbox/dark-v9').addTo(mapContainerRef.current);\n }, []);\n\n // NOTE: Radius circle\n useEffect(() => {\n if (!mapContainerRef.current) {\n return;\n }\n\n // NOTE: Clean up\n if (radiusCircleRef.current) {\n mapContainerRef.current.removeLayer(radiusCircleRef.current);\n }\n\n if (!subjectWellCoords) {\n radiusCircleRef.current = null;\n return;\n }\n\n radiusCircleRef.current = L.circle(subjectWellCoords, radius * METERS_IN_MILE, {\n stroke: false,\n fill: true,\n fillOpacity: 0.2,\n fillColor: RADIUS_CIRCLE_COLOR,\n className: 'circle_500',\n });\n\n radiusCircleRef.current.addTo(mapContainerRef.current);\n }, [radius, subjectWellCoords]);\n\n // NOTE: Well markers\n useEffect(() => {\n if (!mapContainerRef.current) {\n return;\n }\n\n mapContainerRef.current.closePopup();\n\n // NOTE: Clean up\n if (markersGroupRef.current) {\n markersGroupRef.current.removeFrom(mapContainerRef.current);\n }\n\n const offsetWellIds = offsetWells.map(well => well.id);\n\n const markers = [];\n wells.forEach(well => {\n const coords = get(well, coordsDataPath);\n\n if (coords && isValidCoordinates(coords)) {\n const isWellSubject = subjectWell && subjectWell.id === well.id;\n const isWellOffset = offsetWellIds.includes(well.id);\n const r = isWellSubject ? subjectWellMarkerSize : wellMarkerSize;\n const color = isWellSubject || isWellOffset ? OFFSET_WELL_COLOR : colorDict[well.formation];\n const opacity = isWellSubject || isWellOffset ? 1 : 0.3;\n\n const newMarker = L.circleMarker(coords, {\n radius: r,\n stroke: false,\n fill: true,\n fillOpacity: opacity,\n fillColor: color,\n className: 'circle_500',\n });\n\n newMarker.addEventListener('mouseover', () => {\n if (popUpFormatter) {\n // Container to put React generated content in.\n const popUpContainer = document.createElement('div');\n const popUpContent = createElement(popUpFormatter, {\n well,\n color: colorDict[well.formation],\n });\n // NOTE: Custom popup may have buttons\n ReactDOM.render(\n <MuiThemeProvider theme={theme.darkTheme}>{popUpContent}</MuiThemeProvider>,\n popUpContainer\n );\n\n L.popup().setLatLng(coords).setContent(popUpContainer).openOn(mapContainerRef.current);\n }\n });\n\n markers.push(newMarker);\n }\n });\n\n if (markers.length) {\n markersGroupRef.current = L.featureGroup(markers);\n markersGroupRef.current.addTo(mapContainerRef.current);\n }\n\n setTimeout(() => {\n if (radiusCircleRef.current) {\n radiusCircleRef.current.bringToBack();\n }\n\n if (mapContainerRef.current && radiusCircleRef.current && wells !== prevWells) {\n mapContainerRef.current.fitBounds(radiusCircleRef.current.getBounds(), { padding: [5, 5] });\n }\n }, 500);\n }, [subjectWell, wells, offsetWells, colorDict]);\n\n useEffect(() => {\n setTimeout(() => {\n if (radiusCircleRef.current) {\n radiusCircleRef.current.bringToBack();\n }\n if (subjectWell) {\n if (mapContainerRef.current && radiusCircleRef.current) {\n mapContainerRef.current.fitBounds(radiusCircleRef.current.getBounds(), {\n padding: [5, 5],\n });\n }\n } else if (mapContainerRef.current && markersGroupRef.current) {\n mapContainerRef.current.fitBounds(markersGroupRef.current.getBounds());\n }\n }, 500);\n }, [radius, subjectWell]);\n\n return (\n <div className={styles.map}>\n <div className={styles.mapMain} ref={mapContainerRef} />\n\n <div className={styles.mapFooter}>\n {offsetWells && (\n <div className={styles.mapFooterItem}>\n <div\n className={styles.mapFooterItemSquare}\n style={{ backgroundColor: OFFSET_WELL_COLOR }}\n />\n <div className={styles.mapFooterItemLabel}>Selected Offset Wells</div>\n </div>\n )}\n\n {formations.map(item => (\n <div className={styles.mapFooterItem} key={item}>\n <div\n className={styles.mapFooterItemSquare}\n style={{ backgroundColor: colorDict[item] }}\n />\n <div className={styles.mapFooterItemLabel}>{item}</div>\n </div>\n ))}\n </div>\n </div>\n );\n}\n\nWellsMap.propTypes = {\n subjectWell: PropTypes.shape({\n id: PropTypes.number,\n formation: PropTypes.string,\n }),\n wells: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n offsetWells: PropTypes.arrayOf(PropTypes.shape({})),\n radius: PropTypes.number.isRequired,\n subjectWellMarkerSize: PropTypes.number,\n wellMarkerSize: PropTypes.number,\n popUpFormatter: PropTypes.func,\n coordsDataPath: PropTypes.string,\n};\n\nWellsMap.defaultProps = {\n subjectWell: null,\n subjectWellMarkerSize: DEFAULT_SUBJECT_WELL_MARKER_SIZE,\n wellMarkerSize: DEFAULT_WELL_MARKER_SIZE,\n popUpFormatter: null,\n coordsDataPath: 'settings.top_hole.coordinates',\n offsetWells: null,\n};\n\nexport default memo(WellsMap);\n"],"names":["isValidCoordinates","mapbox","COLORS","DEFAULT_COORDS","WellsMap","_ref","subjectWell","wells","offsetWells","radius","subjectWellMarkerSize","wellMarkerSize","popUpFormatter","coordsDataPath","mapContainerRef","useRef","radiusCircleRef","markersGroupRef","prevWells","usePrevious","restWells","useMemo","filter","well","id","subjectWellCoords","get","restFormations","hasNullFormation","forEach","formation","includes","push","sortedFormations","concat","sortBy","colors","reduce","result","item","idx","length","_useMemo2","_slicedToArray","_useMemo","formations","colorDict","useEffect","current","L","map","attributionControl","scrollWheelZoom","zoomControl","setView","control","zoom","position","addTo","styleLayer","removeLayer","circle","stroke","fill","fillOpacity","fillColor","className","closePopup","removeFrom","offsetWellIds","markers","coords","isWellSubject","isWellOffset","r","color","opacity","newMarker","circleMarker","addEventListener","popUpContainer","document","createElement","popUpContent","ReactDOM","render","_jsx","MuiThemeProvider","theme","children","popup","setLatLng","setContent","openOn","featureGroup","setTimeout","bringToBack","fitBounds","getBounds","padding","_jsxs","styles","mapMain","ref","mapFooter","mapFooterItem","mapFooterItemSquare","style","backgroundColor","mapFooterItemLabel","propTypes","PropTypes","shape","number","string","arrayOf","isRequired","func","defaultProps","memo"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Map.js","sources":["../../../../../src/components/OffsetWellPickerV2/components/Map/Map.js"],"sourcesContent":["import { createElement, memo, useRef, useEffect, useMemo } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport L from 'mapbox.js';\nimport { get, sortBy } from 'lodash';\nimport { MuiThemeProvider } from '@material-ui/core/styles';\n\nimport { usePrevious } from '../../effects';\n\nimport styles from './Map.css';\n\nimport { mapbox } from '~/utils';\nimport { theme } from '~/config';\n\nconst { isValidCoordinates } = mapbox;\n\nconst RADIUS_CIRCLE_COLOR = '#03BCD4';\nconst METERS_IN_MILE = 1609.34;\nconst DEFAULT_SUBJECT_WELL_MARKER_SIZE = 10;\nconst DEFAULT_WELL_MARKER_SIZE = 5;\nconst OFFSET_WELL_COLOR = '#00FFFF';\nconst COLORS = [\n '#FF00FF',\n '#F5BD80',\n '#FF0000',\n '#0080FF',\n '#FF8000',\n '#58ACFA',\n '#FA58F4',\n '#40FF00',\n '#4B8A08',\n '#40FF00',\n '#D8F781',\n];\n\nconst DEFAULT_COORDS = [29.749907, -95.358421]; // TX coordinates\n\n// eslint-disable-next-line no-unused-vars\nfunction WellsMap({\n subjectWell,\n wells,\n offsetWells,\n radius,\n subjectWellMarkerSize,\n wellMarkerSize,\n popUpFormatter,\n coordsDataPath,\n}) {\n const mapContainerRef = useRef(null);\n const radiusCircleRef = useRef(null);\n const markersGroupRef = useRef(null);\n\n const prevWells = usePrevious(wells);\n\n const restWells = useMemo(() => {\n return wells.filter(well => !subjectWell || subjectWell.id !== well.id);\n }, [subjectWell, wells]);\n\n const subjectWellCoords = useMemo(() => {\n return subjectWell && get(subjectWell, coordsDataPath);\n }, [subjectWell, coordsDataPath]);\n\n // NOTE: Get well marker colors according to its target formation\n const [formations, colorDict] = useMemo(() => {\n // NOTE: Determine well marker colors\n const restFormations = [];\n let hasNullFormation = false;\n\n restWells.forEach(well => {\n if (well.formation === 'Null') {\n hasNullFormation = true;\n } else if (\n (!subjectWell || subjectWell.formation !== well.formation) &&\n !restFormations.includes(well.formation)\n ) {\n restFormations.push(well.formation);\n }\n });\n\n const sortedFormations = subjectWell\n ? [subjectWell.formation].concat(sortBy(restFormations))\n : sortBy(restFormations);\n\n if (hasNullFormation && !sortedFormations.includes('Null')) {\n sortedFormations.push('Null');\n }\n\n const colors = sortedFormations.reduce(\n (result, item, idx) => ({\n ...result,\n [item]: COLORS[idx % COLORS.length],\n }),\n {}\n );\n\n return [sortedFormations, colors];\n }, [subjectWell, restWells]);\n\n // NOTE: Initialize map\n useEffect(() => {\n mapContainerRef.current = L.mapbox\n .map(mapContainerRef.current, null, {\n attributionControl: false,\n scrollWheelZoom: false,\n zoomControl: false,\n })\n .setView(DEFAULT_COORDS, 1);\n\n L.control\n .zoom({\n position: 'bottomright',\n })\n .addTo(mapContainerRef.current);\n L.mapbox.styleLayer('mapbox://styles/mapbox/dark-v9').addTo(mapContainerRef.current);\n\n // 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":"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"}
|
package/components/OffsetWellPickerV3/components/CustomSelectionView/components/Map/Map.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Map.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/OffsetWellPickerV3/components/CustomSelectionView/components/Map/Map.js"],"names":[],"mappings":";;AAsBA;;;;;;;;;;;
|
|
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,2 +1,2 @@
|
|
|
1
|
-
import{memo as r,useRef as e,useMemo as t,useEffect as
|
|
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};
|
|
2
2
|
//# sourceMappingURL=Map.js.map
|
package/components/OffsetWellPickerV3/components/CustomSelectionView/components/Map/Map.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Map.js","sources":["../../../../../../../src/components/OffsetWellPickerV3/components/CustomSelectionView/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';\n\nimport { usePrevious } from '../../effects';\n\nimport styles from './Map.css';\n\nimport { mapbox } from '~/utils';\n\nconst { isValidCoordinates } = mapbox;\n\nconst DEFAULT_COORDS = [29.749907, -95.358421]; // TX coordinates\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';\n\n// eslint-disable-next-line no-unused-vars\nfunction WellsMap({\n open,\n subjectWell,\n wells,\n offsetWells,\n radius,\n formationColors,\n popUpFormatter,\n coordsDataPath,\n onAddOffsetWell,\n onDeleteOffsetWell,\n}) {\n const mapContainerRef = useRef(null);\n const mapRef = useRef();\n const radiusCircleRef = useRef(null);\n const markersGroupRef = useRef(null);\n\n const prevWells = usePrevious(wells);\n\n const subjectWellCoords = useMemo(() => {\n return subjectWell && get(subjectWell, coordsDataPath);\n }, [subjectWell, coordsDataPath]);\n\n // NOTE: Initialize map\n useEffect(() => {\n if (!open || mapRef.current) return;\n\n mapRef.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(mapRef.current);\n L.mapbox.styleLayer('mapbox://styles/mapbox/dark-v9').addTo(mapRef.current);\n }, [open]);\n\n // NOTE: Radius circle\n useEffect(() => {\n if (!mapRef.current || !open) {\n return;\n }\n\n // NOTE: Clean up\n if (radiusCircleRef.current) {\n mapRef.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(mapRef.current);\n }, [radius, subjectWellCoords, open]);\n\n // NOTE: Well markers\n useEffect(() => {\n if (!mapRef.current || !open) {\n return;\n }\n\n // NOTE: Clean up\n if (markersGroupRef.current) {\n markersGroupRef.current.removeFrom(mapRef.current);\n }\n\n const offsetWellIds = offsetWells.map(well => well.id);\n const sortedWells = sortBy(wells, well => offsetWellIds.includes(well.id));\n\n const markers = [];\n sortedWells.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 ? DEFAULT_SUBJECT_WELL_MARKER_SIZE : DEFAULT_WELL_MARKER_SIZE;\n const color =\n isWellSubject || isWellOffset\n ? OFFSET_WELL_COLOR\n : get(formationColors, well.formation, '#BDBDBD');\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: get(formationColors, well.formation, '#BDBDBD'),\n });\n // NOTE: Custom popup may have buttons\n ReactDOM.render(<>{popUpContent}</>, popUpContainer);\n\n L.popup().setLatLng(coords).setContent(popUpContainer).openOn(mapRef.current);\n }\n });\n\n newMarker.addEventListener('mouseout', () => {\n mapRef.current.closePopup();\n });\n\n newMarker.addEventListener('click', () => {\n if (isWellOffset && !isWellSubject) {\n onDeleteOffsetWell(well.id);\n } else {\n onAddOffsetWell(well.id);\n }\n });\n\n markers.push(newMarker);\n }\n });\n\n if (markers.length) {\n markersGroupRef.current = L.featureGroup(markers);\n markersGroupRef.current.addTo(mapRef.current);\n }\n\n setTimeout(() => {\n if (radiusCircleRef.current) {\n radiusCircleRef.current.bringToBack();\n }\n\n if (mapRef.current && radiusCircleRef.current && wells !== prevWells) {\n mapRef.current.fitBounds(radiusCircleRef.current.getBounds(), { padding: [5, 5] });\n }\n }, 500);\n }, [subjectWell, wells, offsetWells, open]);\n\n useEffect(() => {\n if (!open) return;\n\n setTimeout(() => {\n if (radiusCircleRef.current) {\n radiusCircleRef.current.bringToBack();\n }\n if (subjectWell) {\n if (mapRef.current && radiusCircleRef.current) {\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 }, 500);\n }, [radius, subjectWell, open]);\n\n return (\n <div className={styles.map}>\n <div className={styles.mapMain} ref={mapContainerRef} />\n </div>\n );\n}\n\nWellsMap.propTypes = {\n open: PropTypes.bool.isRequired,\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 formationColors: PropTypes.shape({}).isRequired,\n popUpFormatter: PropTypes.func,\n coordsDataPath: PropTypes.string,\n onAddOffsetWell: PropTypes.func.isRequired,\n onDeleteOffsetWell: PropTypes.func.isRequired,\n};\n\nWellsMap.defaultProps = {\n subjectWell: null,\n popUpFormatter: null,\n coordsDataPath: 'settings.top_hole.coordinates',\n offsetWells: null,\n};\n\nexport default memo(WellsMap);\n"],"names":["isValidCoordinates","mapbox","DEFAULT_COORDS","WellsMap","_ref","open","subjectWell","wells","offsetWells","radius","formationColors","popUpFormatter","coordsDataPath","onAddOffsetWell","onDeleteOffsetWell","mapContainerRef","useRef","mapRef","radiusCircleRef","markersGroupRef","prevWells","usePrevious","subjectWellCoords","useMemo","get","useEffect","current","L","map","attributionControl","scrollWheelZoom","zoomControl","setView","control","zoom","position","addTo","styleLayer","removeLayer","circle","stroke","fill","fillOpacity","fillColor","className","removeFrom","offsetWellIds","well","id","sortedWells","sortBy","includes","markers","forEach","coords","isWellSubject","isWellOffset","r","color","formation","opacity","newMarker","circleMarker","addEventListener","popUpContainer","document","createElement","popUpContent","ReactDOM","render","_jsx","_Fragment","children","popup","setLatLng","setContent","openOn","closePopup","push","length","featureGroup","setTimeout","bringToBack","fitBounds","getBounds","padding","styles","mapMain","ref","propTypes","PropTypes","bool","isRequired","shape","number","string","arrayOf","func","defaultProps","memo"],"mappings":"8YAYA,IAAQA,EAAuBC,EAAvBD,mBAEFE,EAAiB,CAAC,WAAY,WAQpC,SAASC,EAWNC,GAAA,IAVDC,IAAAA,KACAC,IAAAA,YACAC,IAAAA,MACAC,IAAAA,YACAC,IAAAA,OACAC,IAAAA,gBACAC,IAAAA,eACAC,IAAAA,eACAC,IAAAA,gBACAC,IAAAA,mBAEMC,EAAkBC,EAAO,MACzBC,EAASD,IACTE,EAAkBF,EAAO,MACzBG,EAAkBH,EAAO,MAEzBI,EAAYC,EAAYd,GAExBe,EAAoBC,GAAQ,WAChC,OAAOjB,GAAekB,EAAIlB,EAAaM,EACzC,GAAG,CAACN,EAAaM,IAwJjB,OArJAa,GAAU,WACHpB,IAAQY,EAAOS,UAEpBT,EAAOS,QAAUC,EAAE1B,OAChB2B,IAAIb,EAAgBW,QAAS,KAAM,CAClCG,oBAAoB,EACpBC,iBAAiB,EACjBC,aAAa,IAEdC,QAAQ9B,EAAgB,GAE3ByB,EAAEM,QACCC,KAAK,CACJC,SAAU,gBAEXC,MAAMnB,EAAOS,SAChBC,EAAE1B,OAAOoC,WAAW,kCAAkCD,MAAMnB,EAAOS,SACrE,GAAG,CAACrB,IAGJoB,GAAU,WACHR,EAAOS,SAAYrB,IAKpBa,EAAgBQ,SAClBT,EAAOS,QAAQY,YAAYpB,EAAgBQ,SAGxCJ,GAKLJ,EAAgBQ,QAAUC,EAAEY,OAAOjB,EAjEhB,QAiEmCb,EAAyB,CAC7E+B,QAAQ,EACRC,MAAM,EACNC,YAAa,GACbC,UAtEsB,UAuEtBC,UAAW,eAGb1B,EAAgBQ,QAAQU,MAAMnB,EAAOS,UAZnCR,EAAgBQ,QAAU,KAa7B,GAAE,CAACjB,EAAQa,EAAmBjB,IAG/BoB,GAAU,WACR,GAAKR,EAAOS,SAAYrB,EAAxB,CAKIc,EAAgBO,SAClBP,EAAgBO,QAAQmB,WAAW5B,EAAOS,SAG5C,IAAMoB,EAAgBtC,EAAYoB,KAAI,SAAAmB,GAAI,OAAIA,EAAKC,MAC7CC,EAAcC,EAAO3C,GAAO,SAAAwC,GAAI,OAAID,EAAcK,SAASJ,EAAKC,OAEhEI,EAAU,GAChBH,EAAYI,SAAQ,SAAAN,GAClB,IAAMO,EAAS9B,EAAIuB,EAAMnC,GAEzB,GAAI0C,GAAUtD,EAAmBsD,GAAS,CACxC,IAAMC,EAAgBjD,GAAeA,EAAY0C,KAAOD,EAAKC,GACvDQ,EAAeV,EAAcK,SAASJ,EAAKC,IAC3CS,EAAIF,EAhGuB,GACR,EAgGnBG,EACJH,GAAiBC,EAhGD,UAkGZhC,EAAId,EAAiBqC,EAAKY,UAAW,WACrCC,EAAUL,GAAiBC,EAAe,EAAI,GAE9CK,EAAYlC,EAAEmC,aAAaR,EAAQ,CACvC7C,OAAQgD,EACRjB,QAAQ,EACRC,MAAM,EACNC,YAAakB,EACbjB,UAAWe,EACXd,UAAW,eAGbiB,EAAUE,iBAAiB,aAAa,WACtC,GAAIpD,EAAgB,CAElB,IAAMqD,EAAiBC,SAASC,cAAc,OACxCC,EAAeD,EAAcvD,EAAgB,CACjDoC,KAAAA,EACAW,MAAOlC,EAAId,EAAiBqC,EAAKY,UAAW,aAG9CS,EAASC,OAAOC,EAAAC,EAAA,CAAAC,SAAGL,IAAkBH,GAErCrC,EAAE8C,QAAQC,UAAUpB,GAAQqB,WAAWX,GAAgBY,OAAO3D,EAAOS,QACvE,CACF,IAEAmC,EAAUE,iBAAiB,YAAY,WACrC9C,EAAOS,QAAQmD,YACjB,IAEAhB,EAAUE,iBAAiB,SAAS,WAC9BP,IAAiBD,EACnBzC,EAAmBiC,EAAKC,IAExBnC,EAAgBkC,EAAKC,GAEzB,IAEAI,EAAQ0B,KAAKjB,EACf,CACF,IAEIT,EAAQ2B,SACV5D,EAAgBO,QAAUC,EAAEqD,aAAa5B,GACzCjC,EAAgBO,QAAQU,MAAMnB,EAAOS,UAGvCuD,YAAW,WACL/D,EAAgBQ,SAClBR,EAAgBQ,QAAQwD,cAGtBjE,EAAOS,SAAWR,EAAgBQ,SAAWnB,IAAUa,GACzDH,EAAOS,QAAQyD,UAAUjE,EAAgBQ,QAAQ0D,YAAa,CAAEC,QAAS,CAAC,EAAG,IAEhF,GAAE,IA7EH,CA8ED,GAAE,CAAC/E,EAAaC,EAAOC,EAAaH,IAErCoB,GAAU,WACHpB,GAEL4E,YAAW,WACL/D,EAAgBQ,SAClBR,EAAgBQ,QAAQwD,cAEtB5E,EACEW,EAAOS,SAAWR,EAAgBQ,SACpCT,EAAOS,QAAQyD,UAAUjE,EAAgBQ,QAAQ0D,YAAa,CAC5DC,QAAS,CAAC,EAAG,KAGRpE,EAAOS,SAAWP,EAAgBO,SAC3CT,EAAOS,QAAQyD,UAAUhE,EAAgBO,QAAQ0D,YAEpD,GAAE,IACJ,GAAE,CAAC3E,EAAQH,EAAaD,IAGvBiE,EAAA,MAAA,CAAK1B,UAAW0C,EAAO1D,IAAI4C,SACzBF,EAAA,MAAA,CAAK1B,UAAW0C,EAAOC,QAASC,IAAKzE,KAG3C,CAEAZ,EAASsF,UAAY,CACnBpF,KAAMqF,EAAUC,KAAKC,WACrBtF,YAAaoF,EAAUG,MAAM,CAC3B7C,GAAI0C,EAAUI,OACdnC,UAAW+B,EAAUK,SAEvBxF,MAAOmF,EAAUM,QAAQN,EAAUG,MAAM,CAAA,IAAKD,WAC9CpF,YAAakF,EAAUM,QAAQN,EAAUG,MAAM,CAAE,IACjDpF,OAAQiF,EAAUI,OAAOF,WACzBlF,gBAAiBgF,EAAUG,MAAM,CAAA,GAAID,WACrCjF,eAAgB+E,EAAUO,KAC1BrF,eAAgB8E,EAAUK,OAC1BlF,gBAAiB6E,EAAUO,KAAKL,WAChC9E,mBAAoB4E,EAAUO,KAAKL,YAGrCzF,EAAS+F,aAAe,CACtB5F,YAAa,KACbK,eAAgB,KAChBC,eAAgB,gCAChBJ,YAAa,MAGf,IAAe2F,EAAAA,EAAKhG"}
|
|
1
|
+
{"version":3,"file":"Map.js","sources":["../../../../../../../src/components/OffsetWellPickerV3/components/CustomSelectionView/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';\n\nimport { usePrevious } from '../../effects';\n\nimport styles from './Map.css';\n\nimport { mapbox } from '~/utils';\n\nconst { isValidCoordinates } = mapbox;\n\nconst DEFAULT_COORDS = [29.749907, -95.358421]; // TX coordinates\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';\n\n// eslint-disable-next-line no-unused-vars\nfunction WellsMap({\n open,\n subjectWell,\n wells,\n offsetWells,\n radius,\n formationColors,\n popUpFormatter,\n coordsDataPath,\n onAddOffsetWell,\n onDeleteOffsetWell,\n}) {\n const mapContainerRef = useRef(null);\n const mapRef = useRef();\n const radiusCircleRef = useRef(null);\n const markersGroupRef = useRef(null);\n\n const prevWells = usePrevious(wells);\n\n const subjectWellCoords = useMemo(() => {\n return subjectWell && get(subjectWell, coordsDataPath);\n }, [subjectWell, coordsDataPath]);\n\n // NOTE: Initialize map\n useEffect(() => {\n if (!open || mapRef.current) return;\n\n mapRef.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(mapRef.current);\n L.mapbox.styleLayer('mapbox://styles/mapbox/dark-v9').addTo(mapRef.current);\n }, [open]);\n\n useEffect(\n () => () => {\n if (mapRef.current) {\n // NOTE: mapbox.js defers _updateMapFeedbackLink on layerremove; after remove() it crashes on the deleted control container\n mapRef.current.off('layerremove');\n mapRef.current.remove();\n mapRef.current = null;\n radiusCircleRef.current = null;\n markersGroupRef.current = null;\n }\n },\n []\n );\n\n // NOTE: Radius circle\n useEffect(() => {\n if (!mapRef.current || !open) {\n return;\n }\n\n // NOTE: Clean up\n if (radiusCircleRef.current) {\n mapRef.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(mapRef.current);\n }, [radius, subjectWellCoords, open]);\n\n // NOTE: Well markers\n useEffect(() => {\n if (!mapRef.current || !open) {\n return;\n }\n\n // NOTE: Clean up\n if (markersGroupRef.current) {\n markersGroupRef.current.removeFrom(mapRef.current);\n }\n\n const offsetWellIds = offsetWells.map(well => well.id);\n const sortedWells = sortBy(wells, well => offsetWellIds.includes(well.id));\n\n const markers = [];\n sortedWells.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 ? DEFAULT_SUBJECT_WELL_MARKER_SIZE : DEFAULT_WELL_MARKER_SIZE;\n const color =\n isWellSubject || isWellOffset\n ? OFFSET_WELL_COLOR\n : get(formationColors, well.formation, '#BDBDBD');\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: get(formationColors, well.formation, '#BDBDBD'),\n });\n // NOTE: Custom popup may have buttons\n ReactDOM.render(<>{popUpContent}</>, popUpContainer);\n\n L.popup().setLatLng(coords).setContent(popUpContainer).openOn(mapRef.current);\n }\n });\n\n newMarker.addEventListener('mouseout', () => {\n mapRef.current.closePopup();\n });\n\n newMarker.addEventListener('click', () => {\n if (isWellOffset && !isWellSubject) {\n onDeleteOffsetWell(well.id);\n } else {\n onAddOffsetWell(well.id);\n }\n });\n\n markers.push(newMarker);\n }\n });\n\n if (markers.length) {\n markersGroupRef.current = L.featureGroup(markers);\n markersGroupRef.current.addTo(mapRef.current);\n }\n\n setTimeout(() => {\n if (radiusCircleRef.current) {\n radiusCircleRef.current.bringToBack();\n }\n\n if (mapRef.current && radiusCircleRef.current && wells !== prevWells) {\n mapRef.current.fitBounds(radiusCircleRef.current.getBounds(), { padding: [5, 5] });\n }\n }, 500);\n }, [subjectWell, wells, offsetWells, open]);\n\n useEffect(() => {\n if (!open) return;\n\n setTimeout(() => {\n if (radiusCircleRef.current) {\n radiusCircleRef.current.bringToBack();\n }\n if (subjectWell) {\n if (mapRef.current && radiusCircleRef.current) {\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 }, 500);\n }, [radius, subjectWell, open]);\n\n return (\n <div className={styles.map}>\n <div className={styles.mapMain} ref={mapContainerRef} />\n </div>\n );\n}\n\nWellsMap.propTypes = {\n open: PropTypes.bool.isRequired,\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 formationColors: PropTypes.shape({}).isRequired,\n popUpFormatter: PropTypes.func,\n coordsDataPath: PropTypes.string,\n onAddOffsetWell: PropTypes.func.isRequired,\n onDeleteOffsetWell: PropTypes.func.isRequired,\n};\n\nWellsMap.defaultProps = {\n subjectWell: null,\n popUpFormatter: null,\n coordsDataPath: 'settings.top_hole.coordinates',\n offsetWells: null,\n};\n\nexport default memo(WellsMap);\n"],"names":["isValidCoordinates","mapbox","DEFAULT_COORDS","WellsMap","_ref","open","subjectWell","wells","offsetWells","radius","formationColors","popUpFormatter","coordsDataPath","onAddOffsetWell","onDeleteOffsetWell","mapContainerRef","useRef","mapRef","radiusCircleRef","markersGroupRef","prevWells","usePrevious","subjectWellCoords","useMemo","get","useEffect","current","L","map","attributionControl","scrollWheelZoom","zoomControl","setView","control","zoom","position","addTo","styleLayer","off","remove","removeLayer","circle","stroke","fill","fillOpacity","fillColor","className","removeFrom","offsetWellIds","well","id","sortedWells","sortBy","includes","markers","forEach","coords","isWellSubject","isWellOffset","r","color","formation","opacity","newMarker","circleMarker","addEventListener","popUpContainer","document","createElement","popUpContent","ReactDOM","render","_jsx","_Fragment","children","popup","setLatLng","setContent","openOn","closePopup","push","length","featureGroup","setTimeout","bringToBack","fitBounds","getBounds","padding","styles","mapMain","ref","propTypes","PropTypes","bool","isRequired","shape","number","string","arrayOf","func","defaultProps","memo"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import t from'./../../ext-esm/style-inject/dist/style-inject.es.js';var o={spacing:"8",root:"Autocomplete_root__4SidE",paper:"Autocomplete_paper__Vq6DC",sticky:"Autocomplete_sticky__0-eTa",menuItem:"Autocomplete_menuItem__c2Qka",listboxScrolled:"Autocomplete_listboxScrolled__n34NV",checkboxSmall:"Autocomplete_checkboxSmall__TjdiN",checkboxMedium:"Autocomplete_checkboxMedium__LUbff",selectedValue:"Autocomplete_selectedValue__iGHNh",selectedValueChip:"Autocomplete_selectedValueChip__5QOEK",inputContainer:"Autocomplete_inputContainer__RKk5j",prefix:"Autocomplete_prefix__WzSbL",input:"Autocomplete_input__FHTVO",readOnlyInput:"Autocomplete_readOnlyInput__mD5xQ",withArrow:"Autocomplete_withArrow__pNaNX",withClear:"Autocomplete_withClear__RGtWV",suffix:"Autocomplete_suffix__y3P7i"};t('.Autocomplete_root__4SidE{width:100%}.Autocomplete_root__4SidE .MuiAutocomplete-endAdornment{display:contents}.Autocomplete_root__4SidE .MuiAutocomplete-clearIndicator,.Autocomplete_root__4SidE .MuiAutocomplete-popupIndicator{margin:0;padding:0;visibility:visible}.Autocomplete_root__4SidE .MuiAutocomplete-clearIndicator .MuiTouchRipple-root,.Autocomplete_root__4SidE .MuiAutocomplete-popupIndicator .MuiTouchRipple-root{display:none}.Autocomplete_root__4SidE .MuiAutocomplete-clearIndicator,.Autocomplete_root__4SidE .MuiAutocomplete-popupIndicator{background-color:transparent!important;transition:transform .15s cubic-bezier(.4,0,.2,1),color .15s cubic-bezier(.4,0,.2,1)}.Autocomplete_root__4SidE .MuiAutocomplete-clearIndicator svg,.Autocomplete_root__4SidE .MuiAutocomplete-popupIndicator svg{display:block}.Autocomplete_root__4SidE .MuiInputAdornment-positionStart{max-width:70%}.Autocomplete_paper__Vq6DC{--corvaui-background:var(--palette-background-b-9);background-color:var(--palette-background-b-9)!important;box-shadow:0 8px 24px 0 rgba(0,0,0,.24)!important;display:flex;flex-flow:column wrap;margin:8px 0;max-height:40vh;overflow:hidden;padding:0;position:relative}.Autocomplete_paper__Vq6DC:before{background:linear-gradient(180deg,rgb(from var(--corvaui-background) r g b/1) 0,rgb(from var(--corvaui-background) r g b/0) 100%);content:"";height:8px;inset:0 10px auto 0;position:absolute;z-index:1}.Autocomplete_paper__Vq6DC:after{background:linear-gradient(0deg,rgb(from var(--corvaui-background) r g b/1) 0,rgb(from var(--corvaui-background) r g b/0) 100%);content:"";height:8px;inset:auto 10px 0 0;position:absolute;z-index:1}.Autocomplete_paper__Vq6DC:has(.Autocomplete_sticky__0-eTa){padding-top:8px}.Autocomplete_paper__Vq6DC .MuiAutocomplete-listbox{flex:0 1 auto;max-height:unset;padding:8px 0}.Autocomplete_paper__Vq6DC .MuiAutocomplete-listbox,.Autocomplete_paper__Vq6DC .MuiAutocomplete-listbox li{width:100%}.Autocomplete_paper__Vq6DC .MuiAutocomplete-listbox:has(.Autocomplete_sticky__0-eTa){padding-top:0}.Autocomplete_paper__Vq6DC li.MuiAutocomplete-option{background:var(--corvaui-background)!important;display:block;padding:0 16px!important;z-index:1}.Autocomplete_paper__Vq6DC li.MuiAutocomplete-option[data-focus=true] .Autocomplete_menuItem__c2Qka{background-color:rgb(from var(--palette-primary-text-1) r g b/.08)}.Autocomplete_paper__Vq6DC li.MuiAutocomplete-option:has(.Autocomplete_sticky__0-eTa){left:0;position:sticky;top:0}.Autocomplete_paper__Vq6DC .Autocomplete_sticky__0-eTa{border-bottom:1px solid rgb(from var(--palette-primary-text-1) r g b/.25);overflow:visible}.Autocomplete_paper__Vq6DC .Autocomplete_listboxScrolled__n34NV .Autocomplete_sticky__0-eTa:after{background:linear-gradient(0deg,rgb(from var(--corvaui-background) r g b/0) 0,rgb(from var(--corvaui-background) r g b/1) 100%);content:"";height:8px;inset:100% 0 auto 0;margin-top:1px;position:absolute}.Autocomplete_paper__Vq6DC .MuiAutocomplete-noOptions{align-items:center;color:var(--palette-primary-text-6);display:flex;font-size:12px;font-style:italic;justify-content:center;min-height:31px;padding:0}.Autocomplete_paper__Vq6DC .MuiAutocomplete-groupLabel{background:var(--corvaui-background)!important;color:var(--palette-primary-text-7);font-size:12px;font-weight:400;line-height:16px}.Autocomplete_paper__Vq6DC .MuiAutocomplete-groupLabel:not(:empty){padding-top:8px}.Autocomplete_paper__Vq6DC .MuiAutocomplete-listbox li+li .MuiAutocomplete-groupLabel:not(:empty){margin-top:8px}.Autocomplete_checkboxSmall__TjdiN{margin-right
|
|
1
|
+
import t from'./../../ext-esm/style-inject/dist/style-inject.es.js';var o={spacing:"8",root:"Autocomplete_root__4SidE",paper:"Autocomplete_paper__Vq6DC",sticky:"Autocomplete_sticky__0-eTa",menuItem:"Autocomplete_menuItem__c2Qka",listboxScrolled:"Autocomplete_listboxScrolled__n34NV",checkboxSmall:"Autocomplete_checkboxSmall__TjdiN",checkboxMedium:"Autocomplete_checkboxMedium__LUbff",selectedValue:"Autocomplete_selectedValue__iGHNh",selectedValueChip:"Autocomplete_selectedValueChip__5QOEK",inputContainer:"Autocomplete_inputContainer__RKk5j",prefix:"Autocomplete_prefix__WzSbL",input:"Autocomplete_input__FHTVO",readOnlyInput:"Autocomplete_readOnlyInput__mD5xQ",withArrow:"Autocomplete_withArrow__pNaNX",withClear:"Autocomplete_withClear__RGtWV",suffix:"Autocomplete_suffix__y3P7i"};t('.Autocomplete_root__4SidE{width:100%}.Autocomplete_root__4SidE .MuiAutocomplete-endAdornment{display:contents}.Autocomplete_root__4SidE .MuiAutocomplete-clearIndicator,.Autocomplete_root__4SidE .MuiAutocomplete-popupIndicator{margin:0;padding:0;visibility:visible}.Autocomplete_root__4SidE .MuiAutocomplete-clearIndicator .MuiTouchRipple-root,.Autocomplete_root__4SidE .MuiAutocomplete-popupIndicator .MuiTouchRipple-root{display:none}.Autocomplete_root__4SidE .MuiAutocomplete-clearIndicator,.Autocomplete_root__4SidE .MuiAutocomplete-popupIndicator{background-color:transparent!important;transition:transform .15s cubic-bezier(.4,0,.2,1),color .15s cubic-bezier(.4,0,.2,1)}.Autocomplete_root__4SidE .MuiAutocomplete-clearIndicator svg,.Autocomplete_root__4SidE .MuiAutocomplete-popupIndicator svg{display:block}.Autocomplete_root__4SidE .MuiInputAdornment-positionStart{max-width:70%}.Autocomplete_paper__Vq6DC{--corvaui-background:var(--palette-background-b-9);background-color:var(--palette-background-b-9)!important;box-shadow:0 8px 24px 0 rgba(0,0,0,.24)!important;display:flex;flex-flow:column wrap;margin:8px 0;max-height:40vh;overflow:hidden;padding:0;position:relative}.Autocomplete_paper__Vq6DC:before{background:linear-gradient(180deg,rgb(from var(--corvaui-background) r g b/1) 0,rgb(from var(--corvaui-background) r g b/0) 100%);content:"";height:8px;inset:0 10px auto 0;position:absolute;z-index:1}.Autocomplete_paper__Vq6DC:after{background:linear-gradient(0deg,rgb(from var(--corvaui-background) r g b/1) 0,rgb(from var(--corvaui-background) r g b/0) 100%);content:"";height:8px;inset:auto 10px 0 0;position:absolute;z-index:1}.Autocomplete_paper__Vq6DC:has(.Autocomplete_sticky__0-eTa){padding-top:8px}.Autocomplete_paper__Vq6DC .MuiAutocomplete-listbox{flex:0 1 auto;max-height:unset;padding:8px 0}.Autocomplete_paper__Vq6DC .MuiAutocomplete-listbox,.Autocomplete_paper__Vq6DC .MuiAutocomplete-listbox li{width:100%}.Autocomplete_paper__Vq6DC .MuiAutocomplete-listbox:has(.Autocomplete_sticky__0-eTa){padding-top:0}.Autocomplete_paper__Vq6DC li.MuiAutocomplete-option{background:var(--corvaui-background)!important;display:block;padding:0 16px!important;z-index:1}.Autocomplete_paper__Vq6DC li.MuiAutocomplete-option[data-focus=true] .Autocomplete_menuItem__c2Qka{background-color:rgb(from var(--palette-primary-text-1) r g b/.08)}.Autocomplete_paper__Vq6DC li.MuiAutocomplete-option:has(.Autocomplete_sticky__0-eTa){left:0;position:sticky;top:0}.Autocomplete_paper__Vq6DC .Autocomplete_sticky__0-eTa{border-bottom:1px solid rgb(from var(--palette-primary-text-1) r g b/.25);overflow:visible}.Autocomplete_paper__Vq6DC .Autocomplete_listboxScrolled__n34NV .Autocomplete_sticky__0-eTa:after{background:linear-gradient(0deg,rgb(from var(--corvaui-background) r g b/0) 0,rgb(from var(--corvaui-background) r g b/1) 100%);content:"";height:8px;inset:100% 0 auto 0;margin-top:1px;position:absolute}.Autocomplete_paper__Vq6DC .MuiAutocomplete-noOptions{align-items:center;color:var(--palette-primary-text-6);display:flex;font-size:12px;font-style:italic;justify-content:center;min-height:31px;padding:0}.Autocomplete_paper__Vq6DC .MuiAutocomplete-groupLabel{background:var(--corvaui-background)!important;color:var(--palette-primary-text-7);font-size:12px;font-weight:400;line-height:16px}.Autocomplete_paper__Vq6DC .MuiAutocomplete-groupLabel:not(:empty){padding-top:8px}.Autocomplete_paper__Vq6DC .MuiAutocomplete-listbox li+li .MuiAutocomplete-groupLabel:not(:empty){margin-top:8px}.Autocomplete_checkboxSmall__TjdiN{margin-right:0}.Autocomplete_checkboxMedium__LUbff{margin-right:4px}.Autocomplete_selectedValue__iGHNh{max-width:100%;overflow:hidden}.Autocomplete_selectedValueChip__5QOEK{flex:0 0 auto;margin:-3px 0;max-width:calc(33% - 8px)}.Autocomplete_inputContainer__RKk5j{flex-wrap:wrap;position:relative;row-gap:14px}.Autocomplete_inputContainer__RKk5j .Autocomplete_selectedValue__iGHNh{font-size:inherit;line-height:inherit;max-width:50%}.Autocomplete_prefix__WzSbL{display:contents}.Autocomplete_input__FHTVO{flex:1 1;max-width:100%;min-width:150px}.Autocomplete_readOnlyInput__mD5xQ{cursor:inherit;min-width:60px}.Autocomplete_withArrow__pNaNX .Autocomplete_input__FHTVO,.Autocomplete_withClear__RGtWV .Autocomplete_input__FHTVO{padding-right:24px}.Autocomplete_withArrow__pNaNX.Autocomplete_withClear__RGtWV .Autocomplete_input__FHTVO{padding-right:48px}.Autocomplete_suffix__y3P7i{bottom:calc(var(--corvaui-textinput-inputheight)/2 + 6px);height:var(--corvaui-textinput-inputheight);position:absolute;right:7px;transform:translateY(50%)}');export{o as default};
|
|
2
2
|
//# sourceMappingURL=Autocomplete.scss.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutocompleteMenuItem.d.ts","sourceRoot":"","sources":["../../../src/componentsV2/Autocomplete/AutocompleteMenuItem.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgC,SAAS,EAAE,MAAM,OAAO,CAAC;AAIhE,OAAO,EAAY,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAI3D,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,EAAE,SAAS,CAAC;IAEpB,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;IACtC,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAmBF,eAAO,MAAM,oBAAoB,GAAI,2EAQlC,0BAA0B,
|
|
1
|
+
{"version":3,"file":"AutocompleteMenuItem.d.ts","sourceRoot":"","sources":["../../../src/componentsV2/Autocomplete/AutocompleteMenuItem.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgC,SAAS,EAAE,MAAM,OAAO,CAAC;AAIhE,OAAO,EAAY,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAI3D,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,EAAE,SAAS,CAAC;IAEpB,IAAI,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;IACtC,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAmBF,eAAO,MAAM,oBAAoB,GAAI,2EAQlC,0BAA0B,gBAyB5B,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{jsx as e,jsxs as m,Fragment as
|
|
1
|
+
import{jsx as e,jsxs as m,Fragment as r}from"react/jsx-runtime";import{isValidElement as i,cloneElement as t}from"react";import s from"classnames";import{Checkbox as a}from"../Checkbox/Checkbox.js";import{MenuItem as c}from"../Menu/MenuItem/MenuItem.js";import o from"./Autocomplete.scss.js";var l={medium:"small",large:"medium"},n={medium:o.checkboxSmall,large:o.checkboxMedium},u={medium:16,large:24},d=function(d){var p=d.multiple,f=d.children,h=d.size,x=d.prefix,k=d.selected,b=d.indeterminate,g=d.className;return e(c,{tagName:"div",size:h,className:s(o.menuItem,g),prefix:m(r,{children:[p&&e(a,{checked:k,size:l[h],className:n[h],indeterminate:b}),i(x)?t(x,{size:u[h]}):x]}),children:f})};export{d as AutocompleteMenuItem};
|
|
2
2
|
//# sourceMappingURL=AutocompleteMenuItem.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MenuItem.d.ts","sourceRoot":"","sources":["../../../../src/componentsV2/Menu/MenuItem/MenuItem.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EAGX,iBAAiB,EACjB,SAAS,EACV,MAAM,OAAO,CAAC;AAMf,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,OAAO,CAAC,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC;IAC3C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC1B,IAAI,CAAC,EAAE,QAAQ,GAAG,aAAa,CAAC;IAChC,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;
|
|
1
|
+
{"version":3,"file":"MenuItem.d.ts","sourceRoot":"","sources":["../../../../src/componentsV2/Menu/MenuItem/MenuItem.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,WAAW,EAGX,iBAAiB,EACjB,SAAS,EACV,MAAM,OAAO,CAAC;AAMf,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,OAAO,CAAC,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC;IAC3C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC1B,IAAI,CAAC,EAAE,QAAQ,GAAG,aAAa,CAAC;IAChC,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB;;OAEG;IACH,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAoDF,eAAO,MAAM,QAAQ,yGA4CpB,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"@babel/runtime/helpers/defineProperty";import r from"@babel/runtime/helpers/objectWithoutProperties";import t from"@babel/runtime/helpers/typeof";import{jsxs as i,jsx as o}from"react/jsx-runtime";import{forwardRef as s,isValidElement as a,cloneElement as c}from"react";import{MenuItem as l}from"@material-ui/core";import m from"classnames";import n from"./MenuItem.scss.js";var p=["children","testId","className","onClick","disabled","prefix","suffix","size","tagName","disableClickEffect","selected","type"];function f(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);r&&(i=i.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,i)}return t}function d(r){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?f(Object(i),!0).forEach((function(t){e(r,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(i)):f(Object(i)).forEach((function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(i,e))}))}return r}var u={medium:n.medium,large:n.large},b={medium:"small",large:"medium"},y={medium:16,large:24},O=function(e,r){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(a(e)){var o=e&&"object"===t(e.type)&&e.type.displayName;return c(e,"Checkbox"===o?{size:b[r],className:m(n.checkboxAffix,i?n.suffix:n.prefix)
|
|
1
|
+
import e from"@babel/runtime/helpers/defineProperty";import r from"@babel/runtime/helpers/objectWithoutProperties";import t from"@babel/runtime/helpers/typeof";import{jsxs as i,jsx as o}from"react/jsx-runtime";import{forwardRef as s,isValidElement as a,cloneElement as c}from"react";import{MenuItem as l}from"@material-ui/core";import m from"classnames";import n from"./MenuItem.scss.js";var p=["children","testId","className","onClick","disabled","prefix","suffix","size","tagName","disableClickEffect","selected","type"];function f(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);r&&(i=i.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,i)}return t}function d(r){for(var t=1;t<arguments.length;t++){var i=null!=arguments[t]?arguments[t]:{};t%2?f(Object(i),!0).forEach((function(t){e(r,t,i[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(i)):f(Object(i)).forEach((function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(i,e))}))}return r}var u={medium:n.medium,large:n.large},b={medium:"small",large:"medium"},y={medium:16,large:24},O=function(e,r){var i=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(a(e)){var o=e&&"object"===t(e.type)&&e.type.displayName;return c(e,"Checkbox"===o?{size:b[r],className:m(n.checkboxAffix,i?n.suffix:n.prefix)}:{size:y[r],className:m(n.iconAffix,e.props.className)})}return e},h={normal:"",destructive:n.destructive},v=s((function(e,t){var s=e.children,a=e.testId,c=e.className,f=e.onClick,b=e.disabled,y=e.prefix,v=e.suffix,j=e.size,g=void 0===j?"medium":j,x=e.tagName,N=void 0===x?"li":x,P=e.disableClickEffect,k=e.selected,w=e.type,C=void 0===w?"normal":w,I=r(e,p);return i(l,d(d({className:m(n.menuItem,h[C],u[g],c),"data-testid":a,onClick:f,disabled:b,disableRipple:P,disableTouchRipple:P,component:N,selected:k,ref:t},I),{},{children:[O(y,g),o("div",{className:n.itemLabel,children:s}),O(v,g,!0)]}))}));export{v as MenuItem};
|
|
2
2
|
//# sourceMappingURL=MenuItem.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from'./../../../ext-esm/style-inject/dist/style-inject.es.js';var t={spacing:"8",menuItem:"MenuItem_menuItem__rGLlT",medium:"MenuItem_medium__BV9x1",large:"MenuItem_large__sHhkc",itemLabel:"MenuItem_itemLabel__V4vAO",checkboxAffix:"MenuItem_checkboxAffix__dJCxa",prefix:"MenuItem_prefix__YoDuz",suffix:"MenuItem_suffix__Ldj84",iconAffix:"MenuItem_iconAffix__Tnj14",destructive:"MenuItem_destructive__sGt-8"};e(".MuiListItem-root.MenuItem_menuItem__rGLlT{align-items:center;flex-wrap:nowrap;margin-left:-16px;margin-right:-16px;overflow:hidden}.MuiListItem-root.MenuItem_medium__BV9x1{
|
|
1
|
+
import e from'./../../../ext-esm/style-inject/dist/style-inject.es.js';var t={spacing:"8",menuItem:"MenuItem_menuItem__rGLlT",medium:"MenuItem_medium__BV9x1",large:"MenuItem_large__sHhkc",itemLabel:"MenuItem_itemLabel__V4vAO",checkboxAffix:"MenuItem_checkboxAffix__dJCxa",prefix:"MenuItem_prefix__YoDuz",suffix:"MenuItem_suffix__Ldj84",iconAffix:"MenuItem_iconAffix__Tnj14",destructive:"MenuItem_destructive__sGt-8"};e(".MuiListItem-root.MenuItem_menuItem__rGLlT{align-items:center;flex-wrap:nowrap;gap:8px;margin-left:-16px;margin-right:-16px;overflow:hidden}.MuiListItem-root.MenuItem_medium__BV9x1{min-height:36px;padding-bottom:4px;padding-top:4px}.MuiListItem-root.MenuItem_large__sHhkc{min-height:54px;padding-bottom:12px;padding-top:12px}.MenuItem_itemLabel__V4vAO{flex:1 1 auto;margin-right:auto;min-width:1px}.MenuItem_checkboxAffix__dJCxa{align-items:center;display:flex}.MenuItem_checkboxAffix__dJCxa.MenuItem_prefix__YoDuz{margin-right:4px}.MenuItem_checkboxAffix__dJCxa.MenuItem_suffix__Ldj84{margin-left:4px}.MenuItem_iconAffix__Tnj14{align-items:center;display:flex}.MenuItem_destructive__sGt-8.MuiListItem-root{color:var(--palette-error-main)}");export{t as default};
|
|
2
2
|
//# sourceMappingURL=MenuItem.scss.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RadioAndCheckboxLabel.d.ts","sourceRoot":"","sources":["../../../src/componentsV2/RadioAndCheckboxLabel/RadioAndCheckboxLabel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAc,YAAY,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAQ9E,MAAM,MAAM,0BAA0B,GAAG;IACvC;;OAEG;IACH,OAAO,EAAE,YAAY,CAAC;IACtB;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACjC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IAC1D,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC1B;;OAEG;IACH,cAAc,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,KAAK,CAAC;IAEpD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;
|
|
1
|
+
{"version":3,"file":"RadioAndCheckboxLabel.d.ts","sourceRoot":"","sources":["../../../src/componentsV2/RadioAndCheckboxLabel/RadioAndCheckboxLabel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAc,YAAY,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAQ9E,MAAM,MAAM,0BAA0B,GAAG;IACvC;;OAEG;IACH,OAAO,EAAE,YAAY,CAAC;IACtB;;OAEG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,QAAQ,CAAC,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACjC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IAC1D,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC1B;;OAEG;IACH,cAAc,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,OAAO,GAAG,KAAK,CAAC;IAEpD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAcF,eAAO,MAAM,qBAAqB,oHA2CjC,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import e from"@babel/runtime/helpers/defineProperty";import t from"@babel/runtime/helpers/objectWithoutProperties";import{jsx as r}from"react/jsx-runtime";import{forwardRef as o}from"react";import{FormControlLabel as n}from"@material-ui/core";import a from"classnames";import c from"./RadioAndCheckboxLabel.scss.js";var l=["control","testId","className","inputRef","checked","label","onChange","disabled","labelPlacement","size"];function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function
|
|
1
|
+
import e from"@babel/runtime/helpers/defineProperty";import t from"@babel/runtime/helpers/objectWithoutProperties";import{jsx as r}from"react/jsx-runtime";import{forwardRef as o}from"react";import{FormControlLabel as n}from"@material-ui/core";import a from"classnames";import c from"./RadioAndCheckboxLabel.scss.js";var l=["control","testId","className","inputRef","checked","label","onChange","disabled","labelPlacement","size"];function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function s(t){for(var r=1;r<arguments.length;r++){var o=null!=arguments[r]?arguments[r]:{};r%2?i(Object(o),!0).forEach((function(r){e(t,r,o[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(o)):i(Object(o)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(o,e))}))}return t}var m={medium:c.medium,small:c.small},p={end:c.placementEnd,start:c.placementStart},b=o((function(e,o){var i=e.control,b=e.testId,d=e.className,f=e.inputRef,u=e.checked,O=void 0!==u&&u,h=e.label,j=e.onChange,P=e.disabled,y=e.labelPlacement,v=void 0===y?"end":y,g=e.size,w=void 0===g?"medium":g,k=t(e,l);return r("div",{className:a(c.root,p[v],m[w],d),children:r(n,s({ref:o,control:i,className:c.label,"data-testid":b,inputRef:f,checked:O,onChange:j,disabled:P,label:h,labelPlacement:v},k))})}));export{b as RadioAndCheckboxLabel};
|
|
2
2
|
//# sourceMappingURL=RadioAndCheckboxLabel.js.map
|