{"version":3,"sources":["webpack:///./app/client/src/javascript/components/SVGPane/SVGText.jsx","webpack:///./app/client/packs/login.js","webpack:///./app/client/src/javascript/login sync ^\\.\\/.*$","webpack:///./app/client/src/javascript/components/SVGPane/index.jsx","webpack:///./app/client/src/javascript/utils/styles/classes.js","webpack:///./app/client/src/javascript/initialize_pack.js","webpack:///./app/client/src/javascript/vendor/jquery_deparam.js","webpack:///./app/client/src/javascript/data-refresh.js","webpack:///./app/client/src/javascript/flash.js","webpack:///./app/client/src/javascript/toggle.js","webpack:///./app/client/src/javascript/turbolinks.js","webpack:///./app/client/src/stylesheets/colors.scss","webpack:///./app/client/src/javascript/utils/overview.js","webpack:///./app/client/src/javascript/components/SVGPane/common.jsx","webpack:///./app/client/src/javascript/login/Landing/index.jsx","webpack:///./app/client/src/javascript/utils/styles/index.js","webpack:///./app/client/src/javascript/utils/alerts.js","webpack:///./app/client/src/javascript/utils/platforms.js","webpack:///./app/client/src/javascript/login/pack.js","webpack:///./app/client/src/javascript/login/signup.js","webpack:///./app/client/src/javascript/components/SVGPane/Tooltip.jsx","webpack:///./app/client/src/javascript/watch-task.js","webpack:///./app/client/src/javascript/components/PlatformHexes.jsx","webpack:///./app/client/src/javascript/components/SVGPane/shapes.jsx"],"names":["SVGText","props","state","fillOpacity","displayedText","children","showEllipsis","this","ellipsed","slimText","setState","prevProps","_","isEqual","width","textElement","getComputedTextLength","slice","x","y","className","rest","ref","React","Component","propTypes","PropTypes","node","isRequired","string","bool","number","defaultProps","initialize","require","map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","module","exports","SVGPane","containerClass","height","iscroll","useRef","useState","isScrolling","setIsScrolling","containerClassSelector","useLayoutEffect","current","IScroll","keyBindings","left","up","right","down","mouseWheel","scrollbars","scrollX","scrollY","tap","container","document","querySelector","scrollTo","scrollWidth","offsetWidth","on","makeSwipable","useEffect","refresh","SVG","grabbing","xmlns","xmlnsXlink","dx","dy","floodColor","floodOpacity","stdDeviation","type","values","x1","x2","y1","y2","offset","stopColor","stopOpacity","css","styled","centered","ellipsis","flexRow","flexCol","breakWords","unstyledButton","classes","editIcon","requireContext","Turbolinks","start","window","ReactRailsUJS","detectEvents","useContext","$","_rails_loaded","Rails","jQuery","deparam","params","coerce","obj","coerce_types","true","false","null","each","replace","split","j","v","val","param","key","decodeURIComponent","cur","i","keys_last","length","test","shift","concat","isNaN","undefined","isArray","push","location","href","text","Alerts","success","remove","error","stopPropagation","preventDefault","toggle","input","prev","row","closest","attr","url","parentRow","data","shouldToggleParent","isEmpty","siblingToggles","siblings","find","is","Array","every","prop","toggleClass","ajax","reload","addEventListener","Sortable","init","HttpRequest","prototype","requestLoaded","endRequest","xhr","status","delegate","requestCompletedWithResponse","responseText","getResponseHeader","failed","requestFailedWithStatusCode","getPositionForPlatform","name","get","PLATFORM_IMAGES","DEFAULT","microsoft_azure_monitor","servicenow","servicenow_cmdb","new_relic","google_stackdriver","stackdriver","google_cloud","google_cloud_monitoring","datadog","wavefront","newrelic","bp_log_forwarder","blockStyle","theme","colors","white","disabledImage","disabled","Image","Group","transform","NoDataPlaceholder","image","NoDataPlaceholderContainer","labelClass","shape","xlinkHref","darkGray","LandingPage","onClick","platform","visit","linkName","search","importedColors","Proxy","target","color","startsWith","formatted","substring","isNil","darken","arg1","arg2","darkenP","lighten","lightenP","transparentize","transparentizeP","rgba","a","b","c","d","rgbaP","toastr","options","closeButton","newestOnTop","progressBar","positionClass","preventDuplicates","onclick","showDuration","hideDuration","timeOut","extendedTimeOut","showEasing","hideEasing","showMethod","hideMethod","errorAfterRedirect","once","message","info","successAfterRedirect","warning","getChartColorForPlatform","platform_class","toLowerCase","Platform","AZURE_METRICS","DATADOG","INFLUX_DB","NEW_RELIC","NUTANIX","OMS","SAP_ITOA","SERVICE_NOW","SIGNALFX","SPLUNK","STACKDRIVER_V3","STACKDRIVER_V4","SUMOLOGIC","VR_OPS","WAVEFRONT","validEmailRegex","RegExp","pwLengthRegex","pwCaseRegex","pwNumberRegex","pwSymbolRegex","validations","pathname","indexOf","companyNameInput","emailInput","passwordInput","eulaInput","submitButton","form","ruleElements","element","regex","basicFields","forEach","field","validateField","value","validationResult","isValid","feedback","el","class","parent","after","validateForm","setTimeout","passedRules","passed","allPassed","some","validatePasswordRules","click","submit","dataLayer","event","signup_type","first","removeClass","addClass","append","setFieldError","TooltipHeader","headerClass","TooltipLabel","ARROW_TYPES","bottom","translateY","arrowPoints","gagX","gagY","transparentGagX","transparentGagY","top","Tooltip","arrow","Container","LABEL_CLASSES","Arrow","points","Gag","TransparentGag","oneOf","healthyLabel","healthyColor","unhealthyLabel","unhealthyColor","healthy","unhealthy","COLLECTOR_TIMEOUT_MS","Status","watchTask","collectorId","taskId","callbacks","interval","setInterval","then","task","created","sent","clearTimeout","timeoutID","clearInterval","complete","exception","canceled","timeout","platforms","label","tooltipWidth","SCALE","PlatformHexes","hoveredPlatform","setHoveredPlatform","selectedPlatform","setSelectedPlatform","onHover","position","isHexagonActive","buttonStyle","onBlur","onClickHexagon","onFocus","onMouseLeave","onMouseOver","active","linkStyle","renderPlatformHexagon","func","SmallHexagon","Hexagon","LargeHexagon","WideHexagon","fill","invalid","shadow","Path","lightBlue"],"mappings":"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","file":"js/login-dca8a50482f4aedceeda.chunk.js","sourcesContent":["import React from 'react';\nimport PropTypes from 'prop-types';\n\n/**\n * Commonly used text patterns across all SVG doc\n * Adds ellipsis if text width is overflowing\n */\nclass SVGText extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n fillOpacity: 0,\n displayedText: props.children,\n showEllipsis: false,\n };\n }\n\n componentDidMount() {\n if (this.props.ellipsed) {\n this.slimText();\n }\n\n this.setState({ fillOpacity: 1 });\n }\n\n componentDidUpdate(prevProps) {\n if (!_.isEqual(this.props.children, prevProps.children)) {\n // eslint-disable-next-line react/no-did-update-set-state\n this.setState({ displayedText: this.props.children }, () => {\n this.slimText();\n });\n }\n }\n\n /**\n * Recursion function. Working horse of the component.\n * It reduces width by removing one last character until width fits\n * May lead to some performance issues, because of one rerendering per one character shortening\n */\n slimText() {\n const { width } = this.props;\n const { displayedText } = this.state;\n\n if (width < this.textElement.getComputedTextLength()) {\n this.setState(\n {\n displayedText: displayedText.slice(0, -1),\n showEllipsis: true,\n },\n this.slimText,\n );\n return;\n }\n\n this.setState({\n fillOpacity: 1,\n });\n }\n\n render() {\n // eslint-disable-next-line no-unused-vars\n const { x, y, className, ellipsed, ...rest } = this.props;\n const { displayedText, fillOpacity, showEllipsis } = this.state;\n\n return (\n {\n this.textElement = textElement;\n }}\n className={className}\n fillOpacity={fillOpacity}\n x={x}\n y={y}\n {...rest}\n >\n {displayedText}\n {showEllipsis ? '...' : ''}\n \n );\n }\n}\n\nSVGText.propTypes = {\n children: PropTypes.node.isRequired,\n className: PropTypes.string,\n ellipsed: PropTypes.bool,\n width: PropTypes.number.isRequired,\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n};\nSVGText.defaultProps = {\n className: '',\n ellipsed: true,\n};\n\nexport default SVGText;\n","// This file is automatically compiled by Webpack, along with any other files\n// present in this directory. You're encouraged to place your actual application logic in\n// a relevant structure within app/javascript and only use these pack files to reference\n// that code so it'll be compiled.\n\nimport { initialize } from '../src/javascript/initialize_pack';\nimport '../src/javascript/login/pack';\nimport '../src/stylesheets/application.scss';\n\ninitialize(require.context('src/javascript/login', true));\n","var map = {\n\t\"./Landing\": 361,\n\t\"./Landing/\": 361,\n\t\"./Landing/index\": 361,\n\t\"./Landing/index.jsx\": 361,\n\t\"./pack\": 670,\n\t\"./pack.js\": 670,\n\t\"./signup\": 671,\n\t\"./signup.js\": 671\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 1519;","import React, { useEffect, useLayoutEffect, useRef, useState } from 'react';\nimport PropTypes from 'prop-types';\nimport IScroll from 'iscroll';\nimport styled, { css } from 'react-emotion';\n\n/**\n * `` is a special tag which depicts commonly used styles.\n * https://developer.mozilla.org/en-US/docs/Web/SVG/Element/defs\n * We need it for cross-browser CSS `filter: drop-shadow` replacement\n */\nfunction renderDefs() {\n return (\n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n \n \n \n );\n}\n\nexport default function SVGPane({ children, containerClass, height, width, ...rest }) {\n const iscroll = useRef();\n const [isScrolling, setIsScrolling] = useState(false);\n const containerClassSelector = `.${containerClass}`;\n\n /**\n * Bringing IScroll for wide figures\n */\n function makeSwipable() {\n iscroll.current = new IScroll(containerClassSelector, {\n keyBindings: {\n left: 37,\n up: 38,\n right: 39,\n down: 40,\n },\n mouseWheel: true,\n scrollbars: true,\n scrollX: true,\n scrollY: true,\n tap: 'iscrollTap',\n });\n\n // Center the figure\n const container = document.querySelector(containerClassSelector);\n const scrollTo = (container.scrollWidth - container.offsetWidth) / 2;\n iscroll.current.scrollTo(-1 * scrollTo, 0); // `-1` coefficient because of (0, 0) it left top corner\n\n iscroll.current.on('beforeScrollStart', () => setIsScrolling(true));\n iscroll.current.on('scrollEnd', () => setIsScrolling(false));\n iscroll.current.on('scrollCancel', () => setIsScrolling(false));\n }\n\n // On initialization\n useLayoutEffect(() => {\n makeSwipable();\n }, []);\n\n useEffect(() => {\n iscroll.current.refresh();\n }, [height, width]);\n\n return (\n \n {renderDefs()}\n {children}\n \n );\n}\nSVGPane.propTypes = {\n children: PropTypes.node.isRequired,\n containerClass: PropTypes.string,\n height: PropTypes.number.isRequired,\n width: PropTypes.number.isRequired,\n};\nSVGPane.defaultProps = {\n containerClass: 'overview-container',\n};\n\nconst grabbing = props =>\n props.grabbing &&\n css`\n cursor: grabbing;\n `;\n\nconst SVG = styled.svg`\n display: block;\n margin: ${props => (props.centered ? '0 auto' : '0')};\n cursor: grab;\n\n ${grabbing}\n`;\n","import { css } from 'react-emotion';\n\nconst ellipsis = css`\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n\nconst flexRow = css`\n display: flex;\n flex-direction: row;\n`;\n\nconst flexCol = css`\n display: flex;\n flex-direction: column;\n`;\n\nconst breakWords = css`\n overflow-wrap: break-word;\n word-wrap: break-word;\n`;\n\nconst unstyledButton = css`\n display: flex;\n justify-content: flex-start;\n align-items: center;\n border: none;\n cursor: pointer;\n\n &[type='button'] {\n -webkit-appearance: none;\n appearance: none;\n }\n`;\nconst editIcon = css`\n ${unstyledButton}\n position: absolute;\n top: calc(50% - 14px);\n right: 4px;\n margin-right: 0;\n\n &:hover {\n cursor: pointer;\n }\n\n img {\n width: 16px;\n height: 16px;\n }\n`;\n\n// eslint-disable-next-line import/prefer-default-export\nexport const classes = {\n breakWords,\n editIcon,\n ellipsis,\n flexRow,\n flexCol,\n unstyledButton,\n};\n","/* eslint-disable import/prefer-default-export */\n\n// Import required files for all bundles to use\nimport ReactRailsUJS from 'react_ujs';\nimport $ from 'jquery';\nimport Rails from '@rails/ujs';\nimport Turbolinks from 'turbolinks';\n\nimport './vendor/jquery_deparam';\n\n/**\n * Initialize the pack, by starting Turbolinks & ReactRails and loading the required\n * components context.\n *\n * @param {any} requireContext The require context to load components from.\n */\nexport function initialize(requireContext) {\n Turbolinks.start();\n window.Turbolinks = Turbolinks;\n ReactRailsUJS.detectEvents();\n ReactRailsUJS.useContext(requireContext);\n\n $(document).on('turbolinks:load', () => {\n // eslint-disable-next-line\n if (!window._rails_loaded) {\n Rails.start();\n }\n window.$ = $;\n });\n}\n","/* eslint-disable */\n/*\n jQuery deparam is an extraction of the deparam method from Ben Alman's jQuery BBQ\n http://benalman.com/projects/jquery-bbq-plugin/\n Sourced from here: https://github.com/chrissrogers/jquery-deparam/blob/master/jquery-deparam.js\n*/\n(function ($) {\n $.deparam = function (params, coerce) {\n var obj = {},\n coerce_types = { true: !0, false: !1, null: null };\n\n // Iterate over all name=value pairs.\n $.each(params.replace(/\\+/g, ' ').split('&'), function (j, v) {\n var param = v.split('='),\n key = decodeURIComponent(param[0]),\n val,\n cur = obj,\n i = 0,\n // If key is more complex than 'foo', like 'a[]' or 'a[b][c]', split it\n // into its component parts.\n keys = key.split(']['),\n keys_last = keys.length - 1;\n\n // If the first keys part contains [ and the last ends with ], then []\n // are correctly balanced.\n if (/\\[/.test(keys[0]) && /\\]$/.test(keys[keys_last])) {\n // Remove the trailing ] from the last keys part.\n keys[keys_last] = keys[keys_last].replace(/\\]$/, '');\n\n // Split first keys part into two parts on the [ and add them back onto\n // the beginning of the keys array.\n keys = keys.shift().split('[').concat(keys);\n\n keys_last = keys.length - 1;\n } else {\n // Basic 'foo' style key.\n keys_last = 0;\n }\n\n // Are we dealing with a name=value pair, or just a name?\n if (param.length === 2) {\n val = decodeURIComponent(param[1]);\n\n // Coerce values.\n if (coerce) {\n val =\n val && !isNaN(val)\n ? +val // number\n : val === 'undefined'\n ? undefined // undefined\n : coerce_types[val] !== undefined\n ? coerce_types[val] // true, false, null\n : val; // string\n }\n\n if (keys_last) {\n // Complex key, build deep object structure based on a few rules:\n // * The 'cur' pointer starts at the object top-level.\n // * [] = array push (n is set to array length), [n] = array if n is\n // numeric, otherwise object.\n // * If at the last keys part, set the value.\n // * For each keys part, if the current level is undefined create an\n // object or array based on the type of the next keys part.\n // * Move the 'cur' pointer to the next level.\n // * Rinse & repeat.\n for (; i <= keys_last; i++) {\n key = keys[i] === '' ? cur.length : keys[i];\n cur = cur[key] =\n i < keys_last\n ? cur[key] || (keys[i + 1] && isNaN(keys[i + 1]) ? {} : [])\n : val;\n }\n } else {\n // Simple key, even simpler rules, since only scalars and shallow\n // arrays are allowed.\n\n if ($.isArray(obj[key])) {\n // val is already an array, so push on the next value.\n obj[key].push(val);\n } else if (obj[key] !== undefined) {\n // val isn't an array, but since a second value has been specified,\n // convert val into an array.\n obj[key] = [obj[key], val];\n } else {\n // val is a scalar.\n obj[key] = val;\n }\n }\n } else if (key) {\n // No value was defined, so set something meaningful.\n obj[key] = coerce ? undefined : '';\n }\n });\n\n return obj;\n };\n})(jQuery);\n/* eslint-enable */\n","$(document).on('ajax:complete', 'a[data-refresh=true]', () => {\n window.location.href = window.location.href;\n});\n","import Alerts from 'utils/alerts';\n\n$(document).on('turbolinks:load', () => {\n $('#flash .info').each(function () {\n const text = $(this).text();\n Alerts.success(text);\n $(this).remove();\n });\n\n $('#flash .notice').each(function () {\n const text = $(this).text();\n Alerts.success(text);\n $(this).remove();\n });\n\n $('#flash .alert').each(function () {\n const text = $(this).text();\n Alerts.error(text);\n $(this).remove();\n });\n});\n","import Alerts from 'utils/alerts';\n\nfunction disable_all_toggles() {\n $('.js-toggle').attr('disabled', true);\n}\n\n$(document).on('click', '.js-toggle', function (e) {\n e.stopPropagation();\n e.preventDefault();\n\n const toggle = $(this);\n const input = toggle.prev('input');\n const row = input.closest('tr');\n\n if (toggle.attr('disabled')) return;\n\n const parentRow = $(`tr.filter-metric-group[data-key=\"${row.data('parent-key')}\"]`);\n let shouldToggleParent = false;\n if (!_.isEmpty(row.data('parent-key'))) {\n const siblings = row.siblings(\n `tr.filter-submetric[data-parent-key=\"${row.data('parent-key')}\"]`,\n );\n const siblingToggles = siblings.find('input').map(function () {\n return $(this).is(':checked');\n });\n\n shouldToggleParent = Array(...siblingToggles).every(v => v === false);\n }\n\n let url;\n if (input.is(':checked')) {\n input.prop('checked', false);\n row.toggleClass(toggle.data('class-disabled'), true);\n if (shouldToggleParent) {\n parentRow.toggleClass(toggle.data('class-disabled'), true);\n }\n\n url = toggle.data('off-href');\n } else {\n input.prop('checked', true);\n row.toggleClass(toggle.data('class-disabled'), false);\n if (shouldToggleParent) {\n parentRow.toggleClass(toggle.data('class-disabled'), false);\n }\n\n url = toggle.data('on-href');\n }\n\n $.ajax({\n type: 'POST',\n url,\n success() {\n if (toggle.data('reload')) {\n disable_all_toggles();\n window.location.reload(true);\n }\n },\n error() {\n Alerts.error('Unable to toggle the setting');\n },\n });\n});\n","document.addEventListener('turbolinks:load', () => {\n if (window.Sortable) window.Sortable.init();\n\n // Monkey patch Turbolinks to render 403, 404 & 500 normally.\n // Without this, Turbolinks encounters an error and bails rendering any JS, causing react components\n // not to render - in this case, the navigation menu on error pages.\n // See https://github.com/turbolinks/turbolinks/issues/179\n window.Turbolinks.HttpRequest.prototype.requestLoaded = function () {\n return this.endRequest(() => {\n const code = this.xhr.status;\n if ((code >= 200 && code < 300) || code === 403 || code === 404 || code === 500) {\n this.delegate.requestCompletedWithResponse(\n this.xhr.responseText,\n this.xhr.getResponseHeader('Turbolinks-Location'),\n );\n } else {\n this.failed = true;\n this.delegate.requestFailedWithStatusCode(code, this.xhr.responseText);\n }\n });\n };\n});\n","module.exports = {\"blue\":\"rgb(36, 136, 255)\",\"lightBlue\":\"rgb(110, 196, 235)\",\"primaryBlue\":\"rgb(94, 133, 246)\",\"darkGrayFilter\":\"'brightness(0)', 'invert(62%)', 'sepia(0%)', 'saturate(2804%)', 'hue-rotate(61deg)', 'brightness(105%)', 'contrast(82%)'\",\"navBlueFilter\":\"'brightness(0)', 'saturate(100%)', 'invert(19%)', 'sepia(98%)', 'saturate(1099%)', 'hue-rotate(181deg)', 'brightness(102%)', 'contrast(89%)'\",\"lightBlueFilter\":\"'brightness(0)', 'saturate(100%)', 'invert(71%)', 'sepia(40%)', 'saturate(550%)', 'hue-rotate(164deg)', 'brightness(96%)', 'contrast(92%)'\",\"red\":\"rgb(208, 2, 27)\",\"lightRed\":\"rgb(255, 239, 240)\",\"green\":\"rgb(121, 171, 68)\",\"lightGreen\":\"rgb(248, 255, 241)\",\"orange\":\"rgb(245, 166, 35)\",\"lightOrange\":\"rgb(255, 249, 238)\",\"trueBlack\":\"rgb(0, 0, 0)\",\"black\":\"rgb(21, 21, 21)\",\"darkestGray\":\"rgb(34, 34, 34)\",\"darkGray\":\"rgb(153, 153, 153)\",\"mediumGray\":\"rgb(217, 217, 217)\",\"gray\":\"rgb(229, 229, 229)\",\"lightGray\":\"rgb(248, 248, 248)\",\"white\":\"rgb(255, 255, 255)\",\"navGray\":\"rgb(246, 246, 246)\",\"navBlue\":\"rgb(16, 82, 135)\",\"navCounterColor\":\"rgb(233, 134, 29)\",\"bgGray\":\"rgb(252, 252, 252)\",\"unhealthyColor\":\"rgb(170, 22, 24)\",\"healthyColor\":\"rgb(49, 199, 85)\",\"blueHexagonFill\":\"rgb(16, 82, 135)\",\"grayHexagonFill\":\"rgb(229, 229, 229)\",\"lightGrayHexagonFill\":\"rgb(248, 248, 248)\",\"mediumGrayHexagonFill\":\"rgb(217, 217, 217)\",\"pinkHexagonFill\":\"rgb(248, 199, 200)\",\"primaryBlueHexagonFill\":\"rgb(94, 133, 246)\",\"redHexagonFill\":\"rgb(157, 44, 17)\",\"whiteHexagonFill\":\"rgb(255, 255, 255)\",\"welcomeModalBackground\":\"rgb(120, 181, 231)\"};","// eslint-disable-next-line import/prefer-default-export\nexport const getPositionForPlatform = name => {\n return _.get(PLATFORM_IMAGES, name, PLATFORM_IMAGES.DEFAULT);\n};\n\nexport const PLATFORM_IMAGES = {\n microsoft_azure_monitor: {\n height: 75,\n width: 141,\n x: -15,\n y: 11,\n },\n servicenow: {\n height: 50,\n width: 94,\n x: 10,\n y: 22,\n },\n servicenow_cmdb: {\n height: 50,\n width: 94,\n x: 10,\n y: 22,\n },\n new_relic: {\n height: 75,\n width: 141,\n x: -13,\n y: 12,\n },\n google_stackdriver: {\n height: 70,\n width: 132,\n x: -10,\n y: 14,\n },\n stackdriver: {\n height: 70,\n width: 132,\n x: -10,\n y: 14,\n },\n google_cloud: {\n height: 70,\n width: 132,\n x: -10,\n y: 14,\n },\n google_cloud_monitoring: {\n height: 70,\n width: 132,\n x: -10,\n y: 14,\n },\n datadog: {\n height: 70,\n width: 132,\n x: -11,\n y: 14,\n },\n wavefront: {\n height: 80,\n width: 150,\n x: -17,\n y: 8,\n },\n // logs bundle_type is newrelic\n newrelic: {\n height: 75,\n width: 141,\n x: -13,\n y: 12,\n },\n bp_log_forwarder: {\n height: 85,\n width: 161,\n x: -21,\n y: 7,\n },\n DEFAULT: {\n height: 50,\n width: 94,\n x: 10,\n y: 22,\n },\n};\n","import React, { useRef } from 'react';\nimport PropTypes from 'prop-types';\nimport styled, { css } from 'react-emotion';\nimport { theme } from 'utils/styles';\n\n// import useDomRect from '../../hooks/useDomRect'\nimport SVGText from './SVGText';\n\nexport const blockStyle = css`\n fill: ${theme.colors.white};\n filter: url(#block-basic-shadow);\n cursor: pointer;\n`;\n\nconst disabledImage = props =>\n props.disabled &&\n css`\n filter: url(#grayscale);\n `;\n\nexport const Image = styled.image`\n ${disabledImage}\n`;\n\nexport function Group({ children, x, y, ...rest }) {\n const ref = useRef();\n // const rect = useDomRect(ref)\n\n return (\n \n {/* */}\n {children}\n \n );\n}\nGroup.propTypes = {\n children: PropTypes.node.isRequired,\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n};\n\nexport function NoDataPlaceholder({ image, text, transform }) {\n return (\n \n {!_.isEmpty(text) && (\n \n {text}\n \n )}\n\n \n \n );\n}\n\nNoDataPlaceholder.propTypes = {\n image: PropTypes.shape({\n height: PropTypes.number.isRequired,\n width: PropTypes.number.isRequired,\n x: PropTypes.number.isRequired,\n xlinkHref: PropTypes.string.isRequired,\n y: PropTypes.number.isRequired,\n }).isRequired,\n text: PropTypes.string,\n transform: PropTypes.string.isRequired,\n};\nNoDataPlaceholder.defaultProps = {\n text: '',\n};\n\nconst NoDataPlaceholderContainer = styled.g`\n cursor: default;\n`;\n\nconst labelClass = css`\n fill: ${theme.colors.darkGray};\n font-weight: 400;\n text-anchor: middle;\n`;\n","import React from 'react';\nimport Turbolinks from 'turbolinks';\n\nimport PlatformHexes from 'components/PlatformHexes';\n\nexport default function LandingPage() {\n function onHexagonClick(platform) {\n Turbolinks.visit(`/sign_up/${platform.linkName}${window.location.search}`);\n }\n\n return (\n
\n
\n

Welcome to BindPlane!

\n

\n Where do you want us to send your metrics?\n

\n\n
\n \n
\n

\n Already have an account? \n \n Sign in\n \n .\n

\n
\n
\n );\n}\n","/**\n * Things to help building CSS-in-JS\n */\n\nimport {\n darken as darkenP,\n lighten as lightenP,\n rgba as rgbaP,\n transparentize as transparentizeP,\n} from 'polished';\n\n// eslint-disable-next-line\nconst importedColors = require('sass-extract-loader?{\"plugins\":[\"sass-extract-js\"]}!../../../stylesheets/colors.scss');\nconst getter = (target, key) => {\n const color = target[key];\n if (color.startsWith(\"'brightness(0)'\")) {\n const formatted = target[key].replace(/', '/g, ' ');\n return formatted.substring(1, formatted.length - 1);\n }\n if (_.isNil(color)) {\n throw new Error(`Undefined color: ${key}`);\n }\n return color;\n};\n\nconst colors = new Proxy(importedColors, { get: getter });\n\nconst theme = { colors };\n\n// Swapped the default `polished` arguments order to make them look SASSy\nconst darken = (arg1, arg2) => darkenP(arg2, arg1);\nconst lighten = (arg1, arg2) => lightenP(arg2, arg1);\nconst transparentize = (arg1, arg2) => transparentizeP(arg2, arg1);\nconst rgba = (a, b, c, d) => rgbaP(a, b, c, d);\n\nexport { darken, lighten, rgba, theme, transparentize };\nexport * from './classes';\n","import toastr from 'toastr';\n\ntoastr.options = {\n closeButton: false,\n newestOnTop: false,\n progressBar: false,\n positionClass: 'toast-top-center',\n preventDuplicates: false,\n onclick: null,\n showDuration: 300,\n hideDuration: 1_000,\n timeOut: 5_000,\n extendedTimeOut: 1_000,\n showEasing: 'swing',\n hideEasing: 'linear',\n showMethod: 'slideDown',\n hideMethod: 'slideUp',\n};\n\n/**\n * Create an alert with red text\n * @param text {string} Text to alert with\n */\nfunction error(text) {\n return toastr.error(text);\n}\n\n/**\n * Create an alert with blue text\n * @param text {string} Text to alert with\n */\nfunction message(text) {\n return toastr.info(text);\n}\n\n/**\n * Create an alert with green text\n * @param text {string} Text to alert with\n */\nfunction success(text) {\n return toastr.success(text);\n}\n\n/**\n * Create an alert with orange text\n * @param text {string} Text to alert with\n */\nfunction warning(text) {\n return toastr.warning(text);\n}\n\n/**\n * Create an event listener to fire the success alert on the `turbolinks:load` event\n */\nfunction successAfterRedirect(text) {\n document.addEventListener('turbolinks:load', () => success(text), { once: true });\n}\n/**\n * Create an event listener to fire the error alert on the `turbolinks:load` event\n */\nfunction errorAfterRedirect(text) {\n document.addEventListener('turbolinks:load', () => error(text), { once: true });\n}\n\nconst Alerts = {\n error,\n errorAfterRedirect,\n message,\n success,\n successAfterRedirect,\n warning,\n};\n\nexport default Alerts;\n","// eslint-disable-next-line\nexport function getChartColorForPlatform(name) {\n switch (name) {\n case 'datadog':\n return '#7749A4';\n case 'stackdriver':\n case 'google_stackdriver':\n case 'google_cloud_monitoring':\n return '#2A663C';\n case 'microsoft_azure_monitor':\n return '#2D7CD0';\n case 'new_relic':\n return '#308597';\n case 'opsdatastore':\n return '#0089A3';\n case 'sap_itoa':\n return '#4BA9E1';\n case 'servicenow':\n return '#8BB5A4';\n case 'servicenow_cmdb':\n return '#8BB5A4';\n case 'signalfx':\n return '#59A200';\n case 'splunk':\n return '#94B966';\n case 'sumo_logic':\n return '#1194D2';\n case 'vmware_vrealize_operations_manager':\n return '#1194D2';\n case 'wavefront':\n return '#28ACE2';\n default:\n return null;\n }\n}\n\nexport function platform_class(name) {\n return name.toLowerCase().replace(/\\s/g, '_');\n}\n\nexport const Platform = {\n AZURE_METRICS: '51401994-bf43-4852-ae7f-c422ad15a9c5',\n DATADOG: '7bfcf25c-d528-4496-b62d-3d26399df13b',\n INFLUX_DB: 'f815054d-6ee8-4658-884d-6dc6f6f144f8',\n NEW_RELIC: '87e42437-bebd-40ce-886a-bf7e17b584e9',\n NUTANIX: 'eb64859d-73ad-4e61-bdd8-60cf0c5732c7',\n OMS: '07b83f1b-da13-4634-ae19-63e7fb4edf93',\n SAP_ITOA: '5d474c26-1104-43d9-b584-b31c52d1f849',\n SERVICE_NOW: 'aa321173-1f13-4477-88c8-5fd62967fff4',\n SIGNALFX: '05cdb14e-b4a3-4ef3-a010-699ffa832e0e',\n SPLUNK: '385ae862-e695-470a-a8a7-59db9e40499b',\n STACKDRIVER_V3: '06802251-c79f-44e0-9460-178db3616594',\n STACKDRIVER_V4: '2248f9d6-0807-4708-b2e8-f8bb9872be14',\n SUMOLOGIC: 'aec504ec-8cc9-423d-9ed2-d2bd5e841767',\n VR_OPS: 'a3b6258f-2472-45cd-b499-6741bd7aad60',\n WAVEFRONT: 'a7cdc881-b1c5-4058-bec1-d7aa8fe281c7',\n};\n","import '../base_pack';\nimport './signup';\n","const validEmailRegex = new RegExp(/.+@.+/);\nconst pwLengthRegex = new RegExp(/[A-z0-9!$@%*_?&-]{6,}/);\nconst pwCaseRegex = new RegExp(/(?=.*[a-z])(?=.*[A-Z]).*/);\nconst pwNumberRegex = new RegExp(/(?=.*[0-9]).*/);\nconst pwSymbolRegex = new RegExp(/(?=.*[!$@%*_?&-]).*/);\n\nconst validations = {\n 'company[name]': function (val) {\n if (_.isEmpty(val)) return 'Company name cannot be blank';\n return undefined;\n },\n 'user[email]': function (val) {\n if (_.isEmpty(val)) return 'Email cannot be blank';\n if (!validEmailRegex.test(val)) return 'Email appears to be invalid';\n\n return undefined;\n },\n 'user[password]': function (val) {\n if (!pwLengthRegex.test(val)) return '';\n if (!pwCaseRegex.test(val)) return '';\n if (!pwNumberRegex.test(val)) return '';\n if (!pwSymbolRegex.test(val)) return '';\n\n return undefined;\n },\n 'user[eula]': function (val) {\n if (!val) return 'Master Subscription Agreement must be accepted';\n return undefined;\n },\n};\n\n$(document).on('turbolinks:load', () => {\n // Only do this on /sign_up, not on /sign_in or elsewhere\n // since the field IDs are the same\n if (window.location.pathname.indexOf('/sign_up') < 0) return;\n\n const companyNameInput = $('#company_name');\n const emailInput = $('#user_email');\n const passwordInput = $('#user_password');\n const eulaInput = $('#user_eula');\n const submitButton = $('#signup');\n const form = $('#new_user');\n\n const ruleElements = [\n {\n element: $('#password-rules #length'),\n regex: pwLengthRegex,\n },\n {\n element: $('#password-rules #letters'),\n regex: pwCaseRegex,\n },\n {\n element: $('#password-rules #number'),\n regex: pwNumberRegex,\n },\n {\n element: $('#password-rules #special-character'),\n regex: pwSymbolRegex,\n },\n ];\n\n function clearFieldError(element) {\n element.removeClass('form-control-error');\n }\n\n function setFieldError(element, error) {\n element.addClass('form-control-error');\n const el = $('
', { class: 'form-control-feedback' }).text(error);\n element.parent().append(el);\n }\n\n function validateField(el) {\n const value = el.val();\n const name = el.attr('name');\n\n const validationResult = validations[name](value);\n const isValid = _.isNil(validationResult);\n\n setTimeout(() => {\n // Remove the current errors, if they exist. If validation fails, then\n // the error will be replaced with the new error message.\n const feedback = el.siblings('.form-control-feedback').first();\n\n // If we're clicking on a link, no longer validate cause we're going away\n if (form.data('clicking')) return;\n\n if (feedback) feedback.remove();\n if (isValid) {\n clearFieldError(el);\n } else {\n if (!el.data('blurred')) return;\n setFieldError(el, validationResult);\n }\n validateForm();\n }, 100);\n }\n\n function validatePasswordRules(e) {\n const value = e.target.value;\n\n const passedRules = [];\n ruleElements.forEach(({ element, regex }) => {\n const passed = regex.test(value);\n element.find('.check').toggleClass('hidden', !passed);\n element.find('.fail').toggleClass('hidden', passed);\n passedRules.push(passed);\n });\n\n if (!passwordInput.data('blurred')) return;\n const allPassed = !passedRules.some(v => v === false);\n $('#user_password').toggleClass('form-control-error', !allPassed);\n }\n\n function validateForm() {\n const validities = [companyNameInput, emailInput, passwordInput, eulaInput].map(\n field => {\n const name = field.prop('name');\n if (validations[name]) {\n if (field.prop('type') === 'checkbox') {\n return _.isNil(validations[name](field.prop('checked')));\n }\n return _.isNil(validations[name](field.val()));\n }\n\n return true;\n },\n );\n\n const isValid = !validities.some(v => v === false);\n submitButton.prop('disabled', !isValid);\n }\n const basicFields = [companyNameInput, emailInput, passwordInput];\n\n basicFields.forEach(field => field.on('change keyup', () => validateField(field)));\n\n // We don't want to validate the field until they leave it, so we don't show\n // them an error as they're typing their email for the first time\n basicFields.forEach(field =>\n field.on('blur', () => {\n field.data('blurred', true);\n validateField(field);\n }),\n );\n\n // special-case the eula field - the error div is outside the .field div,\n // so we have to remove/add it specially.\n eulaInput.on('change blur', () => {\n const value = eulaInput.prop('checked');\n const name = eulaInput.attr('name');\n\n const validationResult = validations[name](value);\n const isValid = _.isNil(validationResult);\n\n const feedback = $('.form-control-feedback.form-control-inline-error');\n if (feedback) feedback.remove();\n\n if (!isValid) {\n const el = $('
', {\n class: 'form-control-feedback form-control-inline-error',\n }).text(validationResult);\n eulaInput.parent().after(el);\n }\n\n validateForm();\n });\n\n // The password rules should be hidden until typed into, but then should stay.\n // Otherwise it looks janky adding/removing elements on field focus\n passwordInput.on('change keyup blur', e => {\n setTimeout(() => {\n // If we're clicking on a link, no longer validate cause we're going away\n if (form.data('clicking')) return;\n }, 100);\n\n validatePasswordRules(e);\n });\n\n $('a').click(() => {\n form.data('clicking', true);\n });\n\n $('#new_user').submit(() => {\n if (window.dataLayer) {\n // eslint-disable-next-line quote-props\n window.dataLayer.push({ event: 'new-signup', signup_type: 'regular' });\n }\n\n return true;\n });\n});\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styled, { css } from 'react-emotion';\nimport { theme } from 'utils/styles';\n\nimport { blockStyle } from './common';\nimport SVGText from './SVGText';\n\nexport const TooltipHeader = ({ children, width, x, y }) => (\n \n {children}\n \n);\n\nTooltipHeader.propTypes = {\n children: PropTypes.node.isRequired,\n width: PropTypes.number.isRequired,\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n};\n\nexport const TooltipLabel = ({ children, width, x, y }) => (\n \n {children}\n \n);\n\nTooltipLabel.propTypes = {\n children: PropTypes.node.isRequired,\n width: PropTypes.number.isRequired,\n x: PropTypes.number.isRequired,\n y: PropTypes.number.isRequired,\n};\n\nconst ARROW_TYPES = {\n bottom: {\n translateY: height => height,\n arrowPoints: '23,21 14,0 32,0',\n gagX: 10,\n gagY: -5,\n transparentGagX: 0,\n transparentGagY: -50,\n },\n top: {\n translateY: () => 0,\n arrowPoints: '25,-26 14,0 36,0',\n gagX: 14,\n gagY: 0,\n transparentGagX: 0,\n transparentGagY: -65,\n },\n};\n\nconst Tooltip = ({ arrow, children, height, status, transform, width }) => (\n \n \n\n \n\n {children}\n\n \n \n \n \n \n \n);\n\nTooltip.propTypes = {\n arrow: PropTypes.oneOf(['top', 'bottom']).isRequired,\n children: PropTypes.node.isRequired,\n height: PropTypes.number.isRequired,\n status: PropTypes.oneOf(['disabled', 'healthy', 'unhealthy', undefined]),\n transform: PropTypes.string.isRequired,\n width: PropTypes.number.isRequired,\n};\nTooltip.defaultProps = {\n status: undefined,\n};\n\nexport default Tooltip;\n\nconst headerClass = css`\n fill: black;\n font-weight: 600;\n`;\n\nconst labelClass = css`\n fill: ${theme.colors.darkGray};\n font-size: 14px;\n`;\n\nconst Container = styled.g`\n ${blockStyle}\n`;\n\nconst healthyLabel = css`\n fill: ${theme.colors.healthyColor};\n`;\n\nconst unhealthyLabel = css`\n fill: ${theme.colors.unhealthyColor};\n`;\n\nconst disabledLabel = css`\n fill: ${theme.colors.darkGray};\n`;\n\nconst LABEL_CLASSES = {\n disabled: disabledLabel,\n healthy: healthyLabel,\n unhealthy: unhealthyLabel,\n};\n\nconst Arrow = styled.polygon`\n ${blockStyle};\n`;\n\n// To remove blockStyle effect from arrow back side\nconst Gag = styled.rect`\n fill: white;\n filter: none;\n`;\n\n// To make place near arrow clickable\nconst TransparentGag = styled.rect`\n fill: red;\n fill-opacity: 0;\n filter: none;\n`;\n","import Alerts from 'utils/alerts';\n\nexport const COLLECTOR_TIMEOUT_MS = 120000;\n\nexport const Status = {\n CANCELED: -3,\n EXCEPTION: -2,\n FAILED: -1,\n CREATED: 0,\n SENT: 1,\n COMPLETE: 2,\n};\n\nconst watchTask = function (collectorId, taskId, callbacks) {\n const interval = setInterval(() => {\n $.get(`/collectors/${collectorId}/tasks/${taskId}`).then(task => {\n if (task.status === Status.CREATED) {\n if (callbacks.created) {\n callbacks.created(task);\n }\n } else if (task.status === Status.SENT) {\n if (callbacks.sent) {\n callbacks.sent(task);\n }\n } else if (task.status === Status.COMPLETE) {\n clearTimeout(timeoutID);\n clearInterval(interval);\n if (callbacks.complete) {\n callbacks.complete(task);\n }\n } else if (task.status === Status.FAILED) {\n clearTimeout(timeoutID);\n clearInterval(interval);\n if (callbacks.failed) {\n callbacks.failed(task);\n }\n } else if (task.status === Status.EXCEPTION) {\n clearTimeout(timeoutID);\n clearInterval(interval);\n if (callbacks.exception) {\n callbacks.exception(task);\n }\n } else if (task.status === Status.CANCELED) {\n clearTimeout(timeoutID);\n clearInterval(interval);\n if (callbacks.canceled) {\n callbacks.canceled(task);\n }\n } else {\n clearTimeout(timeoutID);\n Alerts.error(\n 'An unexpected error occurred. If the problem persists, let us know through the Chat Button in the bottom corner.',\n );\n }\n });\n }, 300);\n\n // Automatically cancel task after 120s - matches TestConnectionTaskRunner in collector, plus gives extra time\n const timeoutID = setTimeout(() => {\n clearInterval(interval);\n if (callbacks.timeout) {\n callbacks.timeout(interval);\n }\n }, COLLECTOR_TIMEOUT_MS);\n};\n\nexport default watchTask;\n","import React, { useState } from 'react';\nimport PropTypes from 'prop-types';\nimport { css } from 'react-emotion';\nimport { getPositionForPlatform } from 'utils/overview';\nimport { Platform } from 'utils/platforms';\n\nimport Tooltip, { TooltipHeader } from './SVGPane/Tooltip';\nimport SVGPane from './SVGPane';\nimport { LargeHexagon } from './SVGPane/shapes';\n\nconst platforms = [\n {\n id: Platform.NEW_RELIC,\n label: 'New Relic',\n linkName: 'new_relic',\n name: 'new_relic',\n tooltipWidth: 166,\n x: 4,\n y: 4,\n },\n {\n id: Platform.STACKDRIVER_V4,\n label: 'Google Cloud Monitoring',\n linkName: 'google',\n name: 'google_cloud_monitoring',\n tooltipWidth: 282,\n x: 104,\n y: 64,\n },\n {\n id: Platform.DATADOG,\n label: 'Datadog',\n linkName: 'datadog',\n name: 'datadog',\n tooltipWidth: 156,\n x: 4,\n y: 124,\n },\n {\n id: Platform.OMS,\n label: 'Microsoft Azure',\n linkName: 'azure',\n name: 'microsoft_azure_monitor',\n tooltipWidth: 210,\n x: 204,\n y: 4,\n },\n {\n id: Platform.WAVEFRONT,\n label: 'Wavefront',\n linkName: 'wavefront',\n name: 'wavefront',\n tooltipWidth: 172,\n x: 204,\n y: 124,\n },\n];\n\nconst SCALE = 1.3;\n\nexport default function PlatformHexes({ onClick }) {\n const [hoveredPlatform, setHoveredPlatform] = useState(null);\n const [selectedPlatform, setSelectedPlatform] = useState(null);\n\n function onHover(platform) {\n setHoveredPlatform(platform);\n }\n\n function onClickHexagon(platform) {\n setSelectedPlatform(platform);\n onClick(platform);\n }\n\n function renderPlatformHexagon(platform) {\n const position = getPositionForPlatform(platform.name);\n const isHexagonActive =\n _.get(selectedPlatform, 'name', '') === platform.name ||\n _.get(hoveredPlatform, 'name', '') === platform.name;\n\n if (onClick) {\n return (\n onHover(null)}\n onClick={() => onClickHexagon(platform)}\n onFocus={() => onHover(platform)}\n onMouseLeave={() => onHover(null)}\n onMouseOver={() => onHover(platform)}\n transform={`translate(${platform.x}, ${platform.y})`}\n >\n \n \n \n );\n }\n\n return (\n {\n onHover(null);\n }}\n onFocus={() => {\n onHover(platform);\n }}\n onMouseLeave={() => {\n onHover(null);\n }}\n onMouseOver={() => {\n onHover(platform);\n }}\n transform={`translate(${platform.x}, ${platform.y})`}\n >\n \n \n \n );\n }\n\n function renderTooltip() {\n if (_.isNil(hoveredPlatform)) return null;\n\n return (\n \n \n \n {`Stream to ${hoveredPlatform.label}`}\n \n \n \n );\n }\n\n return (\n \n \n {platforms.map(platform => renderPlatformHexagon(platform))}\n \n {renderTooltip()}\n \n );\n}\nPlatformHexes.propTypes = {\n onClick: PropTypes.func,\n};\nPlatformHexes.defaultProps = {\n onClick: null,\n};\n\nconst buttonStyle = css`\n cursor: pointer;\n\n &:active {\n outline: none;\n }\n`;\n\nconst linkStyle = css`\n &:active {\n outline: none;\n }\n`;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport styled, { css } from 'react-emotion';\nimport { theme } from 'utils/styles';\n\nimport { blockStyle } from './common';\n\nconst PLATFORM_D = `\nM 3 53.7\nq -3 -5.2, 0 -10.4\nl 22 -38.1\nq 3 -5.2, 9 -5.2\nl 44 0\nq 6 0, 9 5.2\nl 22 38.1\nq 3 5.2, 0 10.4\nl -22, 38.1\nq -3, 5.2, -9, 5.2\nl -44 0\nq -6 0, -9 -5.2\nZ\n`;\n\nconst ENDPOINT_D = `\nM 25 3\nq 5 -3, 10 0\nl 21 12\nq 4 3, 4 8\nl 0 25\nq 0 4, -4 7\nl -21 12\nq -5 3, -10 0\nl -21 -12\nq -4 -3, -4 -7\nl 0 -25\nq 0 -5, 4 -8\nZ\n`;\n\nconst AGENT_D = `\nM 3 36.7\nq -3 -5.2, 0 -10.4\nl 9 -15.6\nq 3 -5.2, 9 -5.2\nl 101 0\nq 6 0, 9 5.2\nl 9 15.6\nq 3 5.2, 0 10.4\nl -9, 15.6\nq -3, 5.2, -9, 5.2\nl -101 0\nq -6 0, -9 -5.2\nZ\n`;\n\nexport const SmallHexagon = props => ;\nexport const LargeHexagon = props => ;\nexport const WideHexagon = props => ;\n\n/**\n * Just a path element to the hexagon. Should be inserted into `svg` DOM element\n */\nfunction Hexagon({ active, className, disabled, fill, invalid, shadow, type }) {\n let d;\n\n switch (type) {\n case 'endpoint':\n d = ENDPOINT_D;\n break;\n case 'platform':\n d = PLATFORM_D;\n break;\n case 'agent':\n d = AGENT_D;\n break;\n default:\n throw new Error(`No such hexagon type specified: ${type}`);\n }\n\n return (\n \n );\n}\nHexagon.propTypes = {\n active: PropTypes.bool,\n className: PropTypes.string,\n disabled: PropTypes.bool,\n fill: PropTypes.oneOf([\n 'blue',\n 'gray',\n 'lightGray',\n 'mediumGray',\n 'pink',\n 'primaryBlue',\n 'red',\n 'white',\n ]),\n invalid: PropTypes.bool,\n shadow: PropTypes.bool,\n type: PropTypes.oneOf(['endpoint', 'platform', 'agent']).isRequired,\n};\nHexagon.defaultProps = {\n active: false,\n className: '',\n disabled: false,\n fill: 'white',\n invalid: false,\n shadow: true,\n};\n\nconst active = props =>\n props.active &&\n css`\n stroke: ${theme.colors.lightBlue};\n stroke-width: 3px;\n `;\n\nconst disabled = props =>\n props.disabled &&\n css`\n cursor: disabled;\n stroke: ${theme.colors.darkGray};\n stroke-width: 2px;\n filter: none;\n `;\n\nconst invalid = props =>\n props.invalid &&\n css`\n stroke: ${theme.colors.unhealthyColor};\n stroke-width: 2px;\n filter: none;\n `;\n\nconst fill = props =>\n !_.isNil(props.fill) &&\n css`\n fill: ${theme.colors[`${props.fill}HexagonFill`]} !important;\n `;\n\nconst shadow = props => props.shadow && blockStyle;\n\nconst Path = styled.path`\n ${invalid}\n ${disabled}\n ${active}\n ${fill}\n ${shadow}\n`;\n"],"sourceRoot":""}