@corva/ui 3.67.0-9 → 3.68.0-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (103) hide show
  1. package/cjs-bundle/components/BICOffsetPickerDialog/components/Map/Map.css.js +1 -1
  2. package/cjs-bundle/components/BICOffsetPickerDialog/components/Map/Map.js +1 -1
  3. package/cjs-bundle/components/BICOffsetPickerDialog/components/Map/Map.js.map +1 -1
  4. package/cjs-bundle/components/BICOffsetPickerDialog/effects/index.js +1 -1
  5. package/cjs-bundle/components/BICOffsetPickerDialog/effects/index.js.map +1 -1
  6. package/cjs-bundle/components/OffsetWellMap/OffsetWellMap.js +1 -1
  7. package/cjs-bundle/components/OffsetWellMap/OffsetWellMap.js.map +1 -1
  8. package/cjs-bundle/components/OffsetWellMap/OffsetWellMap.module.css.js +1 -1
  9. package/cjs-bundle/components/OffsetWellMap/WellTooltip.module.css.js +1 -1
  10. package/cjs-bundle/components/OffsetWellPickerV2/components/Map/Map.css.js +1 -1
  11. package/cjs-bundle/components/OffsetWellPickerV2/components/Map/Map.js +1 -1
  12. package/cjs-bundle/components/OffsetWellPickerV2/components/Map/Map.js.map +1 -1
  13. package/cjs-bundle/components/OffsetWellPickerV2/effects/index.js +1 -1
  14. package/cjs-bundle/components/OffsetWellPickerV2/effects/index.js.map +1 -1
  15. package/cjs-bundle/components/OffsetWellPickerV3/components/CustomSelectionView/components/Map/Map.css.js +1 -1
  16. package/cjs-bundle/components/OffsetWellPickerV3/components/CustomSelectionView/components/Map/Map.js +1 -1
  17. package/cjs-bundle/components/OffsetWellPickerV3/components/CustomSelectionView/components/Map/Map.js.map +1 -1
  18. package/cjs-bundle/components/OffsetWellPickerV3/components/CustomSelectionView/effects/index.js +1 -1
  19. package/cjs-bundle/components/OffsetWellPickerV3/components/CustomSelectionView/effects/index.js.map +1 -1
  20. package/cjs-bundle/components/OffsetWellPickerV5/components/Map/OffsetWellMap/OffsetWellMap.js +1 -1
  21. package/cjs-bundle/components/OffsetWellPickerV5/components/MapPreloader/MapPreloader.js +1 -1
  22. package/cjs-bundle/components/PinnableFilters/effects/index.js +1 -1
  23. package/cjs-bundle/components/PinnableFilters/effects/index.js.map +1 -1
  24. package/cjs-bundle/componentsV2/CompletionsOffsetWellPicker/AssetFilters/useOptions.js +1 -1
  25. package/cjs-bundle/componentsV2/CompletionsOffsetWellPicker/CompletionsOffsetWellPicker.js +1 -1
  26. package/cjs-bundle/componentsV2/CompletionsOffsetWellPicker/PadsTable/PadsTableBody.js +1 -1
  27. package/cjs-bundle/componentsV2/CompletionsOffsetWellPicker/hooks/usePadsByRadius.js +1 -1
  28. package/cjs-bundle/config/index.js +1 -1
  29. package/cjs-bundle/config/mapbox/index.js +1 -1
  30. package/cjs-bundle/config/mapbox/index.js.map +1 -1
  31. package/cjs-bundle/config/mapboxGl/index.js +2 -0
  32. package/cjs-bundle/config/mapboxGl/index.js.map +1 -0
  33. package/cjs-bundle/config/mapboxLabelPolicy/index.js +2 -0
  34. package/cjs-bundle/config/mapboxLabelPolicy/index.js.map +1 -0
  35. package/cjs-bundle/styles/mapbox.global.css.js +1 -1
  36. package/components/BICOffsetPickerDialog/components/Map/Map.css.js +1 -1
  37. package/components/BICOffsetPickerDialog/components/Map/Map.d.ts.map +1 -1
  38. package/components/BICOffsetPickerDialog/components/Map/Map.js +1 -1
  39. package/components/BICOffsetPickerDialog/components/Map/Map.js.map +1 -1
  40. package/components/BICOffsetPickerDialog/effects/index.js +1 -1
  41. package/components/BICOffsetPickerDialog/effects/index.js.map +1 -1
  42. package/components/OffsetWellMap/OffsetWellMap.d.ts.map +1 -1
  43. package/components/OffsetWellMap/OffsetWellMap.js +1 -1
  44. package/components/OffsetWellMap/OffsetWellMap.js.map +1 -1
  45. package/components/OffsetWellMap/OffsetWellMap.module.css.js +1 -1
  46. package/components/OffsetWellMap/WellTooltip.module.css.js +1 -1
  47. package/components/OffsetWellPickerV2/components/Map/Map.css.js +1 -1
  48. package/components/OffsetWellPickerV2/components/Map/Map.d.ts.map +1 -1
  49. package/components/OffsetWellPickerV2/components/Map/Map.js +1 -1
  50. package/components/OffsetWellPickerV2/components/Map/Map.js.map +1 -1
  51. package/components/OffsetWellPickerV2/effects/index.js +1 -1
  52. package/components/OffsetWellPickerV2/effects/index.js.map +1 -1
  53. package/components/OffsetWellPickerV3/components/CustomSelectionView/components/Map/Map.css.js +1 -1
  54. package/components/OffsetWellPickerV3/components/CustomSelectionView/components/Map/Map.d.ts.map +1 -1
  55. package/components/OffsetWellPickerV3/components/CustomSelectionView/components/Map/Map.js +1 -1
  56. package/components/OffsetWellPickerV3/components/CustomSelectionView/components/Map/Map.js.map +1 -1
  57. package/components/OffsetWellPickerV3/components/CustomSelectionView/effects/index.js +1 -1
  58. package/components/OffsetWellPickerV3/components/CustomSelectionView/effects/index.js.map +1 -1
  59. package/components/OffsetWellPickerV5/components/Map/OffsetWellMap/OffsetWellMap.d.ts.map +1 -1
  60. package/components/OffsetWellPickerV5/components/Map/OffsetWellMap/OffsetWellMap.js +1 -1
  61. package/components/OffsetWellPickerV5/components/Map/OffsetWellMap/hooks/useMapTooltipState.d.ts +1 -1
  62. package/components/OffsetWellPickerV5/components/Map/OffsetWellMap/hooks/useOffsetWellMapState.d.ts +1 -1
  63. package/components/OffsetWellPickerV5/components/MapPreloader/MapPreloader.d.ts.map +1 -1
  64. package/components/OffsetWellPickerV5/components/MapPreloader/MapPreloader.js +1 -1
  65. package/components/PinnableFilters/effects/index.js +1 -1
  66. package/components/PinnableFilters/effects/index.js.map +1 -1
  67. package/componentsV2/CompletionsOffsetWellPicker/AssetFilters/AssetFilters.d.ts +1 -1
  68. package/componentsV2/CompletionsOffsetWellPicker/AssetFilters/AssetFilters.d.ts.map +1 -1
  69. package/componentsV2/CompletionsOffsetWellPicker/AssetFilters/useOptions.d.ts +1 -1
  70. package/componentsV2/CompletionsOffsetWellPicker/AssetFilters/useOptions.d.ts.map +1 -1
  71. package/componentsV2/CompletionsOffsetWellPicker/AssetFilters/useOptions.js +1 -1
  72. package/componentsV2/CompletionsOffsetWellPicker/CompletionsOffsetWellPicker.js +1 -1
  73. package/componentsV2/CompletionsOffsetWellPicker/PadsTable/PadsTableBody.js +1 -1
  74. package/componentsV2/CompletionsOffsetWellPicker/hooks/__tests__/usePadsByRadius.test.d.ts +2 -0
  75. package/componentsV2/CompletionsOffsetWellPicker/hooks/__tests__/usePadsByRadius.test.d.ts.map +1 -0
  76. package/componentsV2/CompletionsOffsetWellPicker/hooks/usePadsByRadius.d.ts +1 -1
  77. package/componentsV2/CompletionsOffsetWellPicker/hooks/usePadsByRadius.d.ts.map +1 -1
  78. package/componentsV2/CompletionsOffsetWellPicker/hooks/usePadsByRadius.js +1 -1
  79. package/componentsV2/CompletionsOffsetWellPicker/types.d.ts +1 -1
  80. package/componentsV2/CompletionsOffsetWellPicker/types.d.ts.map +1 -1
  81. package/config/index.d.ts +2 -1
  82. package/config/index.d.ts.map +1 -1
  83. package/config/index.js +1 -1
  84. package/config/mapbox/index.d.ts.map +1 -1
  85. package/config/mapbox/index.js +1 -1
  86. package/config/mapbox/index.js.map +1 -1
  87. package/config/mapboxGl/index.d.ts +3 -0
  88. package/config/mapboxGl/index.d.ts.map +1 -0
  89. package/config/mapboxGl/index.js +2 -0
  90. package/config/mapboxGl/index.js.map +1 -0
  91. package/config/mapboxLabelPolicy/__tests__/index.test.d.ts +2 -0
  92. package/config/mapboxLabelPolicy/__tests__/index.test.d.ts.map +1 -0
  93. package/config/mapboxLabelPolicy/index.d.ts +5 -0
  94. package/config/mapboxLabelPolicy/index.d.ts.map +1 -0
  95. package/config/mapboxLabelPolicy/index.js +2 -0
  96. package/config/mapboxLabelPolicy/index.js.map +1 -0
  97. package/index.d.ts +1 -0
  98. package/index.d.ts.map +1 -1
  99. package/mcp-server/server.mjs +1 -1
  100. package/package.json +1 -2
  101. package/styles/mapbox.global.css +8 -1
  102. package/styles/mapbox.global.css.js +1 -1
  103. package/tsconfig.tsbuildinfo +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"Map.js","sources":["../../../../../../src/components/OffsetWellPickerV2/components/Map/Map.js"],"sourcesContent":["import { createElement, memo, useRef, useEffect, useMemo } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport L from 'mapbox.js';\nimport { get, sortBy } from 'lodash';\nimport { MuiThemeProvider } from '@material-ui/core/styles';\n\nimport { usePrevious } from '../../effects';\n\nimport styles from './Map.css';\n\nimport { mapbox } from '~/utils';\nimport { theme } from '~/config';\n\nconst { isValidCoordinates } = mapbox;\n\nconst RADIUS_CIRCLE_COLOR = '#03BCD4';\nconst METERS_IN_MILE = 1609.34;\nconst DEFAULT_SUBJECT_WELL_MARKER_SIZE = 10;\nconst DEFAULT_WELL_MARKER_SIZE = 5;\nconst OFFSET_WELL_COLOR = '#00FFFF';\nconst COLORS = [\n '#FF00FF',\n '#F5BD80',\n '#FF0000',\n '#0080FF',\n '#FF8000',\n '#58ACFA',\n '#FA58F4',\n '#40FF00',\n '#4B8A08',\n '#40FF00',\n '#D8F781',\n];\n\nconst DEFAULT_COORDS = [29.749907, -95.358421]; // TX coordinates\n\n// eslint-disable-next-line no-unused-vars\nfunction WellsMap({\n subjectWell,\n wells,\n offsetWells,\n radius,\n subjectWellMarkerSize,\n wellMarkerSize,\n popUpFormatter,\n coordsDataPath,\n}) {\n const mapContainerRef = useRef(null);\n const radiusCircleRef = useRef(null);\n const markersGroupRef = useRef(null);\n\n const prevWells = usePrevious(wells);\n\n const restWells = useMemo(() => {\n return wells.filter(well => !subjectWell || subjectWell.id !== well.id);\n }, [subjectWell, wells]);\n\n const subjectWellCoords = useMemo(() => {\n return subjectWell && get(subjectWell, coordsDataPath);\n }, [subjectWell, coordsDataPath]);\n\n // NOTE: Get well marker colors according to its target formation\n const [formations, colorDict] = useMemo(() => {\n // NOTE: Determine well marker colors\n const restFormations = [];\n let hasNullFormation = false;\n\n restWells.forEach(well => {\n if (well.formation === 'Null') {\n hasNullFormation = true;\n } else if (\n (!subjectWell || subjectWell.formation !== well.formation) &&\n !restFormations.includes(well.formation)\n ) {\n restFormations.push(well.formation);\n }\n });\n\n const sortedFormations = subjectWell\n ? [subjectWell.formation].concat(sortBy(restFormations))\n : sortBy(restFormations);\n\n if (hasNullFormation && !sortedFormations.includes('Null')) {\n sortedFormations.push('Null');\n }\n\n const colors = sortedFormations.reduce(\n (result, item, idx) => ({\n ...result,\n [item]: COLORS[idx % COLORS.length],\n }),\n {}\n );\n\n return [sortedFormations, colors];\n }, [subjectWell, restWells]);\n\n // NOTE: Initialize map\n useEffect(() => {\n mapContainerRef.current = L.mapbox\n .map(mapContainerRef.current, null, {\n attributionControl: false,\n scrollWheelZoom: false,\n zoomControl: false,\n })\n .setView(DEFAULT_COORDS, 1);\n\n L.control\n .zoom({\n position: 'bottomright',\n })\n .addTo(mapContainerRef.current);\n L.mapbox.styleLayer('mapbox://styles/mapbox/dark-v9').addTo(mapContainerRef.current);\n\n // NOTE: React nulls the DOM ref before deferred effect cleanup runs, so keep the map in a local\n const map = mapContainerRef.current;\n return () => {\n // NOTE: mapbox.js defers _updateMapFeedbackLink on layerremove; after remove() it crashes on the deleted control container\n map.off('layerremove');\n map.remove();\n mapContainerRef.current = null;\n radiusCircleRef.current = null;\n markersGroupRef.current = null;\n };\n }, []);\n\n // NOTE: Radius circle\n useEffect(() => {\n if (!mapContainerRef.current) {\n return;\n }\n\n // NOTE: Clean up\n if (radiusCircleRef.current) {\n mapContainerRef.current.removeLayer(radiusCircleRef.current);\n }\n\n if (!subjectWellCoords) {\n radiusCircleRef.current = null;\n return;\n }\n\n radiusCircleRef.current = L.circle(subjectWellCoords, radius * METERS_IN_MILE, {\n stroke: false,\n fill: true,\n fillOpacity: 0.2,\n fillColor: RADIUS_CIRCLE_COLOR,\n className: 'circle_500',\n });\n\n radiusCircleRef.current.addTo(mapContainerRef.current);\n }, [radius, subjectWellCoords]);\n\n // NOTE: Well markers\n useEffect(() => {\n if (!mapContainerRef.current) {\n return;\n }\n\n mapContainerRef.current.closePopup();\n\n // NOTE: Clean up\n if (markersGroupRef.current) {\n markersGroupRef.current.removeFrom(mapContainerRef.current);\n }\n\n const offsetWellIds = offsetWells.map(well => well.id);\n\n const markers = [];\n wells.forEach(well => {\n const coords = get(well, coordsDataPath);\n\n if (coords && isValidCoordinates(coords)) {\n const isWellSubject = subjectWell && subjectWell.id === well.id;\n const isWellOffset = offsetWellIds.includes(well.id);\n const r = isWellSubject ? subjectWellMarkerSize : wellMarkerSize;\n const color = isWellSubject || isWellOffset ? OFFSET_WELL_COLOR : colorDict[well.formation];\n const opacity = isWellSubject || isWellOffset ? 1 : 0.3;\n\n const newMarker = L.circleMarker(coords, {\n radius: r,\n stroke: false,\n fill: true,\n fillOpacity: opacity,\n fillColor: color,\n className: 'circle_500',\n });\n\n newMarker.addEventListener('mouseover', () => {\n if (popUpFormatter) {\n // Container to put React generated content in.\n const popUpContainer = document.createElement('div');\n const popUpContent = createElement(popUpFormatter, {\n well,\n color: colorDict[well.formation],\n });\n // NOTE: Custom popup may have buttons\n ReactDOM.render(\n <MuiThemeProvider theme={theme.darkTheme}>{popUpContent}</MuiThemeProvider>,\n popUpContainer\n );\n\n L.popup().setLatLng(coords).setContent(popUpContainer).openOn(mapContainerRef.current);\n }\n });\n\n markers.push(newMarker);\n }\n });\n\n if (markers.length) {\n markersGroupRef.current = L.featureGroup(markers);\n markersGroupRef.current.addTo(mapContainerRef.current);\n }\n\n setTimeout(() => {\n if (radiusCircleRef.current) {\n radiusCircleRef.current.bringToBack();\n }\n\n if (mapContainerRef.current && radiusCircleRef.current && wells !== prevWells) {\n mapContainerRef.current.fitBounds(radiusCircleRef.current.getBounds(), { padding: [5, 5] });\n }\n }, 500);\n }, [subjectWell, wells, offsetWells, colorDict]);\n\n useEffect(() => {\n setTimeout(() => {\n if (radiusCircleRef.current) {\n radiusCircleRef.current.bringToBack();\n }\n if (subjectWell) {\n if (mapContainerRef.current && radiusCircleRef.current) {\n mapContainerRef.current.fitBounds(radiusCircleRef.current.getBounds(), {\n padding: [5, 5],\n });\n }\n } else if (mapContainerRef.current && markersGroupRef.current) {\n mapContainerRef.current.fitBounds(markersGroupRef.current.getBounds());\n }\n }, 500);\n }, [radius, subjectWell]);\n\n return (\n <div className={styles.map}>\n <div className={styles.mapMain} ref={mapContainerRef} />\n\n <div className={styles.mapFooter}>\n {offsetWells && (\n <div className={styles.mapFooterItem}>\n <div\n className={styles.mapFooterItemSquare}\n style={{ backgroundColor: OFFSET_WELL_COLOR }}\n />\n <div className={styles.mapFooterItemLabel}>Selected Offset Wells</div>\n </div>\n )}\n\n {formations.map(item => (\n <div className={styles.mapFooterItem} key={item}>\n <div\n className={styles.mapFooterItemSquare}\n style={{ backgroundColor: colorDict[item] }}\n />\n <div className={styles.mapFooterItemLabel}>{item}</div>\n </div>\n ))}\n </div>\n </div>\n );\n}\n\nWellsMap.propTypes = {\n subjectWell: PropTypes.shape({\n id: PropTypes.number,\n formation: PropTypes.string,\n }),\n wells: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n offsetWells: PropTypes.arrayOf(PropTypes.shape({})),\n radius: PropTypes.number.isRequired,\n subjectWellMarkerSize: PropTypes.number,\n wellMarkerSize: PropTypes.number,\n popUpFormatter: PropTypes.func,\n coordsDataPath: PropTypes.string,\n};\n\nWellsMap.defaultProps = {\n subjectWell: null,\n subjectWellMarkerSize: DEFAULT_SUBJECT_WELL_MARKER_SIZE,\n wellMarkerSize: DEFAULT_WELL_MARKER_SIZE,\n popUpFormatter: null,\n coordsDataPath: 'settings.top_hole.coordinates',\n offsetWells: null,\n};\n\nexport default memo(WellsMap);\n"],"names":["isValidCoordinates","mapbox","COLORS","DEFAULT_COORDS","WellsMap","_ref","subjectWell","wells","offsetWells","radius","subjectWellMarkerSize","wellMarkerSize","popUpFormatter","coordsDataPath","mapContainerRef","useRef","radiusCircleRef","markersGroupRef","prevWells","usePrevious","restWells","useMemo","filter","well","id","subjectWellCoords","get","restFormations","hasNullFormation","forEach","formation","includes","push","sortedFormations","concat","sortBy","colors","reduce","result","item","idx","length","_useMemo2","_slicedToArray","_useMemo","formations","colorDict","useEffect","current","L","map","attributionControl","scrollWheelZoom","zoomControl","setView","control","zoom","position","addTo","styleLayer","off","remove","removeLayer","circle","stroke","fill","fillOpacity","fillColor","className","closePopup","removeFrom","offsetWellIds","markers","coords","isWellSubject","isWellOffset","r","color","opacity","newMarker","circleMarker","addEventListener","popUpContainer","document","createElement","popUpContent","ReactDOM","render","_jsx","jsx","MuiThemeProvider","theme","darkTheme","children","popup","setLatLng","setContent","openOn","featureGroup","setTimeout","bringToBack","fitBounds","getBounds","padding","_jsxs","styles","mapMain","ref","jsxs","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, useState } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { get, sortBy } from 'lodash';\nimport { MuiThemeProvider } from '@material-ui/core/styles';\n\nimport styles from './Map.css';\n\nimport { mapbox } from '~/utils';\nimport { theme } from '~/config';\nimport mapboxgl from '~/config/mapboxGl';\nimport 'mapbox-gl/dist/mapbox-gl.css';\n\nconst { isValidCoordinates } = mapbox;\n\nconst RADIUS_CIRCLE_COLOR = '#03BCD4';\nconst METERS_IN_MILE = 1609.34;\nconst DEFAULT_SUBJECT_WELL_MARKER_SIZE = 10;\nconst DEFAULT_WELL_MARKER_SIZE = 5;\nconst OFFSET_WELL_COLOR = '#00FFFF';\nconst COLORS = [\n '#FF00FF',\n '#F5BD80',\n '#FF0000',\n '#0080FF',\n '#FF8000',\n '#58ACFA',\n '#FA58F4',\n '#40FF00',\n '#4B8A08',\n '#40FF00',\n '#D8F781',\n];\n\nconst DEFAULT_COORDS = [29.749907, -95.358421]; // TX coordinates\n\nconst RADIUS_CIRCLE_ID = 'radius-circle';\nconst WELLS_ID = 'wells';\nconst EMPTY_FEATURE_COLLECTION = { type: 'FeatureCollection', features: [] };\n\nconst toLngLat = ([lat, lng]) => [lng, lat];\n\n// NOTE: mapbox-gl has no geographic-radius circle primitive, so approximate it with a polygon\nconst makeCirclePolygon = ([lat, lng], radiusMeters, points = 64) => {\n const ring = [];\n const distanceX = radiusMeters / (111320 * Math.cos((lat * Math.PI) / 180));\n const distanceY = radiusMeters / 110574;\n for (let i = 0; i <= points; i += 1) {\n const theta = (i / points) * (2 * Math.PI);\n ring.push([lng + distanceX * Math.cos(theta), lat + distanceY * Math.sin(theta)]);\n }\n return ring;\n};\n\n// eslint-disable-next-line no-unused-vars\nfunction WellsMap({\n subjectWell,\n wells,\n offsetWells,\n radius,\n subjectWellMarkerSize,\n wellMarkerSize,\n popUpFormatter,\n coordsDataPath,\n}) {\n const mapContainerRef = useRef(null);\n const mapRef = useRef(null);\n const radiusCircleBoundsRef = useRef(null);\n const markersBoundsRef = useRef(null);\n const popupRef = useRef(null);\n const prevWellsRef = useRef();\n const [isMapReady, setIsMapReady] = useState(false);\n\n const restWells = useMemo(() => {\n return wells.filter(well => !subjectWell || subjectWell.id !== well.id);\n }, [subjectWell, wells]);\n\n const subjectWellCoords = useMemo(() => {\n return subjectWell && get(subjectWell, coordsDataPath);\n }, [subjectWell, coordsDataPath]);\n\n // NOTE: Get well marker colors according to its target formation\n const [formations, colorDict] = useMemo(() => {\n // NOTE: Determine well marker colors\n const restFormations = [];\n let hasNullFormation = false;\n\n restWells.forEach(well => {\n if (well.formation === 'Null') {\n hasNullFormation = true;\n } else if (\n (!subjectWell || subjectWell.formation !== well.formation) &&\n !restFormations.includes(well.formation)\n ) {\n restFormations.push(well.formation);\n }\n });\n\n const sortedFormations = subjectWell\n ? [subjectWell.formation].concat(sortBy(restFormations))\n : sortBy(restFormations);\n\n if (hasNullFormation && !sortedFormations.includes('Null')) {\n sortedFormations.push('Null');\n }\n\n const colors = sortedFormations.reduce(\n (result, item, idx) => ({\n ...result,\n [item]: COLORS[idx % COLORS.length],\n }),\n {}\n );\n\n return [sortedFormations, colors];\n }, [subjectWell, restWells]);\n\n // NOTE: Initialize map\n useEffect(() => {\n mapRef.current = new mapboxgl.Map({\n container: mapContainerRef.current,\n style: 'mapbox://styles/mapbox/dark-v9',\n center: toLngLat(DEFAULT_COORDS),\n zoom: 1,\n attributionControl: false,\n scrollZoom: false,\n });\n\n mapRef.current.addControl(\n new mapboxgl.NavigationControl({ showCompass: false }),\n 'bottom-right'\n );\n\n // NOTE: Sources/layers can only be added once the style has loaded.\n // The radius circle layer is added first so well markers render above it (was bringToBack)\n mapRef.current.on('load', () => {\n mapRef.current.addSource(RADIUS_CIRCLE_ID, {\n type: 'geojson',\n data: EMPTY_FEATURE_COLLECTION,\n });\n mapRef.current.addLayer({\n id: RADIUS_CIRCLE_ID,\n type: 'fill',\n source: RADIUS_CIRCLE_ID,\n paint: {\n 'fill-color': RADIUS_CIRCLE_COLOR,\n 'fill-opacity': 0.2,\n },\n });\n\n mapRef.current.addSource(WELLS_ID, { type: 'geojson', data: EMPTY_FEATURE_COLLECTION });\n mapRef.current.addLayer({\n id: WELLS_ID,\n type: 'circle',\n source: WELLS_ID,\n paint: {\n 'circle-radius': ['get', 'radius'],\n 'circle-color': ['get', 'color'],\n 'circle-opacity': ['get', 'opacity'],\n },\n });\n\n setIsMapReady(true);\n });\n\n const map = mapRef.current;\n return () => {\n map.remove();\n mapRef.current = null;\n radiusCircleBoundsRef.current = null;\n markersBoundsRef.current = null;\n };\n }, []);\n\n // NOTE: Radius circle\n useEffect(() => {\n if (!mapRef.current || !isMapReady) {\n return;\n }\n\n if (!subjectWellCoords) {\n mapRef.current.getSource(RADIUS_CIRCLE_ID).setData(EMPTY_FEATURE_COLLECTION);\n radiusCircleBoundsRef.current = null;\n return;\n }\n\n const ring = makeCirclePolygon(subjectWellCoords, radius * METERS_IN_MILE);\n mapRef.current.getSource(RADIUS_CIRCLE_ID).setData({\n type: 'Feature',\n geometry: { type: 'Polygon', coordinates: [ring] },\n });\n radiusCircleBoundsRef.current = ring.reduce(\n (bounds, coord) => bounds.extend(coord),\n new mapboxgl.LngLatBounds()\n );\n }, [radius, subjectWellCoords, isMapReady]);\n\n // NOTE: Well markers\n useEffect(() => {\n if (!mapRef.current || !isMapReady) {\n return undefined;\n }\n\n const prevWells = prevWellsRef.current;\n prevWellsRef.current = wells;\n\n popupRef.current?.remove();\n\n const offsetWellIds = offsetWells.map(well => well.id);\n\n const features = [];\n const wellsById = {};\n const bounds = new mapboxgl.LngLatBounds();\n wells.forEach(well => {\n const coords = get(well, coordsDataPath);\n\n if (coords && isValidCoordinates(coords)) {\n const isWellSubject = subjectWell && subjectWell.id === well.id;\n const isWellOffset = offsetWellIds.includes(well.id);\n const r = isWellSubject ? subjectWellMarkerSize : wellMarkerSize;\n const color = isWellSubject || isWellOffset ? OFFSET_WELL_COLOR : colorDict[well.formation];\n const opacity = isWellSubject || isWellOffset ? 1 : 0.3;\n\n wellsById[well.id] = well;\n bounds.extend(toLngLat(coords));\n features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: toLngLat(coords) },\n properties: { wellId: well.id, radius: r, color, opacity },\n });\n }\n });\n\n mapRef.current.getSource(WELLS_ID).setData({ type: 'FeatureCollection', features });\n markersBoundsRef.current = features.length ? bounds : null;\n\n const map = mapRef.current;\n let hoveredWellId = null;\n\n const handleMouseMove = e => {\n map.getCanvas().style.cursor = 'pointer';\n\n const well = wellsById[e.features[0].properties.wellId];\n if (!well || well.id === hoveredWellId) {\n return;\n }\n hoveredWellId = well.id;\n\n if (popUpFormatter) {\n // Container to put React generated content in.\n const popUpContainer = document.createElement('div');\n const popUpContent = createElement(popUpFormatter, {\n well,\n color: colorDict[well.formation],\n });\n // NOTE: Custom popup may have buttons\n ReactDOM.render(\n <MuiThemeProvider theme={theme.darkTheme}>{popUpContent}</MuiThemeProvider>,\n popUpContainer\n );\n\n if (!popupRef.current) {\n popupRef.current = new mapboxgl.Popup({ closeButton: false, maxWidth: 'none' });\n }\n popupRef.current\n .setLngLat(toLngLat(get(well, coordsDataPath)))\n .setDOMContent(popUpContainer)\n .addTo(map);\n }\n };\n\n const handleMouseLeave = () => {\n hoveredWellId = null;\n map.getCanvas().style.cursor = '';\n };\n\n map.on('mousemove', WELLS_ID, handleMouseMove);\n map.on('mouseleave', WELLS_ID, handleMouseLeave);\n\n setTimeout(() => {\n if (mapRef.current && radiusCircleBoundsRef.current && wells !== prevWells) {\n mapRef.current.fitBounds(radiusCircleBoundsRef.current, { padding: 5 });\n }\n }, 500);\n\n return () => {\n map.off('mousemove', WELLS_ID, handleMouseMove);\n map.off('mouseleave', WELLS_ID, handleMouseLeave);\n };\n }, [subjectWell, wells, offsetWells, colorDict, isMapReady]);\n\n useEffect(() => {\n setTimeout(() => {\n if (subjectWell) {\n if (mapRef.current && radiusCircleBoundsRef.current) {\n mapRef.current.fitBounds(radiusCircleBoundsRef.current, {\n padding: 5,\n });\n }\n } else if (mapRef.current && markersBoundsRef.current) {\n mapRef.current.fitBounds(markersBoundsRef.current);\n }\n }, 500);\n }, [radius, subjectWell, isMapReady]);\n\n return (\n <div className={styles.map}>\n <div className={styles.mapMain} ref={mapContainerRef} />\n\n <div className={styles.mapFooter}>\n {offsetWells && (\n <div className={styles.mapFooterItem}>\n <div\n className={styles.mapFooterItemSquare}\n style={{ backgroundColor: OFFSET_WELL_COLOR }}\n />\n <div className={styles.mapFooterItemLabel}>Selected Offset Wells</div>\n </div>\n )}\n\n {formations.map(item => (\n <div className={styles.mapFooterItem} key={item}>\n <div\n className={styles.mapFooterItemSquare}\n style={{ backgroundColor: colorDict[item] }}\n />\n <div className={styles.mapFooterItemLabel}>{item}</div>\n </div>\n ))}\n </div>\n </div>\n );\n}\n\nWellsMap.propTypes = {\n subjectWell: PropTypes.shape({\n id: PropTypes.number,\n formation: PropTypes.string,\n }),\n wells: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n offsetWells: PropTypes.arrayOf(PropTypes.shape({})),\n radius: PropTypes.number.isRequired,\n subjectWellMarkerSize: PropTypes.number,\n wellMarkerSize: PropTypes.number,\n popUpFormatter: PropTypes.func,\n coordsDataPath: PropTypes.string,\n};\n\nWellsMap.defaultProps = {\n subjectWell: null,\n subjectWellMarkerSize: DEFAULT_SUBJECT_WELL_MARKER_SIZE,\n wellMarkerSize: DEFAULT_WELL_MARKER_SIZE,\n popUpFormatter: null,\n coordsDataPath: 'settings.top_hole.coordinates',\n offsetWells: null,\n};\n\nexport default memo(WellsMap);\n"],"names":["isValidCoordinates","mapbox","COLORS","DEFAULT_COORDS","EMPTY_FEATURE_COLLECTION","type","features","toLngLat","_ref","_ref2","_slicedToArray","lat","WellsMap","_ref5","subjectWell","wells","offsetWells","radius","subjectWellMarkerSize","wellMarkerSize","popUpFormatter","coordsDataPath","mapContainerRef","useRef","mapRef","radiusCircleBoundsRef","markersBoundsRef","popupRef","prevWellsRef","useState","_useState2","_useState","isMapReady","setIsMapReady","restWells","useMemo","filter","well","id","subjectWellCoords","get","restFormations","hasNullFormation","forEach","formation","includes","push","sortedFormations","concat","sortBy","colors","reduce","result","item","idx","length","_useMemo2","_useMemo","formations","colorDict","useEffect","current","mapboxgl","Map","container","style","center","zoom","attributionControl","scrollZoom","addControl","NavigationControl","showCompass","on","addSource","data","addLayer","source","paint","map","remove","getSource","setData","ring","_ref3","radiusMeters","_ref4","lng","points","distanceX","Math","cos","PI","distanceY","i","theta","sin","makeCirclePolygon","geometry","coordinates","bounds","coord","extend","LngLatBounds","_popupRef$current","prevWells","offsetWellIds","wellsById","coords","isWellSubject","isWellOffset","r","color","opacity","properties","wellId","hoveredWellId","handleMouseMove","e","getCanvas","cursor","popUpContainer","document","createElement","popUpContent","ReactDOM","render","_jsx","jsx","MuiThemeProvider","theme","darkTheme","children","Popup","closeButton","maxWidth","setLngLat","setDOMContent","addTo","handleMouseLeave","setTimeout","fitBounds","padding","off","_jsxs","className","styles","mapMain","ref","jsxs","mapFooter","mapFooterItem","mapFooterItemSquare","backgroundColor","mapFooterItemLabel","propTypes","PropTypes","shape","number","string","arrayOf","isRequired","func","defaultProps","memo"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/defineProperty"),t=require("@babel/runtime/helpers/asyncToGenerator"),r=require("@babel/runtime/helpers/slicedToArray"),n=require("@babel/runtime/regenerator"),u=require("react"),s=require("lodash"),a=require("../utils/apiCalls.js"),i=require("../constants.js"),o=require("../../../utils/index.js"),c=require("../../../constants/goals.js");require("../../../constants/segment.js"),require("../../../constants/alerts.js"),require("../../../constants/apps.js"),require("../../../constants/drillstring.js"),require("../../../constants/completion.js"),require("../../../constants/appPackages.js"),require("../../../constants/notifications.js"),require("../../../constants/feed.js"),require("../../../constants/bha.js"),require("../../../constants/corvaCompanyId.js"),require("../../GradientManager/configuration/constants.js");var f=require("./biDirectionalFiltering.js"),l=require("../../../utils/goals.js");function p(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=p(e),h=p(t),v=p(r),b=p(n);function y(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function j(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?y(Object(r),!0).forEach((function(t){d.default(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):y(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var g=o.mapbox.getAssetV2Coordinates,x=o.mapbox.getDistanceByCoordinates;exports.useBidirectionalFiltering=f,exports.useCompanies=function(e,t,r){var n=u.useState([]),s=v.default(n,2),i=s[0],o=s[1];return u.useEffect((function(){function n(){return(n=h.default(b.default.mark((function n(){var u;return b.default.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(e){n.next=3;break}return o([]),n.abrupt("return");case 3:return n.next=5,a.fetchCompanies();case 5:u=n.sent,t&&(u=u.filter((function(e){return e.id===r}))),o(u);case 8:case"end":return n.stop()}}),n)})))).apply(this,arguments)}!function(){n.apply(this,arguments)}()}),[e]),i},exports.useCompanyMetricKey=function(e){var t=u.useState(null),r=v.default(t,2),n=r[0],s=r[1];return u.useEffect((function(){function t(){return(t=h.default(b.default.mark((function t(){var r,n;return b.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,a.fetchCompanyGoals(e);case 2:r=t.sent,n=l.getCompanyGoalSetting(r,c.BENCHMARK_METRIC_GOAL),s(n);case 5:case"end":return t.stop()}}),t)})))).apply(this,arguments)}s(null),function(){t.apply(this,arguments)}()}),[e]),n},exports.useMetricsData=function(e,t){var r=u.useRef({}),n=u.useState(!0),o=v.default(n,2),c=o[0],f=o[1],l=u.useState(null),p=v.default(l,2),d=p[0],y=p[1];return u.useEffect((function(){function n(){return(n=h.default(b.default.mark((function n(u){var o,c,l,p;return b.default.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,a.fetchMetricsData(e,u);case 2:o=n.sent,c=new Map,o.forEach((function(e){var t,r=s.get(e,"asset_id"),n=s.get(e,"data.key");c.has(r)||c.set(r,new Map),null===(t=c.get(r))||void 0===t||t.set(n,e)})),l={},u.forEach((function(e){var t={},r=c.get(e);i.METRICS_KEYS.forEach((function(e){var n=null==r?void 0:r.get(e),u=s.get(n,"data.value");t[e]=Number.isFinite(u)?parseFloat(u).toFixed(2):null})),l[e]=t})),r.current=j(j({},r.current),l),p=[],t.forEach((function(e){p.push(j(j({},e),r.current[e.id]))})),f(!1),y(p);case 12:case"end":return n.stop()}}),n)})))).apply(this,arguments)}if(t)if(0!==t.length){var u=[];t.forEach((function(e){r.current[e.id]||u.push(e.id)})),f(!0),function(e){n.apply(this,arguments)}(u)}else y([]);else y(null)}),[t]),[c,d]},exports.useOffsetWells=function(e,t,r){var n=u.useState(null),s=v.default(n,2),a=s[0],i=s[1];return u.useEffect((function(){if(t){var e=[];t.forEach((function(t){r.includes(t.id)&&t.is_usable&&e.push(t)})),i(e)}else i(null)}),[e,t,r]),a},exports.usePrevious=function(e){var t=u.useRef();return u.useEffect((function(){t.current=e})),t.current},exports.useRadiusWells=function(e,t,r){var n=u.useRef(!1);u.useEffect((function(){if(t){if(n.current){var u=[];t.forEach((function(t){t.distance<=e&&u.push(t.id)})),r(u)}n.current=!0}}),[e,t])},exports.useWells=function(e,t){var r=u.useState(null),n=v.default(r,2),s=n[0],i=n[1];return u.useEffect((function(){function r(){return(r=h.default(b.default.mark((function r(){var n;return b.default.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(!e){r.next=6;break}return r.next=3,a.fetchWells(e,t);case 3:r.t0=r.sent,r.next=7;break;case 6:r.t0=null;case 7:n=r.t0,i(n);case 9:case"end":return r.stop()}}),r)})))).apply(this,arguments)}i(null),function(){r.apply(this,arguments)}()}),[e]),s},exports.useWellsWithCoords=function(e,t){var r=u.useState(null),n=v.default(r,2),s=n[0],a=n[1];return u.useEffect((function(){if(e){var r=t&&g(t,"topHole");if(r){var n=[];e.forEach((function(e){var t=g(e,"topHole");if(t){var u=parseFloat(x(r,t));n.push(j(j({},e),{},{distance:u}))}else n.push(e)})),a(n)}else a(e)}else a(e)}),[e,t]),s};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/defineProperty"),t=require("@babel/runtime/helpers/asyncToGenerator"),r=require("@babel/runtime/helpers/slicedToArray"),n=require("@babel/runtime/regenerator"),s=require("react"),u=require("lodash"),a=require("../utils/apiCalls.js"),i=require("../constants.js"),o=require("../../../utils/index.js"),c=require("../../../constants/goals.js");require("../../../constants/segment.js"),require("../../../constants/alerts.js"),require("../../../constants/apps.js"),require("../../../constants/drillstring.js"),require("../../../constants/completion.js"),require("../../../constants/appPackages.js"),require("../../../constants/notifications.js"),require("../../../constants/feed.js"),require("../../../constants/bha.js"),require("../../../constants/corvaCompanyId.js"),require("../../GradientManager/configuration/constants.js");var f=require("./biDirectionalFiltering.js"),l=require("../../../utils/goals.js");function p(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=p(e),h=p(t),v=p(r),b=p(n);function y(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function j(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?y(Object(r),!0).forEach((function(t){d.default(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):y(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var g=o.mapbox.getAssetV2Coordinates,x=o.mapbox.getDistanceByCoordinates;exports.useBidirectionalFiltering=f,exports.useCompanies=function(e,t,r){var n=s.useState([]),u=v.default(n,2),i=u[0],o=u[1];return s.useEffect((function(){function n(){return(n=h.default(b.default.mark((function n(){var s;return b.default.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:if(e){n.next=3;break}return o([]),n.abrupt("return");case 3:return n.next=5,a.fetchCompanies();case 5:s=n.sent,t&&(s=s.filter((function(e){return e.id===r}))),o(s);case 8:case"end":return n.stop()}}),n)})))).apply(this,arguments)}!function(){n.apply(this,arguments)}()}),[e]),i},exports.useCompanyMetricKey=function(e){var t=s.useState(null),r=v.default(t,2),n=r[0],u=r[1];return s.useEffect((function(){function t(){return(t=h.default(b.default.mark((function t(){var r,n;return b.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,a.fetchCompanyGoals(e);case 2:r=t.sent,n=l.getCompanyGoalSetting(r,c.BENCHMARK_METRIC_GOAL),u(n);case 5:case"end":return t.stop()}}),t)})))).apply(this,arguments)}u(null),function(){t.apply(this,arguments)}()}),[e]),n},exports.useMetricsData=function(e,t){var r=s.useRef({}),n=s.useState(!0),o=v.default(n,2),c=o[0],f=o[1],l=s.useState(null),p=v.default(l,2),d=p[0],y=p[1];return s.useEffect((function(){function n(){return(n=h.default(b.default.mark((function n(s){var o,c,l,p;return b.default.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,a.fetchMetricsData(e,s);case 2:o=n.sent,c=new Map,o.forEach((function(e){var t,r=u.get(e,"asset_id"),n=u.get(e,"data.key");c.has(r)||c.set(r,new Map),null===(t=c.get(r))||void 0===t||t.set(n,e)})),l={},s.forEach((function(e){var t={},r=c.get(e);i.METRICS_KEYS.forEach((function(e){var n=null==r?void 0:r.get(e),s=u.get(n,"data.value");t[e]=Number.isFinite(s)?parseFloat(s).toFixed(2):null})),l[e]=t})),r.current=j(j({},r.current),l),p=[],t.forEach((function(e){p.push(j(j({},e),r.current[e.id]))})),f(!1),y(p);case 12:case"end":return n.stop()}}),n)})))).apply(this,arguments)}if(t)if(0!==t.length){var s=[];t.forEach((function(e){r.current[e.id]||s.push(e.id)})),f(!0),function(e){n.apply(this,arguments)}(s)}else y([]);else y(null)}),[t]),[c,d]},exports.useOffsetWells=function(e,t,r){var n=s.useState(null),u=v.default(n,2),a=u[0],i=u[1];return s.useEffect((function(){if(t){var e=[];t.forEach((function(t){r.includes(t.id)&&t.is_usable&&e.push(t)})),i(e)}else i(null)}),[e,t,r]),a},exports.useRadiusWells=function(e,t,r){var n=s.useRef(!1);s.useEffect((function(){if(t){if(n.current){var s=[];t.forEach((function(t){t.distance<=e&&s.push(t.id)})),r(s)}n.current=!0}}),[e,t])},exports.useWells=function(e,t){var r=s.useState(null),n=v.default(r,2),u=n[0],i=n[1];return s.useEffect((function(){function r(){return(r=h.default(b.default.mark((function r(){var n;return b.default.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(!e){r.next=6;break}return r.next=3,a.fetchWells(e,t);case 3:r.t0=r.sent,r.next=7;break;case 6:r.t0=null;case 7:n=r.t0,i(n);case 9:case"end":return r.stop()}}),r)})))).apply(this,arguments)}i(null),function(){r.apply(this,arguments)}()}),[e]),u},exports.useWellsWithCoords=function(e,t){var r=s.useState(null),n=v.default(r,2),u=n[0],a=n[1];return s.useEffect((function(){if(e){var r=t&&g(t,"topHole");if(r){var n=[];e.forEach((function(e){var t=g(e,"topHole");if(t){var s=parseFloat(x(r,t));n.push(j(j({},e),{},{distance:s}))}else n.push(e)})),a(n)}else a(e)}else a(e)}),[e,t]),u};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/components/OffsetWellPickerV2/effects/index.js"],"sourcesContent":["import { useEffect, useState, useRef } from 'react';\nimport { get } from 'lodash';\n\nimport { fetchWells, fetchCompanies, fetchMetricsData, fetchCompanyGoals } from '../utils/apiCalls';\nimport { METRICS_KEYS } from '../constants';\n\nimport { mapbox, goals } from '~/utils';\nimport { goals as goalsConstants } from '~/constants';\n\nexport { default as useBidirectionalFiltering } from './biDirectionalFiltering';\n\nconst { getAssetV2Coordinates, getDistanceByCoordinates } = mapbox;\n\nexport function usePrevious(value) {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n}\n\nexport function useCompanies(canViewCompanies, isAdvancedSearch, companyId) {\n const [companies, setCompanies] = useState([]);\n\n useEffect(() => {\n async function handleFetchCompanies() {\n if (!canViewCompanies) {\n setCompanies([]);\n return;\n }\n\n let data = await fetchCompanies();\n if (isAdvancedSearch) {\n data = data.filter(item => item.id === companyId);\n }\n setCompanies(data);\n }\n\n handleFetchCompanies();\n }, [canViewCompanies]);\n\n return companies;\n}\n\nexport function useCompanyMetricKey(companyId) {\n const [metricKey, setMetricKey] = useState(null);\n\n useEffect(() => {\n async function handleFetchCompanyMetric() {\n const companyGoals = await fetchCompanyGoals(companyId);\n const companyMetricKey = goals.getCompanyGoalSetting(\n companyGoals,\n goalsConstants.BENCHMARK_METRIC_GOAL\n );\n\n setMetricKey(companyMetricKey);\n }\n\n setMetricKey(null);\n handleFetchCompanyMetric();\n }, [companyId]);\n\n return metricKey;\n}\n\nexport function useWells(companyId, addWellsUsabilityInfo) {\n const [wells, setWells] = useState(null);\n\n useEffect(() => {\n async function handleFetchWells() {\n const data = companyId ? await fetchWells(companyId, addWellsUsabilityInfo) : null;\n setWells(data);\n }\n\n setWells(null);\n handleFetchWells();\n }, [companyId]);\n\n return wells;\n}\n\nexport function useWellsWithCoords(wells, subjectWell) {\n const [wellsWithCoords, setWellsWithCoords] = useState(null);\n\n useEffect(() => {\n if (!wells) {\n setWellsWithCoords(wells);\n return;\n }\n\n const subjectWellCoord = subjectWell && getAssetV2Coordinates(subjectWell, 'topHole');\n\n if (!subjectWellCoord) {\n setWellsWithCoords(wells);\n return;\n }\n const result = [];\n wells.forEach(well => {\n const coord = getAssetV2Coordinates(well, 'topHole');\n if (coord) {\n const distance = parseFloat(getDistanceByCoordinates(subjectWellCoord, coord));\n result.push({ ...well, distance });\n } else {\n result.push(well);\n }\n });\n\n setWellsWithCoords(result);\n }, [wells, subjectWell]);\n\n return wellsWithCoords;\n}\n\nexport function useOffsetWells(radius, allWells, selectedWellIds) {\n const [offsetWells, setOffsetWells] = useState(null);\n\n useEffect(() => {\n if (!allWells) {\n // still loading...\n setOffsetWells(null);\n return;\n }\n\n const result = [];\n // NOTE: Add selected wells\n allWells.forEach(well => {\n if (selectedWellIds.includes(well.id) && well.is_usable) {\n result.push(well);\n }\n });\n\n setOffsetWells(result);\n }, [radius, allWells, selectedWellIds]);\n return offsetWells;\n}\n\nexport function useMetricsData(companyId, wells) {\n const fetchedData = useRef({});\n\n const [loading, setLoading] = useState(true);\n const [data, setData] = useState(null);\n\n useEffect(() => {\n async function handleFetchMetricsData(wellIdsToFetch) {\n const records = await fetchMetricsData(companyId, wellIdsToFetch);\n\n // Build index: asset_id -> { metricKey -> record }\n const recordsByWell = new Map();\n\n records.forEach(item => {\n const wellId = get(item, 'asset_id');\n const key = get(item, 'data.key');\n\n if (!recordsByWell.has(wellId)) {\n recordsByWell.set(wellId, new Map());\n }\n\n recordsByWell.get(wellId)?.set(key, item);\n });\n\n const wellsMetrics = {};\n wellIdsToFetch.forEach(wellId => {\n const wellMetrics = {};\n const wellRecordMap = recordsByWell.get(wellId);\n\n METRICS_KEYS.forEach(metricsKey => {\n const record = wellRecordMap?.get(metricsKey);\n const value = get(record, 'data.value');\n wellMetrics[metricsKey] = Number.isFinite(value) ? parseFloat(value).toFixed(2) : null;\n });\n\n wellsMetrics[wellId] = wellMetrics;\n });\n\n // NOTE: Store previous fetching result\n fetchedData.current = {\n ...fetchedData.current,\n ...wellsMetrics,\n };\n\n const result = [];\n wells.forEach(well => {\n result.push({\n ...well,\n ...fetchedData.current[well.id],\n });\n });\n\n setLoading(false);\n setData(result);\n }\n\n if (!wells) {\n // still loading...\n setData(null);\n return;\n }\n\n if (wells.length === 0) {\n setData([]);\n return;\n }\n\n // NOTE: Make api calls for only missing wells\n const missingWellIds = [];\n wells.forEach(well => {\n if (!fetchedData.current[well.id]) {\n missingWellIds.push(well.id);\n }\n });\n\n setLoading(true);\n handleFetchMetricsData(missingWellIds);\n }, [wells]);\n\n return [loading, data];\n}\n\nexport function useRadiusWells(radius, filteredWellsWithCoords, setSelectedWellIds) {\n const initLoadingRef = useRef(false);\n useEffect(() => {\n if (filteredWellsWithCoords) {\n if (initLoadingRef.current) {\n const radiusWellIds = [];\n filteredWellsWithCoords.forEach(well => {\n if (well.distance <= radius) {\n radiusWellIds.push(well.id);\n }\n });\n setSelectedWellIds(radiusWellIds);\n }\n initLoadingRef.current = true;\n }\n }, [radius, filteredWellsWithCoords]);\n}\n"],"names":["getAssetV2Coordinates","mapbox","getDistanceByCoordinates","canViewCompanies","isAdvancedSearch","companyId","useState","_useState2","_slicedToArray","_useState","companies","setCompanies","useEffect","_handleFetchCompanies","_asyncToGenerator","_regeneratorRuntime","mark","_callee","data","wrap","_context","prev","next","abrupt","fetchCompanies","sent","filter","item","id","stop","apply","this","arguments","handleFetchCompanies","_useState4","_useState3","metricKey","setMetricKey","_handleFetchCompanyMetric","_callee2","companyGoals","companyMetricKey","_context2","fetchCompanyGoals","goals","getCompanyGoalSetting","goalsConstants","handleFetchCompanyMetric","wells","fetchedData","useRef","_useState12","_useState11","loading","setLoading","_useState14","_useState13","setData","_handleFetchMetricsData","wellIdsToFetch","records","recordsByWell","wellsMetrics","result","_context4","fetchMetricsData","Map","forEach","_recordsByWell$get","wellId","get","key","has","set","wellMetrics","wellRecordMap","METRICS_KEYS","metricsKey","record","value","Number","isFinite","parseFloat","toFixed","current","well","push","_callee4","length","missingWellIds","_x","handleFetchMetricsData","radius","allWells","selectedWellIds","_useState10","_useState9","offsetWells","setOffsetWells","includes","is_usable","ref","filteredWellsWithCoords","setSelectedWellIds","initLoadingRef","radiusWellIds","distance","addWellsUsabilityInfo","_useState6","_useState5","setWells","_handleFetchWells","_callee3","_context3","fetchWells","t0","handleFetchWells","subjectWell","_useState8","_useState7","wellsWithCoords","setWellsWithCoords","subjectWellCoord","coord","_objectSpread"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/components/OffsetWellPickerV2/effects/index.js"],"sourcesContent":["import { useEffect, useState, useRef } from 'react';\nimport { get } from 'lodash';\n\nimport { fetchWells, fetchCompanies, fetchMetricsData, fetchCompanyGoals } from '../utils/apiCalls';\nimport { METRICS_KEYS } from '../constants';\n\nimport { mapbox, goals } from '~/utils';\nimport { goals as goalsConstants } from '~/constants';\n\nexport { default as useBidirectionalFiltering } from './biDirectionalFiltering';\n\nconst { getAssetV2Coordinates, getDistanceByCoordinates } = mapbox;\n\nexport function usePrevious(value) {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n}\n\nexport function useCompanies(canViewCompanies, isAdvancedSearch, companyId) {\n const [companies, setCompanies] = useState([]);\n\n useEffect(() => {\n async function handleFetchCompanies() {\n if (!canViewCompanies) {\n setCompanies([]);\n return;\n }\n\n let data = await fetchCompanies();\n if (isAdvancedSearch) {\n data = data.filter(item => item.id === companyId);\n }\n setCompanies(data);\n }\n\n handleFetchCompanies();\n }, [canViewCompanies]);\n\n return companies;\n}\n\nexport function useCompanyMetricKey(companyId) {\n const [metricKey, setMetricKey] = useState(null);\n\n useEffect(() => {\n async function handleFetchCompanyMetric() {\n const companyGoals = await fetchCompanyGoals(companyId);\n const companyMetricKey = goals.getCompanyGoalSetting(\n companyGoals,\n goalsConstants.BENCHMARK_METRIC_GOAL\n );\n\n setMetricKey(companyMetricKey);\n }\n\n setMetricKey(null);\n handleFetchCompanyMetric();\n }, [companyId]);\n\n return metricKey;\n}\n\nexport function useWells(companyId, addWellsUsabilityInfo) {\n const [wells, setWells] = useState(null);\n\n useEffect(() => {\n async function handleFetchWells() {\n const data = companyId ? await fetchWells(companyId, addWellsUsabilityInfo) : null;\n setWells(data);\n }\n\n setWells(null);\n handleFetchWells();\n }, [companyId]);\n\n return wells;\n}\n\nexport function useWellsWithCoords(wells, subjectWell) {\n const [wellsWithCoords, setWellsWithCoords] = useState(null);\n\n useEffect(() => {\n if (!wells) {\n setWellsWithCoords(wells);\n return;\n }\n\n const subjectWellCoord = subjectWell && getAssetV2Coordinates(subjectWell, 'topHole');\n\n if (!subjectWellCoord) {\n setWellsWithCoords(wells);\n return;\n }\n const result = [];\n wells.forEach(well => {\n const coord = getAssetV2Coordinates(well, 'topHole');\n if (coord) {\n const distance = parseFloat(getDistanceByCoordinates(subjectWellCoord, coord));\n result.push({ ...well, distance });\n } else {\n result.push(well);\n }\n });\n\n setWellsWithCoords(result);\n }, [wells, subjectWell]);\n\n return wellsWithCoords;\n}\n\nexport function useOffsetWells(radius, allWells, selectedWellIds) {\n const [offsetWells, setOffsetWells] = useState(null);\n\n useEffect(() => {\n if (!allWells) {\n // still loading...\n setOffsetWells(null);\n return;\n }\n\n const result = [];\n // NOTE: Add selected wells\n allWells.forEach(well => {\n if (selectedWellIds.includes(well.id) && well.is_usable) {\n result.push(well);\n }\n });\n\n setOffsetWells(result);\n }, [radius, allWells, selectedWellIds]);\n return offsetWells;\n}\n\nexport function useMetricsData(companyId, wells) {\n const fetchedData = useRef({});\n\n const [loading, setLoading] = useState(true);\n const [data, setData] = useState(null);\n\n useEffect(() => {\n async function handleFetchMetricsData(wellIdsToFetch) {\n const records = await fetchMetricsData(companyId, wellIdsToFetch);\n\n // Build index: asset_id -> { metricKey -> record }\n const recordsByWell = new Map();\n\n records.forEach(item => {\n const wellId = get(item, 'asset_id');\n const key = get(item, 'data.key');\n\n if (!recordsByWell.has(wellId)) {\n recordsByWell.set(wellId, new Map());\n }\n\n recordsByWell.get(wellId)?.set(key, item);\n });\n\n const wellsMetrics = {};\n wellIdsToFetch.forEach(wellId => {\n const wellMetrics = {};\n const wellRecordMap = recordsByWell.get(wellId);\n\n METRICS_KEYS.forEach(metricsKey => {\n const record = wellRecordMap?.get(metricsKey);\n const value = get(record, 'data.value');\n wellMetrics[metricsKey] = Number.isFinite(value) ? parseFloat(value).toFixed(2) : null;\n });\n\n wellsMetrics[wellId] = wellMetrics;\n });\n\n // NOTE: Store previous fetching result\n fetchedData.current = {\n ...fetchedData.current,\n ...wellsMetrics,\n };\n\n const result = [];\n wells.forEach(well => {\n result.push({\n ...well,\n ...fetchedData.current[well.id],\n });\n });\n\n setLoading(false);\n setData(result);\n }\n\n if (!wells) {\n // still loading...\n setData(null);\n return;\n }\n\n if (wells.length === 0) {\n setData([]);\n return;\n }\n\n // NOTE: Make api calls for only missing wells\n const missingWellIds = [];\n wells.forEach(well => {\n if (!fetchedData.current[well.id]) {\n missingWellIds.push(well.id);\n }\n });\n\n setLoading(true);\n handleFetchMetricsData(missingWellIds);\n }, [wells]);\n\n return [loading, data];\n}\n\nexport function useRadiusWells(radius, filteredWellsWithCoords, setSelectedWellIds) {\n const initLoadingRef = useRef(false);\n useEffect(() => {\n if (filteredWellsWithCoords) {\n if (initLoadingRef.current) {\n const radiusWellIds = [];\n filteredWellsWithCoords.forEach(well => {\n if (well.distance <= radius) {\n radiusWellIds.push(well.id);\n }\n });\n setSelectedWellIds(radiusWellIds);\n }\n initLoadingRef.current = true;\n }\n }, [radius, filteredWellsWithCoords]);\n}\n"],"names":["getAssetV2Coordinates","mapbox","getDistanceByCoordinates","canViewCompanies","isAdvancedSearch","companyId","useState","_useState2","_slicedToArray","_useState","companies","setCompanies","useEffect","_handleFetchCompanies","_asyncToGenerator","_regeneratorRuntime","mark","_callee","data","wrap","_context","prev","next","abrupt","fetchCompanies","sent","filter","item","id","stop","apply","this","arguments","handleFetchCompanies","_useState4","_useState3","metricKey","setMetricKey","_handleFetchCompanyMetric","_callee2","companyGoals","companyMetricKey","_context2","fetchCompanyGoals","goals","getCompanyGoalSetting","goalsConstants","handleFetchCompanyMetric","wells","fetchedData","useRef","_useState12","_useState11","loading","setLoading","_useState14","_useState13","setData","_handleFetchMetricsData","wellIdsToFetch","records","recordsByWell","wellsMetrics","result","_context4","fetchMetricsData","Map","forEach","_recordsByWell$get","wellId","get","key","has","set","wellMetrics","wellRecordMap","METRICS_KEYS","metricsKey","record","value","Number","isFinite","parseFloat","toFixed","current","well","push","_callee4","length","missingWellIds","_x","handleFetchMetricsData","radius","allWells","selectedWellIds","_useState10","_useState9","offsetWells","setOffsetWells","includes","is_usable","filteredWellsWithCoords","setSelectedWellIds","initLoadingRef","radiusWellIds","distance","addWellsUsabilityInfo","_useState6","_useState5","setWells","_handleFetchWells","_callee3","_context3","fetchWells","t0","handleFetchWells","subjectWell","_useState8","_useState7","wellsWithCoords","setWellsWithCoords","subjectWellCoord","coord","_objectSpread"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";require('./../../../../../../ext-esm/style-inject/dist/style-inject.es.js')(".Map_map__pdvR2{width:100%}.Map_mapMain__em8S8{background-color:#414141;border-radius:4px;flex:100;height:200px;width:100%}.Map_map__pdvR2 .leaflet-popup-content-wrapper{background-color:#414141;border-radius:4px;box-shadow:0 5px 5px rgba(0,0,0,.2),0 3px 14px rgba(0,0,0,.12),0 8px 10px rgba(0,0,0,.14)}.Map_map__pdvR2 .leaflet-popup-content{padding:10px 16px}.Map_map__pdvR2 .leaflet-popup-close-button,.Map_map__pdvR2 .leaflet-popup-tip{display:none}.Map_map__pdvR2 .leaflet-control-zoom{background:none;border:none;box-shadow:none}.Map_map__pdvR2 .leaflet-control-zoom a{background-image:none;background:#272727;color:#bdbdbd}.Map_map__pdvR2 .leaflet-control-zoom a,.Map_map__pdvR2 .leaflet-control-zoom a:hover{align-items:center;border-radius:4px;content:unset;display:flex;font-size:22px;height:32px;justify-content:center;margin-top:4px;opacity:1;text-align:center;text-indent:unset;width:32px}.Map_map__pdvR2 .leaflet-control-zoom a:hover{background:#303030;background-image:none;color:#fff}.Map_map__pdvR2 .leaflet-touch .leaflet-bar,.Map_map__pdvR2 .leaflet-touch .leaflet-control-layers{background-clip:padding-box;border:0 solid transparent}"),module.exports={map:"Map_map__pdvR2",mapMain:"Map_mapMain__em8S8"};
1
+ "use strict";require('./../../../../../../ext-esm/style-inject/dist/style-inject.es.js')(".Map_map__pdvR2{width:100%}.Map_mapMain__em8S8{background-color:#414141;border-radius:4px;flex:100;height:200px;width:100%}.Map_map__pdvR2 .mapboxgl-popup-content{background-color:#414141;border-radius:4px;box-shadow:0 5px 5px rgba(0,0,0,.2),0 3px 14px rgba(0,0,0,.12),0 8px 10px rgba(0,0,0,.14);padding:10px 16px}.Map_map__pdvR2 .mapboxgl-popup-tip{display:none}.Map_map__pdvR2 .mapboxgl-ctrl-group{background:none;border:none;box-shadow:none}.Map_map__pdvR2 .mapboxgl-ctrl-group button{background:#272727;border:none;border-radius:4px;height:32px;margin-top:4px;width:32px}.Map_map__pdvR2 .mapboxgl-ctrl-group button .mapboxgl-ctrl-icon{filter:invert(.8)}.Map_map__pdvR2 .mapboxgl-ctrl-group button:hover{background:#303030}.Map_map__pdvR2 .mapboxgl-ctrl-group button:hover .mapboxgl-ctrl-icon{filter:invert(1)}"),module.exports={map:"Map_map__pdvR2",mapMain:"Map_mapMain__em8S8"};
2
2
  //# sourceMappingURL=Map.css.js.map
@@ -1,2 +1,2 @@
1
- "use strict";var e=require("react"),r=require("react-dom"),t=require("prop-types"),u=require("mapbox.js"),n=require("lodash"),o=require("../../effects/index.js"),l=require("./Map.css.js"),a=require("../../../../../../utils/index.js"),c=require("react/jsx-runtime");function i(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=i(r),f=i(t),d=i(u),p=a.mapbox.isValidCoordinates,m=[29.749907,-95.358421];function v(r){var t=r.open,u=r.subjectWell,a=r.wells,i=r.offsetWells,f=r.radius,v=r.formationColors,g=r.popUpFormatter,b=r.coordsDataPath,h=r.onAddOffsetWell,B=r.onDeleteOffsetWell,q=e.useRef(null),x=e.useRef(),y=e.useRef(null),j=e.useRef(null),D=o.usePrevious(a),E=e.useMemo((function(){return u&&n.get(u,b)}),[u,b]);return e.useEffect((function(){t&&!x.current&&(x.current=d.default.mapbox.map(q.current,null,{attributionControl:!1,scrollWheelZoom:!1,zoomControl:!1}).setView(m,1),d.default.control.zoom({position:"bottomright"}).addTo(x.current),d.default.mapbox.styleLayer("mapbox://styles/mapbox/dark-v9").addTo(x.current))}),[t]),e.useEffect((function(){return function(){x.current&&(x.current.off("layerremove"),x.current.remove(),x.current=null,y.current=null,j.current=null)}}),[]),e.useEffect((function(){x.current&&t&&(y.current&&x.current.removeLayer(y.current),E?(y.current=d.default.circle(E,1609.34*f,{stroke:!1,fill:!0,fillOpacity:.2,fillColor:"#03BCD4",className:"circle_500"}),y.current.addTo(x.current)):y.current=null)}),[f,E,t]),e.useEffect((function(){if(x.current&&t){j.current&&j.current.removeFrom(x.current);var r=i.map((function(e){return e.id})),o=n.sortBy(a,(function(e){return r.includes(e.id)})),l=[];o.forEach((function(t){var o=n.get(t,b);if(o&&p(o)){var a=u&&u.id===t.id,i=r.includes(t.id),f=a?10:5,m=a||i?"#00FFFF":n.get(v,t.formation,"#BDBDBD"),q=a||i?1:.3,y=d.default.circleMarker(o,{radius:f,stroke:!1,fill:!0,fillOpacity:q,fillColor:m,className:"circle_500"});y.addEventListener("mouseover",(function(){if(g){var r=document.createElement("div"),u=e.createElement(g,{well:t,color:n.get(v,t.formation,"#BDBDBD")});s.default.render(c.jsx(c.Fragment,{children:u}),r),d.default.popup().setLatLng(o).setContent(r).openOn(x.current)}})),y.addEventListener("mouseout",(function(){x.current.closePopup()})),y.addEventListener("click",(function(){i&&!a?B(t.id):h(t.id)})),l.push(y)}})),l.length&&(j.current=d.default.featureGroup(l),j.current.addTo(x.current)),setTimeout((function(){y.current&&y.current.bringToBack(),x.current&&y.current&&a!==D&&x.current.fitBounds(y.current.getBounds(),{padding:[5,5]})}),500)}}),[u,a,i,t]),e.useEffect((function(){t&&setTimeout((function(){y.current&&y.current.bringToBack(),u?x.current&&y.current&&x.current.fitBounds(y.current.getBounds(),{padding:[5,5]}):x.current&&j.current&&x.current.fitBounds(j.current.getBounds())}),500)}),[f,u,t]),c.jsx("div",{className:l.map,children:c.jsx("div",{className:l.mapMain,ref:q})})}v.propTypes={open:f.default.bool.isRequired,subjectWell:f.default.shape({id:f.default.number,formation:f.default.string}),wells:f.default.arrayOf(f.default.shape({})).isRequired,offsetWells:f.default.arrayOf(f.default.shape({})),radius:f.default.number.isRequired,formationColors:f.default.shape({}).isRequired,popUpFormatter:f.default.func,coordsDataPath:f.default.string,onAddOffsetWell:f.default.func.isRequired,onDeleteOffsetWell:f.default.func.isRequired},v.defaultProps={subjectWell:null,popUpFormatter:null,coordsDataPath:"settings.top_hole.coordinates",offsetWells:null};var g=e.memo(v);module.exports=g;
1
+ "use strict";var e=require("@babel/runtime/helpers/slicedToArray"),r=require("react"),t=require("react-dom"),u=require("prop-types"),n=require("lodash"),o=require("./Map.css.js"),l=require("../../../../../../utils/index.js");require("../../../../../../config/mapboxGl/index.js"),require("mapbox-gl/dist/mapbox-gl.css");var a=require("react/jsx-runtime"),i=require("mapbox-gl");function c(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var s=c(e),d=c(t),f=c(u),p=c(i),m=l.mapbox.isValidCoordinates,g=[29.749907,-95.358421],v={type:"FeatureCollection",features:[]},y=function(e){var r=s.default(e,2),t=r[0];return[r[1],t]};function h(e){var t=e.open,u=e.subjectWell,l=e.wells,i=e.offsetWells,c=e.radius,f=e.formationColors,h=e.popUpFormatter,w=e.coordsDataPath,b=e.onAddOffsetWell,q=e.onDeleteOffsetWell,x=r.useRef(null),D=r.useRef(),B=r.useRef(null),j=r.useRef(null),C=r.useRef(null),F=r.useRef(),R=r.useState(!1),W=s.default(R,2),M=W[0],P=W[1],E=r.useMemo((function(){return u&&n.get(u,w)}),[u,w]);return r.useEffect((function(){t&&!D.current&&(D.current=new p.default.Map({container:x.current,style:"mapbox://styles/mapbox/dark-v9",center:y(g),zoom:1,attributionControl:!1,scrollZoom:!1}),D.current.addControl(new p.default.NavigationControl({showCompass:!1}),"bottom-right"),D.current.on("load",(function(){D.current.addSource("radius-circle",{type:"geojson",data:v}),D.current.addLayer({id:"radius-circle",type:"fill",source:"radius-circle",paint:{"fill-color":"#03BCD4","fill-opacity":.2}}),D.current.addSource("wells",{type:"geojson",data:v}),D.current.addLayer({id:"wells",type:"circle",source:"wells",layout:{"circle-sort-key":["get","sortKey"]},paint:{"circle-radius":["get","radius"],"circle-color":["get","color"],"circle-opacity":["get","opacity"]}}),P(!0)})))}),[t]),r.useEffect((function(){return function(){D.current&&(D.current.remove(),D.current=null,B.current=null,j.current=null)}}),[]),r.useEffect((function(){if(D.current&&M&&t){if(!E)return D.current.getSource("radius-circle").setData(v),void(B.current=null);var e=function(e,r){for(var t=s.default(e,2),u=t[0],n=t[1],o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:64,l=[],a=r/(111320*Math.cos(u*Math.PI/180)),i=r/110574,c=0;c<=o;c+=1){var d=c/o*(2*Math.PI);l.push([n+a*Math.cos(d),u+i*Math.sin(d)])}return l}(E,1609.34*c);D.current.getSource("radius-circle").setData({type:"Feature",geometry:{type:"Polygon",coordinates:[e]}}),B.current=e.reduce((function(e,r){return e.extend(r)}),new p.default.LngLatBounds)}}),[c,E,t,M]),r.useEffect((function(){if(D.current&&M&&t){var e=F.current;F.current=l;var o=i.map((function(e){return e.id})),c=n.sortBy(l,(function(e){return o.includes(e.id)})),s=[],g={},v=new p.default.LngLatBounds;c.forEach((function(e){var r=n.get(e,w);if(r&&m(r)){var t=u&&u.id===e.id,l=o.includes(e.id),a=t?10:5,i=t||l?"#00FFFF":n.get(f,e.formation,"#BDBDBD"),c=t||l?1:.3;g[e.id]=e,v.extend(y(r)),s.push({type:"Feature",geometry:{type:"Point",coordinates:y(r)},properties:{wellId:e.id,radius:a,color:i,opacity:c,sortKey:l?1:0}})}})),D.current.getSource("wells").setData({type:"FeatureCollection",features:s}),j.current=s.length?v:null;var x=D.current,R=null,W=function(e){x.getCanvas().style.cursor="pointer";var t=g[e.features[0].properties.wellId];if(t&&t.id!==R&&(R=t.id,h)){var u=document.createElement("div"),o=r.createElement(h,{well:t,color:n.get(f,t.formation,"#BDBDBD")});d.default.render(a.jsx(a.Fragment,{children:o}),u),C.current||(C.current=new p.default.Popup({closeButton:!1,maxWidth:"none"})),C.current.setLngLat(y(n.get(t,w))).setDOMContent(u).addTo(x)}},P=function(){var e;R=null,x.getCanvas().style.cursor="",null===(e=C.current)||void 0===e||e.remove()},E=function(e){var r=e.features[0].properties.wellId,t=u&&u.id===r;o.includes(r)&&!t?q(r):b(r)};return x.on("mousemove","wells",W),x.on("mouseleave","wells",P),x.on("click","wells",E),setTimeout((function(){D.current&&B.current&&l!==e&&D.current.fitBounds(B.current,{padding:5})}),500),function(){x.off("mousemove","wells",W),x.off("mouseleave","wells",P),x.off("click","wells",E)}}}),[u,l,i,t,M]),r.useEffect((function(){t&&setTimeout((function(){u?D.current&&B.current&&D.current.fitBounds(B.current,{padding:5}):D.current&&j.current&&D.current.fitBounds(j.current)}),500)}),[c,u,t,M]),a.jsx("div",{className:o.map,children:a.jsx("div",{className:o.mapMain,ref:x})})}h.propTypes={open:f.default.bool.isRequired,subjectWell:f.default.shape({id:f.default.number,formation:f.default.string}),wells:f.default.arrayOf(f.default.shape({})).isRequired,offsetWells:f.default.arrayOf(f.default.shape({})),radius:f.default.number.isRequired,formationColors:f.default.shape({}).isRequired,popUpFormatter:f.default.func,coordsDataPath:f.default.string,onAddOffsetWell:f.default.func.isRequired,onDeleteOffsetWell:f.default.func.isRequired},h.defaultProps={subjectWell:null,popUpFormatter:null,coordsDataPath:"settings.top_hole.coordinates",offsetWells:null};var w=r.memo(h);module.exports=w;
2
2
  //# sourceMappingURL=Map.js.map
@@ -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 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","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
+ {"version":3,"file":"Map.js","sources":["../../../../../../../../src/components/OffsetWellPickerV3/components/CustomSelectionView/components/Map/Map.js"],"sourcesContent":["import { createElement, memo, useRef, useEffect, useMemo, useState } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport { get, sortBy } from 'lodash';\n\nimport styles from './Map.css';\n\nimport { mapbox } from '~/utils';\nimport mapboxgl from '~/config/mapboxGl';\nimport 'mapbox-gl/dist/mapbox-gl.css';\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\nconst RADIUS_CIRCLE_ID = 'radius-circle';\nconst WELLS_ID = 'wells';\nconst EMPTY_FEATURE_COLLECTION = { type: 'FeatureCollection', features: [] };\n\nconst toLngLat = ([lat, lng]) => [lng, lat];\n\n// NOTE: mapbox-gl has no geographic-radius circle primitive, so approximate it with a polygon\nconst makeCirclePolygon = ([lat, lng], radiusMeters, points = 64) => {\n const ring = [];\n const distanceX = radiusMeters / (111320 * Math.cos((lat * Math.PI) / 180));\n const distanceY = radiusMeters / 110574;\n for (let i = 0; i <= points; i += 1) {\n const theta = (i / points) * (2 * Math.PI);\n ring.push([lng + distanceX * Math.cos(theta), lat + distanceY * Math.sin(theta)]);\n }\n return ring;\n};\n\n// eslint-disable-next-line no-unused-vars\nfunction WellsMap({\n 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 radiusCircleBoundsRef = useRef(null);\n const markersBoundsRef = useRef(null);\n const popupRef = useRef(null);\n const prevWellsRef = useRef();\n const [isMapReady, setIsMapReady] = useState(false);\n\n const 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 = new mapboxgl.Map({\n container: mapContainerRef.current,\n style: 'mapbox://styles/mapbox/dark-v9',\n center: toLngLat(DEFAULT_COORDS),\n zoom: 1,\n attributionControl: false,\n scrollZoom: false,\n });\n\n mapRef.current.addControl(\n new mapboxgl.NavigationControl({ showCompass: false }),\n 'bottom-right'\n );\n\n // NOTE: Sources/layers can only be added once the style has loaded.\n // The radius circle layer is added first so well markers render above it (was bringToBack)\n mapRef.current.on('load', () => {\n mapRef.current.addSource(RADIUS_CIRCLE_ID, {\n type: 'geojson',\n data: EMPTY_FEATURE_COLLECTION,\n });\n mapRef.current.addLayer({\n id: RADIUS_CIRCLE_ID,\n type: 'fill',\n source: RADIUS_CIRCLE_ID,\n paint: {\n 'fill-color': RADIUS_CIRCLE_COLOR,\n 'fill-opacity': 0.2,\n },\n });\n\n mapRef.current.addSource(WELLS_ID, { type: 'geojson', data: EMPTY_FEATURE_COLLECTION });\n mapRef.current.addLayer({\n id: WELLS_ID,\n type: 'circle',\n source: WELLS_ID,\n layout: {\n 'circle-sort-key': ['get', 'sortKey'],\n },\n paint: {\n 'circle-radius': ['get', 'radius'],\n 'circle-color': ['get', 'color'],\n 'circle-opacity': ['get', 'opacity'],\n },\n });\n\n setIsMapReady(true);\n });\n }, [open]);\n\n useEffect(\n () => () => {\n if (mapRef.current) {\n mapRef.current.remove();\n mapRef.current = null;\n radiusCircleBoundsRef.current = null;\n markersBoundsRef.current = null;\n }\n },\n []\n );\n\n // NOTE: Radius circle\n useEffect(() => {\n if (!mapRef.current || !isMapReady || !open) {\n return;\n }\n\n if (!subjectWellCoords) {\n mapRef.current.getSource(RADIUS_CIRCLE_ID).setData(EMPTY_FEATURE_COLLECTION);\n radiusCircleBoundsRef.current = null;\n return;\n }\n\n const ring = makeCirclePolygon(subjectWellCoords, radius * METERS_IN_MILE);\n mapRef.current.getSource(RADIUS_CIRCLE_ID).setData({\n type: 'Feature',\n geometry: { type: 'Polygon', coordinates: [ring] },\n });\n radiusCircleBoundsRef.current = ring.reduce(\n (bounds, coord) => bounds.extend(coord),\n new mapboxgl.LngLatBounds()\n );\n }, [radius, subjectWellCoords, open, isMapReady]);\n\n // NOTE: Well markers\n useEffect(() => {\n if (!mapRef.current || !isMapReady || !open) {\n return undefined;\n }\n\n const prevWells = prevWellsRef.current;\n prevWellsRef.current = wells;\n\n const offsetWellIds = offsetWells.map(well => well.id);\n const sortedWells = sortBy(wells, well => offsetWellIds.includes(well.id));\n\n const features = [];\n const wellsById = {};\n const bounds = new mapboxgl.LngLatBounds();\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 wellsById[well.id] = well;\n bounds.extend(toLngLat(coords));\n features.push({\n type: 'Feature',\n geometry: { type: 'Point', coordinates: toLngLat(coords) },\n // NOTE: sortKey keeps offset wells rendered on top (was sortedWells insertion order)\n properties: { wellId: well.id, radius: r, color, opacity, sortKey: isWellOffset ? 1 : 0 },\n });\n }\n });\n\n mapRef.current.getSource(WELLS_ID).setData({ type: 'FeatureCollection', features });\n markersBoundsRef.current = features.length ? bounds : null;\n\n const map = mapRef.current;\n let hoveredWellId = null;\n\n const handleMouseMove = e => {\n map.getCanvas().style.cursor = 'pointer';\n\n const well = wellsById[e.features[0].properties.wellId];\n if (!well || well.id === hoveredWellId) {\n return;\n }\n hoveredWellId = well.id;\n\n if (popUpFormatter) {\n // Container to put React generated content in.\n const popUpContainer = document.createElement('div');\n const popUpContent = createElement(popUpFormatter, {\n well,\n color: get(formationColors, well.formation, '#BDBDBD'),\n });\n // NOTE: Custom popup may have buttons\n ReactDOM.render(<>{popUpContent}</>, popUpContainer);\n\n if (!popupRef.current) {\n popupRef.current = new mapboxgl.Popup({ closeButton: false, maxWidth: 'none' });\n }\n popupRef.current\n .setLngLat(toLngLat(get(well, coordsDataPath)))\n .setDOMContent(popUpContainer)\n .addTo(map);\n }\n };\n\n const handleMouseLeave = () => {\n hoveredWellId = null;\n map.getCanvas().style.cursor = '';\n popupRef.current?.remove();\n };\n\n const handleClick = e => {\n const { wellId } = e.features[0].properties;\n const isWellSubject = subjectWell && subjectWell.id === wellId;\n const isWellOffset = offsetWellIds.includes(wellId);\n\n if (isWellOffset && !isWellSubject) {\n onDeleteOffsetWell(wellId);\n } else {\n onAddOffsetWell(wellId);\n }\n };\n\n map.on('mousemove', WELLS_ID, handleMouseMove);\n map.on('mouseleave', WELLS_ID, handleMouseLeave);\n map.on('click', WELLS_ID, handleClick);\n\n setTimeout(() => {\n if (mapRef.current && radiusCircleBoundsRef.current && wells !== prevWells) {\n mapRef.current.fitBounds(radiusCircleBoundsRef.current, { padding: 5 });\n }\n }, 500);\n\n return () => {\n map.off('mousemove', WELLS_ID, handleMouseMove);\n map.off('mouseleave', WELLS_ID, handleMouseLeave);\n map.off('click', WELLS_ID, handleClick);\n };\n }, [subjectWell, wells, offsetWells, open, isMapReady]);\n\n useEffect(() => {\n if (!open) return;\n\n setTimeout(() => {\n if (subjectWell) {\n if (mapRef.current && radiusCircleBoundsRef.current) {\n mapRef.current.fitBounds(radiusCircleBoundsRef.current, {\n padding: 5,\n });\n }\n } else if (mapRef.current && markersBoundsRef.current) {\n mapRef.current.fitBounds(markersBoundsRef.current);\n }\n }, 500);\n }, [radius, subjectWell, open, isMapReady]);\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","EMPTY_FEATURE_COLLECTION","type","features","toLngLat","_ref","_ref2","_slicedToArray","lat","WellsMap","_ref5","open","subjectWell","wells","offsetWells","radius","formationColors","popUpFormatter","coordsDataPath","onAddOffsetWell","onDeleteOffsetWell","mapContainerRef","useRef","mapRef","radiusCircleBoundsRef","markersBoundsRef","popupRef","prevWellsRef","useState","_useState2","_useState","isMapReady","setIsMapReady","subjectWellCoords","useMemo","get","useEffect","current","mapboxgl","Map","container","style","center","zoom","attributionControl","scrollZoom","addControl","NavigationControl","showCompass","on","addSource","data","addLayer","id","source","paint","layout","remove","getSource","setData","ring","_ref3","radiusMeters","_ref4","lng","points","distanceX","Math","cos","PI","distanceY","i","theta","push","sin","makeCirclePolygon","geometry","coordinates","reduce","bounds","coord","extend","LngLatBounds","prevWells","offsetWellIds","map","well","sortedWells","sortBy","includes","wellsById","forEach","coords","isWellSubject","isWellOffset","r","color","formation","opacity","properties","wellId","sortKey","length","hoveredWellId","handleMouseMove","e","getCanvas","cursor","popUpContainer","document","createElement","popUpContent","ReactDOM","render","_jsx","jsx","_Fragment","children","Popup","closeButton","maxWidth","setLngLat","setDOMContent","addTo","handleMouseLeave","_popupRef$current","handleClick","setTimeout","fitBounds","padding","off","className","styles","mapMain","ref","propTypes","PropTypes","bool","isRequired","shape","number","string","arrayOf","func","defaultProps","memo"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/defineProperty"),t=require("@babel/runtime/helpers/asyncToGenerator"),r=require("@babel/runtime/helpers/slicedToArray"),n=require("@babel/runtime/regenerator"),u=require("react"),s=require("lodash"),a=require("../../../utils/apiCalls.js"),i=require("../constants.js"),c=require("../../../../../utils/index.js"),o=require("../../../../../constants/goals.js");require("../../../../../constants/segment.js"),require("../../../../../constants/alerts.js"),require("../../../../../constants/apps.js"),require("../../../../../constants/drillstring.js"),require("../../../../../constants/completion.js"),require("../../../../../constants/appPackages.js"),require("../../../../../constants/notifications.js"),require("../../../../../constants/feed.js"),require("../../../../../constants/bha.js"),require("../../../../../constants/corvaCompanyId.js"),require("../../../../GradientManager/configuration/constants.js");var f=require("./biDirectionalFiltering.js"),l=require("../../../../../utils/goals.js");function p(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=p(e),h=p(t),v=p(r),b=p(n);function j(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function y(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?j(Object(r),!0).forEach((function(t){d.default(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):j(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var g=c.mapbox.getAssetV2Coordinates,q=c.mapbox.getDistanceByCoordinates;exports.useBidirectionalFiltering=f,exports.useCompanyMetricKey=function(e){var t=u.useState(null),r=v.default(t,2),n=r[0],s=r[1];return u.useEffect((function(){function t(){return(t=h.default(b.default.mark((function t(){var r,n;return b.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,a.fetchCompanyGoals(e);case 2:r=t.sent,n=l.getCompanyGoalSetting(r,o.BENCHMARK_METRIC_GOAL),s(n);case 5:case"end":return t.stop()}}),t)})))).apply(this,arguments)}s(null),function(){t.apply(this,arguments)}()}),[e]),n},exports.useFilteredWells=function(e,t,r){var n=u.useState(null),s=v.default(n,2),a=s[0],c=s[1],o=/\sST0/g;return u.useEffect((function(){if(r){var n=Object.values(i.FILTERS).reduce((function(t,r){return t.filter((function(t){return n=t[r],!(u=e[r])||0===u.length||u.includes(n);var n,u}))}),r).filter((function(e){return t&&!e.name.match(o)||!t}));c(n)}else c(null)}),[r,e,t]),a},exports.useMetricsData=function(e,t){var r=u.useRef({}),n=u.useState(!0),c=v.default(n,2),o=c[0],f=c[1],l=u.useState(null),p=v.default(l,2),d=p[0],j=p[1];return u.useEffect((function(){function n(){return(n=h.default(b.default.mark((function n(u){var c,o,l;return b.default.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,a.fetchMetricsData(e,u);case 2:c=n.sent,o={},u.forEach((function(e){var t={},r=c.filter((function(t){return s.get(t,"asset_id")===e}));i.METRICS_KEYS.forEach((function(e){var n=r.find((function(t){return s.get(t,"data.key")===e})),u=s.get(n,"data.value");t[e]=Number.isFinite(u)?parseFloat(u).toFixed(2):null})),o[e]=t})),r.current=y(y({},r.current),o),l=[],t.forEach((function(e){l.push(y(y({},e),r.current[e.id]))})),f(!1),j(l);case 10:case"end":return n.stop()}}),n)})))).apply(this,arguments)}if(t)if(0!==t.length){var u=[];t.forEach((function(e){r.current[e.id]||u.push(e.id)})),f(!0),function(e){n.apply(this,arguments)}(u)}else j([]);else j(null)}),[t]),[o,d]},exports.useOffsetWells=function(e,t,r){var n=u.useState(null),s=v.default(n,2),a=s[0],i=s[1];return u.useEffect((function(){if(t){var e=[];t.forEach((function(t){r.includes(t.id)&&t.is_usable&&e.push(t)})),i(e)}else i(null)}),[e,t,r]),a},exports.usePrevious=function(e){var t=u.useRef();return u.useEffect((function(){t.current=e})),t.current},exports.useRadiusWells=function(e,t,r){var n=u.useRef(!1);u.useEffect((function(){if(t){if(n.current){var u=[];t.forEach((function(t){t.distance<=e&&u.push(t.id)})),r(u)}n.current=!0}}),[e,t])},exports.useWells=function(e,t){var r=u.useState(null),n=v.default(r,2),s=n[0],i=n[1];return u.useEffect((function(){function r(){return(r=h.default(b.default.mark((function r(){var n;return b.default.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(!e){r.next=6;break}return r.next=3,a.fetchWells(e,t);case 3:r.t0=r.sent,r.next=7;break;case 6:r.t0=null;case 7:n=r.t0,i(n);case 9:case"end":return r.stop()}}),r)})))).apply(this,arguments)}i(null),function(){r.apply(this,arguments)}()}),[e]),s},exports.useWellsWithCoords=function(e,t){var r=u.useState(null),n=v.default(r,2),s=n[0],a=n[1];return u.useEffect((function(){if(e){var r=t&&g(t,"topHole");if(r){var n=[];e.forEach((function(e){var t=g(e,"topHole");if(t){var u=parseFloat(q(r,t));n.push(y(y({},e),{},{distance:u}))}else n.push(e)})),a(n)}else a(e)}else a(e)}),[e,t]),s};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/defineProperty"),t=require("@babel/runtime/helpers/asyncToGenerator"),r=require("@babel/runtime/helpers/slicedToArray"),n=require("@babel/runtime/regenerator"),u=require("react"),s=require("lodash"),a=require("../../../utils/apiCalls.js"),i=require("../constants.js"),c=require("../../../../../utils/index.js"),o=require("../../../../../constants/goals.js");require("../../../../../constants/segment.js"),require("../../../../../constants/alerts.js"),require("../../../../../constants/apps.js"),require("../../../../../constants/drillstring.js"),require("../../../../../constants/completion.js"),require("../../../../../constants/appPackages.js"),require("../../../../../constants/notifications.js"),require("../../../../../constants/feed.js"),require("../../../../../constants/bha.js"),require("../../../../../constants/corvaCompanyId.js"),require("../../../../GradientManager/configuration/constants.js");var f=require("./biDirectionalFiltering.js"),l=require("../../../../../utils/goals.js");function p(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=p(e),h=p(t),v=p(r),b=p(n);function j(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function y(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?j(Object(r),!0).forEach((function(t){d.default(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):j(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}var g=c.mapbox.getAssetV2Coordinates,q=c.mapbox.getDistanceByCoordinates;exports.useBidirectionalFiltering=f,exports.useCompanyMetricKey=function(e){var t=u.useState(null),r=v.default(t,2),n=r[0],s=r[1];return u.useEffect((function(){function t(){return(t=h.default(b.default.mark((function t(){var r,n;return b.default.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,a.fetchCompanyGoals(e);case 2:r=t.sent,n=l.getCompanyGoalSetting(r,o.BENCHMARK_METRIC_GOAL),s(n);case 5:case"end":return t.stop()}}),t)})))).apply(this,arguments)}s(null),function(){t.apply(this,arguments)}()}),[e]),n},exports.useFilteredWells=function(e,t,r){var n=u.useState(null),s=v.default(n,2),a=s[0],c=s[1],o=/\sST0/g;return u.useEffect((function(){if(r){var n=Object.values(i.FILTERS).reduce((function(t,r){return t.filter((function(t){return n=t[r],!(u=e[r])||0===u.length||u.includes(n);var n,u}))}),r).filter((function(e){return t&&!e.name.match(o)||!t}));c(n)}else c(null)}),[r,e,t]),a},exports.useMetricsData=function(e,t){var r=u.useRef({}),n=u.useState(!0),c=v.default(n,2),o=c[0],f=c[1],l=u.useState(null),p=v.default(l,2),d=p[0],j=p[1];return u.useEffect((function(){function n(){return(n=h.default(b.default.mark((function n(u){var c,o,l;return b.default.wrap((function(n){for(;;)switch(n.prev=n.next){case 0:return n.next=2,a.fetchMetricsData(e,u);case 2:c=n.sent,o={},u.forEach((function(e){var t={},r=c.filter((function(t){return s.get(t,"asset_id")===e}));i.METRICS_KEYS.forEach((function(e){var n=r.find((function(t){return s.get(t,"data.key")===e})),u=s.get(n,"data.value");t[e]=Number.isFinite(u)?parseFloat(u).toFixed(2):null})),o[e]=t})),r.current=y(y({},r.current),o),l=[],t.forEach((function(e){l.push(y(y({},e),r.current[e.id]))})),f(!1),j(l);case 10:case"end":return n.stop()}}),n)})))).apply(this,arguments)}if(t)if(0!==t.length){var u=[];t.forEach((function(e){r.current[e.id]||u.push(e.id)})),f(!0),function(e){n.apply(this,arguments)}(u)}else j([]);else j(null)}),[t]),[o,d]},exports.useOffsetWells=function(e,t,r){var n=u.useState(null),s=v.default(n,2),a=s[0],i=s[1];return u.useEffect((function(){if(t){var e=[];t.forEach((function(t){r.includes(t.id)&&t.is_usable&&e.push(t)})),i(e)}else i(null)}),[e,t,r]),a},exports.useRadiusWells=function(e,t,r){var n=u.useRef(!1);u.useEffect((function(){if(t){if(n.current){var u=[];t.forEach((function(t){t.distance<=e&&u.push(t.id)})),r(u)}n.current=!0}}),[e,t])},exports.useWells=function(e,t){var r=u.useState(null),n=v.default(r,2),s=n[0],i=n[1];return u.useEffect((function(){function r(){return(r=h.default(b.default.mark((function r(){var n;return b.default.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(!e){r.next=6;break}return r.next=3,a.fetchWells(e,t);case 3:r.t0=r.sent,r.next=7;break;case 6:r.t0=null;case 7:n=r.t0,i(n);case 9:case"end":return r.stop()}}),r)})))).apply(this,arguments)}i(null),function(){r.apply(this,arguments)}()}),[e]),s},exports.useWellsWithCoords=function(e,t){var r=u.useState(null),n=v.default(r,2),s=n[0],a=n[1];return u.useEffect((function(){if(e){var r=t&&g(t,"topHole");if(r){var n=[];e.forEach((function(e){var t=g(e,"topHole");if(t){var u=parseFloat(q(r,t));n.push(y(y({},e),{},{distance:u}))}else n.push(e)})),a(n)}else a(e)}else a(e)}),[e,t]),s};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../../../src/components/OffsetWellPickerV3/components/CustomSelectionView/effects/index.js"],"sourcesContent":["import { useEffect, useState, useRef } from 'react';\nimport { get } from 'lodash';\n\nimport { fetchWells, fetchMetricsData, fetchCompanyGoals } from '../../../utils/apiCalls';\nimport { FILTERS, METRICS_KEYS } from '../constants';\n\nimport { mapbox, goals } from '~/utils';\nimport { goals as goalsConstants } from '~/constants';\n\nexport { default as useBidirectionalFiltering } from './biDirectionalFiltering';\n\nconst { getAssetV2Coordinates, getDistanceByCoordinates } = mapbox;\n\nexport function usePrevious(value) {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n}\n\nexport function useCompanyMetricKey(companyId) {\n const [metricKey, setMetricKey] = useState(null);\n\n useEffect(() => {\n async function handleFetchCompanyMetric() {\n const companyGoals = await fetchCompanyGoals(companyId);\n const companyMetricKey = goals.getCompanyGoalSetting(\n companyGoals,\n goalsConstants.BENCHMARK_METRIC_GOAL\n );\n\n setMetricKey(companyMetricKey);\n }\n\n setMetricKey(null);\n handleFetchCompanyMetric();\n }, [companyId]);\n\n return metricKey;\n}\n\nexport function useWells(companyId, addWellsUsabilityInfo) {\n const [wells, setWells] = useState(null);\n\n useEffect(() => {\n async function handleFetchWells() {\n const data = companyId ? await fetchWells(companyId, addWellsUsabilityInfo) : null;\n setWells(data);\n }\n\n setWells(null);\n handleFetchWells();\n }, [companyId]);\n\n return wells;\n}\n\nexport function useFilteredWells(dynamicFilters, excludeSideTrack, allWells) {\n const [filteredWells, setFilteredWells] = useState(null);\n const sideTrackStrRegex = /\\sST0/g;\n\n useEffect(() => {\n if (!allWells) {\n setFilteredWells(null);\n return;\n }\n\n const filterWell = (field, filter) => {\n return !filter || filter.length === 0 || filter.includes(field);\n };\n\n const filteredWells = Object.values(FILTERS).reduce((result, filterKey) => {\n return result.filter(well => filterWell(well[filterKey], dynamicFilters[filterKey]));\n }, allWells);\n\n const sideTracks = filteredWells.filter(\n well => (excludeSideTrack && !well.name.match(sideTrackStrRegex)) || !excludeSideTrack\n );\n\n setFilteredWells(sideTracks);\n }, [allWells, dynamicFilters, excludeSideTrack]);\n\n return filteredWells;\n}\n\nexport function useWellsWithCoords(wells, subjectWell) {\n const [wellsWithCoords, setWellsWithCoords] = useState(null);\n\n useEffect(() => {\n if (!wells) {\n setWellsWithCoords(wells);\n return;\n }\n\n const subjectWellCoord = subjectWell && getAssetV2Coordinates(subjectWell, 'topHole');\n\n if (!subjectWellCoord) {\n setWellsWithCoords(wells);\n return;\n }\n const result = [];\n wells.forEach(well => {\n const coord = getAssetV2Coordinates(well, 'topHole');\n if (coord) {\n const distance = parseFloat(getDistanceByCoordinates(subjectWellCoord, coord));\n result.push({ ...well, distance });\n } else {\n result.push(well);\n }\n });\n\n setWellsWithCoords(result);\n }, [wells, subjectWell]);\n\n return wellsWithCoords;\n}\n\nexport function useOffsetWells(radius, allWells, selectedWellIds) {\n const [offsetWells, setOffsetWells] = useState(null);\n\n useEffect(() => {\n if (!allWells) {\n // still loading...\n setOffsetWells(null);\n return;\n }\n\n const result = [];\n // NOTE: Add selected wells\n allWells.forEach(well => {\n if (selectedWellIds.includes(well.id) && well.is_usable) {\n result.push(well);\n }\n });\n\n setOffsetWells(result);\n }, [radius, allWells, selectedWellIds]);\n return offsetWells;\n}\n\nexport function useMetricsData(companyId, wells) {\n const fetchedData = useRef({});\n\n const [loading, setLoading] = useState(true);\n const [data, setData] = useState(null);\n\n useEffect(() => {\n async function handleFetchMetricsData(wellIdsToFetch) {\n const records = await fetchMetricsData(companyId, wellIdsToFetch);\n\n const wellsMetrics = {};\n wellIdsToFetch.forEach(wellId => {\n const wellMetrics = {};\n\n const wellRecords = records.filter(item => get(item, 'asset_id') === wellId);\n METRICS_KEYS.forEach(metricsKey => {\n const record = wellRecords.find(item => get(item, 'data.key') === metricsKey);\n const value = get(record, 'data.value');\n wellMetrics[metricsKey] = Number.isFinite(value) ? parseFloat(value).toFixed(2) : null;\n });\n\n wellsMetrics[wellId] = wellMetrics;\n });\n\n // NOTE: Store previous fetching result\n fetchedData.current = {\n ...fetchedData.current,\n ...wellsMetrics,\n };\n\n const result = [];\n wells.forEach(well => {\n result.push({\n ...well,\n ...fetchedData.current[well.id],\n });\n });\n\n setLoading(false);\n setData(result);\n }\n\n if (!wells) {\n // still loading...\n setData(null);\n return;\n }\n\n if (wells.length === 0) {\n setData([]);\n return;\n }\n\n // NOTE: Make api calls for only missing wells\n const missingWellIds = [];\n wells.forEach(well => {\n if (!fetchedData.current[well.id]) {\n missingWellIds.push(well.id);\n }\n });\n\n setLoading(true);\n handleFetchMetricsData(missingWellIds);\n }, [wells]);\n\n return [loading, data];\n}\n\nexport function useRadiusWells(radius, filteredWellsWithCoords, setSelectedWellIds) {\n const initLoadingRef = useRef(false);\n useEffect(() => {\n if (filteredWellsWithCoords) {\n if (initLoadingRef.current) {\n const radiusWellIds = [];\n filteredWellsWithCoords.forEach(well => {\n if (well.distance <= radius) {\n radiusWellIds.push(well.id);\n }\n });\n setSelectedWellIds(radiusWellIds);\n }\n initLoadingRef.current = true;\n }\n }, [radius, filteredWellsWithCoords]);\n}\n"],"names":["getAssetV2Coordinates","mapbox","getDistanceByCoordinates","companyId","useState","_useState2","_slicedToArray","_useState","metricKey","setMetricKey","useEffect","_handleFetchCompanyMetric","_asyncToGenerator","_regeneratorRuntime","mark","_callee","companyGoals","companyMetricKey","wrap","_context","prev","next","fetchCompanyGoals","sent","goals","getCompanyGoalSetting","goalsConstants","stop","apply","this","arguments","handleFetchCompanyMetric","dynamicFilters","excludeSideTrack","allWells","_useState6","_useState5","filteredWells","setFilteredWells","sideTrackStrRegex","sideTracks","Object","values","FILTERS","reduce","result","filterKey","filter","well","field","length","includes","name","match","wells","fetchedData","useRef","_useState12","_useState11","loading","setLoading","_useState14","_useState13","data","setData","_handleFetchMetricsData","wellIdsToFetch","records","wellsMetrics","_context3","fetchMetricsData","forEach","wellId","wellMetrics","wellRecords","item","get","METRICS_KEYS","metricsKey","record","find","value","Number","isFinite","parseFloat","toFixed","current","push","id","_callee3","missingWellIds","_x","handleFetchMetricsData","radius","selectedWellIds","_useState10","_useState9","offsetWells","setOffsetWells","is_usable","ref","filteredWellsWithCoords","setSelectedWellIds","initLoadingRef","radiusWellIds","distance","addWellsUsabilityInfo","_useState4","_useState3","setWells","_handleFetchWells","_callee2","_context2","fetchWells","t0","handleFetchWells","subjectWell","_useState8","_useState7","wellsWithCoords","setWellsWithCoords","subjectWellCoord","coord","_objectSpread"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../../../src/components/OffsetWellPickerV3/components/CustomSelectionView/effects/index.js"],"sourcesContent":["import { useEffect, useState, useRef } from 'react';\nimport { get } from 'lodash';\n\nimport { fetchWells, fetchMetricsData, fetchCompanyGoals } from '../../../utils/apiCalls';\nimport { FILTERS, METRICS_KEYS } from '../constants';\n\nimport { mapbox, goals } from '~/utils';\nimport { goals as goalsConstants } from '~/constants';\n\nexport { default as useBidirectionalFiltering } from './biDirectionalFiltering';\n\nconst { getAssetV2Coordinates, getDistanceByCoordinates } = mapbox;\n\nexport function usePrevious(value) {\n const ref = useRef();\n useEffect(() => {\n ref.current = value;\n });\n return ref.current;\n}\n\nexport function useCompanyMetricKey(companyId) {\n const [metricKey, setMetricKey] = useState(null);\n\n useEffect(() => {\n async function handleFetchCompanyMetric() {\n const companyGoals = await fetchCompanyGoals(companyId);\n const companyMetricKey = goals.getCompanyGoalSetting(\n companyGoals,\n goalsConstants.BENCHMARK_METRIC_GOAL\n );\n\n setMetricKey(companyMetricKey);\n }\n\n setMetricKey(null);\n handleFetchCompanyMetric();\n }, [companyId]);\n\n return metricKey;\n}\n\nexport function useWells(companyId, addWellsUsabilityInfo) {\n const [wells, setWells] = useState(null);\n\n useEffect(() => {\n async function handleFetchWells() {\n const data = companyId ? await fetchWells(companyId, addWellsUsabilityInfo) : null;\n setWells(data);\n }\n\n setWells(null);\n handleFetchWells();\n }, [companyId]);\n\n return wells;\n}\n\nexport function useFilteredWells(dynamicFilters, excludeSideTrack, allWells) {\n const [filteredWells, setFilteredWells] = useState(null);\n const sideTrackStrRegex = /\\sST0/g;\n\n useEffect(() => {\n if (!allWells) {\n setFilteredWells(null);\n return;\n }\n\n const filterWell = (field, filter) => {\n return !filter || filter.length === 0 || filter.includes(field);\n };\n\n const filteredWells = Object.values(FILTERS).reduce((result, filterKey) => {\n return result.filter(well => filterWell(well[filterKey], dynamicFilters[filterKey]));\n }, allWells);\n\n const sideTracks = filteredWells.filter(\n well => (excludeSideTrack && !well.name.match(sideTrackStrRegex)) || !excludeSideTrack\n );\n\n setFilteredWells(sideTracks);\n }, [allWells, dynamicFilters, excludeSideTrack]);\n\n return filteredWells;\n}\n\nexport function useWellsWithCoords(wells, subjectWell) {\n const [wellsWithCoords, setWellsWithCoords] = useState(null);\n\n useEffect(() => {\n if (!wells) {\n setWellsWithCoords(wells);\n return;\n }\n\n const subjectWellCoord = subjectWell && getAssetV2Coordinates(subjectWell, 'topHole');\n\n if (!subjectWellCoord) {\n setWellsWithCoords(wells);\n return;\n }\n const result = [];\n wells.forEach(well => {\n const coord = getAssetV2Coordinates(well, 'topHole');\n if (coord) {\n const distance = parseFloat(getDistanceByCoordinates(subjectWellCoord, coord));\n result.push({ ...well, distance });\n } else {\n result.push(well);\n }\n });\n\n setWellsWithCoords(result);\n }, [wells, subjectWell]);\n\n return wellsWithCoords;\n}\n\nexport function useOffsetWells(radius, allWells, selectedWellIds) {\n const [offsetWells, setOffsetWells] = useState(null);\n\n useEffect(() => {\n if (!allWells) {\n // still loading...\n setOffsetWells(null);\n return;\n }\n\n const result = [];\n // NOTE: Add selected wells\n allWells.forEach(well => {\n if (selectedWellIds.includes(well.id) && well.is_usable) {\n result.push(well);\n }\n });\n\n setOffsetWells(result);\n }, [radius, allWells, selectedWellIds]);\n return offsetWells;\n}\n\nexport function useMetricsData(companyId, wells) {\n const fetchedData = useRef({});\n\n const [loading, setLoading] = useState(true);\n const [data, setData] = useState(null);\n\n useEffect(() => {\n async function handleFetchMetricsData(wellIdsToFetch) {\n const records = await fetchMetricsData(companyId, wellIdsToFetch);\n\n const wellsMetrics = {};\n wellIdsToFetch.forEach(wellId => {\n const wellMetrics = {};\n\n const wellRecords = records.filter(item => get(item, 'asset_id') === wellId);\n METRICS_KEYS.forEach(metricsKey => {\n const record = wellRecords.find(item => get(item, 'data.key') === metricsKey);\n const value = get(record, 'data.value');\n wellMetrics[metricsKey] = Number.isFinite(value) ? parseFloat(value).toFixed(2) : null;\n });\n\n wellsMetrics[wellId] = wellMetrics;\n });\n\n // NOTE: Store previous fetching result\n fetchedData.current = {\n ...fetchedData.current,\n ...wellsMetrics,\n };\n\n const result = [];\n wells.forEach(well => {\n result.push({\n ...well,\n ...fetchedData.current[well.id],\n });\n });\n\n setLoading(false);\n setData(result);\n }\n\n if (!wells) {\n // still loading...\n setData(null);\n return;\n }\n\n if (wells.length === 0) {\n setData([]);\n return;\n }\n\n // NOTE: Make api calls for only missing wells\n const missingWellIds = [];\n wells.forEach(well => {\n if (!fetchedData.current[well.id]) {\n missingWellIds.push(well.id);\n }\n });\n\n setLoading(true);\n handleFetchMetricsData(missingWellIds);\n }, [wells]);\n\n return [loading, data];\n}\n\nexport function useRadiusWells(radius, filteredWellsWithCoords, setSelectedWellIds) {\n const initLoadingRef = useRef(false);\n useEffect(() => {\n if (filteredWellsWithCoords) {\n if (initLoadingRef.current) {\n const radiusWellIds = [];\n filteredWellsWithCoords.forEach(well => {\n if (well.distance <= radius) {\n radiusWellIds.push(well.id);\n }\n });\n setSelectedWellIds(radiusWellIds);\n }\n initLoadingRef.current = true;\n }\n }, [radius, filteredWellsWithCoords]);\n}\n"],"names":["getAssetV2Coordinates","mapbox","getDistanceByCoordinates","companyId","useState","_useState2","_slicedToArray","_useState","metricKey","setMetricKey","useEffect","_handleFetchCompanyMetric","_asyncToGenerator","_regeneratorRuntime","mark","_callee","companyGoals","companyMetricKey","wrap","_context","prev","next","fetchCompanyGoals","sent","goals","getCompanyGoalSetting","goalsConstants","stop","apply","this","arguments","handleFetchCompanyMetric","dynamicFilters","excludeSideTrack","allWells","_useState6","_useState5","filteredWells","setFilteredWells","sideTrackStrRegex","sideTracks","Object","values","FILTERS","reduce","result","filterKey","filter","well","field","length","includes","name","match","wells","fetchedData","useRef","_useState12","_useState11","loading","setLoading","_useState14","_useState13","data","setData","_handleFetchMetricsData","wellIdsToFetch","records","wellsMetrics","_context3","fetchMetricsData","forEach","wellId","wellMetrics","wellRecords","item","get","METRICS_KEYS","metricsKey","record","find","value","Number","isFinite","parseFloat","toFixed","current","push","id","_callee3","missingWellIds","_x","handleFetchMetricsData","radius","selectedWellIds","_useState10","_useState9","offsetWells","setOffsetWells","is_usable","filteredWellsWithCoords","setSelectedWellIds","initLoadingRef","radiusWellIds","distance","addWellsUsabilityInfo","_useState4","_useState3","setWells","_handleFetchWells","_callee2","_context2","fetchWells","t0","handleFetchWells","subjectWell","_useState8","_useState7","wellsWithCoords","setWellsWithCoords","subjectWellCoord","coord","_objectSpread"],"mappings":"4vDAWA,IAAQA,EAAoDC,EAAMA,OAA1DD,sBAAuBE,EAA6BD,EAAMA,OAAnCC,yFAUxB,SAA6BC,GAClC,IAAkCC,EAAAA,EAAQA,SAAC,MAAKC,EAAAC,EAAAA,QAAAC,EAAA,GAAzCC,EAASH,EAAA,GAAEI,EAAYJ,EAAA,GAiB9B,OAfAK,EAAAA,WAAU,WAC+B,SAAAC,IAQtC,OARsCA,EAAvCC,EAAAA,QAAAC,EAAAA,QAAAC,MAAA,SAAAC,IAAA,IAAAC,EAAAC,EAAA,OAAAJ,UAAAK,MAAA,SAAAC,GAAA,OAAA,OAAAA,EAAAC,KAAAD,EAAAE,MAAA,KAAA,EAAA,OAAAF,EAAAE,KAAA,EAC6BC,EAAAA,kBAAkBnB,GAAU,KAAA,EAAjDa,EAAYG,EAAAI,KACZN,EAAmBO,EAA2BC,sBAClDT,EACAU,EAAAA,uBAGFjB,EAAaQ,GAAkB,KAAA,EAAA,IAAA,MAAA,OAAAE,EAAAQ,OAAA,GAAAZ,EAChC,MAAAa,MAAAC,KAAAC,UAAA,CAEDrB,EAAa,MAXC,WACyBE,EAAAiB,MAAAC,KAAAC,UAAA,CAWvCC,EACF,GAAG,CAAC5B,IAEGK,CACT,2BAkBO,SAA0BwB,EAAgBC,EAAkBC,GACjE,IAA0C9B,EAAAA,EAAQA,SAAC,MAAK+B,EAAA7B,EAAAA,QAAA8B,EAAA,GAAjDC,EAAaF,EAAA,GAAEG,EAAgBH,EAAA,GAChCI,EAAoB,SAuB1B,OArBA7B,EAAAA,WAAU,WACR,GAAKwB,EAAL,CAKA,IAQMM,EAJgBC,OAAOC,OAAOC,EAAAA,SAASC,QAAO,SAACC,EAAQC,GAC3D,OAAOD,EAAOE,QAAO,SAAAC,GAAI,OALPC,EAKsBD,EAAKF,KALpBC,EAKgCf,EAAec,KAJpC,IAAlBC,EAAOG,QAAgBH,EAAOI,SAASF,GADxC,IAACA,EAAOF,IAM1B,GAAEb,GAE8Ba,QAC/B,SAAAC,GAAI,OAAKf,IAAqBe,EAAKI,KAAKC,MAAMd,KAAwBN,KAGxEK,EAAiBE,EAdjB,MAFEF,EAAiB,KAiBpB,GAAE,CAACJ,EAAUF,EAAgBC,IAEvBI,CACT,yBAyDO,SAAwBlC,EAAWmD,GACxC,IAAMC,EAAcC,SAAO,CAAA,GAEGpD,EAAAA,EAAQA,UAAC,GAAKqD,EAAAnD,EAAAA,QAAAoD,EAAA,GAArCC,EAAOF,EAAA,GAAEG,EAAUH,EAAA,GACFrD,EAAAA,EAAQA,SAAC,MAAKyD,EAAAvD,EAAAA,QAAAwD,EAAA,GAA/BC,EAAIF,EAAA,GAAEG,EAAOH,EAAA,GA6DpB,OA3DAnD,EAAAA,WAAU,WAC6B,SAAAuD,IAiCpC,OAjCoCA,EAAArD,EAAA,QAAAC,EAAA,QAAAC,MAArC,WAAsCoD,GAAc,IAAAC,EAAAC,EAAAvB,EAAA,OAAAhC,UAAAK,MAAA,SAAAmD,GAAA,OAAA,OAAAA,EAAAjD,KAAAiD,EAAAhD,MAAA,KAAA,EAAA,OAAAgD,EAAAhD,KAAA,EAC5BiD,EAAgBA,iBAACnE,EAAW+D,GAAe,KAAA,EAA3DC,EAAOE,EAAA9C,KAEP6C,EAAe,CAAA,EACrBF,EAAeK,SAAQ,SAAAC,GACrB,IAAMC,EAAc,CAAA,EAEdC,EAAcP,EAAQpB,QAAO,SAAA4B,GAAI,OAAIC,MAAID,EAAM,cAAgBH,KACrEK,eAAaN,SAAQ,SAAAO,GACnB,IAAMC,EAASL,EAAYM,MAAK,SAAAL,GAAI,OAAIC,MAAID,EAAM,cAAgBG,KAC5DG,EAAQL,EAAAA,IAAIG,EAAQ,cAC1BN,EAAYK,GAAcI,OAAOC,SAASF,GAASG,WAAWH,GAAOI,QAAQ,GAAK,IACpF,IAEAjB,EAAaI,GAAUC,CACzB,IAGAlB,EAAY+B,QACP/B,EAAAA,EAAAA,CAAAA,EAAAA,EAAY+B,SACZlB,GAGCvB,EAAS,GACfS,EAAMiB,SAAQ,SAAAvB,GACZH,EAAO0C,KACFvC,EAAAA,EAAAA,CAAAA,EAAAA,GACAO,EAAY+B,QAAQtC,EAAKwC,KAEhC,IAEA5B,GAAW,GACXI,EAAQnB,GAAQ,KAAA,GAAA,IAAA,MAAA,OAAAwB,EAAA1C,OAAA,GAAA8D,EACjB,MAAA7D,MAAAC,KAAAC,UAAA,CAED,GAAKwB,EAML,GAAqB,IAAjBA,EAAMJ,OAAV,CAMA,IAAMwC,EAAiB,GACvBpC,EAAMiB,SAAQ,SAAAvB,GACPO,EAAY+B,QAAQtC,EAAKwC,KAC5BE,EAAeH,KAAKvC,EAAKwC,GAE7B,IAEA5B,GAAW,GAvDG,SACuB+B,GAAA1B,EAAArC,MAAAC,KAAAC,UAAA,CAuDrC8D,CAAuBF,EAXvB,MAFE1B,EAAQ,SALRA,EAAQ,KAmBZ,GAAG,CAACV,IAEG,CAACK,EAASI,EACnB,yBAzFO,SAAwB8B,EAAQ3D,EAAU4D,GAC/C,IAAsC1F,EAAAA,EAAQA,SAAC,MAAK2F,EAAAzF,EAAAA,QAAA0F,EAAA,GAA7CC,EAAWF,EAAA,GAAEG,EAAcH,EAAA,GAmBlC,OAjBArF,EAAAA,WAAU,WACR,GAAKwB,EAAL,CAMA,IAAMW,EAAS,GAEfX,EAASqC,SAAQ,SAAAvB,GACX8C,EAAgB3C,SAASH,EAAKwC,KAAOxC,EAAKmD,WAC5CtD,EAAO0C,KAAKvC,EAEhB,IAEAkD,EAAerD,EAVf,MAFEqD,EAAe,KAalB,GAAE,CAACL,EAAQ3D,EAAU4D,IACfG,CACT,yBAsEO,SAAwBJ,EAAQO,EAAyBC,GAC9D,IAAMC,EAAiB9C,UAAO,GAC9B9C,EAAAA,WAAU,WACR,GAAI0F,EAAyB,CAC3B,GAAIE,EAAehB,QAAS,CAC1B,IAAMiB,EAAgB,GACtBH,EAAwB7B,SAAQ,SAAAvB,GAC1BA,EAAKwD,UAAYX,GACnBU,EAAchB,KAAKvC,EAAKwC,GAE5B,IACAa,EAAmBE,EACrB,CACAD,EAAehB,SAAU,CAC3B,CACF,GAAG,CAACO,EAAQO,GACd,mBAvLO,SAAkBjG,EAAWsG,GAClC,IAA0BrG,EAAAA,EAAQA,SAAC,MAAKsG,EAAApG,EAAAA,QAAAqG,EAAA,GAAjCrD,EAAKoD,EAAA,GAAEE,EAAQF,EAAA,GAYtB,OAVAhG,EAAAA,WAAU,WACuB,SAAAmG,IAG9B,OAH8BA,EAA/BjG,EAAAA,QAAAC,EAAAA,QAAAC,MAAA,SAAAgG,IAAA,IAAA/C,EAAA,OAAAlD,UAAAK,MAAA,SAAA6F,GAAA,OAAA,OAAAA,EAAA3F,KAAA2F,EAAA1F,MAAA,KAAA,EAAA,IACelB,EAAS,CAAA4G,EAAA1F,KAAA,EAAA,KAAA,CAAA,OAAA0F,EAAA1F,KAAA,EAAS2F,EAAUA,WAAC7G,EAAWsG,GAAsB,KAAA,EAAAM,EAAAE,GAAAF,EAAAxF,KAAAwF,EAAA1F,KAAA,EAAA,MAAA,KAAA,EAAA0F,EAAAE,GAAG,KAAI,KAAA,EAA5ElD,EAAIgD,EAAAE,GACVL,EAAS7C,GAAM,KAAA,EAAA,IAAA,MAAA,OAAAgD,EAAApF,OAAA,GAAAmF,EAChB,MAAAlF,MAAAC,KAAAC,UAAA,CAED8E,EAAS,MANK,WACiBC,EAAAjF,MAAAC,KAAAC,UAAA,CAM/BoF,EACF,GAAG,CAAC/G,IAEGmD,CACT,6BA8BO,SAA4BA,EAAO6D,GACxC,IAA8C/G,EAAAA,EAAQA,SAAC,MAAKgH,EAAA9G,EAAAA,QAAA+G,EAAA,GAArDC,EAAeF,EAAA,GAAEG,EAAkBH,EAAA,GA4B1C,OA1BA1G,EAAAA,WAAU,WACR,GAAK4C,EAAL,CAKA,IAAMkE,EAAmBL,GAAenH,EAAsBmH,EAAa,WAE3E,GAAKK,EAAL,CAIA,IAAM3E,EAAS,GACfS,EAAMiB,SAAQ,SAAAvB,GACZ,IAAMyE,EAAQzH,EAAsBgD,EAAM,WAC1C,GAAIyE,EAAO,CACT,IAAMjB,EAAWpB,WAAWlF,EAAyBsH,EAAkBC,IACvE5E,EAAO0C,KAAImC,EAAAA,EAAA,CAAA,EAAM1E,GAAI,GAAA,CAAEwD,SAAAA,IACzB,MACE3D,EAAO0C,KAAKvC,EAEhB,IAEAuE,EAAmB1E,EAZnB,MAFE0E,EAAmBjE,EALrB,MAFEiE,EAAmBjE,EAsBvB,GAAG,CAACA,EAAO6D,IAEJG,CACT"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/defineProperty"),o=require("react/jsx-runtime"),s=require("react"),l=require("@vis.gl/react-mapbox"),a=require("classnames");require("mapbox-gl/dist/mapbox-gl.css");var i=require("./components/MapLayers/MapLayers.js"),t=require("./components/MapOverlayControls/MapOverlayControls.js"),n=require("./components/MapResizeVeil/MapResizeVeil.js"),r=require("./hooks/useFlyToWell.js"),d=require("./hooks/useIsMapCompact.js"),u=require("./hooks/useMapResizeOnContainer.js"),c=require("./hooks/useOffsetWellMapState.js"),h=require("./constants.js"),p=require("./OffsetWellMap.module.css.js"),g=require("../../../../../componentsV2/LoaderLinear/LoaderLinear.js"),f=require("../../../../../config/mapbox/index.js");function m(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var v=m(e),M=m(l),y=m(a);function O(e,o){var s=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);o&&(l=l.filter((function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable}))),s.push.apply(s,l)}return s}function S(e){for(var o=1;o<arguments.length;o++){var s=null!=arguments[o]?arguments[o]:{};o%2?O(Object(s),!0).forEach((function(o){v.default(e,o,s[o])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(s)):O(Object(s)).forEach((function(o){Object.defineProperty(e,o,Object.getOwnPropertyDescriptor(s,o))}))}return e}var C=s.forwardRef((function(e,l){var a=e.subjectWell,m=void 0===a?null:a,v=e.wells,O=e.offsetWellIds,C=e.handleChangeOffsetWell,w=e.onBatchSelectWells,R=e.activeWellId,b=e.isClickable,j=void 0===b||b,W=e.selectionZone,L=e.onSelectionZoneConfirm,D=e.shouldRecenter,Z=e.onRecenterComplete,x=e.isResizing,I=void 0!==x&&x,P=e.classes,A=void 0===P?{}:P,E=c.useOffsetWellMapState({subjectWell:m,wells:v,offsetWellIds:O,handleChangeOffsetWell:C,onBatchSelectWells:w,activeWellId:null!=R?R:null,isClickable:j,selectionZone:W,onSelectionZoneConfirm:L,shouldRecenter:D,onRecenterComplete:Z});r.useFlyToWell(l,E.mapRef,v,E.isMapReady);var T=E.showRadiusInput&&null!==E.drawingRadiusMiles,q=d.useIsMapCompact(),k=q.ref,V=q.isCompact&&T,N=u.useMapResizeOnContainer(E.mapRef,I),z=s.useCallback((function(e){k(e),N(e)}),[k,N]);return o.jsxs("div",{ref:z,className:y.default(p.mapView,A.root),children:[o.jsxs(M.default,S(S({ref:E.mapRef},E.viewState),{},{onMove:E.handleMove,onMoveStart:E.handleMoveStart,onMoveEnd:E.handleMoveEnd,onResize:E.tileSafeOnResize,onLoad:E.handleMapLoad,mapboxAccessToken:f.MAP_BOX_ACCESS_TOKEN,mapStyle:h.MapConfig.Styles[E.mapStyle],style:{borderRadius:"8px"},scrollZoom:!0,doubleClickZoom:!0,boxZoom:!1,attributionControl:!1,interactiveLayerIds:[h.MapConfig.LayerIds.WellsClusters,h.MapConfig.LayerIds.WellsUnclustered],onClick:E.handleMapClick,onMouseMove:E.handleMouseMove,onMouseLeave:E.handleMouseLeave,onDblClick:E.handleZoomInWithSync,onDragStart:E.handleDragStart,onDragEnd:E.handleDragEnd,onMouseDown:E.handleMouseDown,cursor:E.cursor,children:[(E.isTileLoading&&!E.isTooZoomedOut||E.isAllWellsLoading)&&o.jsx(g.LoaderLinear,{type:"fancy",size:"medium",className:p.mapLoader}),o.jsx(i.MapLayers,{wellsGeoJSON:E.wellsGeoJSON,highlightGeoJSON:E.highlightGeoJSON,activeHighlightGeoJSON:E.activeHighlightGeoJSON,loadingTilesGeoJSON:E.loadingTilesGeoJSON,hoveredWell:E.hoveredWell,mapStyle:E.mapStyle,isSatellite:E.isSatellite,clusterColorExpression:E.clusterColorExpression,isRadiusToolActive:E.isRadiusToolActive,radiusState:E.radiusState,radiusDrawingPreviewCircle:E.radiusDrawingPreviewCircle,isRadiusHoveringEdge:E.isRadiusHoveringEdge,isRadiusDrawingDragging:E.isRadiusDrawingDragging,showGhostZone:E.showGhostZone,selectionZone:W,isTooZoomedOut:E.isTooZoomedOut,isLoadAllWells:E.isLoadAllWells,isActiveWellIsSubjectWell:E.isActiveWellIsSubjectWell,isLassoActive:E.isLassoActive,isMapReady:E.isMapReady,polygonCoords:E.polygonCoords,drawRef:E.drawRef,handleDrawCreate:E.handleDrawCreate,handleDrawUpdate:E.handleDrawUpdate,handleDrawDelete:E.handleDrawDelete,handleModeChange:E.handleModeChange,handleSelectionChange:E.handleSelectionChange,subjectWellCoords:E.subjectWellCoords,subjectWell:m,handleSubjectWellMouseEnter:E.handleSubjectWellMouseEnter,handleSubjectWellMouseLeave:E.handleSubjectWellMouseLeave,hoveredCluster:E.hoveredCluster,tooltipAnchor:E.tooltipAnchor,tooltipOffset:E.tooltipOffset,isViewOnly:E.isViewOnly,isClickable:j})]})),o.jsx(n.MapResizeVeil,{isResizing:I}),o.jsx(t.MapOverlayControls,{showRadiusInput:E.showRadiusInput,drawingRadiusMiles:E.drawingRadiusMiles,setDrawingRadiusMiles:E.setDrawingRadiusMiles,isSatellite:E.isSatellite,handleZoomInWithSync:E.handleZoomInWithSync,handleZoomOutWithSync:E.handleZoomOutWithSync,handleResetZoom:E.handleResetZoom,canZoomIn:E.canZoomIn,canZoomOut:E.canZoomOut,isZoomReset:E.isZoomReset,isRadiusToolActive:E.isRadiusToolActive,handleRadiusToggle:E.handleRadiusToggle,isLassoActive:E.isLassoActive,handleLassoToggle:E.handleLassoToggle,distance:E.distance,mapStyle:E.mapStyle,setMapStyle:E.setMapStyle,isViewOnly:E.isViewOnly,hintsRef:E.hintsRef,hintsMode:E.hintsMode,areHintsCompact:V,boxState:E.boxState,isDrawing:E.isDrawing,drawingPointCount:E.drawingPointCount,isEditingPolygon:E.isEditingPolygon,isEditingVertices:E.isEditingVertices,hasValidPolygon:!!E.hasValidPolygon,effectiveZoomedOut:E.effectiveZoomedOut,isLoadAllWells:E.isLoadAllWells,lassoPhase:E.lassoState.phase,radiusPhase:E.radiusState.phase,wellsInBoxCount:E.wellsInBoxCount,toast:E.toast})]})}));C.displayName="OffsetWellMap",exports.OffsetWellMap=C;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/defineProperty"),o=require("react/jsx-runtime"),s=require("react"),l=require("@vis.gl/react-mapbox"),a=require("classnames");require("mapbox-gl/dist/mapbox-gl.css");var i=require("./components/MapLayers/MapLayers.js"),t=require("./components/MapOverlayControls/MapOverlayControls.js"),n=require("./components/MapResizeVeil/MapResizeVeil.js"),r=require("./hooks/useFlyToWell.js"),d=require("./hooks/useIsMapCompact.js"),u=require("./hooks/useMapResizeOnContainer.js"),c=require("./hooks/useOffsetWellMapState.js"),h=require("./constants.js"),p=require("./OffsetWellMap.module.css.js"),g=require("../../../../../componentsV2/LoaderLinear/LoaderLinear.js"),f=require("../../../../../config/mapbox/index.js");require("../../../../../config/mapboxGl/index.js");var m=require("mapbox-gl");function v(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var M=v(e),y=v(l),O=v(a),S=v(m);function C(e,o){var s=Object.keys(e);if(Object.getOwnPropertySymbols){var l=Object.getOwnPropertySymbols(e);o&&(l=l.filter((function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable}))),s.push.apply(s,l)}return s}function w(e){for(var o=1;o<arguments.length;o++){var s=null!=arguments[o]?arguments[o]:{};o%2?C(Object(s),!0).forEach((function(o){M.default(e,o,s[o])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(s)):C(Object(s)).forEach((function(o){Object.defineProperty(e,o,Object.getOwnPropertyDescriptor(s,o))}))}return e}var b=s.forwardRef((function(e,l){var a=e.subjectWell,m=void 0===a?null:a,v=e.wells,M=e.offsetWellIds,C=e.handleChangeOffsetWell,b=e.onBatchSelectWells,R=e.activeWellId,j=e.isClickable,W=void 0===j||j,L=e.selectionZone,D=e.onSelectionZoneConfirm,Z=e.shouldRecenter,x=e.onRecenterComplete,I=e.isResizing,P=void 0!==I&&I,A=e.classes,q=void 0===A?{}:A,E=c.useOffsetWellMapState({subjectWell:m,wells:v,offsetWellIds:M,handleChangeOffsetWell:C,onBatchSelectWells:b,activeWellId:null!=R?R:null,isClickable:W,selectionZone:L,onSelectionZoneConfirm:D,shouldRecenter:Z,onRecenterComplete:x});r.useFlyToWell(l,E.mapRef,v,E.isMapReady);var T=E.showRadiusInput&&null!==E.drawingRadiusMiles,k=d.useIsMapCompact(),V=k.ref,N=k.isCompact&&T,G=u.useMapResizeOnContainer(E.mapRef,P),z=s.useCallback((function(e){V(e),G(e)}),[V,G]);return o.jsxs("div",{ref:z,className:O.default(p.mapView,q.root),children:[o.jsxs(y.default,w(w({ref:E.mapRef},E.viewState),{},{onMove:E.handleMove,onMoveStart:E.handleMoveStart,onMoveEnd:E.handleMoveEnd,onResize:E.tileSafeOnResize,onLoad:E.handleMapLoad,mapboxAccessToken:f.MAP_BOX_ACCESS_TOKEN,mapLib:S.default,mapStyle:h.MapConfig.Styles[E.mapStyle],style:{borderRadius:"8px"},scrollZoom:!0,doubleClickZoom:!0,boxZoom:!1,attributionControl:!1,interactiveLayerIds:[h.MapConfig.LayerIds.WellsClusters,h.MapConfig.LayerIds.WellsUnclustered],onClick:E.handleMapClick,onMouseMove:E.handleMouseMove,onMouseLeave:E.handleMouseLeave,onDblClick:E.handleZoomInWithSync,onDragStart:E.handleDragStart,onDragEnd:E.handleDragEnd,onMouseDown:E.handleMouseDown,cursor:E.cursor,children:[(E.isTileLoading&&!E.isTooZoomedOut||E.isAllWellsLoading)&&o.jsx(g.LoaderLinear,{type:"fancy",size:"medium",className:p.mapLoader}),o.jsx(i.MapLayers,{wellsGeoJSON:E.wellsGeoJSON,highlightGeoJSON:E.highlightGeoJSON,activeHighlightGeoJSON:E.activeHighlightGeoJSON,loadingTilesGeoJSON:E.loadingTilesGeoJSON,hoveredWell:E.hoveredWell,mapStyle:E.mapStyle,isSatellite:E.isSatellite,clusterColorExpression:E.clusterColorExpression,isRadiusToolActive:E.isRadiusToolActive,radiusState:E.radiusState,radiusDrawingPreviewCircle:E.radiusDrawingPreviewCircle,isRadiusHoveringEdge:E.isRadiusHoveringEdge,isRadiusDrawingDragging:E.isRadiusDrawingDragging,showGhostZone:E.showGhostZone,selectionZone:L,isTooZoomedOut:E.isTooZoomedOut,isLoadAllWells:E.isLoadAllWells,isActiveWellIsSubjectWell:E.isActiveWellIsSubjectWell,isLassoActive:E.isLassoActive,isMapReady:E.isMapReady,polygonCoords:E.polygonCoords,drawRef:E.drawRef,handleDrawCreate:E.handleDrawCreate,handleDrawUpdate:E.handleDrawUpdate,handleDrawDelete:E.handleDrawDelete,handleModeChange:E.handleModeChange,handleSelectionChange:E.handleSelectionChange,subjectWellCoords:E.subjectWellCoords,subjectWell:m,handleSubjectWellMouseEnter:E.handleSubjectWellMouseEnter,handleSubjectWellMouseLeave:E.handleSubjectWellMouseLeave,hoveredCluster:E.hoveredCluster,tooltipAnchor:E.tooltipAnchor,tooltipOffset:E.tooltipOffset,isViewOnly:E.isViewOnly,isClickable:W})]})),o.jsx(n.MapResizeVeil,{isResizing:P}),o.jsx(t.MapOverlayControls,{showRadiusInput:E.showRadiusInput,drawingRadiusMiles:E.drawingRadiusMiles,setDrawingRadiusMiles:E.setDrawingRadiusMiles,isSatellite:E.isSatellite,handleZoomInWithSync:E.handleZoomInWithSync,handleZoomOutWithSync:E.handleZoomOutWithSync,handleResetZoom:E.handleResetZoom,canZoomIn:E.canZoomIn,canZoomOut:E.canZoomOut,isZoomReset:E.isZoomReset,isRadiusToolActive:E.isRadiusToolActive,handleRadiusToggle:E.handleRadiusToggle,isLassoActive:E.isLassoActive,handleLassoToggle:E.handleLassoToggle,distance:E.distance,mapStyle:E.mapStyle,setMapStyle:E.setMapStyle,isViewOnly:E.isViewOnly,hintsRef:E.hintsRef,hintsMode:E.hintsMode,areHintsCompact:N,boxState:E.boxState,isDrawing:E.isDrawing,drawingPointCount:E.drawingPointCount,isEditingPolygon:E.isEditingPolygon,isEditingVertices:E.isEditingVertices,hasValidPolygon:!!E.hasValidPolygon,effectiveZoomedOut:E.effectiveZoomedOut,isLoadAllWells:E.isLoadAllWells,lassoPhase:E.lassoState.phase,radiusPhase:E.radiusState.phase,wellsInBoxCount:E.wellsInBoxCount,toast:E.toast})]})}));b.displayName="OffsetWellMap",exports.OffsetWellMap=b;
2
2
  //# sourceMappingURL=OffsetWellMap.js.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),t=require("react"),r=require("@vis.gl/react-mapbox");require("mapbox-gl/dist/mapbox-gl.css");var s=require("../Map/OffsetWellMap/constants.js");require("../../stores/user-settings-store/UserSettingsStoreProvider.js");var o=require("../../stores/user-settings-store/useUserSettingsStore.js");require("../../stores/user-settings-store/UserSettingsStoreContext.js");var i=require("./MapPreloader.module.css.js"),a=require("../../../../config/mapbox/index.js");function n(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var u=n(r),l=t.memo((function(){var t,r=null!==(t=o.useUserSettingsStore((function(e){return e.settings.mapStyle})))&&void 0!==t?t:"satellite";return e.jsx("div",{className:i.container,children:e.jsx(u.default,{mapboxAccessToken:a.MAP_BOX_ACCESS_TOKEN,mapStyle:s.MapConfig.Styles[r],longitude:s.MapConfig.DefaultCoords.longitude,latitude:s.MapConfig.DefaultCoords.latitude,zoom:s.MapConfig.Zoom.Initial,interactive:!1,attributionControl:!1})})}));l.displayName="MapPreloader",exports.MapPreloader=l;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react/jsx-runtime"),r=require("react"),t=require("@vis.gl/react-mapbox");require("mapbox-gl/dist/mapbox-gl.css");var s=require("../Map/OffsetWellMap/constants.js");require("../../stores/user-settings-store/UserSettingsStoreProvider.js");var o=require("../../stores/user-settings-store/useUserSettingsStore.js");require("../../stores/user-settings-store/UserSettingsStoreContext.js");var i=require("./MapPreloader.module.css.js"),a=require("../../../../config/mapbox/index.js");require("../../../../config/mapboxGl/index.js");var n=require("mapbox-gl");function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var l=u(t),d=u(n),p=r.memo((function(){var r,t=null!==(r=o.useUserSettingsStore((function(e){return e.settings.mapStyle})))&&void 0!==r?r:"satellite";return e.jsx("div",{className:i.container,children:e.jsx(l.default,{mapboxAccessToken:a.MAP_BOX_ACCESS_TOKEN,mapLib:d.default,mapStyle:s.MapConfig.Styles[t],longitude:s.MapConfig.DefaultCoords.longitude,latitude:s.MapConfig.DefaultCoords.latitude,zoom:s.MapConfig.Zoom.Initial,interactive:!1,attributionControl:!1})})}));p.displayName="MapPreloader",exports.MapPreloader=p;
2
2
  //# sourceMappingURL=MapPreloader.js.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/defineProperty"),r=require("@babel/runtime/helpers/slicedToArray"),t=require("react"),i=require("react-dom"),u=require("lodash"),n=require("@material-ui/core/styles"),s=require("../components/FiltersToggler.js"),o=require("../utils.js"),l=require("../constants.js"),a=require("../../../config/theme/index.js");require("@babel/runtime/helpers/asyncToGenerator"),require("@babel/runtime/helpers/typeof"),require("@babel/runtime/regenerator"),require("highcharts-v8"),require("highcharts-v8/highcharts-more"),require("highcharts-v8/modules/solid-gauge"),require("highcharts-v8/modules/heatmap"),require("highcharts-v8/modules/boost"),require("highcharts-v8/modules/exporting"),require("highcharts-v8/modules/xrange"),require("highcharts-v8/modules/dumbbell"),require("highcharts-v8/modules/pattern-fill"),require("highcharts-v8/modules/annotations"),require("highcharts-multicolor-series-v8"),require("highcharts"),require("highcharts/highcharts-more"),require("highcharts/modules/solid-gauge"),require("highcharts/modules/heatmap"),require("highcharts/modules/boost"),require("highcharts/modules/exporting"),require("highcharts/modules/xrange"),require("highcharts/modules/dumbbell"),require("highcharts/modules/pattern-fill"),require("highcharts/modules/annotations"),require("highcharts-multicolor-series"),require("dompurify"),require("../../../config/mapbox/index.js"),require("../../../clients/subscriptions/constants.js"),require("../../../clients/subscriptions.v1.js"),require("../../../clients/subscriptions/subscriptions-client.factory.js"),require("../../../config/extendNative.js");var h=require("react/jsx-runtime");function c(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=c(e),f=c(r),g=c(i);function m(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 v(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?m(Object(t),!0).forEach((function(r){d.default(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):m(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}exports.useAppFilterTogglerWidth=function(){var e=t.useState(null),r=f.default(e,2),i=r[0],u=r[1];return t.useEffect((function(){var e=document.createElement("div");e.style.position="absolute",e.style.visibility="hidden",document.body.appendChild(e),g.default.render(h.jsx(n.MuiThemeProvider,{theme:a.darkTheme,children:h.jsx(s,{})}),e,(function(){var r=e.getBoundingClientRect();e.remove(),u(r.width)}))}),[]),i},exports.useComonentsWidth=function(e){var r=t.useRef(),i=t.useState(null),n=f.default(i,2),s=n[0],o=n[1],l=t.useRef({}),a=e.filter((function(e){return!!e})),c=h.jsx("div",{ref:r,style:{position:"absolute",width:0,height:0,overflow:"hidden"},children:a.map((function(e,r){return h.jsx("div",{"data-key":null==e?void 0:e.key,style:{position:"absolute"},children:e},r)}))});return t.useEffect((function(){var e;if(!u.isEqual(a,l.current)){var t=Array.from(null===(e=r.current)||void 0===e?void 0:e.childNodes).reduce((function(e,r){var t,i=null==r||null===(t=r.getAttribute)||void 0===t?void 0:t.call(r,"data-key"),u=null==r?void 0:r.getBoundingClientRect().width;return v(v({},e),{},d.default({},i,u))}),{});Object.values(t).length===a.length&&(u.isEqual(s,t)||o(t)),l.current=a}})),{componentsWidth:s,hiddenElements:c}},exports.useFilterLayout=function(e,r,i,u){var n=t.useState(null),s=f.default(n,2),a=s[0],h=s[1];return t.useEffect((function(){if(u&&r){var t=o.getStartComponent(e),n=o.getMiddleComponent(e),s=o.getEndComponents(e),a=t&&n&&!s,c=t&&!n&&s,d=t&&n&&s;if(t&&!n&&!s){var f=r[t.key];if(f<=u)return void h(l.LARGE_SIZE_LAYOUT);if(f<=u/2)return void h(l.MEDIUM_SIZE_LAYOUT)}else if(a||c){var g=r[t.key],m=a?r[n.key]:r[s.key];if(g+m<=u)return void h(l.LARGE_SIZE_LAYOUT);if(i+m<=u)return void h(l.MEDIUM_SIZE_LAYOUT)}else if(d){var v=r[t.key],p=r[n.key],b=r[s.key];if(v+p+b<=u)return void h(l.LARGE_SIZE_LAYOUT);if(i+p+b<=u)return void h(l.MEDIUM_SIZE_LAYOUT);if(i+b<=u)return void h(l.SMALL_SIZE_LAYOUT)}h(l.SMALL_SIZE_LAYOUT)}}),[r,u]),a};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("@babel/runtime/helpers/defineProperty"),r=require("@babel/runtime/helpers/slicedToArray"),t=require("react"),i=require("react-dom"),u=require("lodash"),s=require("@material-ui/core/styles"),n=require("../components/FiltersToggler.js"),o=require("../utils.js"),l=require("../constants.js"),a=require("../../../config/theme/index.js");require("@babel/runtime/helpers/asyncToGenerator"),require("@babel/runtime/helpers/typeof"),require("@babel/runtime/regenerator"),require("highcharts-v8"),require("highcharts-v8/highcharts-more"),require("highcharts-v8/modules/solid-gauge"),require("highcharts-v8/modules/heatmap"),require("highcharts-v8/modules/boost"),require("highcharts-v8/modules/exporting"),require("highcharts-v8/modules/xrange"),require("highcharts-v8/modules/dumbbell"),require("highcharts-v8/modules/pattern-fill"),require("highcharts-v8/modules/annotations"),require("highcharts-multicolor-series-v8"),require("highcharts"),require("highcharts/highcharts-more"),require("highcharts/modules/solid-gauge"),require("highcharts/modules/heatmap"),require("highcharts/modules/boost"),require("highcharts/modules/exporting"),require("highcharts/modules/xrange"),require("highcharts/modules/dumbbell"),require("highcharts/modules/pattern-fill"),require("highcharts/modules/annotations"),require("highcharts-multicolor-series"),require("dompurify"),require("@babel/runtime/helpers/createClass"),require("@babel/runtime/helpers/classCallCheck"),require("@babel/runtime/helpers/assertThisInitialized"),require("@babel/runtime/helpers/inherits"),require("@babel/runtime/helpers/possibleConstructorReturn"),require("@babel/runtime/helpers/getPrototypeOf"),require("@babel/runtime/helpers/toArray"),require("@babel/runtime/helpers/toConsumableArray"),require("../../../clients/subscriptions/constants.js"),require("../../../clients/subscriptions.v1.js"),require("../../../clients/subscriptions/subscriptions-client.factory.js"),require("../../../config/extendNative.js");var h=require("react/jsx-runtime");function c(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=c(e),f=c(r),m=c(i);function b(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 p(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?b(Object(t),!0).forEach((function(r){d.default(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):b(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}exports.useAppFilterTogglerWidth=function(){var e=t.useState(null),r=f.default(e,2),i=r[0],u=r[1];return t.useEffect((function(){var e=document.createElement("div");e.style.position="absolute",e.style.visibility="hidden",document.body.appendChild(e),m.default.render(h.jsx(s.MuiThemeProvider,{theme:a.darkTheme,children:h.jsx(n,{})}),e,(function(){var r=e.getBoundingClientRect();e.remove(),u(r.width)}))}),[]),i},exports.useComonentsWidth=function(e){var r=t.useRef(),i=t.useState(null),s=f.default(i,2),n=s[0],o=s[1],l=t.useRef({}),a=e.filter((function(e){return!!e})),c=h.jsx("div",{ref:r,style:{position:"absolute",width:0,height:0,overflow:"hidden"},children:a.map((function(e,r){return h.jsx("div",{"data-key":null==e?void 0:e.key,style:{position:"absolute"},children:e},r)}))});return t.useEffect((function(){var e;if(!u.isEqual(a,l.current)){var t=Array.from(null===(e=r.current)||void 0===e?void 0:e.childNodes).reduce((function(e,r){var t,i=null==r||null===(t=r.getAttribute)||void 0===t?void 0:t.call(r,"data-key"),u=null==r?void 0:r.getBoundingClientRect().width;return p(p({},e),{},d.default({},i,u))}),{});Object.values(t).length===a.length&&(u.isEqual(n,t)||o(t)),l.current=a}})),{componentsWidth:n,hiddenElements:c}},exports.useFilterLayout=function(e,r,i,u){var s=t.useState(null),n=f.default(s,2),a=n[0],h=n[1];return t.useEffect((function(){if(u&&r){var t=o.getStartComponent(e),s=o.getMiddleComponent(e),n=o.getEndComponents(e),a=t&&s&&!n,c=t&&!s&&n,d=t&&s&&n;if(t&&!s&&!n){var f=r[t.key];if(f<=u)return void h(l.LARGE_SIZE_LAYOUT);if(f<=u/2)return void h(l.MEDIUM_SIZE_LAYOUT)}else if(a||c){var m=r[t.key],b=a?r[s.key]:r[n.key];if(m+b<=u)return void h(l.LARGE_SIZE_LAYOUT);if(i+b<=u)return void h(l.MEDIUM_SIZE_LAYOUT)}else if(d){var p=r[t.key],g=r[s.key],v=r[n.key];if(p+g+v<=u)return void h(l.LARGE_SIZE_LAYOUT);if(i+g+v<=u)return void h(l.MEDIUM_SIZE_LAYOUT);if(i+v<=u)return void h(l.SMALL_SIZE_LAYOUT)}h(l.SMALL_SIZE_LAYOUT)}}),[r,u]),a};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/components/PinnableFilters/effects/index.js"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport ReactDOM from 'react-dom';\nimport { isEqual } from 'lodash';\nimport { MuiThemeProvider } from '@material-ui/core/styles';\n\nimport FiltersToggler from '../components/FiltersToggler';\nimport { getEndComponents, getMiddleComponent, getStartComponent } from '../utils';\nimport { LARGE_SIZE_LAYOUT, MEDIUM_SIZE_LAYOUT, SMALL_SIZE_LAYOUT } from '../constants';\n\nimport { theme } from '~/config';\n\n// NOTE: Determine layout according to the width of elements\nexport function useFilterLayout(components, componentsWidth, appFilterTogglerWidth, appWidth) {\n const [layout, setLayout] = useState(null);\n\n useEffect(() => {\n if (!appWidth || !componentsWidth) {\n return;\n }\n\n const filtersComponent = getStartComponent(components);\n const goalComponent = getMiddleComponent(components);\n const switchComponent = getEndComponents(components);\n\n const hasFiltersOnly = filtersComponent && !goalComponent && !switchComponent;\n const hasFiltersAndGoals = filtersComponent && goalComponent && !switchComponent;\n const hasFiltersAndSwitch = filtersComponent && !goalComponent && switchComponent;\n const hasAll = filtersComponent && goalComponent && switchComponent;\n\n if (hasFiltersOnly) {\n const filtersWidth = componentsWidth[filtersComponent.key];\n\n if (filtersWidth <= appWidth) {\n setLayout(LARGE_SIZE_LAYOUT);\n return;\n }\n\n if (filtersWidth <= appWidth / 2) {\n setLayout(MEDIUM_SIZE_LAYOUT);\n return;\n }\n } else if (hasFiltersAndGoals || hasFiltersAndSwitch) {\n const startWidth = componentsWidth[filtersComponent.key];\n const endWidth = hasFiltersAndGoals\n ? componentsWidth[goalComponent.key]\n : componentsWidth[switchComponent.key];\n\n if (startWidth + endWidth <= appWidth) {\n setLayout(LARGE_SIZE_LAYOUT);\n return;\n }\n\n if (appFilterTogglerWidth + endWidth <= appWidth) {\n setLayout(MEDIUM_SIZE_LAYOUT);\n return;\n }\n } else if (hasAll) {\n const startWidth = componentsWidth[filtersComponent.key];\n const middleWidth = componentsWidth[goalComponent.key];\n const endWidth = componentsWidth[switchComponent.key];\n\n if (startWidth + middleWidth + endWidth <= appWidth) {\n setLayout(LARGE_SIZE_LAYOUT);\n return;\n }\n\n if (appFilterTogglerWidth + middleWidth + endWidth <= appWidth) {\n setLayout(MEDIUM_SIZE_LAYOUT);\n return;\n }\n\n if (appFilterTogglerWidth + endWidth <= appWidth) {\n setLayout(SMALL_SIZE_LAYOUT);\n return;\n }\n }\n\n setLayout(SMALL_SIZE_LAYOUT);\n }, [componentsWidth, appWidth]);\n\n return layout;\n}\n\n// NOTE: Calculate the width of child components here\nexport function useComonentsWidth(components) {\n // const widthRef = useRef({});\n const hiddenElementsRef = useRef();\n const [widthDict, setWidthDict] = useState(null);\n const prevComponentsRef = useRef({});\n\n const validComponents = components.filter(component => !!component);\n const hiddenElements = (\n <div\n ref={hiddenElementsRef}\n style={{ position: 'absolute', width: 0, height: 0, overflow: 'hidden' }}\n >\n {validComponents.map((component, index) => {\n return (\n // eslint-disable-next-line react/no-array-index-key\n <div key={index} data-key={component?.key} style={{ position: 'absolute' }}>\n {component}\n </div>\n );\n })}\n </div>\n );\n\n // NOTE: Calcualte width of each components\n useEffect(() => {\n // NOTE: Don't calcuate width again\n if (isEqual(validComponents, prevComponentsRef.current)) {\n return;\n }\n\n const nodesArray = Array.from(hiddenElementsRef.current?.childNodes);\n const sizeMap = nodesArray.reduce((acc, node) => {\n const key = node?.getAttribute?.('data-key');\n const value = node?.getBoundingClientRect().width;\n\n return {\n ...acc,\n [key]: value,\n };\n }, {});\n\n if (Object.values(sizeMap).length === validComponents.length) {\n if (!isEqual(widthDict, sizeMap)) {\n setWidthDict(sizeMap);\n }\n }\n\n prevComponentsRef.current = validComponents;\n });\n\n return { componentsWidth: widthDict, hiddenElements };\n}\n\n// NOTE: Calculate the width of Toggler Component\nexport function useAppFilterTogglerWidth() {\n const [width, setWidth] = useState(null);\n\n useEffect(() => {\n const element = document.createElement('div');\n element.style.position = 'absolute';\n element.style.visibility = 'hidden';\n document.body.appendChild(element);\n\n ReactDOM.render(\n <MuiThemeProvider theme={theme.darkTheme}>\n <FiltersToggler />\n </MuiThemeProvider>,\n element,\n () => {\n const dims = element.getBoundingClientRect();\n element.remove();\n setWidth(dims.width);\n }\n );\n }, []);\n\n return width;\n}\n"],"names":["useState","_useState6","_slicedToArray","_useState5","width","setWidth","useEffect","element","document","createElement","style","position","visibility","body","appendChild","ReactDOM","render","_jsx","jsx","MuiThemeProvider","theme","darkTheme","children","FiltersToggler","dims","getBoundingClientRect","remove","components","hiddenElementsRef","useRef","_useState4","_useState3","widthDict","setWidthDict","prevComponentsRef","validComponents","filter","component","hiddenElements","ref","height","overflow","map","index","key","_hiddenElementsRef$cu","isEqual","current","sizeMap","Array","from","childNodes","reduce","acc","node","_node$getAttribute","getAttribute","call","value","_objectSpread","_defineProperty","Object","values","length","componentsWidth","appFilterTogglerWidth","appWidth","_useState2","_useState","layout","setLayout","filtersComponent","getStartComponent","goalComponent","getMiddleComponent","switchComponent","getEndComponents","hasFiltersAndGoals","hasFiltersAndSwitch","hasAll","filtersWidth","LARGE_SIZE_LAYOUT","MEDIUM_SIZE_LAYOUT","startWidth","endWidth","middleWidth","SMALL_SIZE_LAYOUT"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/components/PinnableFilters/effects/index.js"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport ReactDOM from 'react-dom';\nimport { isEqual } from 'lodash';\nimport { MuiThemeProvider } from '@material-ui/core/styles';\n\nimport FiltersToggler from '../components/FiltersToggler';\nimport { getEndComponents, getMiddleComponent, getStartComponent } from '../utils';\nimport { LARGE_SIZE_LAYOUT, MEDIUM_SIZE_LAYOUT, SMALL_SIZE_LAYOUT } from '../constants';\n\nimport { theme } from '~/config';\n\n// NOTE: Determine layout according to the width of elements\nexport function useFilterLayout(components, componentsWidth, appFilterTogglerWidth, appWidth) {\n const [layout, setLayout] = useState(null);\n\n useEffect(() => {\n if (!appWidth || !componentsWidth) {\n return;\n }\n\n const filtersComponent = getStartComponent(components);\n const goalComponent = getMiddleComponent(components);\n const switchComponent = getEndComponents(components);\n\n const hasFiltersOnly = filtersComponent && !goalComponent && !switchComponent;\n const hasFiltersAndGoals = filtersComponent && goalComponent && !switchComponent;\n const hasFiltersAndSwitch = filtersComponent && !goalComponent && switchComponent;\n const hasAll = filtersComponent && goalComponent && switchComponent;\n\n if (hasFiltersOnly) {\n const filtersWidth = componentsWidth[filtersComponent.key];\n\n if (filtersWidth <= appWidth) {\n setLayout(LARGE_SIZE_LAYOUT);\n return;\n }\n\n if (filtersWidth <= appWidth / 2) {\n setLayout(MEDIUM_SIZE_LAYOUT);\n return;\n }\n } else if (hasFiltersAndGoals || hasFiltersAndSwitch) {\n const startWidth = componentsWidth[filtersComponent.key];\n const endWidth = hasFiltersAndGoals\n ? componentsWidth[goalComponent.key]\n : componentsWidth[switchComponent.key];\n\n if (startWidth + endWidth <= appWidth) {\n setLayout(LARGE_SIZE_LAYOUT);\n return;\n }\n\n if (appFilterTogglerWidth + endWidth <= appWidth) {\n setLayout(MEDIUM_SIZE_LAYOUT);\n return;\n }\n } else if (hasAll) {\n const startWidth = componentsWidth[filtersComponent.key];\n const middleWidth = componentsWidth[goalComponent.key];\n const endWidth = componentsWidth[switchComponent.key];\n\n if (startWidth + middleWidth + endWidth <= appWidth) {\n setLayout(LARGE_SIZE_LAYOUT);\n return;\n }\n\n if (appFilterTogglerWidth + middleWidth + endWidth <= appWidth) {\n setLayout(MEDIUM_SIZE_LAYOUT);\n return;\n }\n\n if (appFilterTogglerWidth + endWidth <= appWidth) {\n setLayout(SMALL_SIZE_LAYOUT);\n return;\n }\n }\n\n setLayout(SMALL_SIZE_LAYOUT);\n }, [componentsWidth, appWidth]);\n\n return layout;\n}\n\n// NOTE: Calculate the width of child components here\nexport function useComonentsWidth(components) {\n // const widthRef = useRef({});\n const hiddenElementsRef = useRef();\n const [widthDict, setWidthDict] = useState(null);\n const prevComponentsRef = useRef({});\n\n const validComponents = components.filter(component => !!component);\n const hiddenElements = (\n <div\n ref={hiddenElementsRef}\n style={{ position: 'absolute', width: 0, height: 0, overflow: 'hidden' }}\n >\n {validComponents.map((component, index) => {\n return (\n // eslint-disable-next-line react/no-array-index-key\n <div key={index} data-key={component?.key} style={{ position: 'absolute' }}>\n {component}\n </div>\n );\n })}\n </div>\n );\n\n // NOTE: Calcualte width of each components\n useEffect(() => {\n // NOTE: Don't calcuate width again\n if (isEqual(validComponents, prevComponentsRef.current)) {\n return;\n }\n\n const nodesArray = Array.from(hiddenElementsRef.current?.childNodes);\n const sizeMap = nodesArray.reduce((acc, node) => {\n const key = node?.getAttribute?.('data-key');\n const value = node?.getBoundingClientRect().width;\n\n return {\n ...acc,\n [key]: value,\n };\n }, {});\n\n if (Object.values(sizeMap).length === validComponents.length) {\n if (!isEqual(widthDict, sizeMap)) {\n setWidthDict(sizeMap);\n }\n }\n\n prevComponentsRef.current = validComponents;\n });\n\n return { componentsWidth: widthDict, hiddenElements };\n}\n\n// NOTE: Calculate the width of Toggler Component\nexport function useAppFilterTogglerWidth() {\n const [width, setWidth] = useState(null);\n\n useEffect(() => {\n const element = document.createElement('div');\n element.style.position = 'absolute';\n element.style.visibility = 'hidden';\n document.body.appendChild(element);\n\n ReactDOM.render(\n <MuiThemeProvider theme={theme.darkTheme}>\n <FiltersToggler />\n </MuiThemeProvider>,\n element,\n () => {\n const dims = element.getBoundingClientRect();\n element.remove();\n setWidth(dims.width);\n }\n );\n }, []);\n\n return width;\n}\n"],"names":["useState","_useState6","_slicedToArray","_useState5","width","setWidth","useEffect","element","document","createElement","style","position","visibility","body","appendChild","ReactDOM","render","_jsx","jsx","MuiThemeProvider","theme","darkTheme","children","FiltersToggler","dims","getBoundingClientRect","remove","components","hiddenElementsRef","useRef","_useState4","_useState3","widthDict","setWidthDict","prevComponentsRef","validComponents","filter","component","hiddenElements","ref","height","overflow","map","index","key","_hiddenElementsRef$cu","isEqual","current","sizeMap","Array","from","childNodes","reduce","acc","node","_node$getAttribute","getAttribute","call","value","_objectSpread","_defineProperty","Object","values","length","componentsWidth","appFilterTogglerWidth","appWidth","_useState2","_useState","layout","setLayout","filtersComponent","getStartComponent","goalComponent","getMiddleComponent","switchComponent","getEndComponents","hasFiltersAndGoals","hasFiltersAndSwitch","hasAll","filtersWidth","LARGE_SIZE_LAYOUT","MEDIUM_SIZE_LAYOUT","startWidth","endWidth","middleWidth","SMALL_SIZE_LAYOUT"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("react"),e=function(t){return Array.from(t).map((function(t){return{label:t,value:t}})).sort((function(t,e){return t.label.localeCompare(e.label)}))};exports.useOptions=function(n,o){var i=t.useMemo((function(){var t=new Set,i=new Set;return n.forEach((function(e){e.fleetName&&o.toString()!==e.id.toString()&&(t.add(e.fleetName),e.wells.forEach((function(t){t.formation&&i.add(t.formation)})))})),{fracFleetOptions:e(t),formationOptions:e(i),padOptions:[{title:"All",id:"all"},{title:"Active",id:"active"},{title:"Inactive",id:"inactive"}]}}),[n,o]);return{fracFleetOptions:i.fracFleetOptions,formationOptions:i.formationOptions,padOptions:i.padOptions}};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var t=require("react"),e=function(t){return Array.from(t).map((function(t){return{label:t,value:t}})).sort((function(t,e){return t.label.localeCompare(e.label)}))};exports.useOptions=function(n,o){var i=t.useMemo((function(){var t=new Set,i=new Set;return n.forEach((function(e){e.fleetName&&(null==o?void 0:o.toString())!==e.id.toString()&&(t.add(e.fleetName),e.wells.forEach((function(t){t.formation&&i.add(t.formation)})))})),{fracFleetOptions:e(t),formationOptions:e(i),padOptions:[{title:"All",id:"all"},{title:"Active",id:"active"},{title:"Inactive",id:"inactive"}]}}),[n,o]);return{fracFleetOptions:i.fracFleetOptions,formationOptions:i.formationOptions,padOptions:i.padOptions}};
2
2
  //# sourceMappingURL=useOptions.js.map