{"version":3,"file":"js/1508-82162b4d3ffbefbf2611.chunk.js","mappings":"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","sources":["webpack:///./app/javascript/components/SharedComponents/CompareIcon/index.jsx","webpack:///./app/javascript/utils/ComparableLocations.js"],"sourcesContent":["import React from 'react';\nimport cookie from 'react-cookies';\nimport ReactTooltip from 'react-tooltip';\n\nimport { updateComparables } from \"../../../utils/ComparableLocations\";\nimport Portal from '../Portal';\nimport Notification from '../Notification';\nimport { SvgIco } from \"../Icons\";\n\nimport './index.sass';\n\n\nexport class CompareIcon extends React.PureComponent {\n\n handleIsActive = () => {\n const { siteKey, locationId } = this.props;\n const retrievedComparableLocations = localStorage && localStorage.getItem(`my.comparable_lease_${siteKey}`);\n const comparableLocations = JSON.parse(retrievedComparableLocations) || {};\n let allIds = [];\n\n for (let prop in comparableLocations) {\n if (comparableLocations.hasOwnProperty(prop)) {\n allIds = allIds.concat(comparableLocations[prop]);\n }\n }\n const isActive = allIds.indexOf(`${locationId}`) >= 0;\n\n this.setState({ isActive });\n };\n\n componentDidMount() {\n this.handleIsActive();\n };\n\n componentDidUpdate(prevProps, prevState, snapshot) {\n const { comparableLimitExceededError, showLimitExceedMessage } = this.state;\n\n comparableLimitExceededError && comparableLimitExceededError !== prevState.comparableLimitExceededError && this.showLimitExceedMessage();\n this.props.comparableLocations !== prevProps.comparableLocations && this.handleIsActive();\n showLimitExceedMessage && showLimitExceedMessage !== prevState.showLimitExceedMessage && document.addEventListener('click', this.handleClickOutside);\n };\n\n handleClickOutside = () => {\n const { showLimitExceedMessage } = this.state;\n\n document.removeEventListener('click', this.handleClickOutside);\n showLimitExceedMessage && this.hideLimitExceedMessage();\n }\n\n constructor(props) {\n super(props);\n this.typingTimer = null;\n\n this.state = {\n policyIsAccepted: cookie.load('cookie_consent_shown'),\n comparableLimitExceededError: false,\n showLimitExceedMessage: false,\n descriptionPopup: false,\n isActive: false,\n };\n }\n\n\n handleClick = () => {\n const { comparableLimitExceededError, isActive } = this.state;\n const { updateComparableLocations, siteKey, locationId, hideTooltip, kind } = this.props;\n\n if (comparableLimitExceededError && !isActive) {\n this.showLimitExceedMessage();\n } else {\n const showInfoPopup = !(localStorage && localStorage.getItem(`my.comparable_message_shown`));\n const newComparablesList = updateComparables(locationId, siteKey, kind, this.bounce);\n\n showInfoPopup &&\n this.setState({ descriptionPopup: true }, () => {\n clearTimeout(this.typingTimer);\n localStorage && localStorage.setItem(`my.comparable_message_shown`, 'true')\n this.typingTimer = setTimeout(() => this.setState({ descriptionPopup: false }), 6000);\n });\n\n if (newComparablesList.limitExceededError) {\n this.setState({ comparableLimitExceededError: !this.state.comparableLimitExceededError });\n } else {\n const { comparableLocations } = newComparablesList;\n const kindPresent = comparableLocations[kind] && comparableLocations[kind].length;\n\n this.setState({ isActive: kindPresent && comparableLocations[kind].indexOf(`${locationId}`) >= 0 });\n updateComparableLocations && updateComparableLocations(comparableLocations);\n }\n\n !hideTooltip && ReactTooltip.hide(this[`compareIcon${locationId}`]);\n }\n };\n\n\n bounce = () => {\n const iconWrapper = document.getElementById(`iconWrapper${this.props.locationId}`);\n\n iconWrapper.classList.add('bounce');\n setTimeout(() => iconWrapper.classList.remove('bounce'), 1000);\n };\n\n\n showLimitExceedMessage = () =>\n this.setState({ showLimitExceedMessage: true }, () => {\n this.typingTimer = setTimeout(() => this.setState({ showLimitExceedMessage: false }), 6000);\n });\n\n\n hideLimitExceedMessage = () => {\n clearTimeout(this.typingTimer);\n this.setState({ showLimitExceedMessage: false });\n };\n\n\n closeDescriptionPopup = () => {\n clearTimeout(this.typingTimer);\n this.setState({ descriptionPopup: false });\n localStorage && localStorage.setItem(`my.comparable_message_shown`, 'true');\n };\n\n\n render() {\n\n const { descriptionPopup, isActive, policyIsAccepted, showLimitExceedMessage } = this.state;\n const { indentation, locationId, notificationWrapperId, tooltipPosition, withLabel } = this.props;\n const tooltipText = isActive ? I18n.t('compare.icon.tooltip_text.remove') : I18n.t('compare.icon.tooltip_text.add');\n const limitExceedMessage = I18n.t('compare.icon.tooltip_text.limit_exceed_message');\n\n\n return (\n
\n { withLabel\n ?\n
\n
\n \n { isActive &&\n
\n \n
\n }\n
\n \n { I18n.t('compare.icon.tooltip_text.add') }\n \n
\n :\n
\n
\n
this[`compareIcon${ locationId }`] = el }>\n \n
\n\n { isActive &&\n
\n \n
\n }\n\n { }\n
\n
\n }\n\n \n
this.notificationWrapper = el}\n className=\"notifications-wrapper\"\n id={notificationWrapperId}\n role=\"button\"\n style={{ display: 'flex', justifyContent: 'center' }}>\n\n \n\n \n
\n
\n\n
\n )\n }\n}\n\n\nexport default CompareIcon;\n","import { handleComparableLocationsCounter } from './topBarHelper';\n\n\nexport const updateComparables = (locationId, siteKey, kind, bounceFunction) => {\n const locationsLimit = 4;\n const locationIdStr = `${locationId}`;\n const comparableLocations = (localStorage && JSON.parse(localStorage.getItem(`my.comparable_lease_${siteKey}`))) || {};\n const comparableCount = comparableLocations && Object.keys(comparableLocations).length;\n const locationKindPresent = comparableCount && comparableLocations[kind];\n const locationIsInTheList = locationKindPresent && comparableLocations[kind].indexOf(locationIdStr) >= 0;\n const limitExceededError = comparableCount && locationKindPresent && comparableLocations[kind].length === locationsLimit && !locationIsInTheList;\n\n if (limitExceededError) {\n return { limitExceededError };\n } else {\n if (locationIsInTheList) {\n comparableLocations[kind].splice(comparableLocations[kind].indexOf(locationIdStr), 1);\n comparableLocations[kind].length === 0 && delete comparableLocations[kind];\n } else {\n bounceFunction && bounceFunction(locationId);\n comparableLocations[kind]\n ? comparableLocations[kind].unshift(locationIdStr)\n : comparableLocations[kind] = [locationIdStr];\n }\n\n localStorage.setItem(`my.comparable_lease_${siteKey}`, JSON.stringify(comparableLocations));\n handleComparableLocationsCounter(siteKey, !locationIsInTheList);\n\n return { comparableLocations };\n }\n};\n"],"names":["CompareIcon","_React$PureComponent","_inherits","_super","_createSuper","props","_this","_classCallCheck","call","_defineProperty","_assertThisInitialized","_this$props","siteKey","locationId","retrievedComparableLocations","localStorage","getItem","concat","comparableLocations","JSON","parse","allIds","prop","hasOwnProperty","isActive","indexOf","setState","showLimitExceedMessage","state","document","removeEventListener","handleClickOutside","hideLimitExceedMessage","_this$state","comparableLimitExceededError","_this$props2","updateComparableLocations","hideTooltip","kind","showInfoPopup","newComparablesList","bounceFunction","locationIdStr","comparableCount","Object","keys","length","locationKindPresent","locationIsInTheList","limitExceededError","splice","unshift","setItem","stringify","handleComparableLocationsCounter","updateComparables","bounce","descriptionPopup","clearTimeout","typingTimer","setTimeout","kindPresent","ReactTooltip","hide","iconWrapper","getElementById","classList","add","remove","policyIsAccepted","cookie","_createClass","key","value","this","handleIsActive","prevProps","prevState","snapshot","_this$state2","addEventListener","_this2","_this$state3","_this$props3","indentation","notificationWrapperId","tooltipPosition","withLabel","tooltipText","I18n","t","limitExceedMessage","React","className","onClick","handleClick","id","SvgIco","name","size","role","style","top","ref","el","place","effect","Portal","notificationWrapper","display","justifyContent","Notification","message","visible","customClass","handleClose","closeDescriptionPopup"],"sourceRoot":""}