@corva/ui 3.22.3 → 3.22.5

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 (61) hide show
  1. package/cjs-bundle/components/Attachment/index.js +1 -1
  2. package/cjs-bundle/components/Attachment/index.js.map +1 -1
  3. package/cjs-bundle/components/Avatar/index.js +1 -1
  4. package/cjs-bundle/components/Comment/index.js +1 -1
  5. package/cjs-bundle/components/Comment/index.js.map +1 -1
  6. package/cjs-bundle/components/CommentInput/index.js +1 -1
  7. package/cjs-bundle/components/CommentInput/index.js.map +1 -1
  8. package/cjs-bundle/components/CopyToClipboard/CopyToClipboard.js +1 -1
  9. package/cjs-bundle/components/FeedItem/FeedItem.js +1 -1
  10. package/cjs-bundle/components/FeedItem/FeedItem.js.map +1 -1
  11. package/cjs-bundle/components/FeedItem/FeedItemEditProvider/FeedItemEditModal.js +1 -1
  12. package/cjs-bundle/components/FeedItem/FeedItemEditProvider/FeedItemEditModal.js.map +1 -1
  13. package/cjs-bundle/components/FeedItem/components/Reactions.js +1 -1
  14. package/cjs-bundle/components/FeedItem/components/Reactions.js.map +1 -1
  15. package/cjs-bundle/components/FilePreview/index.js +1 -1
  16. package/cjs-bundle/components/FilePreview/index.js.map +1 -1
  17. package/cjs-bundle/components/OffsetWellChips/Chip.js +1 -1
  18. package/cjs-bundle/components/OffsetWellPickerV2/components/Map/Map.js +1 -1
  19. package/cjs-bundle/components/OffsetWellPickerV2/components/Map/Map.js.map +1 -1
  20. package/cjs-bundle/components/PinnableFilters/effects/index.js +1 -1
  21. package/cjs-bundle/components/PinnableFilters/effects/index.js.map +1 -1
  22. package/cjs-bundle/components/WellSummary/WellSummaryItemValue.js +1 -1
  23. package/cjs-bundle/components/WellSummary/WellSummaryItemValue.js.map +1 -1
  24. package/cjs-bundle/componentsV2/Avatar/Avatar.js +1 -1
  25. package/cjs-bundle/componentsV2/Avatar/constants.js +1 -1
  26. package/cjs-bundle/config/highcharts/highcharts.js +1 -1
  27. package/cjs-bundle/config/highcharts/highcharts.js.map +1 -1
  28. package/cjs-bundle/utils/index.js +1 -1
  29. package/cjs-bundle/utils/index.js.map +1 -1
  30. package/cjs-bundle/utils/lasParser.js +1 -1
  31. package/cjs-bundle/utils/lasParser.js.map +1 -1
  32. package/cjs-bundle/utils/main.js +1 -1
  33. package/cjs-bundle/utils/main.js.map +1 -1
  34. package/cjs-bundle/utils/mapUnits.js +1 -1
  35. package/cjs-bundle/utils/mapUnits.js.map +1 -1
  36. package/cjs-bundle/utils/permissions.js +1 -1
  37. package/cjs-bundle/utils/permissions.js.map +1 -1
  38. package/components/OffsetWellPickerV2/components/Map/Map.js +1 -1
  39. package/components/OffsetWellPickerV2/components/Map/Map.js.map +1 -1
  40. package/components/PinnableFilters/effects/index.js +1 -1
  41. package/components/PinnableFilters/effects/index.js.map +1 -1
  42. package/componentsV2/CopyToClipboard/CopyToClipboard.js +1 -1
  43. package/config/highcharts/highcharts.d.ts.map +1 -1
  44. package/config/highcharts/highcharts.js +1 -1
  45. package/config/highcharts/highcharts.js.map +1 -1
  46. package/package.json +3 -3
  47. package/utils/lasParser.d.ts +2 -1
  48. package/utils/lasParser.js +1 -1
  49. package/utils/lasParser.js.map +1 -1
  50. package/utils/main.d.ts +53 -112
  51. package/utils/main.d.ts.map +1 -1
  52. package/utils/main.js +1 -1
  53. package/utils/main.js.map +1 -1
  54. package/utils/mapUnits.d.ts +1 -10
  55. package/utils/mapUnits.d.ts.map +1 -1
  56. package/utils/mapUnits.js +1 -1
  57. package/utils/mapUnits.js.map +1 -1
  58. package/utils/permissions.d.ts +2 -1
  59. package/utils/permissions.d.ts.map +1 -1
  60. package/utils/permissions.js +1 -1
  61. package/utils/permissions.js.map +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sources":["../../../src/utils/main.js"],"sourcesContent":["import FileSaver from 'file-saver';\nimport chroma from 'chroma-js';\nimport round from 'lodash/round';\nimport isNaN from 'lodash/isNaN';\nimport isNumber from 'lodash/isNumber';\n/**\n * TODO: html2canvas - is used in order to take snapshots for DOM elements.\n * It must be removed after moving snapshot functionality to the back-end\n */\nimport html2canvas from 'html2canvas';\nimport grey from '@material-ui/core/colors/grey';\nimport red from '@material-ui/core/colors/red';\nimport yellow from '@material-ui/core/colors/yellow';\nimport blue from '@material-ui/core/colors/blue';\nimport green from '@material-ui/core/colors/green';\n\nimport { SUPPORTED_DRILLING_OPERATIONS, DEFAULT_DRILLING_OPERATION_TYPE } from '~/constants/apps';\n\nconst grey500 = grey['500'];\nconst red500 = red['500'];\nconst yellow500 = yellow['500'];\nconst blue500 = blue['500'];\nconst green500 = green['500'];\n\nconst utils = {\n formatValuePrecision(value) {\n if (!Number.isFinite(value)) return value;\n\n const displayMorePrecise = value < 100 && value > -100;\n return displayMorePrecise ? value.formatNumeral('0,0.00') : value.formatNumeral('0,0.0');\n },\n\n downloadPDF(filename, pdfBlob) {\n const pdf = new File([pdfBlob], `${filename}.pdf`, {\n type: 'application/pdf;charset=utf-8',\n });\n FileSaver.saveAs(pdf);\n },\n\n /**\n * Unescape line break '\\n' symbols. Summary and description of App may contain escaped\n * single '\\\\n' or multiple '\\\\n\\\\n...' line break symbols.\n * @param {String} - String to unescape\n * @return {String} - Unescaped string\n */\n unescapeLineBreaks(string = '') {\n return string.replace(/\\\\n/g, '\\n');\n },\n\n /**\n * Convert dataURL to Blob object.\n * @param dataURL {String} - dataURL string to convert\n * @returns {Blob} - result Blob object\n */\n dataURLtoBlob(dataURL) {\n const byteString = window.atob(dataURL.split(',')[1]);\n const mimeString = dataURL.split(',')[0].split(':')[1].split(';')[0];\n const ab = new ArrayBuffer(byteString.length);\n const ia = new Uint8Array(ab);\n for (let i = 0; i < byteString.length; i += 1) {\n ia[i] = byteString.charCodeAt(i);\n }\n return new Blob([ab], { type: mimeString });\n },\n\n /**\n * Timer for code banchmarks\n * @param {String} name - bame of timer\n * @return {Object} - object with timer stop method\n */\n banchmarkTimer(name) {\n const start = new Date();\n return {\n stop() {\n const end = new Date();\n const time = end.getTime() - start.getTime();\n console.info('Timer:', name, 'finished in', time, 'ms'); // eslint-disable-line no-console\n },\n };\n },\n\n /**\n * Get percent value\n * @param {number} value - target value\n * @param {number} sum - base value\n * @return {number} - percentage\n */\n convertToPercent(value, sum) {\n return value && Number.isFinite(sum) && sum !== 0\n ? Math.round(((value * 100) / sum) * 100) / 100\n : 0;\n },\n\n /**\n * Gets average by each column in CSV\n * @param {String} csv - CSV\n * @return {Array} - first element is headers, second element is averages\n */\n getAverageByColumnsForCSV(csv) {\n const lines = csv.split('\\n');\n\n const headers = lines[0].split(',');\n const initAverages = lines[1].split(',').map(string => [this.parseNumberFromString(string)]);\n const linesFrequency = this.getLinesFrequency(lines.length);\n\n lines.shift(); // NOTE: Remove CSV headers\n\n const averages = lines\n .reduce((averagesAccum, line, index) => {\n if (index % linesFrequency === 0) {\n // NOTE: every 'linesFrequency' line\n const numbers = line.split(',').map(this.parseNumberFromString);\n\n return averagesAccum.map((averagesArr, i) => {\n const number = +numbers[i];\n return isNumber(number) && !isNaN(number) && number > 0\n ? [...averagesArr, number]\n : averagesArr;\n });\n }\n return averagesAccum;\n }, initAverages)\n .map(averagesArr => {\n const sum = averagesArr.reduce((a, b) => a + b);\n return sum / averagesArr.length;\n });\n\n const maxDigitsAfterComa = 5;\n\n return averages.map((average, index) => ({\n header: headers[index],\n value: round(average, maxDigitsAfterComa),\n }));\n },\n\n /**\n * Parse number from string, if not number - returns 0\n * @param {String} string - string that may contain number\n * @return {[type]} - parsed number or 0\n */\n parseNumberFromString(string) {\n const number = +string;\n return isNaN(number) ? 0 : number;\n },\n\n /**\n * Get lines friquency to get from CSV\n * Helps to get from 1000 to 9999 lines from CSV to preven complex calculations\n * @param {Number} linesAmount - lines amount in CSV\n * @return {Number} - fines frequency\n */\n getLinesFrequency(linesAmount) {\n const linesFrequency = 1;\n const linesAmountString = `${linesAmount}`;\n const maxDigits = 4; // NOTE: linesAmount <= 9999\n\n if (linesAmountString.length <= maxDigits) {\n return linesFrequency;\n }\n const amountOfDigitsAfterThird = linesAmountString.slice(maxDigits).length;\n const numberWithSameAmountOfZeroes = 10 ** amountOfDigitsAfterThird;\n return linesFrequency * numberWithSameAmountOfZeroes;\n },\n\n /**\n * Transform given string to a color (RGB)\n * @param {string} str\n * @returns {string}\n */\n getColorFromString(str) {\n return this.intToRGB(this.hashCode(str));\n },\n\n /**\n * Transform given number to a color (RGB)\n * @param i\n * @returns {string}\n * @private\n */\n intToRGB(i) {\n const c = (i & 0x00ffffff) // eslint-disable-line no-bitwise\n .toString(16)\n .toUpperCase();\n return '00000'.substring(0, 6 - c.length) + c;\n },\n\n /**\n * Transform given string to a hash code\n * @param str\n * @returns {number}\n * @private\n */\n hashCode(str) {\n let hash = 0;\n for (let i = 0; i < str.length; i += 1) {\n hash = str.charCodeAt(i) + ((hash << 5) - hash); // eslint-disable-line no-bitwise\n }\n return hash;\n },\n\n /**\n * Optimize event handler via throttling\n * @param obj - event emitter (must have addEventListener method)\n * @param type - event type\n * @param callback - event handler\n * @param ctx - context for event handler execution\n * @returns {function()} - unsubscribe function\n */\n throttledEventListener(obj, type, callback, ctx) {\n let running = false;\n\n const func = function eventListener() {\n if (running) return;\n running = true;\n window.requestAnimationFrame(() => {\n callback.call(ctx);\n running = false;\n });\n };\n\n obj.addEventListener(type, func);\n\n return () => {\n obj.removeEventListener(type, func);\n };\n },\n\n /**\n * Get a snapshot for any DOM element on the page\n * @param elemId {string} - dom element id\n * @returns {string} - data URL for snapshot\n */\n async getSnapshotForElement(elemId) {\n const elem = window.document.getElementById(elemId);\n if (!elem) return null;\n\n const { clientHeight: height, clientWidth: width } = elem;\n const canvas = await html2canvas(elem, { height, width, logging: false });\n return canvas.toDataURL();\n },\n\n getAssetStatusColor(status) {\n if (status === 'active') {\n return green500;\n } else if (status === 'complete') {\n return blue500;\n } else if (status === 'paused') {\n return yellow500;\n } else if (status === 'idle' || status === 'unknown') {\n return grey500;\n }\n return red500;\n },\n\n /**\n * Finds closest to value in array of numbers\n * Source: https://stackoverflow.com/a/19277804/8337033\n * @param {array} array - array to find closest to value\n * @param {number} value - value to which find closest in array\n * @return {number} - closest to value in array\n */\n closest(array, value) {\n return array.reduce((currentClosest, arrayItem) =>\n Math.abs(arrayItem - value) < Math.abs(currentClosest - value) ? arrayItem : currentClosest\n );\n },\n\n mathMax(a, b) {\n if (!Number.isFinite(a)) {\n return b;\n } else if (!Number.isFinite(b)) {\n return a;\n }\n return Math.max(a, b);\n },\n\n mathMin(a, b) {\n if (!Number.isFinite(a)) {\n return b;\n } else if (!Number.isFinite(b)) {\n return a;\n }\n return Math.min(a, b);\n },\n\n /**\n * Gets operation by operation type\n * @param {number|null} operationType - operation type\n * @return {object|undefined} operation - operation\n */\n getOperationByType(operationType) {\n return Object.values(SUPPORTED_DRILLING_OPERATIONS).find(\n ({ value }) => value === operationType || DEFAULT_DRILLING_OPERATION_TYPE\n );\n },\n\n getUserFullName(user) {\n return user ? `${user.first_name} ${user.last_name}` : '';\n },\n\n getNameInitials(name) {\n return name\n .split(' ')\n .slice(0, 2)\n .map(part => part.substr(0, 1))\n .join('');\n },\n\n getS3BucketName() {\n return process.env.REACT_APP_ENVIRONMENT === 'development' ||\n process.env.REACT_APP_ENVIRONMENT === 'qa'\n ? 'corva-files-qa'\n : 'corva-files';\n },\n\n getS3FileUrl(bucket, fileName) {\n return `https://${bucket}.s3.amazonaws.com/${fileName}`;\n },\n\n getFileNameWithExtensionFromPath(path = '') {\n return path.split('?')[0].replace(/^.*[\\\\/]/, '');\n },\n\n hexToRgbA(hex, alpha = 1) {\n const rgba = chroma(hex).rgba();\n rgba[rgba.length - 1] = alpha;\n return `rgba(${rgba.join(',')})`;\n },\n\n truncateString(str, limit) {\n return str.length > limit ? `${str.substr(0, limit - 1)}&hellip;` : str;\n },\n\n /**\n * Copies text to clipboard\n * @param {string} text - text to copy\n * @return {undefined}\n */\n copyToClipboard(text) {\n // NOTE: it doesn't work if page is served from insecure origin like http://app.local.corva.ai\n if (navigator.clipboard) {\n navigator.clipboard.writeText(text);\n return;\n }\n\n const textarea = document.createElement('textarea');\n textarea.textContent = text;\n document.body.appendChild(textarea);\n\n const selection = document.getSelection();\n const range = document.createRange();\n range.selectNode(textarea);\n selection.removeAllRanges();\n selection.addRange(range);\n\n document.execCommand('copy');\n\n selection.removeAllRanges();\n document.body.removeChild(textarea);\n },\n};\n\n/**\n * Enable that for \"HTML to image\" service\n */\nwindow.getSnapshotForElement = utils.getSnapshotForElement;\n\nexport default utils;\n"],"names":["grey500","grey","red500","red","yellow500","yellow","blue500","blue","green500","green","utils","formatValuePrecision","value","Number","isFinite","formatNumeral","downloadPDF","filename","pdfBlob","pdf","File","type","FileSaver","saveAs","unescapeLineBreaks","string","replace","dataURLtoBlob","dataURL","byteString","window","atob","split","mimeString","ab","ArrayBuffer","length","ia","Uint8Array","i","charCodeAt","Blob","banchmarkTimer","name","start","Date","stop","time","getTime","console","info","convertToPercent","sum","Math","round","getAverageByColumnsForCSV","csv","_this","this","lines","headers","initAverages","map","parseNumberFromString","linesFrequency","getLinesFrequency","shift","averages","reduce","averagesAccum","line","index","numbers","averagesArr","number","isNumber","isNaN","concat","_toConsumableArray","a","b","average","header","linesAmount","linesAmountString","amountOfDigitsAfterThird","slice","pow","getColorFromString","str","intToRGB","hashCode","c","toString","toUpperCase","substring","hash","throttledEventListener","obj","callback","ctx","running","func","requestAnimationFrame","call","addEventListener","removeEventListener","getSnapshotForElement","elemId","_asyncToGenerator","_regeneratorRuntime","mark","_callee","elem","height","width","canvas","wrap","_context","prev","next","document","getElementById","abrupt","clientHeight","clientWidth","html2canvas","logging","sent","toDataURL","getAssetStatusColor","status","closest","array","currentClosest","arrayItem","abs","mathMax","max","mathMin","min","getOperationByType","operationType","Object","values","SUPPORTED_DRILLING_OPERATIONS","find","_ref","DEFAULT_DRILLING_OPERATION_TYPE","getUserFullName","user","first_name","last_name","getNameInitials","part","substr","join","getS3BucketName","process","env","REACT_APP_ENVIRONMENT","getS3FileUrl","bucket","fileName","getFileNameWithExtensionFromPath","path","hexToRgbA","hex","alpha","rgba","chroma","truncateString","limit","copyToClipboard","text","navigator","clipboard","writeText","textarea","createElement","textContent","body","appendChild","selection","getSelection","range","createRange","selectNode","removeAllRanges","addRange","execCommand","removeChild"],"mappings":"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"}
1
+ {"version":3,"file":"main.js","sources":["../../../src/utils/main.js"],"sourcesContent":["import FileSaver from 'file-saver';\nimport chroma from 'chroma-js';\nimport round from 'lodash/round';\nimport isNaN from 'lodash/isNaN';\nimport isNumber from 'lodash/isNumber';\n/**\n * TODO: html2canvas - is used in order to take snapshots for DOM elements.\n * It must be removed after moving snapshot functionality to the back-end\n */\nimport html2canvas from 'html2canvas';\nimport grey from '@material-ui/core/colors/grey';\nimport red from '@material-ui/core/colors/red';\nimport yellow from '@material-ui/core/colors/yellow';\nimport blue from '@material-ui/core/colors/blue';\nimport green from '@material-ui/core/colors/green';\n\nimport { SUPPORTED_DRILLING_OPERATIONS, DEFAULT_DRILLING_OPERATION_TYPE } from '~/constants/apps';\n\nconst grey500 = grey['500'];\nconst red500 = red['500'];\nconst yellow500 = yellow['500'];\nconst blue500 = blue['500'];\nconst green500 = green['500'];\n\nexport const formatValuePrecision = value => {\n if (!Number.isFinite(value)) return value;\n\n const displayMorePrecise = value < 100 && value > -100;\n return displayMorePrecise ? value.formatNumeral('0,0.00') : value.formatNumeral('0,0.0');\n};\n\nexport const downloadPDF = (filename, pdfBlob) => {\n const pdf = new File([pdfBlob], `${filename}.pdf`, {\n type: 'application/pdf;charset=utf-8',\n });\n FileSaver.saveAs(pdf);\n};\n\n/**\n * Unescape line break '\\n' symbols. Summary and description of App may contain escaped\n * single '\\\\n' or multiple '\\\\n\\\\n...' line break symbols.\n * @param {String} - String to unescape\n * @return {String} - Unescaped string\n */\nexport const unescapeLineBreaks = (string = '') => {\n return string.replace(/\\\\n/g, '\\n');\n};\n\n/**\n * Convert dataURL to Blob object.\n * @param dataURL {String} - dataURL string to convert\n * @returns {Blob} - result Blob object\n */\nexport const dataURLtoBlob = dataURL => {\n const byteString = window.atob(dataURL.split(',')[1]);\n const mimeString = dataURL.split(',')[0].split(':')[1].split(';')[0];\n const ab = new ArrayBuffer(byteString.length);\n const ia = new Uint8Array(ab);\n for (let i = 0; i < byteString.length; i += 1) {\n ia[i] = byteString.charCodeAt(i);\n }\n return new Blob([ab], { type: mimeString });\n};\n\n/**\n * Timer for code banchmarks\n * @param {String} name - bame of timer\n * @return {Object} - object with timer stop method\n */\nexport const banchmarkTimer = name => {\n const start = new Date();\n return {\n stop() {\n const end = new Date();\n const time = end.getTime() - start.getTime();\n console.info('Timer:', name, 'finished in', time, 'ms'); // eslint-disable-line no-console\n },\n };\n};\n\n/**\n * Get percent value\n * @param {number} value - target value\n * @param {number} sum - base value\n * @return {number} - percentage\n */\nexport const convertToPercent = (value, sum) => {\n return value && Number.isFinite(sum) && sum !== 0\n ? Math.round(((value * 100) / sum) * 100) / 100\n : 0;\n};\n\n/**\n * Parse number from string, if not number - returns 0\n * @param {String} string - string that may contain number\n * @return {[type]} - parsed number or 0\n */\nexport const parseNumberFromString = string => {\n const number = +string;\n return isNaN(number) ? 0 : number;\n};\n\n/**\n * Get lines friquency to get from CSV\n * Helps to get from 1000 to 9999 lines from CSV to preven complex calculations\n * @param {Number} linesAmount - lines amount in CSV\n * @return {Number} - fines frequency\n */\nexport const getLinesFrequency = linesAmount => {\n const linesFrequency = 1;\n const linesAmountString = `${linesAmount}`;\n const maxDigits = 4; // NOTE: linesAmount <= 9999\n\n if (linesAmountString.length <= maxDigits) {\n return linesFrequency;\n }\n const amountOfDigitsAfterThird = linesAmountString.slice(maxDigits).length;\n const numberWithSameAmountOfZeroes = 10 ** amountOfDigitsAfterThird;\n return linesFrequency * numberWithSameAmountOfZeroes;\n};\n\n/**\n * Gets average by each column in CSV\n * @param {String} csv - CSV\n * @return {Array} - first element is headers, second element is averages\n */\nexport const getAverageByColumnsForCSV = csv => {\n const lines = csv.split('\\n');\n\n const headers = lines[0].split(',');\n const initAverages = lines[1].split(',').map(string => [parseNumberFromString(string)]);\n const linesFrequency = getLinesFrequency(lines.length);\n\n lines.shift(); // NOTE: Remove CSV headers\n\n const averages = lines\n .reduce((averagesAccum, line, index) => {\n if (index % linesFrequency === 0) {\n // NOTE: every 'linesFrequency' line\n const numbers = line.split(',').map(parseNumberFromString);\n\n return averagesAccum.map((averagesArr, i) => {\n const number = +numbers[i];\n return isNumber(number) && !isNaN(number) && number > 0\n ? [...averagesArr, number]\n : averagesArr;\n });\n }\n return averagesAccum;\n }, initAverages)\n .map(averagesArr => {\n const sum = averagesArr.reduce((a, b) => a + b);\n return sum / averagesArr.length;\n });\n\n const maxDigitsAfterComa = 5;\n\n return averages.map((average, index) => ({\n header: headers[index],\n value: round(average, maxDigitsAfterComa),\n }));\n};\n\n/**\n * Transform given number to a color (RGB)\n * @param i\n * @returns {string}\n * @private\n */\nexport const intToRGB = i => {\n const c = (i & 0x00ffffff) // eslint-disable-line no-bitwise\n .toString(16)\n .toUpperCase();\n return '00000'.substring(0, 6 - c.length) + c;\n};\n\n/**\n * Transform given string to a hash code\n * @param str\n * @returns {number}\n * @private\n */\nexport const hashCode = str => {\n let hash = 0;\n for (let i = 0; i < str.length; i += 1) {\n hash = str.charCodeAt(i) + ((hash << 5) - hash); // eslint-disable-line no-bitwise\n }\n return hash;\n};\n\n/**\n * Transform given string to a color (RGB)\n * @param {string} str\n * @returns {string}\n */\nexport const getColorFromString = str => {\n return intToRGB(hashCode(str));\n};\n\n/**\n * Optimize event handler via throttling\n * @param obj - event emitter (must have addEventListener method)\n * @param type - event type\n * @param callback - event handler\n * @param ctx - context for event handler execution\n * @returns {function()} - unsubscribe function\n */\nexport const throttledEventListener = (obj, type, callback, ctx) => {\n let running = false;\n\n const func = function eventListener() {\n if (running) return;\n running = true;\n window.requestAnimationFrame(() => {\n callback.call(ctx);\n running = false;\n });\n };\n\n obj.addEventListener(type, func);\n\n return () => {\n obj.removeEventListener(type, func);\n };\n};\n\n/**\n * Get a snapshot for any DOM element on the page\n * @param elemId {string} - dom element id\n * @returns {string} - data URL for snapshot\n */\nexport const getSnapshotForElement = async elemId => {\n const elem = window.document.getElementById(elemId);\n if (!elem) return null;\n\n const { clientHeight: height, clientWidth: width } = elem;\n const canvas = await html2canvas(elem, { height, width, logging: false });\n return canvas.toDataURL();\n};\n\nexport const getAssetStatusColor = status => {\n if (status === 'active') {\n return green500;\n } else if (status === 'complete') {\n return blue500;\n } else if (status === 'paused') {\n return yellow500;\n } else if (status === 'idle' || status === 'unknown') {\n return grey500;\n }\n return red500;\n};\n\n/**\n * Finds closest to value in array of numbers\n * Source: https://stackoverflow.com/a/19277804/8337033\n * @param {array} array - array to find closest to value\n * @param {number} value - value to which find closest in array\n * @return {number} - closest to value in array\n */\nexport const closest = (array, value) => {\n return array.reduce((currentClosest, arrayItem) =>\n Math.abs(arrayItem - value) < Math.abs(currentClosest - value) ? arrayItem : currentClosest\n );\n};\n\nexport const mathMax = (a, b) => {\n if (!Number.isFinite(a)) {\n return b;\n } else if (!Number.isFinite(b)) {\n return a;\n }\n return Math.max(a, b);\n};\n\nexport const mathMin = (a, b) => {\n if (!Number.isFinite(a)) {\n return b;\n } else if (!Number.isFinite(b)) {\n return a;\n }\n return Math.min(a, b);\n};\n\n/**\n * Gets operation by operation type\n * @param {number|null} operationType - operation type\n * @return {object|undefined} operation - operation\n */\nexport const getOperationByType = operationType => {\n return Object.values(SUPPORTED_DRILLING_OPERATIONS).find(\n ({ value }) => value === operationType || DEFAULT_DRILLING_OPERATION_TYPE\n );\n};\n\nexport const getUserFullName = user => {\n return user ? `${user.first_name} ${user.last_name}` : '';\n};\n\nexport const getNameInitials = name => {\n return name\n .split(' ')\n .slice(0, 2)\n .map(part => part.substr(0, 1))\n .join('');\n};\n\nexport const getS3BucketName = () => {\n return process.env.REACT_APP_ENVIRONMENT === 'development' ||\n process.env.REACT_APP_ENVIRONMENT === 'qa'\n ? 'corva-files-qa'\n : 'corva-files';\n};\n\nexport const getS3FileUrl = (bucket, fileName) => {\n return `https://${bucket}.s3.amazonaws.com/${fileName}`;\n};\n\nexport const getFileNameWithExtensionFromPath = (path = '') => {\n return path.split('?')[0].replace(/^.*[\\\\/]/, '');\n};\n\nexport const hexToRgbA = (hex, alpha = 1) => {\n const rgba = chroma(hex).rgba();\n rgba[rgba.length - 1] = alpha;\n return `rgba(${rgba.join(',')})`;\n};\n\nexport const truncateString = (str, limit) => {\n return str.length > limit ? `${str.substr(0, limit - 1)}&hellip;` : str;\n};\n\n/**\n * Copies text to clipboard\n * @param {string} text - text to copy\n * @return {undefined}\n */\nexport const copyToClipboard = text => {\n // NOTE: it doesn't work if page is served from insecure origin like http://app.local.corva.ai\n if (navigator.clipboard) {\n navigator.clipboard.writeText(text);\n return;\n }\n\n const textarea = document.createElement('textarea');\n textarea.textContent = text;\n document.body.appendChild(textarea);\n\n const selection = document.getSelection();\n const range = document.createRange();\n range.selectNode(textarea);\n selection.removeAllRanges();\n selection.addRange(range);\n\n document.execCommand('copy');\n\n selection.removeAllRanges();\n document.body.removeChild(textarea);\n};\n\nconst utils = {\n formatValuePrecision,\n downloadPDF,\n unescapeLineBreaks,\n dataURLtoBlob,\n banchmarkTimer,\n convertToPercent,\n getAverageByColumnsForCSV,\n getLinesFrequency,\n getColorFromString,\n intToRGB,\n hashCode,\n throttledEventListener,\n getSnapshotForElement,\n getAssetStatusColor,\n closest,\n mathMax,\n mathMin,\n getOperationByType,\n getUserFullName,\n getNameInitials,\n getS3BucketName,\n getS3FileUrl,\n getFileNameWithExtensionFromPath,\n hexToRgbA,\n truncateString,\n copyToClipboard,\n};\n\n/**\n * Enable that for \"HTML to image\" service\n */\nwindow.getSnapshotForElement = getSnapshotForElement;\n\nexport default utils;\n"],"names":["_ref","grey500","grey","red500","red","yellow500","yellow","blue500","blue","green500","green","formatValuePrecision","value","Number","isFinite","formatNumeral","downloadPDF","filename","pdfBlob","pdf","File","type","FileSaver","saveAs","unescapeLineBreaks","string","replace","dataURLtoBlob","dataURL","byteString","window","atob","split","mimeString","ab","ArrayBuffer","length","ia","Uint8Array","i","charCodeAt","Blob","banchmarkTimer","name","start","Date","stop","time","getTime","console","info","convertToPercent","sum","Math","round","parseNumberFromString","number","isNaN","getLinesFrequency","linesAmount","linesAmountString","amountOfDigitsAfterThird","slice","pow","getAverageByColumnsForCSV","csv","lines","headers","initAverages","map","linesFrequency","shift","averages","reduce","averagesAccum","line","index","numbers","averagesArr","isNumber","concat","_toConsumableArray","a","b","average","header","intToRGB","c","toString","toUpperCase","substring","hashCode","str","hash","getColorFromString","throttledEventListener","obj","callback","ctx","running","func","requestAnimationFrame","call","addEventListener","removeEventListener","getSnapshotForElement","_asyncToGenerator","_regeneratorRuntime","mark","elemId","elem","height","width","canvas","wrap","_context","prev","next","document","getElementById","abrupt","clientHeight","clientWidth","html2canvas","logging","sent","toDataURL","_callee","_x","apply","this","arguments","getAssetStatusColor","status","closest","array","currentClosest","arrayItem","abs","mathMax","max","mathMin","min","getOperationByType","operationType","Object","values","SUPPORTED_DRILLING_OPERATIONS","find","_ref2","DEFAULT_DRILLING_OPERATION_TYPE","getUserFullName","user","first_name","last_name","getNameInitials","part","substr","join","getS3BucketName","process","env","REACT_APP_ENVIRONMENT","getS3FileUrl","bucket","fileName","getFileNameWithExtensionFromPath","path","hexToRgbA","hex","alpha","rgba","chroma","truncateString","limit","copyToClipboard","text","navigator","clipboard","writeText","textarea","createElement","textContent","body","appendChild","selection","getSelection","range","createRange","selectNode","removeAllRanges","addRange","execCommand","removeChild","utils"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- "use strict";module.exports=function(e,t){return Object.keys(e).reduce((function(r,c){var n=e[c];return r[c]=n.label,"metrics"in n&&(r[c]+=" (".concat(t[n.metrics],")")),r}),{})};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=function(e,t){return Object.keys(e).reduce((function(r,c){var n=e[c];return r[c]=n.label,"metrics"in n&&(r[c]+=" (".concat(t[n.metrics],")")),r}),{})};exports.default=e,exports.mapUnits=e;
2
2
  //# sourceMappingURL=mapUnits.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mapUnits.js","sources":["../../../src/utils/mapUnits.js"],"sourcesContent":["/**\n * Map titles(labels) with respective metrics\n * @param {Object} data - object with titles/labels and metrics: { footage: {\n * label: 'Some text',\n * metrics: 'length',\n * } }\n * @param {Object} units - object with metrics: { length: 'meters' }\n * @return {Object} - Formatted object with titles(labels) and respective metrics\n */\n\nconst mapUnits = (data, units) =>\n Object.keys(data).reduce((acc, key) => {\n const field = data[key];\n acc[key] = field.label;\n\n if ('metrics' in field) {\n acc[key] += ` (${units[field.metrics]})`;\n }\n\n return acc;\n }, {});\n\nexport default mapUnits;\n"],"names":["data","units","Object","keys","reduce","acc","key","field","label","metrics"],"mappings":"4BAUiB,SAACA,EAAMC,GAAK,OAC3BC,OAAOC,KAAKH,GAAMI,QAAO,SAACC,EAAKC,GAC7B,IAAMC,EAAQP,EAAKM,GAOnB,OANAD,EAAIC,GAAOC,EAAMC,MAEb,YAAaD,IACfF,EAAIC,IAAaL,KAAAA,OAAAA,EAAMM,EAAME,SAAW,MAGnCJ,CACR,GAAE,CAAE,EAAC"}
1
+ {"version":3,"file":"mapUnits.js","sources":["../../../src/utils/mapUnits.js"],"sourcesContent":["/**\n * Map titles(labels) with respective metrics\n * @param {Object} data - object with titles/labels and metrics: { footage: {\n * label: 'Some text',\n * metrics: 'length',\n * } }\n * @param {Object} units - object with metrics: { length: 'meters' }\n * @return {Object} - Formatted object with titles(labels) and respective metrics\n */\n\nexport const mapUnits = (data, units) =>\n Object.keys(data).reduce((acc, key) => {\n const field = data[key];\n acc[key] = field.label;\n\n if ('metrics' in field) {\n acc[key] += ` (${units[field.metrics]})`;\n }\n\n return acc;\n }, {});\n\nexport default mapUnits;\n"],"names":["mapUnits","data","units","Object","keys","reduce","acc","key","field","label","metrics"],"mappings":"oEAUO,IAAMA,EAAW,SAACC,EAAMC,GAAK,OAClCC,OAAOC,KAAKH,GAAMI,QAAO,SAACC,EAAKC,GAC7B,IAAMC,EAAQP,EAAKM,GAOnB,OANAD,EAAIC,GAAOC,EAAMC,MAEb,YAAaD,IACfF,EAAIC,IAAaL,KAAAA,OAAAA,EAAMM,EAAME,SAAW,MAGnCJ,CACR,GAAE,CAAE,EAAC"}
@@ -1,2 +1,2 @@
1
- "use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var r=e(require("lodash/get"));function n(e){return"admin"===e.role}var t={is_admin:n,is_corva_admin:function(e){return n(e)&&"corva"===r.default(e,["company","provider"],null)}};function o(e,r){if(r in t)return t[r](e);throw new Error("There is no rule ".concat(r,", please check the spelling"))}module.exports=function(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return r.reduce((function(r,n){return r&&o(e,n)}),!0)};
1
+ "use strict";function e(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}Object.defineProperty(exports,"__esModule",{value:!0});var r=e(require("lodash/get"));function n(e){return"admin"===e.role}var t={is_admin:n,is_corva_admin:function(e){return n(e)&&"corva"===r.default(e,["company","provider"],null)}};function o(e,r){if(r in t)return t[r](e);throw new Error("There is no rule ".concat(r,", please check the spelling"))}function i(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];return r.reduce((function(r,n){return r&&o(e,n)}),!0)}exports.checkUserPermissions=i,exports.default=i;
2
2
  //# sourceMappingURL=permissions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.js","sources":["../../../src/utils/permissions.js"],"sourcesContent":["import get from 'lodash/get';\n\nfunction isAdmin(user) {\n return user.role === 'admin';\n}\n\nfunction isCorvaAdmin(user) {\n return isAdmin(user) && get(user, ['company', 'provider'], null) === 'corva';\n}\n\nconst PERMISSION_RULES = {\n is_admin: isAdmin,\n is_corva_admin: isCorvaAdmin,\n};\n\nfunction checkUserPermissionByKey(user, key) {\n if (key in PERMISSION_RULES) {\n return PERMISSION_RULES[key](user);\n }\n\n throw new Error(`There is no rule ${key}, please check the spelling`);\n}\n\nexport default function checkUserPermissions(user, permissions = []) {\n return permissions.reduce(\n (isAllowed, rule) => isAllowed && checkUserPermissionByKey(user, rule),\n true\n );\n}\n"],"names":["isAdmin","user","role","PERMISSION_RULES","is_admin","is_corva_admin","get","checkUserPermissionByKey","key","Error","permissions","reduce","isAllowed","rule"],"mappings":"oHAEA,SAASA,EAAQC,GACf,MAAqB,UAAdA,EAAKC,IACd,CAMA,IAAMC,EAAmB,CACvBC,SAAUJ,EACVK,eANF,SAAsBJ,GACpB,OAAOD,EAAQC,IAAsD,UAA7CK,EAAAA,QAAIL,EAAM,CAAC,UAAW,YAAa,KAC7D,GAOA,SAASM,EAAyBN,EAAMO,GACtC,GAAIA,KAAOL,EACT,OAAOA,EAAiBK,GAAKP,GAG/B,MAAM,IAAIQ,MAA0BD,oBAAAA,OAAAA,EAAiC,+BACvE,gBAEe,SAA8BP,GAAwB,IAAlBS,yDAAc,GAC/D,OAAOA,EAAYC,QACjB,SAACC,EAAWC,GAAI,OAAKD,GAAaL,EAAyBN,EAAMY,EAAK,IACtE,EAEJ"}
1
+ {"version":3,"file":"permissions.js","sources":["../../../src/utils/permissions.js"],"sourcesContent":["import get from 'lodash/get';\n\nfunction isAdmin(user) {\n return user.role === 'admin';\n}\n\nfunction isCorvaAdmin(user) {\n return isAdmin(user) && get(user, ['company', 'provider'], null) === 'corva';\n}\n\nconst PERMISSION_RULES = {\n is_admin: isAdmin,\n is_corva_admin: isCorvaAdmin,\n};\n\nfunction checkUserPermissionByKey(user, key) {\n if (key in PERMISSION_RULES) {\n return PERMISSION_RULES[key](user);\n }\n\n throw new Error(`There is no rule ${key}, please check the spelling`);\n}\n\nexport function checkUserPermissions(user, permissions = []) {\n return permissions.reduce(\n (isAllowed, rule) => isAllowed && checkUserPermissionByKey(user, rule),\n true\n );\n}\n\nexport default checkUserPermissions;\n"],"names":["isAdmin","user","role","PERMISSION_RULES","is_admin","is_corva_admin","get","checkUserPermissionByKey","key","Error","checkUserPermissions","permissions","reduce","isAllowed","rule"],"mappings":"2KAEA,SAASA,EAAQC,GACf,MAAqB,UAAdA,EAAKC,IACd,CAMA,IAAMC,EAAmB,CACvBC,SAAUJ,EACVK,eANF,SAAsBJ,GACpB,OAAOD,EAAQC,IAAsD,UAA7CK,EAAAA,QAAIL,EAAM,CAAC,UAAW,YAAa,KAC7D,GAOA,SAASM,EAAyBN,EAAMO,GACtC,GAAIA,KAAOL,EACT,OAAOA,EAAiBK,GAAKP,GAG/B,MAAM,IAAIQ,MAA0BD,oBAAAA,OAAAA,EAAiC,+BACvE,CAEO,SAASE,EAAqBT,GAAwB,IAAlBU,yDAAc,GACvD,OAAOA,EAAYC,QACjB,SAACC,EAAWC,GAAI,OAAKD,GAAaN,EAAyBN,EAAMa,EAAK,IACtE,EAEJ"}
@@ -1,2 +1,2 @@
1
- import r from"@babel/runtime/helpers/defineProperty";import e from"@babel/runtime/helpers/slicedToArray";import{memo as t,useRef as o,useMemo as n,useEffect as i,createElement as c}from"react";import s from"react-dom";import a from"prop-types";import l from"mapbox.js";import{get as u,sortBy as m}from"lodash";import{MuiThemeProvider as p}from"@material-ui/core/styles";import{usePrevious as f}from"../../effects/index.js";import d from"./Map.css.js";import{mapbox as h}from"../../../../utils/index.js";import{darkTheme as b}from"../../../../config/theme/index.js";import"@babel/runtime/helpers/typeof";import"highcharts";import"highcharts/highcharts-more";import"highcharts-multicolor-series";import"highcharts/modules/solid-gauge";import"highcharts/modules/heatmap";import"highcharts/modules/boost";import"highcharts/modules/exporting";import"highcharts/modules/xrange";import"highcharts/modules/dumbbell";import"highcharts/modules/pattern-fill";import"dompurify";import"../../../../config/mapbox/index.js";import"../../../../clients/subscriptions/constants.js";import"../../../../clients/subscriptions.v1.js";import"../../../../clients/subscriptions/subscriptions-client.factory.js";import"../../../../config/extendNative.js";import{jsx as g,jsxs as F}from"react/jsx-runtime";function v(r,e){var t=Object.keys(r);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(r);e&&(o=o.filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),t.push.apply(t,o)}return t}function y(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?v(Object(o),!0).forEach((function(t){r(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):v(Object(o)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(o,r))}))}return e}var j=h.isValidCoordinates,O=["#FF00FF","#F5BD80","#FF0000","#0080FF","#FF8000","#58ACFA","#FA58F4","#40FF00","#4B8A08","#40FF00","#D8F781"],k=[29.749907,-95.358421];function x(t){var a=t.subjectWell,h=t.wells,v=t.offsetWells,x=t.radius,N=t.subjectWellMarkerSize,P=t.wellMarkerSize,w=t.popUpFormatter,B=t.coordsDataPath,S=o(null),W=o(null),C=o(null),D=f(h),T=n((function(){return h.filter((function(r){return!a||a.id!==r.id}))}),[a,h]),M=n((function(){return a&&u(a,B)}),[a,B]),z=n((function(){var e=[],t=!1;T.forEach((function(r){"Null"===r.formation?t=!0:a&&a.formation===r.formation||e.includes(r.formation)||e.push(r.formation)}));var o=a?[a.formation].concat(m(e)):m(e);t&&!o.includes("Null")&&o.push("Null");var n=o.reduce((function(e,t,o){return y(y({},e),{},r({},t,O[o%O.length]))}),{});return[o,n]}),[a,T]),L=e(z,2),E=L[0],I=L[1];return i((function(){S.current=l.mapbox.map(S.current,null,{attributionControl:!1,scrollWheelZoom:!1,zoomControl:!1}).setView(k,1),l.control.zoom({position:"bottomright"}).addTo(S.current),l.mapbox.styleLayer("mapbox://styles/mapbox/dark-v9").addTo(S.current)}),[]),i((function(){S.current&&(W.current&&S.current.removeLayer(W.current),M?(W.current=l.circle(M,1609.34*x,{stroke:!1,fill:!0,fillOpacity:.2,fillColor:"#03BCD4",className:"circle_500"}),W.current.addTo(S.current)):W.current=null)}),[x,M]),i((function(){if(S.current){S.current.closePopup(),C.current&&C.current.removeFrom(S.current);var r=v.map((function(r){return r.id})),e=[];h.forEach((function(t){var o=u(t,B);if(o&&j(o)){var n=a&&a.id===t.id,i=r.includes(t.id),m=n?N:P,f=n||i?"#00FFFF":I[t.formation],d=n||i?1:.3,h=l.circleMarker(o,{radius:m,stroke:!1,fill:!0,fillOpacity:d,fillColor:f,className:"circle_500"});h.addEventListener("mouseover",(function(){if(w){var r=document.createElement("div"),e=c(w,{well:t,color:I[t.formation]});s.render(g(p,{theme:b,children:e}),r),l.popup().setLatLng(o).setContent(r).openOn(S.current)}})),e.push(h)}})),e.length&&(C.current=l.featureGroup(e),C.current.addTo(S.current)),setTimeout((function(){W.current&&W.current.bringToBack(),S.current&&W.current&&h!==D&&S.current.fitBounds(W.current.getBounds(),{padding:[5,5]})}),500)}}),[a,h,v,I]),i((function(){setTimeout((function(){W.current&&W.current.bringToBack(),a?S.current&&W.current&&S.current.fitBounds(W.current.getBounds(),{padding:[5,5]}):S.current&&C.current&&S.current.fitBounds(C.current.getBounds())}),500)}),[x,a]),F("div",{className:d.map,children:[g("div",{className:d.mapMain,ref:S}),F("div",{className:d.mapFooter,children:[v&&F("div",{className:d.mapFooterItem,children:[g("div",{className:d.mapFooterItemSquare,style:{backgroundColor:"#00FFFF"}}),g("div",{className:d.mapFooterItemLabel,children:"Selected Offset Wells"})]}),E.map((function(r){return F("div",{className:d.mapFooterItem,children:[g("div",{className:d.mapFooterItemSquare,style:{backgroundColor:I[r]}}),g("div",{className:d.mapFooterItemLabel,children:r})]},r)}))]})]})}x.propTypes={subjectWell:a.shape({id:a.number,formation:a.string}),wells:a.arrayOf(a.shape({})).isRequired,offsetWells:a.arrayOf(a.shape({})),radius:a.number.isRequired,subjectWellMarkerSize:a.number,wellMarkerSize:a.number,popUpFormatter:a.func,coordsDataPath:a.string},x.defaultProps={subjectWell:null,subjectWellMarkerSize:10,wellMarkerSize:5,popUpFormatter:null,coordsDataPath:"settings.top_hole.coordinates",offsetWells:null};var N=t(x);export{N as default};
1
+ import r from"@babel/runtime/helpers/defineProperty";import e from"@babel/runtime/helpers/slicedToArray";import{memo as t,useRef as o,useMemo as n,useEffect as i,createElement as c}from"react";import a from"react-dom";import s from"prop-types";import l from"mapbox.js";import{get as u,sortBy as m}from"lodash";import{MuiThemeProvider as p}from"@material-ui/core/styles";import{usePrevious as f}from"../../effects/index.js";import d from"./Map.css.js";import{mapbox as b}from"../../../../utils/index.js";import{darkTheme as h}from"../../../../config/theme/index.js";import"../../../../config/highcharts/highcharts.js";import"../../../../config/mapbox/index.js";import"../../../../clients/subscriptions/constants.js";import"../../../../clients/subscriptions.v1.js";import"../../../../clients/subscriptions/subscriptions-client.factory.js";import"../../../../config/extendNative.js";import{jsx as F,jsxs as v}from"react/jsx-runtime";function g(r,e){var t=Object.keys(r);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(r);e&&(o=o.filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),t.push.apply(t,o)}return t}function j(e){for(var t=1;t<arguments.length;t++){var o=null!=arguments[t]?arguments[t]:{};t%2?g(Object(o),!0).forEach((function(t){r(e,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(o)):g(Object(o)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(o,r))}))}return e}var y=b.isValidCoordinates,O=["#FF00FF","#F5BD80","#FF0000","#0080FF","#FF8000","#58ACFA","#FA58F4","#40FF00","#4B8A08","#40FF00","#D8F781"],k=[29.749907,-95.358421];function N(t){var s=t.subjectWell,b=t.wells,g=t.offsetWells,N=t.radius,P=t.subjectWellMarkerSize,w=t.wellMarkerSize,x=t.popUpFormatter,B=t.coordsDataPath,S=o(null),W=o(null),C=o(null),D=f(b),T=n((function(){return b.filter((function(r){return!s||s.id!==r.id}))}),[s,b]),M=n((function(){return s&&u(s,B)}),[s,B]),z=n((function(){var e=[],t=!1;T.forEach((function(r){"Null"===r.formation?t=!0:s&&s.formation===r.formation||e.includes(r.formation)||e.push(r.formation)}));var o=s?[s.formation].concat(m(e)):m(e);t&&!o.includes("Null")&&o.push("Null");var n=o.reduce((function(e,t,o){return j(j({},e),{},r({},t,O[o%O.length]))}),{});return[o,n]}),[s,T]),L=e(z,2),E=L[0],I=L[1];return i((function(){S.current=l.mapbox.map(S.current,null,{attributionControl:!1,scrollWheelZoom:!1,zoomControl:!1}).setView(k,1),l.control.zoom({position:"bottomright"}).addTo(S.current),l.mapbox.styleLayer("mapbox://styles/mapbox/dark-v9").addTo(S.current)}),[]),i((function(){S.current&&(W.current&&S.current.removeLayer(W.current),M?(W.current=l.circle(M,1609.34*N,{stroke:!1,fill:!0,fillOpacity:.2,fillColor:"#03BCD4",className:"circle_500"}),W.current.addTo(S.current)):W.current=null)}),[N,M]),i((function(){if(S.current){S.current.closePopup(),C.current&&C.current.removeFrom(S.current);var r=g.map((function(r){return r.id})),e=[];b.forEach((function(t){var o=u(t,B);if(o&&y(o)){var n=s&&s.id===t.id,i=r.includes(t.id),m=n?P:w,f=n||i?"#00FFFF":I[t.formation],d=n||i?1:.3,b=l.circleMarker(o,{radius:m,stroke:!1,fill:!0,fillOpacity:d,fillColor:f,className:"circle_500"});b.addEventListener("mouseover",(function(){if(x){var r=document.createElement("div"),e=c(x,{well:t,color:I[t.formation]});a.render(F(p,{theme:h,children:e}),r),l.popup().setLatLng(o).setContent(r).openOn(S.current)}})),e.push(b)}})),e.length&&(C.current=l.featureGroup(e),C.current.addTo(S.current)),setTimeout((function(){W.current&&W.current.bringToBack(),S.current&&W.current&&b!==D&&S.current.fitBounds(W.current.getBounds(),{padding:[5,5]})}),500)}}),[s,b,g,I]),i((function(){setTimeout((function(){W.current&&W.current.bringToBack(),s?S.current&&W.current&&S.current.fitBounds(W.current.getBounds(),{padding:[5,5]}):S.current&&C.current&&S.current.fitBounds(C.current.getBounds())}),500)}),[N,s]),v("div",{className:d.map,children:[F("div",{className:d.mapMain,ref:S}),v("div",{className:d.mapFooter,children:[g&&v("div",{className:d.mapFooterItem,children:[F("div",{className:d.mapFooterItemSquare,style:{backgroundColor:"#00FFFF"}}),F("div",{className:d.mapFooterItemLabel,children:"Selected Offset Wells"})]}),E.map((function(r){return v("div",{className:d.mapFooterItem,children:[F("div",{className:d.mapFooterItemSquare,style:{backgroundColor:I[r]}}),F("div",{className:d.mapFooterItemLabel,children:r})]},r)}))]})]})}N.propTypes={subjectWell:s.shape({id:s.number,formation:s.string}),wells:s.arrayOf(s.shape({})).isRequired,offsetWells:s.arrayOf(s.shape({})),radius:s.number.isRequired,subjectWellMarkerSize:s.number,wellMarkerSize:s.number,popUpFormatter:s.func,coordsDataPath:s.string},N.defaultProps={subjectWell:null,subjectWellMarkerSize:10,wellMarkerSize:5,popUpFormatter:null,coordsDataPath:"settings.top_hole.coordinates",offsetWells:null};var P=t(N);export{P as default};
2
2
  //# sourceMappingURL=Map.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Map.js","sources":["../../../../../src/components/OffsetWellPickerV2/components/Map/Map.js"],"sourcesContent":["import { createElement, memo, useRef, useEffect, useMemo } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport L from 'mapbox.js';\nimport { get, sortBy } from 'lodash';\nimport { MuiThemeProvider } from '@material-ui/core/styles';\n\nimport { usePrevious } from '../../effects';\n\nimport styles from './Map.css';\n\nimport { mapbox } from '~/utils';\nimport { theme } from '~/config';\n\nconst { isValidCoordinates } = mapbox;\n\nconst RADIUS_CIRCLE_COLOR = '#03BCD4';\nconst METERS_IN_MILE = 1609.34;\nconst DEFAULT_SUBJECT_WELL_MARKER_SIZE = 10;\nconst DEFAULT_WELL_MARKER_SIZE = 5;\nconst OFFSET_WELL_COLOR = '#00FFFF';\nconst COLORS = [\n '#FF00FF',\n '#F5BD80',\n '#FF0000',\n '#0080FF',\n '#FF8000',\n '#58ACFA',\n '#FA58F4',\n '#40FF00',\n '#4B8A08',\n '#40FF00',\n '#D8F781',\n];\n\nconst DEFAULT_COORDS = [29.749907, -95.358421]; // TX coordinates\n\n// eslint-disable-next-line no-unused-vars\nfunction WellsMap({\n subjectWell,\n wells,\n offsetWells,\n radius,\n subjectWellMarkerSize,\n wellMarkerSize,\n popUpFormatter,\n coordsDataPath,\n}) {\n const mapContainerRef = useRef(null);\n const radiusCircleRef = useRef(null);\n const markersGroupRef = useRef(null);\n\n const prevWells = usePrevious(wells);\n\n const restWells = useMemo(() => {\n return wells.filter(well => !subjectWell || subjectWell.id !== well.id);\n }, [subjectWell, wells]);\n\n const subjectWellCoords = useMemo(() => {\n return subjectWell && get(subjectWell, coordsDataPath);\n }, [subjectWell, coordsDataPath]);\n\n // NOTE: Get well marker colors according to its target formation\n const [formations, colorDict] = useMemo(() => {\n // NOTE: Determine well marker colors\n const restFormations = [];\n let hasNullFormation = false;\n\n restWells.forEach(well => {\n if (well.formation === 'Null') {\n hasNullFormation = true;\n } else if (\n (!subjectWell || subjectWell.formation !== well.formation) &&\n !restFormations.includes(well.formation)\n ) {\n restFormations.push(well.formation);\n }\n });\n\n const sortedFormations = subjectWell\n ? [subjectWell.formation].concat(sortBy(restFormations))\n : sortBy(restFormations);\n\n if (hasNullFormation && !sortedFormations.includes('Null')) {\n sortedFormations.push('Null');\n }\n\n const colors = sortedFormations.reduce(\n (result, item, idx) => ({\n ...result,\n [item]: COLORS[idx % COLORS.length],\n }),\n {}\n );\n\n return [sortedFormations, colors];\n }, [subjectWell, restWells]);\n\n // NOTE: Initialize map\n useEffect(() => {\n mapContainerRef.current = L.mapbox\n .map(mapContainerRef.current, null, {\n attributionControl: false,\n scrollWheelZoom: false,\n zoomControl: false,\n })\n .setView(DEFAULT_COORDS, 1);\n\n L.control\n .zoom({\n position: 'bottomright',\n })\n .addTo(mapContainerRef.current);\n L.mapbox.styleLayer('mapbox://styles/mapbox/dark-v9').addTo(mapContainerRef.current);\n }, []);\n\n // NOTE: Radius circle\n useEffect(() => {\n if (!mapContainerRef.current) {\n return;\n }\n\n // NOTE: Clean up\n if (radiusCircleRef.current) {\n mapContainerRef.current.removeLayer(radiusCircleRef.current);\n }\n\n if (!subjectWellCoords) {\n radiusCircleRef.current = null;\n return;\n }\n\n radiusCircleRef.current = L.circle(subjectWellCoords, radius * METERS_IN_MILE, {\n stroke: false,\n fill: true,\n fillOpacity: 0.2,\n fillColor: RADIUS_CIRCLE_COLOR,\n className: 'circle_500',\n });\n\n radiusCircleRef.current.addTo(mapContainerRef.current);\n }, [radius, subjectWellCoords]);\n\n // NOTE: Well markers\n useEffect(() => {\n if (!mapContainerRef.current) {\n return;\n }\n\n mapContainerRef.current.closePopup();\n\n // NOTE: Clean up\n if (markersGroupRef.current) {\n markersGroupRef.current.removeFrom(mapContainerRef.current);\n }\n\n const offsetWellIds = offsetWells.map(well => well.id);\n\n const markers = [];\n wells.forEach(well => {\n const coords = get(well, coordsDataPath);\n\n if (coords && isValidCoordinates(coords)) {\n const isWellSubject = subjectWell && subjectWell.id === well.id;\n const isWellOffset = offsetWellIds.includes(well.id);\n const r = isWellSubject ? subjectWellMarkerSize : wellMarkerSize;\n const color = isWellSubject || isWellOffset ? OFFSET_WELL_COLOR : colorDict[well.formation];\n const opacity = isWellSubject || isWellOffset ? 1 : 0.3;\n\n const newMarker = L.circleMarker(coords, {\n radius: r,\n stroke: false,\n fill: true,\n fillOpacity: opacity,\n fillColor: color,\n className: 'circle_500',\n });\n\n newMarker.addEventListener('mouseover', () => {\n if (popUpFormatter) {\n // Container to put React generated content in.\n const popUpContainer = document.createElement('div');\n const popUpContent = createElement(popUpFormatter, {\n well,\n color: colorDict[well.formation],\n });\n // NOTE: Custom popup may have buttons\n ReactDOM.render(\n <MuiThemeProvider theme={theme.darkTheme}>{popUpContent}</MuiThemeProvider>,\n popUpContainer\n );\n\n L.popup().setLatLng(coords).setContent(popUpContainer).openOn(mapContainerRef.current);\n }\n });\n\n markers.push(newMarker);\n }\n });\n\n if (markers.length) {\n markersGroupRef.current = L.featureGroup(markers);\n markersGroupRef.current.addTo(mapContainerRef.current);\n }\n\n setTimeout(() => {\n if (radiusCircleRef.current) {\n radiusCircleRef.current.bringToBack();\n }\n\n if (mapContainerRef.current && radiusCircleRef.current && wells !== prevWells) {\n mapContainerRef.current.fitBounds(radiusCircleRef.current.getBounds(), { padding: [5, 5] });\n }\n }, 500);\n }, [subjectWell, wells, offsetWells, colorDict]);\n\n useEffect(() => {\n setTimeout(() => {\n if (radiusCircleRef.current) {\n radiusCircleRef.current.bringToBack();\n }\n if (subjectWell) {\n if (mapContainerRef.current && radiusCircleRef.current) {\n mapContainerRef.current.fitBounds(radiusCircleRef.current.getBounds(), {\n padding: [5, 5],\n });\n }\n } else if (mapContainerRef.current && markersGroupRef.current) {\n mapContainerRef.current.fitBounds(markersGroupRef.current.getBounds());\n }\n }, 500);\n }, [radius, subjectWell]);\n\n return (\n <div className={styles.map}>\n <div className={styles.mapMain} ref={mapContainerRef} />\n\n <div className={styles.mapFooter}>\n {offsetWells && (\n <div className={styles.mapFooterItem}>\n <div\n className={styles.mapFooterItemSquare}\n style={{ backgroundColor: OFFSET_WELL_COLOR }}\n />\n <div className={styles.mapFooterItemLabel}>Selected Offset Wells</div>\n </div>\n )}\n\n {formations.map(item => (\n <div className={styles.mapFooterItem} key={item}>\n <div\n className={styles.mapFooterItemSquare}\n style={{ backgroundColor: colorDict[item] }}\n />\n <div className={styles.mapFooterItemLabel}>{item}</div>\n </div>\n ))}\n </div>\n </div>\n );\n}\n\nWellsMap.propTypes = {\n subjectWell: PropTypes.shape({\n id: PropTypes.number,\n formation: PropTypes.string,\n }),\n wells: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n offsetWells: PropTypes.arrayOf(PropTypes.shape({})),\n radius: PropTypes.number.isRequired,\n subjectWellMarkerSize: PropTypes.number,\n wellMarkerSize: PropTypes.number,\n popUpFormatter: PropTypes.func,\n coordsDataPath: PropTypes.string,\n};\n\nWellsMap.defaultProps = {\n subjectWell: null,\n subjectWellMarkerSize: DEFAULT_SUBJECT_WELL_MARKER_SIZE,\n wellMarkerSize: DEFAULT_WELL_MARKER_SIZE,\n popUpFormatter: null,\n coordsDataPath: 'settings.top_hole.coordinates',\n offsetWells: null,\n};\n\nexport default memo(WellsMap);\n"],"names":["isValidCoordinates","mapbox","COLORS","DEFAULT_COORDS","WellsMap","_ref","subjectWell","wells","offsetWells","radius","subjectWellMarkerSize","wellMarkerSize","popUpFormatter","coordsDataPath","mapContainerRef","useRef","radiusCircleRef","markersGroupRef","prevWells","usePrevious","restWells","useMemo","filter","well","id","subjectWellCoords","get","restFormations","hasNullFormation","forEach","formation","includes","push","sortedFormations","concat","sortBy","colors","reduce","result","item","idx","length","_useMemo2","_slicedToArray","_useMemo","formations","colorDict","useEffect","current","L","map","attributionControl","scrollWheelZoom","zoomControl","setView","control","zoom","position","addTo","styleLayer","removeLayer","circle","stroke","fill","fillOpacity","fillColor","className","closePopup","removeFrom","offsetWellIds","markers","coords","isWellSubject","isWellOffset","r","color","opacity","newMarker","circleMarker","addEventListener","popUpContainer","document","createElement","popUpContent","ReactDOM","render","_jsx","MuiThemeProvider","theme","children","popup","setLatLng","setContent","openOn","featureGroup","setTimeout","bringToBack","fitBounds","getBounds","padding","_jsxs","styles","mapMain","ref","mapFooter","mapFooterItem","mapFooterItemSquare","style","backgroundColor","mapFooterItemLabel","propTypes","PropTypes","shape","number","string","arrayOf","isRequired","func","defaultProps","memo"],"mappings":"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"}
1
+ {"version":3,"file":"Map.js","sources":["../../../../../src/components/OffsetWellPickerV2/components/Map/Map.js"],"sourcesContent":["import { createElement, memo, useRef, useEffect, useMemo } from 'react';\nimport ReactDOM from 'react-dom';\nimport PropTypes from 'prop-types';\nimport L from 'mapbox.js';\nimport { get, sortBy } from 'lodash';\nimport { MuiThemeProvider } from '@material-ui/core/styles';\n\nimport { usePrevious } from '../../effects';\n\nimport styles from './Map.css';\n\nimport { mapbox } from '~/utils';\nimport { theme } from '~/config';\n\nconst { isValidCoordinates } = mapbox;\n\nconst RADIUS_CIRCLE_COLOR = '#03BCD4';\nconst METERS_IN_MILE = 1609.34;\nconst DEFAULT_SUBJECT_WELL_MARKER_SIZE = 10;\nconst DEFAULT_WELL_MARKER_SIZE = 5;\nconst OFFSET_WELL_COLOR = '#00FFFF';\nconst COLORS = [\n '#FF00FF',\n '#F5BD80',\n '#FF0000',\n '#0080FF',\n '#FF8000',\n '#58ACFA',\n '#FA58F4',\n '#40FF00',\n '#4B8A08',\n '#40FF00',\n '#D8F781',\n];\n\nconst DEFAULT_COORDS = [29.749907, -95.358421]; // TX coordinates\n\n// eslint-disable-next-line no-unused-vars\nfunction WellsMap({\n subjectWell,\n wells,\n offsetWells,\n radius,\n subjectWellMarkerSize,\n wellMarkerSize,\n popUpFormatter,\n coordsDataPath,\n}) {\n const mapContainerRef = useRef(null);\n const radiusCircleRef = useRef(null);\n const markersGroupRef = useRef(null);\n\n const prevWells = usePrevious(wells);\n\n const restWells = useMemo(() => {\n return wells.filter(well => !subjectWell || subjectWell.id !== well.id);\n }, [subjectWell, wells]);\n\n const subjectWellCoords = useMemo(() => {\n return subjectWell && get(subjectWell, coordsDataPath);\n }, [subjectWell, coordsDataPath]);\n\n // NOTE: Get well marker colors according to its target formation\n const [formations, colorDict] = useMemo(() => {\n // NOTE: Determine well marker colors\n const restFormations = [];\n let hasNullFormation = false;\n\n restWells.forEach(well => {\n if (well.formation === 'Null') {\n hasNullFormation = true;\n } else if (\n (!subjectWell || subjectWell.formation !== well.formation) &&\n !restFormations.includes(well.formation)\n ) {\n restFormations.push(well.formation);\n }\n });\n\n const sortedFormations = subjectWell\n ? [subjectWell.formation].concat(sortBy(restFormations))\n : sortBy(restFormations);\n\n if (hasNullFormation && !sortedFormations.includes('Null')) {\n sortedFormations.push('Null');\n }\n\n const colors = sortedFormations.reduce(\n (result, item, idx) => ({\n ...result,\n [item]: COLORS[idx % COLORS.length],\n }),\n {}\n );\n\n return [sortedFormations, colors];\n }, [subjectWell, restWells]);\n\n // NOTE: Initialize map\n useEffect(() => {\n mapContainerRef.current = L.mapbox\n .map(mapContainerRef.current, null, {\n attributionControl: false,\n scrollWheelZoom: false,\n zoomControl: false,\n })\n .setView(DEFAULT_COORDS, 1);\n\n L.control\n .zoom({\n position: 'bottomright',\n })\n .addTo(mapContainerRef.current);\n L.mapbox.styleLayer('mapbox://styles/mapbox/dark-v9').addTo(mapContainerRef.current);\n }, []);\n\n // NOTE: Radius circle\n useEffect(() => {\n if (!mapContainerRef.current) {\n return;\n }\n\n // NOTE: Clean up\n if (radiusCircleRef.current) {\n mapContainerRef.current.removeLayer(radiusCircleRef.current);\n }\n\n if (!subjectWellCoords) {\n radiusCircleRef.current = null;\n return;\n }\n\n radiusCircleRef.current = L.circle(subjectWellCoords, radius * METERS_IN_MILE, {\n stroke: false,\n fill: true,\n fillOpacity: 0.2,\n fillColor: RADIUS_CIRCLE_COLOR,\n className: 'circle_500',\n });\n\n radiusCircleRef.current.addTo(mapContainerRef.current);\n }, [radius, subjectWellCoords]);\n\n // NOTE: Well markers\n useEffect(() => {\n if (!mapContainerRef.current) {\n return;\n }\n\n mapContainerRef.current.closePopup();\n\n // NOTE: Clean up\n if (markersGroupRef.current) {\n markersGroupRef.current.removeFrom(mapContainerRef.current);\n }\n\n const offsetWellIds = offsetWells.map(well => well.id);\n\n const markers = [];\n wells.forEach(well => {\n const coords = get(well, coordsDataPath);\n\n if (coords && isValidCoordinates(coords)) {\n const isWellSubject = subjectWell && subjectWell.id === well.id;\n const isWellOffset = offsetWellIds.includes(well.id);\n const r = isWellSubject ? subjectWellMarkerSize : wellMarkerSize;\n const color = isWellSubject || isWellOffset ? OFFSET_WELL_COLOR : colorDict[well.formation];\n const opacity = isWellSubject || isWellOffset ? 1 : 0.3;\n\n const newMarker = L.circleMarker(coords, {\n radius: r,\n stroke: false,\n fill: true,\n fillOpacity: opacity,\n fillColor: color,\n className: 'circle_500',\n });\n\n newMarker.addEventListener('mouseover', () => {\n if (popUpFormatter) {\n // Container to put React generated content in.\n const popUpContainer = document.createElement('div');\n const popUpContent = createElement(popUpFormatter, {\n well,\n color: colorDict[well.formation],\n });\n // NOTE: Custom popup may have buttons\n ReactDOM.render(\n <MuiThemeProvider theme={theme.darkTheme}>{popUpContent}</MuiThemeProvider>,\n popUpContainer\n );\n\n L.popup().setLatLng(coords).setContent(popUpContainer).openOn(mapContainerRef.current);\n }\n });\n\n markers.push(newMarker);\n }\n });\n\n if (markers.length) {\n markersGroupRef.current = L.featureGroup(markers);\n markersGroupRef.current.addTo(mapContainerRef.current);\n }\n\n setTimeout(() => {\n if (radiusCircleRef.current) {\n radiusCircleRef.current.bringToBack();\n }\n\n if (mapContainerRef.current && radiusCircleRef.current && wells !== prevWells) {\n mapContainerRef.current.fitBounds(radiusCircleRef.current.getBounds(), { padding: [5, 5] });\n }\n }, 500);\n }, [subjectWell, wells, offsetWells, colorDict]);\n\n useEffect(() => {\n setTimeout(() => {\n if (radiusCircleRef.current) {\n radiusCircleRef.current.bringToBack();\n }\n if (subjectWell) {\n if (mapContainerRef.current && radiusCircleRef.current) {\n mapContainerRef.current.fitBounds(radiusCircleRef.current.getBounds(), {\n padding: [5, 5],\n });\n }\n } else if (mapContainerRef.current && markersGroupRef.current) {\n mapContainerRef.current.fitBounds(markersGroupRef.current.getBounds());\n }\n }, 500);\n }, [radius, subjectWell]);\n\n return (\n <div className={styles.map}>\n <div className={styles.mapMain} ref={mapContainerRef} />\n\n <div className={styles.mapFooter}>\n {offsetWells && (\n <div className={styles.mapFooterItem}>\n <div\n className={styles.mapFooterItemSquare}\n style={{ backgroundColor: OFFSET_WELL_COLOR }}\n />\n <div className={styles.mapFooterItemLabel}>Selected Offset Wells</div>\n </div>\n )}\n\n {formations.map(item => (\n <div className={styles.mapFooterItem} key={item}>\n <div\n className={styles.mapFooterItemSquare}\n style={{ backgroundColor: colorDict[item] }}\n />\n <div className={styles.mapFooterItemLabel}>{item}</div>\n </div>\n ))}\n </div>\n </div>\n );\n}\n\nWellsMap.propTypes = {\n subjectWell: PropTypes.shape({\n id: PropTypes.number,\n formation: PropTypes.string,\n }),\n wells: PropTypes.arrayOf(PropTypes.shape({})).isRequired,\n offsetWells: PropTypes.arrayOf(PropTypes.shape({})),\n radius: PropTypes.number.isRequired,\n subjectWellMarkerSize: PropTypes.number,\n wellMarkerSize: PropTypes.number,\n popUpFormatter: PropTypes.func,\n coordsDataPath: PropTypes.string,\n};\n\nWellsMap.defaultProps = {\n subjectWell: null,\n subjectWellMarkerSize: DEFAULT_SUBJECT_WELL_MARKER_SIZE,\n wellMarkerSize: DEFAULT_WELL_MARKER_SIZE,\n popUpFormatter: null,\n coordsDataPath: 'settings.top_hole.coordinates',\n offsetWells: null,\n};\n\nexport default memo(WellsMap);\n"],"names":["isValidCoordinates","mapbox","COLORS","DEFAULT_COORDS","WellsMap","_ref","subjectWell","wells","offsetWells","radius","subjectWellMarkerSize","wellMarkerSize","popUpFormatter","coordsDataPath","mapContainerRef","useRef","radiusCircleRef","markersGroupRef","prevWells","usePrevious","restWells","useMemo","filter","well","id","subjectWellCoords","get","restFormations","hasNullFormation","forEach","formation","includes","push","sortedFormations","concat","sortBy","colors","reduce","result","item","idx","length","_useMemo2","_slicedToArray","_useMemo","formations","colorDict","useEffect","current","L","map","attributionControl","scrollWheelZoom","zoomControl","setView","control","zoom","position","addTo","styleLayer","removeLayer","circle","stroke","fill","fillOpacity","fillColor","className","closePopup","removeFrom","offsetWellIds","markers","coords","isWellSubject","isWellOffset","r","color","opacity","newMarker","circleMarker","addEventListener","popUpContainer","document","createElement","popUpContent","ReactDOM","render","_jsx","MuiThemeProvider","theme","children","popup","setLatLng","setContent","openOn","featureGroup","setTimeout","bringToBack","fitBounds","getBounds","padding","_jsxs","styles","mapMain","ref","mapFooter","mapFooterItem","mapFooterItemSquare","style","backgroundColor","mapFooterItemLabel","propTypes","PropTypes","shape","number","string","arrayOf","isRequired","func","defaultProps","memo"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import t from"@babel/runtime/helpers/defineProperty";import r from"@babel/runtime/helpers/slicedToArray";import{useState as e,useEffect as i,useRef as o}from"react";import n from"react-dom";import{isEqual as s}from"lodash";import{MuiThemeProvider as l}from"@material-ui/core/styles";import c from"../components/FiltersToggler.js";import{getStartComponent as u,getMiddleComponent as m,getEndComponents as p}from"../utils.js";import{LARGE_SIZE_LAYOUT as a,MEDIUM_SIZE_LAYOUT as d,SMALL_SIZE_LAYOUT as h}from"../constants.js";import{darkTheme as f}from"../../../config/theme/index.js";import"@babel/runtime/helpers/typeof";import"highcharts";import"highcharts/highcharts-more";import"highcharts-multicolor-series";import"highcharts/modules/solid-gauge";import"highcharts/modules/heatmap";import"highcharts/modules/boost";import"highcharts/modules/exporting";import"highcharts/modules/xrange";import"highcharts/modules/dumbbell";import"highcharts/modules/pattern-fill";import"dompurify";import"../../../config/mapbox/index.js";import"../../../clients/subscriptions/constants.js";import"../../../clients/subscriptions.v1.js";import"../../../clients/subscriptions/subscriptions-client.factory.js";import"../../../config/extendNative.js";import{jsx as v}from"react/jsx-runtime";function b(t,r){var e=Object.keys(t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(t);r&&(i=i.filter((function(r){return Object.getOwnPropertyDescriptor(t,r).enumerable}))),e.push.apply(e,i)}return e}function g(r){for(var e=1;e<arguments.length;e++){var i=null!=arguments[e]?arguments[e]:{};e%2?b(Object(i),!0).forEach((function(e){t(r,e,i[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(i)):b(Object(i)).forEach((function(t){Object.defineProperty(r,t,Object.getOwnPropertyDescriptor(i,t))}))}return r}function y(t,o,n,s){var l=e(null),c=r(l,2),f=c[0],v=c[1];return i((function(){if(s&&o){var r=u(t),e=m(t),i=p(t),l=r&&e&&!i,c=r&&!e&&i,f=r&&e&&i;if(r&&!e&&!i){var b=o[r.key];if(b<=s)return void v(a);if(b<=s/2)return void v(d)}else if(l||c){var g=o[r.key],y=l?o[e.key]:o[i.key];if(g+y<=s)return void v(a);if(n+y<=s)return void v(d)}else if(f){var j=o[r.key],O=o[e.key],k=o[i.key];if(j+O+k<=s)return void v(a);if(n+O+k<=s)return void v(d);if(n+k<=s)return void v(h)}v(h)}}),[o,s]),f}function j(n){var l=o(),c=e(null),u=r(c,2),m=u[0],p=u[1],a=o({}),d=n.filter((function(t){return!!t})),h=v("div",{ref:l,style:{position:"absolute",width:0,height:0,overflow:"hidden"},children:d.map((function(t,r){return v("div",{"data-key":null==t?void 0:t.key,style:{position:"absolute"},children:t},r)}))});return i((function(){var r;if(!s(d,a.current)){var e=Array.from(null===(r=l.current)||void 0===r?void 0:r.childNodes).reduce((function(r,e){var i,o=null==e||null===(i=e.getAttribute)||void 0===i?void 0:i.call(e,"data-key"),n=null==e?void 0:e.getBoundingClientRect().width;return g(g({},r),{},t({},o,n))}),{});Object.values(e).length===d.length&&(s(m,e)||p(e)),a.current=d}})),{componentsWidth:m,hiddenElements:h}}function O(){var t=e(null),o=r(t,2),s=o[0],u=o[1];return i((function(){var t=document.createElement("div");t.style.position="absolute",t.style.visibility="hidden",document.body.appendChild(t),n.render(v(l,{theme:f,children:v(c,{})}),t,(function(){var r=t.getBoundingClientRect();t.remove(),u(r.width)}))}),[]),s}export{O as useAppFilterTogglerWidth,j as useComonentsWidth,y as useFilterLayout};
1
+ import e from"@babel/runtime/helpers/defineProperty";import t from"@babel/runtime/helpers/slicedToArray";import{useState as r,useEffect as i,useRef as n}from"react";import o from"react-dom";import{isEqual as c}from"lodash";import{MuiThemeProvider as s}from"@material-ui/core/styles";import l from"../components/FiltersToggler.js";import{getStartComponent as u,getMiddleComponent as f,getEndComponents as d}from"../utils.js";import{LARGE_SIZE_LAYOUT as a,MEDIUM_SIZE_LAYOUT as p,SMALL_SIZE_LAYOUT as m}from"../constants.js";import{darkTheme as v}from"../../../config/theme/index.js";import"../../../config/highcharts/highcharts.js";import"../../../config/mapbox/index.js";import"../../../clients/subscriptions/constants.js";import"../../../clients/subscriptions.v1.js";import"../../../clients/subscriptions/subscriptions-client.factory.js";import"../../../config/extendNative.js";import{jsx as y}from"react/jsx-runtime";function h(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);t&&(i=i.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,i)}return r}function b(t){for(var r=1;r<arguments.length;r++){var i=null!=arguments[r]?arguments[r]:{};r%2?h(Object(i),!0).forEach((function(r){e(t,r,i[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(i)):h(Object(i)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(i,e))}))}return t}function g(e,n,o,c){var s=r(null),l=t(s,2),v=l[0],y=l[1];return i((function(){if(c&&n){var t=u(e),r=f(e),i=d(e),s=t&&r&&!i,l=t&&!r&&i,v=t&&r&&i;if(t&&!r&&!i){var h=n[t.key];if(h<=c)return void y(a);if(h<=c/2)return void y(p)}else if(s||l){var b=n[t.key],g=s?n[r.key]:n[i.key];if(b+g<=c)return void y(a);if(o+g<=c)return void y(p)}else if(v){var j=n[t.key],O=n[r.key],k=n[i.key];if(j+O+k<=c)return void y(a);if(o+O+k<=c)return void y(p);if(o+k<=c)return void y(m)}y(m)}}),[n,c]),v}function j(o){var s=n(),l=r(null),u=t(l,2),f=u[0],d=u[1],a=n({}),p=o.filter((function(e){return!!e})),m=y("div",{ref:s,style:{position:"absolute",width:0,height:0,overflow:"hidden"},children:p.map((function(e,t){return y("div",{"data-key":null==e?void 0:e.key,style:{position:"absolute"},children:e},t)}))});return i((function(){var t;if(!c(p,a.current)){var r=Array.from(null===(t=s.current)||void 0===t?void 0:t.childNodes).reduce((function(t,r){var i,n=null==r||null===(i=r.getAttribute)||void 0===i?void 0:i.call(r,"data-key"),o=null==r?void 0:r.getBoundingClientRect().width;return b(b({},t),{},e({},n,o))}),{});Object.values(r).length===p.length&&(c(f,r)||d(r)),a.current=p}})),{componentsWidth:f,hiddenElements:m}}function O(){var e=r(null),n=t(e,2),c=n[0],u=n[1];return i((function(){var e=document.createElement("div");e.style.position="absolute",e.style.visibility="hidden",document.body.appendChild(e),o.render(y(s,{theme:v,children:y(l,{})}),e,(function(){var t=e.getBoundingClientRect();e.remove(),u(t.width)}))}),[]),c}export{O as useAppFilterTogglerWidth,j as useComonentsWidth,g as useFilterLayout};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../src/components/PinnableFilters/effects/index.js"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport ReactDOM from 'react-dom';\nimport { isEqual } from 'lodash';\nimport { MuiThemeProvider } from '@material-ui/core/styles';\n\nimport FiltersToggler from '../components/FiltersToggler';\nimport { getEndComponents, getMiddleComponent, getStartComponent } from '../utils';\nimport { LARGE_SIZE_LAYOUT, MEDIUM_SIZE_LAYOUT, SMALL_SIZE_LAYOUT } from '../constants';\n\nimport { theme } from '~/config';\n\n// NOTE: Determine layout according to the width of elements\nexport function useFilterLayout(components, componentsWidth, appFilterTogglerWidth, appWidth) {\n const [layout, setLayout] = useState(null);\n\n useEffect(() => {\n if (!appWidth || !componentsWidth) {\n return;\n }\n\n const filtersComponent = getStartComponent(components);\n const goalComponent = getMiddleComponent(components);\n const switchComponent = getEndComponents(components);\n\n const hasFiltersOnly = filtersComponent && !goalComponent && !switchComponent;\n const hasFiltersAndGoals = filtersComponent && goalComponent && !switchComponent;\n const hasFiltersAndSwitch = filtersComponent && !goalComponent && switchComponent;\n const hasAll = filtersComponent && goalComponent && switchComponent;\n\n if (hasFiltersOnly) {\n const filtersWidth = componentsWidth[filtersComponent.key];\n\n if (filtersWidth <= appWidth) {\n setLayout(LARGE_SIZE_LAYOUT);\n return;\n }\n\n if (filtersWidth <= appWidth / 2) {\n setLayout(MEDIUM_SIZE_LAYOUT);\n return;\n }\n } else if (hasFiltersAndGoals || hasFiltersAndSwitch) {\n const startWidth = componentsWidth[filtersComponent.key];\n const endWidth = hasFiltersAndGoals\n ? componentsWidth[goalComponent.key]\n : componentsWidth[switchComponent.key];\n\n if (startWidth + endWidth <= appWidth) {\n setLayout(LARGE_SIZE_LAYOUT);\n return;\n }\n\n if (appFilterTogglerWidth + endWidth <= appWidth) {\n setLayout(MEDIUM_SIZE_LAYOUT);\n return;\n }\n } else if (hasAll) {\n const startWidth = componentsWidth[filtersComponent.key];\n const middleWidth = componentsWidth[goalComponent.key];\n const endWidth = componentsWidth[switchComponent.key];\n\n if (startWidth + middleWidth + endWidth <= appWidth) {\n setLayout(LARGE_SIZE_LAYOUT);\n return;\n }\n\n if (appFilterTogglerWidth + middleWidth + endWidth <= appWidth) {\n setLayout(MEDIUM_SIZE_LAYOUT);\n return;\n }\n\n if (appFilterTogglerWidth + endWidth <= appWidth) {\n setLayout(SMALL_SIZE_LAYOUT);\n return;\n }\n }\n\n setLayout(SMALL_SIZE_LAYOUT);\n }, [componentsWidth, appWidth]);\n\n return layout;\n}\n\n// NOTE: Calculate the width of child components here\nexport function useComonentsWidth(components) {\n // const widthRef = useRef({});\n const hiddenElementsRef = useRef();\n const [widthDict, setWidthDict] = useState(null);\n const prevComponentsRef = useRef({});\n\n const validComponents = components.filter(component => !!component);\n const hiddenElements = (\n <div\n ref={hiddenElementsRef}\n style={{ position: 'absolute', width: 0, height: 0, overflow: 'hidden' }}\n >\n {validComponents.map((component, index) => {\n return (\n // eslint-disable-next-line react/no-array-index-key\n <div key={index} data-key={component?.key} style={{ position: 'absolute' }}>\n {component}\n </div>\n );\n })}\n </div>\n );\n\n // NOTE: Calcualte width of each components\n useEffect(() => {\n // NOTE: Don't calcuate width again\n if (isEqual(validComponents, prevComponentsRef.current)) {\n return;\n }\n\n const nodesArray = Array.from(hiddenElementsRef.current?.childNodes);\n const sizeMap = nodesArray.reduce((acc, node) => {\n const key = node?.getAttribute?.('data-key');\n const value = node?.getBoundingClientRect().width;\n\n return {\n ...acc,\n [key]: value,\n };\n }, {});\n\n if (Object.values(sizeMap).length === validComponents.length) {\n if (!isEqual(widthDict, sizeMap)) {\n setWidthDict(sizeMap);\n }\n }\n\n prevComponentsRef.current = validComponents;\n });\n\n return { componentsWidth: widthDict, hiddenElements };\n}\n\n// NOTE: Calculate the width of Toggler Component\nexport function useAppFilterTogglerWidth() {\n const [width, setWidth] = useState(null);\n\n useEffect(() => {\n const element = document.createElement('div');\n element.style.position = 'absolute';\n element.style.visibility = 'hidden';\n document.body.appendChild(element);\n\n ReactDOM.render(\n <MuiThemeProvider theme={theme.darkTheme}>\n <FiltersToggler />\n </MuiThemeProvider>,\n element,\n () => {\n const dims = element.getBoundingClientRect();\n element.remove();\n setWidth(dims.width);\n }\n );\n }, []);\n\n return width;\n}\n"],"names":["useFilterLayout","components","componentsWidth","appFilterTogglerWidth","appWidth","useState","_useState2","_slicedToArray","_useState","layout","setLayout","useEffect","filtersComponent","getStartComponent","goalComponent","getMiddleComponent","switchComponent","getEndComponents","hasFiltersAndGoals","hasFiltersAndSwitch","hasAll","filtersWidth","key","LARGE_SIZE_LAYOUT","MEDIUM_SIZE_LAYOUT","startWidth","endWidth","middleWidth","SMALL_SIZE_LAYOUT","useComonentsWidth","hiddenElementsRef","useRef","_useState4","_useState3","widthDict","setWidthDict","prevComponentsRef","validComponents","filter","component","hiddenElements","_jsx","ref","style","position","width","height","overflow","children","map","index","_hiddenElementsRef$cu","isEqual","current","sizeMap","Array","from","childNodes","reduce","acc","node","_node$getAttribute","getAttribute","call","value","getBoundingClientRect","_objectSpread","_defineProperty","Object","values","length","useAppFilterTogglerWidth","_useState6","_useState5","setWidth","element","document","createElement","visibility","body","appendChild","ReactDOM","render","MuiThemeProvider","theme","FiltersToggler","dims","remove"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../src/components/PinnableFilters/effects/index.js"],"sourcesContent":["import { useEffect, useRef, useState } from 'react';\nimport ReactDOM from 'react-dom';\nimport { isEqual } from 'lodash';\nimport { MuiThemeProvider } from '@material-ui/core/styles';\n\nimport FiltersToggler from '../components/FiltersToggler';\nimport { getEndComponents, getMiddleComponent, getStartComponent } from '../utils';\nimport { LARGE_SIZE_LAYOUT, MEDIUM_SIZE_LAYOUT, SMALL_SIZE_LAYOUT } from '../constants';\n\nimport { theme } from '~/config';\n\n// NOTE: Determine layout according to the width of elements\nexport function useFilterLayout(components, componentsWidth, appFilterTogglerWidth, appWidth) {\n const [layout, setLayout] = useState(null);\n\n useEffect(() => {\n if (!appWidth || !componentsWidth) {\n return;\n }\n\n const filtersComponent = getStartComponent(components);\n const goalComponent = getMiddleComponent(components);\n const switchComponent = getEndComponents(components);\n\n const hasFiltersOnly = filtersComponent && !goalComponent && !switchComponent;\n const hasFiltersAndGoals = filtersComponent && goalComponent && !switchComponent;\n const hasFiltersAndSwitch = filtersComponent && !goalComponent && switchComponent;\n const hasAll = filtersComponent && goalComponent && switchComponent;\n\n if (hasFiltersOnly) {\n const filtersWidth = componentsWidth[filtersComponent.key];\n\n if (filtersWidth <= appWidth) {\n setLayout(LARGE_SIZE_LAYOUT);\n return;\n }\n\n if (filtersWidth <= appWidth / 2) {\n setLayout(MEDIUM_SIZE_LAYOUT);\n return;\n }\n } else if (hasFiltersAndGoals || hasFiltersAndSwitch) {\n const startWidth = componentsWidth[filtersComponent.key];\n const endWidth = hasFiltersAndGoals\n ? componentsWidth[goalComponent.key]\n : componentsWidth[switchComponent.key];\n\n if (startWidth + endWidth <= appWidth) {\n setLayout(LARGE_SIZE_LAYOUT);\n return;\n }\n\n if (appFilterTogglerWidth + endWidth <= appWidth) {\n setLayout(MEDIUM_SIZE_LAYOUT);\n return;\n }\n } else if (hasAll) {\n const startWidth = componentsWidth[filtersComponent.key];\n const middleWidth = componentsWidth[goalComponent.key];\n const endWidth = componentsWidth[switchComponent.key];\n\n if (startWidth + middleWidth + endWidth <= appWidth) {\n setLayout(LARGE_SIZE_LAYOUT);\n return;\n }\n\n if (appFilterTogglerWidth + middleWidth + endWidth <= appWidth) {\n setLayout(MEDIUM_SIZE_LAYOUT);\n return;\n }\n\n if (appFilterTogglerWidth + endWidth <= appWidth) {\n setLayout(SMALL_SIZE_LAYOUT);\n return;\n }\n }\n\n setLayout(SMALL_SIZE_LAYOUT);\n }, [componentsWidth, appWidth]);\n\n return layout;\n}\n\n// NOTE: Calculate the width of child components here\nexport function useComonentsWidth(components) {\n // const widthRef = useRef({});\n const hiddenElementsRef = useRef();\n const [widthDict, setWidthDict] = useState(null);\n const prevComponentsRef = useRef({});\n\n const validComponents = components.filter(component => !!component);\n const hiddenElements = (\n <div\n ref={hiddenElementsRef}\n style={{ position: 'absolute', width: 0, height: 0, overflow: 'hidden' }}\n >\n {validComponents.map((component, index) => {\n return (\n // eslint-disable-next-line react/no-array-index-key\n <div key={index} data-key={component?.key} style={{ position: 'absolute' }}>\n {component}\n </div>\n );\n })}\n </div>\n );\n\n // NOTE: Calcualte width of each components\n useEffect(() => {\n // NOTE: Don't calcuate width again\n if (isEqual(validComponents, prevComponentsRef.current)) {\n return;\n }\n\n const nodesArray = Array.from(hiddenElementsRef.current?.childNodes);\n const sizeMap = nodesArray.reduce((acc, node) => {\n const key = node?.getAttribute?.('data-key');\n const value = node?.getBoundingClientRect().width;\n\n return {\n ...acc,\n [key]: value,\n };\n }, {});\n\n if (Object.values(sizeMap).length === validComponents.length) {\n if (!isEqual(widthDict, sizeMap)) {\n setWidthDict(sizeMap);\n }\n }\n\n prevComponentsRef.current = validComponents;\n });\n\n return { componentsWidth: widthDict, hiddenElements };\n}\n\n// NOTE: Calculate the width of Toggler Component\nexport function useAppFilterTogglerWidth() {\n const [width, setWidth] = useState(null);\n\n useEffect(() => {\n const element = document.createElement('div');\n element.style.position = 'absolute';\n element.style.visibility = 'hidden';\n document.body.appendChild(element);\n\n ReactDOM.render(\n <MuiThemeProvider theme={theme.darkTheme}>\n <FiltersToggler />\n </MuiThemeProvider>,\n element,\n () => {\n const dims = element.getBoundingClientRect();\n element.remove();\n setWidth(dims.width);\n }\n );\n }, []);\n\n return width;\n}\n"],"names":["useFilterLayout","components","componentsWidth","appFilterTogglerWidth","appWidth","useState","_useState2","_slicedToArray","_useState","layout","setLayout","useEffect","filtersComponent","getStartComponent","goalComponent","getMiddleComponent","switchComponent","getEndComponents","hasFiltersAndGoals","hasFiltersAndSwitch","hasAll","filtersWidth","key","LARGE_SIZE_LAYOUT","MEDIUM_SIZE_LAYOUT","startWidth","endWidth","middleWidth","SMALL_SIZE_LAYOUT","useComonentsWidth","hiddenElementsRef","useRef","_useState4","_useState3","widthDict","setWidthDict","prevComponentsRef","validComponents","filter","component","hiddenElements","_jsx","ref","style","position","width","height","overflow","children","map","index","_hiddenElementsRef$cu","isEqual","current","sizeMap","Array","from","childNodes","reduce","acc","node","_node$getAttribute","getAttribute","call","value","getBoundingClientRect","_objectSpread","_defineProperty","Object","values","length","useAppFilterTogglerWidth","_useState6","_useState5","setWidth","element","document","createElement","visibility","body","appendChild","ReactDOM","render","MuiThemeProvider","theme","FiltersToggler","dims","remove"],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import{jsx as o}from"react/jsx-runtime";import s from"classnames";import{useState as c,useRef as i,useCallback as n}from"react";import{Tooltip as t}from"../Tooltip/Tooltip.js";import{CopyIcon as m}from"../../icons/iconParkIcons.js";import"../../icons/customIcons/icons/AddMessage.js";import"../../icons/customIcons/icons/Attention.js";import"../../icons/customIcons/icons/Collapse.js";import"../../icons/customIcons/icons/Dashboard.js";import"../../icons/customIcons/icons/Expand.js";import"../../icons/customIcons/icons/FolderClosed.js";import"../../icons/customIcons/icons/FolderClosedFilled.js";import"../../icons/customIcons/icons/FolderOpened.js";import"../../icons/customIcons/icons/GreaterOrEqual.js";import"../../icons/customIcons/icons/LessOrEqual.js";import"../../icons/customIcons/icons/Search.js";import"../../icons/customIcons/icons/Wellhub.js";import"../../icons/customIcons/icons/MultiRuler.js";import"../../icons/customIcons/icons/Checkbox.js";import"../../icons/customIcons/icons/CheckboxChecked.js";import"../../icons/customIcons/icons/CheckboxIndeterminate.js";import"../../icons/customIcons/icons/Radio.js";import"../../icons/customIcons/icons/RadioChecked.js";import"../../icons/customIcons/icons/SimulFrac.js";import"../../icons/customIcons/icons/ZipperFrac.js";import"../../icons/customIcons/icons/CautionFilled.js";import"../../icons/customIcons/icons/MoreApp.js";import"../../icons/customIcons/icons/Pad.js";import"../../icons/customIcons/icons/DrilloutUnit.js";import"../../icons/customIcons/icons/FracFleet.js";import"../../icons/customIcons/icons/Program.js";import"../../icons/customIcons/icons/Rig.js";import"../../icons/customIcons/icons/Well.js";import"../../icons/customIcons/icons/Gap.js";import"../../icons/customIcons/icons/Pin.js";import"../../icons/customIcons/icons/CloseOneFilled.js";import"../../icons/customIcons/icons/AttentionFilled.js";import"../../icons/customIcons/icons/CheckOneFilled.js";import"../../icons/customIcons/icons/Archive.js";import"../../icons/customIcons/icons/ArchiveCancel.js";import"../../icons/customIcons/icons/Unarchive.js";import"../../icons/customIcons/icons/Archived.js";import r from"../../utils/main.js";import e from"./CopyToClipboard.scss.js";var p={large:24,medium:16,small:12},u=function(u){var l=u.text,a=u.tooltipDisabled,j=u.size,d=void 0===j?"medium":j,I=u.testId,C=u.className,h=u.tooltipTitle,F=void 0===h?"Copied":h,v=u.tooltipDuration,b=void 0===v?1500:v,f=u.tooltipPlacement,k=void 0===f?"bottom":f,x=c(!1),A=x[0],T=x[1],O=i(),P=n((function(){r.copyToClipboard(l),T(!0),clearTimeout(O.current),O.current=setTimeout((function(){return T(!1)}),b)}),[l,b]);return o(t,{title:F,disabled:a,open:A,placement:k,children:o("div",{className:s(e.root,C),"data-testid":I,onClick:P,children:o(m,{size:p[d]})})})};export{u as CopyToClipboard};
1
+ import{jsx as o}from"react/jsx-runtime";import s from"classnames";import{useState as c,useRef as i,useCallback as n}from"react";import{Tooltip as t}from"../Tooltip/Tooltip.js";import{CopyIcon as m}from"../../icons/iconParkIcons.js";import"../../icons/customIcons/icons/AddMessage.js";import"../../icons/customIcons/icons/Attention.js";import"../../icons/customIcons/icons/Collapse.js";import"../../icons/customIcons/icons/Dashboard.js";import"../../icons/customIcons/icons/Expand.js";import"../../icons/customIcons/icons/FolderClosed.js";import"../../icons/customIcons/icons/FolderClosedFilled.js";import"../../icons/customIcons/icons/FolderOpened.js";import"../../icons/customIcons/icons/GreaterOrEqual.js";import"../../icons/customIcons/icons/LessOrEqual.js";import"../../icons/customIcons/icons/Search.js";import"../../icons/customIcons/icons/Wellhub.js";import"../../icons/customIcons/icons/MultiRuler.js";import"../../icons/customIcons/icons/Checkbox.js";import"../../icons/customIcons/icons/CheckboxChecked.js";import"../../icons/customIcons/icons/CheckboxIndeterminate.js";import"../../icons/customIcons/icons/Radio.js";import"../../icons/customIcons/icons/RadioChecked.js";import"../../icons/customIcons/icons/SimulFrac.js";import"../../icons/customIcons/icons/ZipperFrac.js";import"../../icons/customIcons/icons/CautionFilled.js";import"../../icons/customIcons/icons/MoreApp.js";import"../../icons/customIcons/icons/Pad.js";import"../../icons/customIcons/icons/DrilloutUnit.js";import"../../icons/customIcons/icons/FracFleet.js";import"../../icons/customIcons/icons/Program.js";import"../../icons/customIcons/icons/Rig.js";import"../../icons/customIcons/icons/Well.js";import"../../icons/customIcons/icons/Gap.js";import"../../icons/customIcons/icons/Pin.js";import"../../icons/customIcons/icons/CloseOneFilled.js";import"../../icons/customIcons/icons/AttentionFilled.js";import"../../icons/customIcons/icons/CheckOneFilled.js";import"../../icons/customIcons/icons/Archive.js";import"../../icons/customIcons/icons/ArchiveCancel.js";import"../../icons/customIcons/icons/Unarchive.js";import"../../icons/customIcons/icons/Archived.js";import{copyToClipboard as r}from"../../utils/main.js";import e from"./CopyToClipboard.scss.js";var p={large:24,medium:16,small:12},u=function(u){var l=u.text,a=u.tooltipDisabled,j=u.size,I=void 0===j?"medium":j,d=u.testId,C=u.className,h=u.tooltipTitle,F=void 0===h?"Copied":h,v=u.tooltipDuration,f=void 0===v?1500:v,b=u.tooltipPlacement,k=void 0===b?"bottom":b,x=c(!1),A=x[0],T=x[1],O=i(),P=n((function(){r(l),T(!0),clearTimeout(O.current),O.current=setTimeout((function(){return T(!1)}),f)}),[l,f]);return o(t,{title:F,disabled:a,open:A,placement:k,children:o("div",{className:s(e.root,C),"data-testid":d,onClick:P,children:o(m,{size:p[I]})})})};export{u as CopyToClipboard};
2
2
  //# sourceMappingURL=CopyToClipboard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"highcharts.d.ts","sourceRoot":"","sources":["../../../src/config/highcharts/highcharts.js"],"names":[],"mappings":"AAgDA,uCAyCC"}
1
+ {"version":3,"file":"highcharts.d.ts","sourceRoot":"","sources":["../../../src/config/highcharts/highcharts.js"],"names":[],"mappings":"AAmDA,uCAyCC"}
@@ -1,2 +1,2 @@
1
- import r from"@babel/runtime/helpers/slicedToArray";import o from"@babel/runtime/helpers/typeof";import t from"highcharts";import i from"highcharts/highcharts-more";import e from"highcharts-multicolor-series";import h from"highcharts/modules/solid-gauge";import m from"highcharts/modules/heatmap";import s from"highcharts/modules/boost";import a from"highcharts/modules/exporting";import n from"highcharts/modules/xrange";import c from"highcharts/modules/dumbbell";import p from"highcharts/modules/pattern-fill";import f from"./highcharts-contour.js";import l from"dompurify";var u=function t(i){return"string"==typeof i?l.sanitize(i):("object"===o(i)&&null!==i&&Object.entries(i).forEach((function(e){var h=r(e,2),m=h[0],s=h[1];"string"==typeof s?i[m]=l.sanitize(i[m]):Array.isArray(s)?s.forEach((function(r,o){i[m][o]=t(r)})):"object"===o(s)&&(i[m]=t(s))})),i)};function g(){window.Highcharts=t,e(t),i(t),h(t),m(t),s(t),a(t),n(t),c(t),p(t),f(t);var r=t.chart;t.chart=function(o){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length,e=new Array(i>2?i-2:0),h=2;h<i;h++)e[h-2]=arguments[h];return r.apply(void 0,[o,u(t)].concat(e))},t.setOptions({plotOptions:{series:{states:{inactive:{enabled:!1}}}}})}export{g as initHighcharts};
1
+ import r from"@babel/runtime/helpers/slicedToArray";import t from"@babel/runtime/helpers/typeof";import o from"highcharts";import i from"highcharts/highcharts-more";import e from"highcharts-multicolor-series";import h from"highcharts/modules/solid-gauge";import s from"highcharts/modules/heatmap";import m from"highcharts/modules/boost";import a from"highcharts/modules/exporting";import n from"highcharts/modules/xrange";import c from"highcharts/modules/dumbbell";import p from"highcharts/modules/pattern-fill";import f from"./highcharts-contour.js";import l from"dompurify";o.AST.bypassHTMLFiltering=!0;var g=function o(i){return"string"==typeof i?l.sanitize(i):("object"===t(i)&&null!==i&&Object.entries(i).forEach((function(e){var h=r(e,2),s=h[0],m=h[1];"string"==typeof m?i[s]=l.sanitize(i[s]):Array.isArray(m)?m.forEach((function(r,t){i[s][t]=o(r)})):"object"===t(m)&&(i[s]=o(m))})),i)};function u(){window.Highcharts=o,e(o),i(o),h(o),s(o),m(o),a(o),n(o),c(o),p(o),f(o);var r=o.chart;o.chart=function(t){for(var o=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},i=arguments.length,e=new Array(i>2?i-2:0),h=2;h<i;h++)e[h-2]=arguments[h];return r.apply(void 0,[t,g(o)].concat(e))},o.setOptions({plotOptions:{series:{states:{inactive:{enabled:!1}}}}})}export{u as initHighcharts};
2
2
  //# sourceMappingURL=highcharts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"highcharts.js","sources":["../../../src/config/highcharts/highcharts.js"],"sourcesContent":["/* eslint-disable */\n// TODO: all the plugins should be checked, legacy code\n/**\n * NOTE: Highchart has a bug for pie chart in v8.1.2\n * issue link: https://github.com/highcharts/highcharts/issues/13710\n * workaround:\n * import Highcharts from 'highcharts';\n * window.Highcharts = Highcharts;\n */\n\nimport Highcharts from 'highcharts';\n\nimport highchartsMore from 'highcharts/highcharts-more';\n\nimport HighchartsMulticolorSeries from 'highcharts-multicolor-series';\nimport addSolidGauge from 'highcharts/modules/solid-gauge';\nimport addHeatmap from 'highcharts/modules/heatmap';\nimport addBoost from 'highcharts/modules/boost';\nimport addExporting from 'highcharts/modules/exporting';\nimport addXrange from 'highcharts/modules/xrange';\nimport addDumbbell from 'highcharts/modules/dumbbell';\nimport addPatternFill from 'highcharts/modules/pattern-fill';\n\nimport addContour from './highcharts-contour';\n\nimport DOMPurify from 'dompurify';\n\nconst stripHTMLRecurse = o => {\n if (typeof o === 'string') {\n return DOMPurify.sanitize(o);\n }\n\n if (typeof o === 'object' && o !== null)\n Object.entries(o).forEach(([key, value]) => {\n if (typeof value === 'string') {\n o[key] = DOMPurify.sanitize(o[key]);\n } else if (Array.isArray(value)) {\n value.forEach((item, i) => {\n o[key][i] = stripHTMLRecurse(item);\n });\n } else if (typeof value === 'object') {\n o[key] = stripHTMLRecurse(value);\n }\n });\n\n return o;\n};\n\nexport function initHighcharts() {\n window.Highcharts = Highcharts;\n\n HighchartsMulticolorSeries(Highcharts);\n // NOTE: Highcharts patching. It should be done in one place before any chart in rendered\n // in order to avoid conflicts\n highchartsMore(Highcharts);\n addSolidGauge(Highcharts); // https://www.highcharts.com/docs/chart-and-series-types/angular-gauges\n addHeatmap(Highcharts); // https://www.highcharts.com/docs/chart-and-series-types/heatmap\n addBoost(Highcharts); // https://www.highcharts.com/docs/advanced-chart-features/boost-module\n addExporting(Highcharts); // https://www.highcharts.com/docs/export-module/export-module-overview\n addXrange(Highcharts); // https://www.highcharts.com/docs/advanced-chart-features/boost-module\n addDumbbell(Highcharts);\n addPatternFill(Highcharts);\n addContour(Highcharts);\n\n // fix security issue for Highcharts 8\n // https://github.com/highcharts/highcharts/security/advisories/GHSA-8j65-4pcq-xq95\n const originalChartFn = Highcharts.chart;\n Highcharts.chart = function (container, options = {}, ...restParams) {\n return originalChartFn(container, stripHTMLRecurse(options), ...restParams);\n };\n\n /**\n * Adjust default highcharts effects globally for better use in our apps\n *\n * 1. Stop animation for inactive series\n * ref: https://api.highcharts.com/highcharts/plotOptions.series.states.inactive.enabled\n *\n */\n Highcharts.setOptions({\n plotOptions: {\n series: {\n states: {\n inactive: {\n enabled: false,\n },\n },\n },\n },\n });\n}\n"],"names":["stripHTMLRecurse","o","DOMPurify","sanitize","_typeof","Object","entries","forEach","_ref","_ref2","_slicedToArray","key","value","Array","isArray","item","i","initHighcharts","window","Highcharts","HighchartsMulticolorSeries","highchartsMore","addSolidGauge","addHeatmap","addBoost","addExporting","addXrange","addDumbbell","addPatternFill","addContour","originalChartFn","chart","container","options","arguments","length","undefined","_len","restParams","_key","setOptions","plotOptions","series","states","inactive","enabled"],"mappings":"gkBA2BA,IAAMA,EAAmB,SAAnBA,EAAmBC,GACvB,MAAiB,iBAANA,EACFC,EAAUC,SAASF,IAGX,WAAbG,EAAOH,IAAwB,OAANA,GAC3BI,OAAOC,QAAQL,GAAGM,SAAQ,SAAkBC,GAAA,IAAAC,EAAAC,EAAAF,EAAA,GAAhBG,EAAGF,EAAA,GAAEG,EAAKH,EAAA,GACf,iBAAVG,EACTX,EAAEU,GAAOT,EAAUC,SAASF,EAAEU,IACrBE,MAAMC,QAAQF,GACvBA,EAAML,SAAQ,SAACQ,EAAMC,GACnBf,EAAEU,GAAKK,GAAKhB,EAAiBe,EAC/B,IAC0B,WAAjBX,EAAOQ,KAChBX,EAAEU,GAAOX,EAAiBY,GAE9B,IAEKX,EACT,EAEO,SAASgB,IACdC,OAAOC,WAAaA,EAEpBC,EAA2BD,GAG3BE,EAAeF,GACfG,EAAcH,GACdI,EAAWJ,GACXK,EAASL,GACTM,EAAaN,GACbO,EAAUP,GACVQ,EAAYR,GACZS,EAAeT,GACfU,EAAWV,GAIX,IAAMW,EAAkBX,EAAWY,MACnCZ,EAAWY,MAAQ,SAAUC,GAAuB,IAAiB,IAA7BC,EAAUC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAA,CAAA,EAAEG,EAAAH,UAAAC,OAAKG,EAAU,IAAAzB,MAAAwB,EAAA,EAAAA,EAAA,EAAA,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAVD,EAAUC,EAAA,GAAAL,UAAAK,GACjE,OAAOT,EAAgBE,WAAAA,EAAAA,CAAAA,EAAWhC,EAAiBiC,IAAaK,OAAAA,KAUlEnB,EAAWqB,WAAW,CACpBC,YAAa,CACXC,OAAQ,CACNC,OAAQ,CACNC,SAAU,CACRC,SAAS,OAMrB"}
1
+ {"version":3,"file":"highcharts.js","sources":["../../../src/config/highcharts/highcharts.js"],"sourcesContent":["/* eslint-disable */\n// TODO: all the plugins should be checked, legacy code\n/**\n * NOTE: Highchart has a bug for pie chart in v8.1.2\n * issue link: https://github.com/highcharts/highcharts/issues/13710\n * workaround:\n * import Highcharts from 'highcharts';\n * window.Highcharts = Highcharts;\n */\n\nimport Highcharts from 'highcharts';\n\n// NOTE: Temporary disable HTML filtering for duration of migration to v10, as this is the main breaking change in v10, should be removed after migration\nHighcharts.AST.bypassHTMLFiltering = true;\n\nimport highchartsMore from 'highcharts/highcharts-more';\n\nimport HighchartsMulticolorSeries from 'highcharts-multicolor-series';\nimport addSolidGauge from 'highcharts/modules/solid-gauge';\nimport addHeatmap from 'highcharts/modules/heatmap';\nimport addBoost from 'highcharts/modules/boost';\nimport addExporting from 'highcharts/modules/exporting';\nimport addXrange from 'highcharts/modules/xrange';\nimport addDumbbell from 'highcharts/modules/dumbbell';\nimport addPatternFill from 'highcharts/modules/pattern-fill';\n\nimport addContour from './highcharts-contour';\n\nimport DOMPurify from 'dompurify';\n\nconst stripHTMLRecurse = o => {\n if (typeof o === 'string') {\n return DOMPurify.sanitize(o);\n }\n\n if (typeof o === 'object' && o !== null)\n Object.entries(o).forEach(([key, value]) => {\n if (typeof value === 'string') {\n o[key] = DOMPurify.sanitize(o[key]);\n } else if (Array.isArray(value)) {\n value.forEach((item, i) => {\n o[key][i] = stripHTMLRecurse(item);\n });\n } else if (typeof value === 'object') {\n o[key] = stripHTMLRecurse(value);\n }\n });\n\n return o;\n};\n\nexport function initHighcharts() {\n window.Highcharts = Highcharts;\n\n HighchartsMulticolorSeries(Highcharts);\n // NOTE: Highcharts patching. It should be done in one place before any chart in rendered\n // in order to avoid conflicts\n highchartsMore(Highcharts);\n addSolidGauge(Highcharts); // https://www.highcharts.com/docs/chart-and-series-types/angular-gauges\n addHeatmap(Highcharts); // https://www.highcharts.com/docs/chart-and-series-types/heatmap\n addBoost(Highcharts); // https://www.highcharts.com/docs/advanced-chart-features/boost-module\n addExporting(Highcharts); // https://www.highcharts.com/docs/export-module/export-module-overview\n addXrange(Highcharts); // https://www.highcharts.com/docs/advanced-chart-features/boost-module\n addDumbbell(Highcharts);\n addPatternFill(Highcharts);\n addContour(Highcharts);\n\n // fix security issue for Highcharts 8\n // https://github.com/highcharts/highcharts/security/advisories/GHSA-8j65-4pcq-xq95\n const originalChartFn = Highcharts.chart;\n Highcharts.chart = function (container, options = {}, ...restParams) {\n return originalChartFn(container, stripHTMLRecurse(options), ...restParams);\n };\n\n /**\n * Adjust default highcharts effects globally for better use in our apps\n *\n * 1. Stop animation for inactive series\n * ref: https://api.highcharts.com/highcharts/plotOptions.series.states.inactive.enabled\n *\n */\n Highcharts.setOptions({\n plotOptions: {\n series: {\n states: {\n inactive: {\n enabled: false,\n },\n },\n },\n },\n });\n}\n"],"names":["Highcharts","AST","bypassHTMLFiltering","stripHTMLRecurse","o","DOMPurify","sanitize","_typeof","Object","entries","forEach","_ref","_ref2","_slicedToArray","key","value","Array","isArray","item","i","initHighcharts","window","HighchartsMulticolorSeries","highchartsMore","addSolidGauge","addHeatmap","addBoost","addExporting","addXrange","addDumbbell","addPatternFill","addContour","originalChartFn","chart","container","options","arguments","length","undefined","_len","restParams","_key","setOptions","plotOptions","series","states","inactive","enabled"],"mappings":"gkBAaAA,EAAWC,IAAIC,qBAAsB,EAiBrC,IAAMC,EAAmB,SAAnBA,EAAmBC,GACvB,MAAiB,iBAANA,EACFC,EAAUC,SAASF,IAGX,WAAbG,EAAOH,IAAwB,OAANA,GAC3BI,OAAOC,QAAQL,GAAGM,SAAQ,SAAkBC,GAAA,IAAAC,EAAAC,EAAAF,EAAA,GAAhBG,EAAGF,EAAA,GAAEG,EAAKH,EAAA,GACf,iBAAVG,EACTX,EAAEU,GAAOT,EAAUC,SAASF,EAAEU,IACrBE,MAAMC,QAAQF,GACvBA,EAAML,SAAQ,SAACQ,EAAMC,GACnBf,EAAEU,GAAKK,GAAKhB,EAAiBe,EAC/B,IAC0B,WAAjBX,EAAOQ,KAChBX,EAAEU,GAAOX,EAAiBY,GAE9B,IAEKX,EACT,EAEO,SAASgB,IACdC,OAAOrB,WAAaA,EAEpBsB,EAA2BtB,GAG3BuB,EAAevB,GACfwB,EAAcxB,GACdyB,EAAWzB,GACX0B,EAAS1B,GACT2B,EAAa3B,GACb4B,EAAU5B,GACV6B,EAAY7B,GACZ8B,EAAe9B,GACf+B,EAAW/B,GAIX,IAAMgC,EAAkBhC,EAAWiC,MACnCjC,EAAWiC,MAAQ,SAAUC,GAAuB,IAAiB,IAA7BC,EAAUC,UAAAC,OAAA,QAAAC,IAAAF,UAAA,GAAAA,UAAA,GAAA,CAAA,EAAEG,EAAAH,UAAAC,OAAKG,EAAU,IAAAxB,MAAAuB,EAAA,EAAAA,EAAA,EAAA,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAVD,EAAUC,EAAA,GAAAL,UAAAK,GACjE,OAAOT,EAAgBE,WAAAA,EAAAA,CAAAA,EAAW/B,EAAiBgC,IAAaK,OAAAA,KAUlExC,EAAW0C,WAAW,CACpBC,YAAa,CACXC,OAAQ,CACNC,OAAQ,CACNC,SAAU,CACRC,SAAS,OAMrB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@corva/ui",
3
- "version": "3.22.3",
3
+ "version": "3.22.5",
4
4
  "description": "Shared components/utils for Corva ui projects",
5
5
  "keywords": [
6
6
  "corva-ui"
@@ -121,8 +121,8 @@
121
121
  "file-extension": "4.0.5",
122
122
  "file-saver": "1.3.8",
123
123
  "fparser": "^2.0.2",
124
- "highcharts": "8.1.2",
125
- "highcharts-multicolor-series": "2.2.7",
124
+ "highcharts": "10.3.3",
125
+ "highcharts-multicolor-series": "2.4.1",
126
126
  "highcharts-react-official": "2.2.2",
127
127
  "html2canvas": "1.0.0-alpha.12",
128
128
  "image-extensions": "1.1.0",
@@ -1,4 +1,4 @@
1
- export default class LasParser {
1
+ export class LasParser {
2
2
  config: {
3
3
  version: any;
4
4
  wrap: any;
@@ -8,4 +8,5 @@ export default class LasParser {
8
8
  parseHeaders: (file: any) => any;
9
9
  parseData: (file: any, parsedHeaders: any, keysForParsing: any) => any;
10
10
  }
11
+ export default LasParser;
11
12
  //# sourceMappingURL=lasParser.d.ts.map
@@ -1,2 +1,2 @@
1
- import r from"@babel/runtime/helpers/slicedToArray";import e from"@babel/runtime/helpers/createClass";import t from"@babel/runtime/helpers/classCallCheck";import n from"@babel/runtime/helpers/defineProperty";function i(r,e){var t=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),t.push.apply(t,n)}return t}function s(r){for(var e=1;e<arguments.length;e++){var t=null!=arguments[e]?arguments[e]:{};e%2?i(Object(t),!0).forEach((function(e){n(r,e,t[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(t,e))}))}return r}var o=e((function e(){var i=this;t(this,e),n(this,"getConfiguration",(function(e){var t=null,n=null,s=null,o=!1;e.forEach((function(e){if(e.toLowerCase().startsWith("~version"))o=!0;else if(e.toLowerCase().startsWith("~"))o=!1;else{if(o){var a=e.split(" ").filter(Boolean),l=r(a,3),u=l[0],c=l[1],f=l[2];switch(u){case"VERS.":t=c;break;case"WRAP.":n=c;break;case"DLM":s=f}}i.config={version:t,wrap:n,delimiter:s}}}))})),n(this,"parseHeaders",(function(r){var e=r.split("\n");i.getConfiguration(e);var t=!1;return e.reduce((function(r,e){if(e.toLowerCase().startsWith("~curve"))return t=!0,r;if(e.startsWith("~")&&(t=!1),t&&!e.startsWith("#")&&!e.startsWith("\r")){var n=e.split(" ").filter(Boolean);return n?r.push(n[0]):r}return r}),[])})),n(this,"parseData",(function(r,e,t){var i=r.split("\n"),o=!1;return i.reduce((function(r,i){if(i.toLowerCase().startsWith("~a"))return o=!0,r;if(i.startsWith("~")&&(o=!1),o){var a=i.split(/[\t\s,]/).filter(Boolean).reduce((function(r,i,o){var a=e[o],l=t.find((function(r){return r.parsingKey===a}));if(l){var u=l.innerKey;return s(s({},r),{},n({},u,parseFloat(i,2)))}return r}),{});return a.isEmpty()?r:r.push(a)}return r}),[])})),this.config={version:null,wrap:null,delimiter:null}}));export{o as default};
1
+ import r from"@babel/runtime/helpers/slicedToArray";import e from"@babel/runtime/helpers/createClass";import t from"@babel/runtime/helpers/classCallCheck";import n from"@babel/runtime/helpers/defineProperty";function i(r,e){var t=Object.keys(r);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(r);e&&(n=n.filter((function(e){return Object.getOwnPropertyDescriptor(r,e).enumerable}))),t.push.apply(t,n)}return t}function s(r){for(var e=1;e<arguments.length;e++){var t=null!=arguments[e]?arguments[e]:{};e%2?i(Object(t),!0).forEach((function(e){n(r,e,t[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(t)):i(Object(t)).forEach((function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(t,e))}))}return r}var o=e((function e(){var i=this;t(this,e),n(this,"getConfiguration",(function(e){var t=null,n=null,s=null,o=!1;e.forEach((function(e){if(e.toLowerCase().startsWith("~version"))o=!0;else if(e.toLowerCase().startsWith("~"))o=!1;else{if(o){var a=e.split(" ").filter(Boolean),l=r(a,3),u=l[0],c=l[1],f=l[2];switch(u){case"VERS.":t=c;break;case"WRAP.":n=c;break;case"DLM":s=f}}i.config={version:t,wrap:n,delimiter:s}}}))})),n(this,"parseHeaders",(function(r){var e=r.split("\n");i.getConfiguration(e);var t=!1;return e.reduce((function(r,e){if(e.toLowerCase().startsWith("~curve"))return t=!0,r;if(e.startsWith("~")&&(t=!1),t&&!e.startsWith("#")&&!e.startsWith("\r")){var n=e.split(" ").filter(Boolean);return n?r.push(n[0]):r}return r}),[])})),n(this,"parseData",(function(r,e,t){var i=r.split("\n"),o=!1;return i.reduce((function(r,i){if(i.toLowerCase().startsWith("~a"))return o=!0,r;if(i.startsWith("~")&&(o=!1),o){var a=i.split(/[\t\s,]/).filter(Boolean).reduce((function(r,i,o){var a=e[o],l=t.find((function(r){return r.parsingKey===a}));if(l){var u=l.innerKey;return s(s({},r),{},n({},u,parseFloat(i,2)))}return r}),{});return a.isEmpty()?r:r.push(a)}return r}),[])})),this.config={version:null,wrap:null,delimiter:null}}));export{o as LasParser,o as default};
2
2
  //# sourceMappingURL=lasParser.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lasParser.js","sources":["../../src/utils/lasParser.js"],"sourcesContent":["const VERSION_CONF_STR = 'VERS.';\nconst WRAP_CONF_STR = 'WRAP.';\nconst DELIMITER_CONF_STR = 'DLM';\n\nconst VERSION_SECTION_BEGINNING = '~version';\nconst COLUMNS_LINE_BEGINNING = '~curve';\nconst DATA_LINE_BEGINNING = '~a';\n\nexport default class LasParser {\n constructor() {\n this.config = {\n version: null,\n wrap: null,\n delimiter: null,\n };\n }\n\n getConfiguration = lines => {\n let version = null;\n let wrap = null;\n let delimiter = null;\n let flag = false;\n\n lines.forEach(line => {\n // NOTE: Detect the beginning of version section\n if (line.toLowerCase().startsWith(VERSION_SECTION_BEGINNING)) {\n flag = true;\n return;\n }\n\n // NOTE: Detect the beginning of other sections\n if (line.toLowerCase().startsWith('~')) {\n flag = false;\n return;\n }\n\n if (flag) {\n const configurationLine = line.split(' ').filter(Boolean);\n\n // NOTE: When parsing delimiter line, `value` will be '.' (DLM . -> LAS 3.0 format)\n const [key, value, dlmValue] = configurationLine;\n\n switch (key) {\n case VERSION_CONF_STR:\n version = value;\n break;\n case WRAP_CONF_STR:\n wrap = value;\n break;\n case DELIMITER_CONF_STR:\n delimiter = dlmValue;\n break;\n default:\n break;\n }\n }\n\n this.config = {\n version,\n wrap,\n delimiter,\n };\n });\n };\n\n parseHeaders = file => {\n const lines = file.split('\\n');\n\n this.getConfiguration(lines);\n\n let flag = false;\n\n return lines.reduce((accHeaders, line) => {\n if (line.toLowerCase().startsWith(COLUMNS_LINE_BEGINNING)) {\n flag = true;\n return accHeaders;\n }\n\n if (line.startsWith('~')) {\n flag = false;\n }\n\n if (flag && !line.startsWith('#') && !line.startsWith('\\r')) {\n const clearedLine = line.split(' ').filter(Boolean);\n if (!clearedLine) {\n return accHeaders;\n }\n\n return accHeaders.push(clearedLine[0]);\n }\n\n return accHeaders;\n }, []);\n };\n\n parseData = (file, parsedHeaders, keysForParsing) => {\n const lines = file.split('\\n');\n\n let flag = false;\n\n return lines.reduce((accData, line) => {\n if (line.toLowerCase().startsWith(DATA_LINE_BEGINNING)) {\n flag = true;\n return accData;\n }\n\n if (line.startsWith('~')) {\n flag = false;\n }\n\n if (flag) {\n // NOTE: Delimiters can be comma, space and tab.\n const headers = line.split(/[\\t\\s,]/).filter(Boolean);\n const dataPiece = headers.reduce((acc, item, index) => {\n const key = parsedHeaders[index];\n const parsingKeyItem = keysForParsing.find(keyItem => keyItem.parsingKey === key);\n\n if (parsingKeyItem) {\n const parsingKey = parsingKeyItem.innerKey;\n return {\n ...acc,\n [parsingKey]: parseFloat(item, 2),\n };\n }\n\n return acc;\n }, {});\n\n return dataPiece.isEmpty() ? accData : accData.push(dataPiece);\n }\n\n return accData;\n }, []);\n };\n}\n"],"names":["LasParser","_this","this","_classCallCheck","_defineProperty","lines","version","wrap","delimiter","flag","forEach","line","toLowerCase","startsWith","configurationLine","split","filter","Boolean","_configurationLine","_slicedToArray","key","value","dlmValue","config","file","getConfiguration","reduce","accHeaders","clearedLine","push","parsedHeaders","keysForParsing","accData","dataPiece","acc","item","index","parsingKeyItem","find","keyItem","parsingKey","innerKey","parseFloat","isEmpty"],"mappings":"+wBAAA,IAQqBA,KACnB,SAAcA,IAAA,IAAAC,EAAAC,KAAAC,EAAAD,KAAAF,GAAAI,EAQKF,KAAA,oBAAA,SAAAG,GACjB,IAAIC,EAAU,KACVC,EAAO,KACPC,EAAY,KACZC,GAAO,EAEXJ,EAAMK,SAAQ,SAAAC,GAEZ,GAAIA,EAAKC,cAAcC,WArBK,YAsB1BJ,GAAO,OAKT,GAAIE,EAAKC,cAAcC,WAAW,KAChCJ,GAAO,MADT,CAKA,GAAIA,EAAM,CACR,IAAMK,EAAoBH,EAAKI,MAAM,KAAKC,OAAOC,SAGjDC,EAAAC,EAA+BL,EAAiB,GAAzCM,EAAGF,EAAA,GAAEG,EAAKH,EAAA,GAAEI,EAAQJ,EAAA,GAE3B,OAAQE,GACN,IA3Ce,QA4Cbd,EAAUe,EACV,MACF,IA7CY,QA8CVd,EAAOc,EACP,MACF,IA/CiB,MAgDfb,EAAYc,EAKlB,CAEArB,EAAKsB,OAAS,CACZjB,QAAAA,EACAC,KAAAA,EACAC,UAAAA,EA1BF,CA4BF,OACDJ,EAEcF,KAAA,gBAAA,SAAAsB,GACb,IAAMnB,EAAQmB,EAAKT,MAAM,MAEzBd,EAAKwB,iBAAiBpB,GAEtB,IAAII,GAAO,EAEX,OAAOJ,EAAMqB,QAAO,SAACC,EAAYhB,GAC/B,GAAIA,EAAKC,cAAcC,WApEE,UAsEvB,OADAJ,GAAO,EACAkB,EAOT,GAJIhB,EAAKE,WAAW,OAClBJ,GAAO,GAGLA,IAASE,EAAKE,WAAW,OAASF,EAAKE,WAAW,MAAO,CAC3D,IAAMe,EAAcjB,EAAKI,MAAM,KAAKC,OAAOC,SAC3C,OAAKW,EAIED,EAAWE,KAAKD,EAAY,IAH1BD,CAIX,CAEA,OAAOA,CACR,GAAE,OACJvB,EAAAF,KAAA,aAEW,SAACsB,EAAMM,EAAeC,GAChC,IAAM1B,EAAQmB,EAAKT,MAAM,MAErBN,GAAO,EAEX,OAAOJ,EAAMqB,QAAO,SAACM,EAASrB,GAC5B,GAAIA,EAAKC,cAAcC,WA/FD,MAiGpB,OADAJ,GAAO,EACAuB,EAOT,GAJIrB,EAAKE,WAAW,OAClBJ,GAAO,GAGLA,EAAM,CAER,IACMwB,EADUtB,EAAKI,MAAM,WAAWC,OAAOC,SACnBS,QAAO,SAACQ,EAAKC,EAAMC,GAC3C,IAAMhB,EAAMU,EAAcM,GACpBC,EAAiBN,EAAeO,MAAK,SAAAC,GAAO,OAAIA,EAAQC,aAAepB,KAE7E,GAAIiB,EAAgB,CAClB,IAAMG,EAAaH,EAAeI,SAClC,OACKP,EAAAA,EAAAA,CAAAA,EAAAA,WACFM,EAAaE,WAAWP,EAAM,IAEnC,CAEA,OAAOD,CACR,GAAE,CAAE,GAEL,OAAOD,EAAUU,UAAYX,EAAUA,EAAQH,KAAKI,EACtD,CAEA,OAAOD,CACR,GAAE,OA1HH9B,KAAKqB,OAAS,CACZjB,QAAS,KACTC,KAAM,KACNC,UAAW,KAEf"}
1
+ {"version":3,"file":"lasParser.js","sources":["../../src/utils/lasParser.js"],"sourcesContent":["const VERSION_CONF_STR = 'VERS.';\nconst WRAP_CONF_STR = 'WRAP.';\nconst DELIMITER_CONF_STR = 'DLM';\n\nconst VERSION_SECTION_BEGINNING = '~version';\nconst COLUMNS_LINE_BEGINNING = '~curve';\nconst DATA_LINE_BEGINNING = '~a';\n\nexport class LasParser {\n constructor() {\n this.config = {\n version: null,\n wrap: null,\n delimiter: null,\n };\n }\n\n getConfiguration = lines => {\n let version = null;\n let wrap = null;\n let delimiter = null;\n let flag = false;\n\n lines.forEach(line => {\n // NOTE: Detect the beginning of version section\n if (line.toLowerCase().startsWith(VERSION_SECTION_BEGINNING)) {\n flag = true;\n return;\n }\n\n // NOTE: Detect the beginning of other sections\n if (line.toLowerCase().startsWith('~')) {\n flag = false;\n return;\n }\n\n if (flag) {\n const configurationLine = line.split(' ').filter(Boolean);\n\n // NOTE: When parsing delimiter line, `value` will be '.' (DLM . -> LAS 3.0 format)\n const [key, value, dlmValue] = configurationLine;\n\n switch (key) {\n case VERSION_CONF_STR:\n version = value;\n break;\n case WRAP_CONF_STR:\n wrap = value;\n break;\n case DELIMITER_CONF_STR:\n delimiter = dlmValue;\n break;\n default:\n break;\n }\n }\n\n this.config = {\n version,\n wrap,\n delimiter,\n };\n });\n };\n\n parseHeaders = file => {\n const lines = file.split('\\n');\n\n this.getConfiguration(lines);\n\n let flag = false;\n\n return lines.reduce((accHeaders, line) => {\n if (line.toLowerCase().startsWith(COLUMNS_LINE_BEGINNING)) {\n flag = true;\n return accHeaders;\n }\n\n if (line.startsWith('~')) {\n flag = false;\n }\n\n if (flag && !line.startsWith('#') && !line.startsWith('\\r')) {\n const clearedLine = line.split(' ').filter(Boolean);\n if (!clearedLine) {\n return accHeaders;\n }\n\n return accHeaders.push(clearedLine[0]);\n }\n\n return accHeaders;\n }, []);\n };\n\n parseData = (file, parsedHeaders, keysForParsing) => {\n const lines = file.split('\\n');\n\n let flag = false;\n\n return lines.reduce((accData, line) => {\n if (line.toLowerCase().startsWith(DATA_LINE_BEGINNING)) {\n flag = true;\n return accData;\n }\n\n if (line.startsWith('~')) {\n flag = false;\n }\n\n if (flag) {\n // NOTE: Delimiters can be comma, space and tab.\n const headers = line.split(/[\\t\\s,]/).filter(Boolean);\n const dataPiece = headers.reduce((acc, item, index) => {\n const key = parsedHeaders[index];\n const parsingKeyItem = keysForParsing.find(keyItem => keyItem.parsingKey === key);\n\n if (parsingKeyItem) {\n const parsingKey = parsingKeyItem.innerKey;\n return {\n ...acc,\n [parsingKey]: parseFloat(item, 2),\n };\n }\n\n return acc;\n }, {});\n\n return dataPiece.isEmpty() ? accData : accData.push(dataPiece);\n }\n\n return accData;\n }, []);\n };\n}\n\nexport default LasParser;\n"],"names":["LasParser","_this","this","_classCallCheck","_defineProperty","lines","version","wrap","delimiter","flag","forEach","line","toLowerCase","startsWith","configurationLine","split","filter","Boolean","_configurationLine","_slicedToArray","key","value","dlmValue","config","file","getConfiguration","reduce","accHeaders","clearedLine","push","parsedHeaders","keysForParsing","accData","dataPiece","acc","item","index","parsingKeyItem","find","keyItem","parsingKey","innerKey","parseFloat","isEmpty"],"mappings":"+wBAAA,IAQaA,KACX,SAAcA,IAAA,IAAAC,EAAAC,KAAAC,EAAAD,KAAAF,GAAAI,EAQKF,KAAA,oBAAA,SAAAG,GACjB,IAAIC,EAAU,KACVC,EAAO,KACPC,EAAY,KACZC,GAAO,EAEXJ,EAAMK,SAAQ,SAAAC,GAEZ,GAAIA,EAAKC,cAAcC,WArBK,YAsB1BJ,GAAO,OAKT,GAAIE,EAAKC,cAAcC,WAAW,KAChCJ,GAAO,MADT,CAKA,GAAIA,EAAM,CACR,IAAMK,EAAoBH,EAAKI,MAAM,KAAKC,OAAOC,SAGjDC,EAAAC,EAA+BL,EAAiB,GAAzCM,EAAGF,EAAA,GAAEG,EAAKH,EAAA,GAAEI,EAAQJ,EAAA,GAE3B,OAAQE,GACN,IA3Ce,QA4Cbd,EAAUe,EACV,MACF,IA7CY,QA8CVd,EAAOc,EACP,MACF,IA/CiB,MAgDfb,EAAYc,EAKlB,CAEArB,EAAKsB,OAAS,CACZjB,QAAAA,EACAC,KAAAA,EACAC,UAAAA,EA1BF,CA4BF,OACDJ,EAEcF,KAAA,gBAAA,SAAAsB,GACb,IAAMnB,EAAQmB,EAAKT,MAAM,MAEzBd,EAAKwB,iBAAiBpB,GAEtB,IAAII,GAAO,EAEX,OAAOJ,EAAMqB,QAAO,SAACC,EAAYhB,GAC/B,GAAIA,EAAKC,cAAcC,WApEE,UAsEvB,OADAJ,GAAO,EACAkB,EAOT,GAJIhB,EAAKE,WAAW,OAClBJ,GAAO,GAGLA,IAASE,EAAKE,WAAW,OAASF,EAAKE,WAAW,MAAO,CAC3D,IAAMe,EAAcjB,EAAKI,MAAM,KAAKC,OAAOC,SAC3C,OAAKW,EAIED,EAAWE,KAAKD,EAAY,IAH1BD,CAIX,CAEA,OAAOA,CACR,GAAE,OACJvB,EAAAF,KAAA,aAEW,SAACsB,EAAMM,EAAeC,GAChC,IAAM1B,EAAQmB,EAAKT,MAAM,MAErBN,GAAO,EAEX,OAAOJ,EAAMqB,QAAO,SAACM,EAASrB,GAC5B,GAAIA,EAAKC,cAAcC,WA/FD,MAiGpB,OADAJ,GAAO,EACAuB,EAOT,GAJIrB,EAAKE,WAAW,OAClBJ,GAAO,GAGLA,EAAM,CAER,IACMwB,EADUtB,EAAKI,MAAM,WAAWC,OAAOC,SACnBS,QAAO,SAACQ,EAAKC,EAAMC,GAC3C,IAAMhB,EAAMU,EAAcM,GACpBC,EAAiBN,EAAeO,MAAK,SAAAC,GAAO,OAAIA,EAAQC,aAAepB,KAE7E,GAAIiB,EAAgB,CAClB,IAAMG,EAAaH,EAAeI,SAClC,OACKP,EAAAA,EAAAA,CAAAA,EAAAA,WACFM,EAAaE,WAAWP,EAAM,IAEnC,CAEA,OAAOD,CACR,GAAE,CAAE,GAEL,OAAOD,EAAUU,UAAYX,EAAUA,EAAQH,KAAKI,EACtD,CAEA,OAAOD,CACR,GAAE,OA1HH9B,KAAKqB,OAAS,CACZjB,QAAS,KACTC,KAAM,KACNC,UAAW,KAEf"}