{"version":3,"file":"719.e2647b96b69b87eb577c.dist.js","mappings":"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","sources":["webpack://hm/./wwwroot/js/components/card/listing-card.js","webpack://hm/./wwwroot/js/components/inputs/email-input.js","webpack://hm/./wwwroot/js/components/order-summary.js"],"sourcesContent":["import {nextTick} from 'vue';\nimport Blazy from 'blazy';\nimport {globalActions} from '../../store/global-actions';\nimport {store} from '../../store/global-store';\nimport {googleAnalyticMixin} from '../mixins/component-mixins';\n\nconst actionableCard = {\n data() {\n return {\n forceFocus: false,\n primaryAction: null,\n };\n },\n computed: {\n primaryActionComponentName() {\n return `${this.primaryAction.actionName}-primary-action`;\n },\n },\n methods: {\n setPrimaryAction(action) {\n this.primaryAction = action;\n nextTick(() => {\n this.forceFocus = true;\n nextTick(() => this.forceFocus = false);\n });\n },\n hidePrimaryAction() {\n this.setPrimaryAction(null);\n },\n },\n};\n\nfunction initListingCardComponent(app) {\n const listingCardBase = {\n props: {\n listing: {\n required: true,\n },\n sortIndex: {\n type: Number,\n required: false,\n default: 0,\n },\n favoriteUrl: {\n type: String,\n required: false,\n },\n previewUrl: {\n type: String,\n required: false,\n },\n loadPhoneUrl: {\n type: String,\n required: false,\n },\n detailsUrl: {\n type: String,\n required: false,\n },\n recommendedAdvertsUrl: {\n type: String,\n required: false,\n },\n forceThumbnailForLazy: {\n type: Boolean,\n required: false,\n default: true,\n },\n showContactButton: {\n type: Boolean,\n required: false,\n default: false,\n },\n thumbnailForLazy: {\n type: String,\n required: false,\n },\n },\n data() {\n return {\n isListingVisible: this.listing.visible,\n showThumbnailForLazy: this.forceThumbnailForLazy,\n };\n },\n computed: {\n thumbImageUrl() {\n if (!this.coverPhoto) {\n return this.thumbnailForLazy;\n }\n\n return this.showThumbnailForLazy ? this.coverPhoto.thumbnailHRef : (this.thumbnailForLazy || this.sampleImageUrl);\n },\n sampleImageUrl() {\n return this.coverPhoto.sampleHRef || this.coverPhoto.thumbnailHRef || this.coverPhoto.hRef;\n },\n priceText() {\n return (!this.listing.hidePrice && this.listing.priceText) ? this.listing.priceText : this.listing.priceTypeText;\n },\n priceAreaAddon() {\n return this.listing.priceAreaAddon;\n },\n showFloor() {\n return this.listing.floorText && !this.listing.bedroomsNumberText && !this.listing.bathroomsNumberText;\n },\n highlightImageText() {\n return this.listing.isRecentlyDealCompleted || !this.isListingVisible;\n },\n coverPhoto() {\n return this.listing && this.listing.media && this.listing.media.coverPhoto;\n },\n },\n methods: {\n _subscribeCoverImgLoaded() {\n // Probably it's not ideal but this solution solve multiple initializing blazy when\n // there are some changes for listing card element (e.g. sortIndex).\n // Once thumbnail was successfully loaded we don't try to use sample anymore.\n const that = this;\n // eslint-disable-next-line no-unused-vars\n const bLazy = new Blazy({ // NOSONAR\n success: (el) => {\n if (el.dataset.src === that.coverPhoto.thumbnailHRef) {\n that.showThumbnailForLazy = true;\n }\n },\n });\n },\n },\n mounted() {\n if (this.coverPhoto) {\n this._subscribeCoverImgLoaded();\n }\n },\n };\n\n app.component('listing-card', {\n extends: listingCardBase,\n template: '#listing-card',\n mixins: [googleAnalyticMixin],\n props: {\n isAuthenticated: {\n type: Boolean,\n default: false,\n },\n isClickable: {\n type: Boolean,\n default: true,\n },\n },\n computed: {\n fullRecommendedAdvertsUrl() {\n return `${this.recommendedAdvertsUrl}?advertId=${this.listing.id}`;\n },\n isViewed() {\n return this.isAuthenticated && this.listing.isViewed;\n },\n },\n methods: {\n async preview() {\n if (this.isClickable) {\n this._markViewed();\n globalActions.openPreview(this.listing.id, this.listing.listingType, this.previewUrl);\n }\n },\n _markViewed() {\n if (this.isAuthenticated && this.favoriteUrl) {\n this.listing.isViewed = true;\n }\n },\n _subscribeMarkAsViewedStore() {\n store.subscribe((mutation) => {\n if (mutation.type === 'markAsViewed' && mutation.payload === this.listing.id) {\n this._markViewed();\n }\n });\n },\n },\n mounted() {\n this._subscribeMarkAsViewedStore();\n },\n });\n\n app.component('listing-card-extended', {\n extends: listingCardBase,\n template: '#listing-card-extended',\n mixins: [actionableCard],\n props: {\n isMobileDevice: {type: Boolean, required: false},\n starInfo: {required: false},\n shareText: {type: String, required: false},\n shareUrl: {type: String, required: false},\n shareTrackUrl: {type: String, required: false},\n isAdvert: {type: Boolean, default: true},\n },\n data() {\n return {\n isListingFavorite: true,\n isMobile: this.isMobileDevice,\n };\n },\n methods: {\n preview() {\n if (this.listing.allRequiredFilled) {\n globalActions.openFullscreenModal(this.detailsUrl, this.isAdvert, this.previewUrl);\n } else {\n location.href = this.previewUrl;\n }\n },\n change(value) {\n if (value && value.actionName === 'show') {\n this.isListingVisible = value.state;\n if (!this.isListingVisible) {\n this.listing.engageAction = null;\n }\n\n this.$refs.moreActionsDropdown.close();\n }\n\n this.$emit('update', value, this.listing.id);\n },\n hasActions() {\n return (this.listing.actions && this.listing.actions.length) ||\n (this.listing.moreActions && this.listing.moreActions.length);\n },\n },\n });\n}\n\nexport {\n initListingCardComponent,\n actionableCard,\n};\n","import debounce from 'lodash/debounce';\nimport stringUtils from '../../shared/string-utils';\n\nconst ONE_SECOND = 1000;\nconst LETTER_REGEXP = /\\w/;\nconst MAX_PREDICTED_EMAILS_TO_SHOW = 3;\nconst MOST_POPULAR_EMAIL_DOMAINS = [\n /* Default domains included */\n 'aol.com', 'att.net', 'comcast.net', 'facebook.com', 'gmail.com', 'gmx.com', 'googlemail.com',\n 'google.com', 'hotmail.com', 'hotmail.co.uk', 'mac.com', 'me.com', 'mail.com', 'msn.com',\n 'live.com', 'sbcglobal.net', 'verizon.net', 'yahoo.com', 'yahoo.co.uk',\n /* Other global domains */\n 'email.com', 'fastmail.fm', 'games.com', 'gmx.net', 'hush.com', 'hushmail.com', 'icloud.com',\n 'iname.com', 'inbox.com', 'lavabit.com', 'love.com', 'outlook.com', 'pobox.com', 'protonmail.ch', 'protonmail.com', 'tutanota.de', 'tutanota.com', 'tutamail.com', 'tuta.io',\n 'keemail.me', 'rocketmail.com', 'safe-mail.net', 'wow.com', 'ygm.com',\n 'ymail.com', 'zoho.com', 'yandex.com', 'post.com', 'consultant.com', 'myself.com',\n 'europe.com', 'dr.com', 'engineer.com', 'asia.com', 'list-manage.com', 'sendgrid.net',\n 'live.net', 'freemail.hu', 'gmx.ch', 'fastmail.com', 'mailbox.org',\n /* United States ISP domains */\n 'bellsouth.net', 'charter.net', 'cox.net', 'earthlink.net', 'juno.com', 'usa.com',\n /* British ISP domains */\n 'btinternet.com', 'virginmedia.com', 'blueyonder.co.uk', 'freeserve.co.uk', 'live.co.uk',\n 'ntlworld.com', 'o2.co.uk', 'orange.net', 'sky.com', 'talktalk.co.uk', 'tiscali.co.uk',\n 'virgin.net', 'wanadoo.co.uk', 'bt.com',\n /* Russian ISP domains */\n 'mail.ru', 'rambler.ru', 'yandex.ru', 'ya.ru', 'list.ru', 'yandex.by', 'tut.by', 'mail.gomel.by',\n];\n\nexport class EmailTyposChecker {\n constructor() {\n if (!EmailTyposChecker.emailDomainTyposCheckers) {\n EmailTyposChecker.emailDomainTyposCheckers = MOST_POPULAR_EMAIL_DOMAINS\n .flatMap(EmailTyposChecker.getMostCommonEmailDomainTypos);\n }\n }\n\n predictCorrectEmailsVariant(email) {\n if (this._lastCachedEmail !== email) {\n this._lastCachedEmail = email;\n this._cache = this._predictCorrectEmailsVariant(email);\n }\n\n return this._cache;\n }\n\n formatCorrectEmailVariants(emails) {\n return emails\n .slice(0, MAX_PREDICTED_EMAILS_TO_SHOW)\n .join(', ');\n }\n\n _predictCorrectEmailsVariant(email) {\n if (!email) {\n return [];\n }\n\n const emailParts = email.split('@');\n const expectedPartsAmount = 2; // @\n if (emailParts.length !== expectedPartsAmount) {\n return [];\n }\n\n const [emailLogin, emailDomain] = emailParts;\n\n if (MOST_POPULAR_EMAIL_DOMAINS.some((popularDomain) => popularDomain === emailDomain)) {\n return [];\n }\n\n const predictedEmails = EmailTyposChecker.emailDomainTyposCheckers\n .filter(({domain, regexp}) => regexp.test(emailDomain))\n .map(({domain, regexp, correct}) => {\n const resultDomain = domain.replace('\\\\.', '.');\n\n if (correct) {\n return correct(email, resultDomain);\n } else {\n return `${emailLogin}@${resultDomain}`;\n }\n });\n\n return [...new Set(predictedEmails)];\n }\n\n isEmailCorrect(email) {\n const predictedCorrectEmails = this.predictCorrectEmailsVariant(email);\n return predictedCorrectEmails && predictedCorrectEmails.length === 0;\n }\n\n static getMostCommonEmailDomainTypos(domain) {\n const regexpBase = domain.replace('.', '\\\\.');\n return [\n ...EmailTyposChecker.getMissingLetterDomainTypoCheckers(regexpBase),\n ...EmailTyposChecker.getExtraLetterDomainTypoCheckers(regexpBase),\n ...EmailTyposChecker.getWrongLetterDomainTypoCheckers(regexpBase),\n ...EmailTyposChecker.getIncorrectPositionOfAtSymbolCheckers(regexpBase),\n ];\n }\n\n static getMissingLetterDomainTypoCheckers(domain) {\n return EmailTyposChecker.getEmailDomainTypoCheckers(domain,\n (index) => stringUtils.insert(domain, index + 1, '{0}'));\n }\n\n static getExtraLetterDomainTypoCheckers(domain) {\n const checkers = [];\n const addChecker = (checker) => checkers.push({domain, regexp: this.createTypoRegexp(checker)});\n\n for (let i = 0; i < domain.length; i++) {\n if (LETTER_REGEXP.test(domain[i])) {\n addChecker(stringUtils.insert(domain, i, '.'));\n\n if (i === domain.length - 1 || !LETTER_REGEXP.test(domain[i + 1])) {\n addChecker(stringUtils.insert(domain, i + 1, '.'));\n }\n }\n }\n\n return checkers;\n }\n\n static getIncorrectPositionOfAtSymbolCheckers(domain) {\n return [{\n domain,\n regexp: this.createTypoRegexp(`.+?${domain}`),\n correct: (email = '', emailDomain = '') => {\n const domainPosition = email.lastIndexOf(emailDomain);\n const emailLogin = email.replace('@', '').substring(0, domainPosition - 1);\n return `${emailLogin}@${emailDomain}`;\n },\n }];\n }\n\n static getWrongLetterDomainTypoCheckers(domain) {\n return EmailTyposChecker.getEmailDomainTypoCheckers(domain,\n (index) => stringUtils.replaceChar(domain, index, '.'));\n }\n\n static getEmailDomainTypoCheckers(domain, generateCheckerRegexp) {\n return domain.split('')\n .map((char, index) => ({char, index}))\n .filter((symbol) => LETTER_REGEXP.test(symbol.char))\n .map((symbol) => ({domain, regexp: this.createTypoRegexp(generateCheckerRegexp(symbol.index))}));\n }\n\n static createTypoRegexp(regex) {\n return new RegExp(`^${regex}$`);\n }\n}\nfunction initEmailInput(app) {\n app.component('email-input', {\n inheritAttrs: false,\n template: '#email-input',\n props: {\n modelValue: {\n type: String,\n },\n inputClasses: {\n type: String,\n required: false,\n },\n inputGroupClasses: {\n type: String,\n required: false,\n },\n isInputGroup: {\n type: Boolean,\n default: false,\n },\n disableTextSuggestions: {\n type: Boolean,\n default: false,\n },\n disableModalSuggestions: {\n type: Boolean,\n required: false,\n },\n onSuggestionAccept: {\n type: Function,\n default: () => {},\n required: false,\n },\n },\n emits: ['update:modelValue'],\n data() {\n return {\n email: this.modelValue,\n visible: false,\n letterRegex: /\\w/,\n emailDomainTyposCheckers: null,\n predictedDomains: [],\n debounceEmailValidation: () => { },\n emailTyposChecker: new EmailTyposChecker(),\n isSuggestionModalOpened: false,\n emailSuggestions: '',\n };\n },\n watch: {\n value(newValue) {\n this.email = newValue;\n this.visible = false;\n this.debounceEmailValidation(newValue);\n },\n email(newValue) {\n this.visible = false;\n this.debounceEmailValidation(newValue);\n this.$emit('update:modelValue', newValue);\n },\n modelValue(newValue, oldValue) {\n if (newValue != oldValue && newValue == '') {\n this.email = '';\n }\n },\n },\n methods: {\n isEmailInvalid(email) {\n this.predictedEmails = this.emailTyposChecker.predictCorrectEmailsVariant(email);\n\n return this.predictedEmails && this.predictedEmails.length > 0;\n },\n\n getPredictedEmails() {\n return this.emailTyposChecker.formatCorrectEmailVariants(this.predictedEmails);\n },\n\n getMostCommonEmailDomainTypos(domain) {\n const regexpBase = domain.replace('.', '\\\\.');\n return [\n ...this.getMissingLetterDomainTypoCheckers(regexpBase),\n ...this.getExtraLetterDomainTypoCheckers(regexpBase),\n ...this.getWrongLetterDomainTypoCheckers(regexpBase),\n ];\n },\n\n getMissingLetterDomainTypoCheckers(domain) {\n return this.getEmailDomainTypoCheckers(domain,\n (index) => stringUtils.insert(domain, index + 1, '{0}'));\n },\n\n getExtraLetterDomainTypoCheckers(domain) {\n const checkers = [];\n const addChecker = (checker) => checkers.push({domain, regexp: EmailTyposChecker.createTypoRegexp(checker)});\n\n for (let i = 0; i < domain.length; i++) {\n if (this.letterRegex.test(domain[i])) {\n addChecker(stringUtils.insert(domain, i, '.'));\n\n if (i === domain.length - 1 || !this.letterRegex.test(domain[i + 1])) {\n addChecker(stringUtils.insert(domain, i + 1, '.'));\n }\n }\n }\n\n return checkers;\n },\n\n getWrongLetterDomainTypoCheckers(domain) {\n return this.getEmailDomainTypoCheckers(domain,\n (index) => stringUtils.replaceChar(domain, index, '.'));\n },\n\n getEmailDomainTypoCheckers(domain, generateCheckerRegexp) {\n return domain.split('')\n .map((char, index) => ({char, index}))\n .filter((symbol) => this.letterRegex.test(symbol.char))\n .map((symbol) => ({domain, regexp: EmailTyposChecker.createTypoRegexp(generateCheckerRegexp(symbol.index))}));\n },\n\n _showIfEmailInvalid(email) {\n if (!this.disableModalSuggestions && !this.emailTyposChecker.isEmailCorrect(this.email)) {\n const predictedCorrectEmails = this.emailTyposChecker.predictCorrectEmailsVariant(this.email);\n this.emailSuggestions = this.emailTyposChecker.formatCorrectEmailVariants(predictedCorrectEmails);\n this.isSuggestionModalOpened = true;\n } else if (!this.disableTextSuggestions && this.isEmailInvalid(email)) {\n this.visible = true;\n }\n },\n closeSuggestionModal() {\n this.isSuggestionModalOpened = false;\n },\n },\n created() {\n this.emailDomainTyposCheckers = MOST_POPULAR_EMAIL_DOMAINS.flatMap(this.getMostCommonEmailDomainTypos);\n },\n mounted() {\n this.debounceEmailValidation = debounce(this._showIfEmailInvalid.bind(this), ONE_SECOND);\n },\n });\n}\n\nexport default initEmailInput;\n","import {actionableCard} from './card/listing-card';\n\nconst SummaryTypeEnum = Object.freeze({Pack: 1, Individual: 2, Shipping: 3});\n\nconst orderSummaryMixin = {\n data() {\n return {\n totalPrice: 0,\n gst: 0,\n totalPriceWithGst: 0,\n totalPriceWithDiscount: 0,\n };\n },\n\n computed:\n {\n orderSummaryItems() {\n return this.model.items;\n },\n\n discountPercent() {\n return this.model.discountPercent;\n },\n\n discountMultiplier() {\n return !this.discountPercent ? 1 : (1 - this.discountPercent);\n },\n\n hasDiscount() {\n return this.discountMultiplier !== 1;\n },\n\n taxPercent() {\n return this.model.taxPercent;\n },\n\n hasTax() {\n return this.model.taxPercent !== 0;\n },\n },\n methods: {\n _getTotalTaxFree() {\n const orderItems = this.orderSummaryItems;\n return orderItems.reduce((col, val) => col + val.price, 0);\n },\n\n _resetTotalPrice() {\n const totalWithTaxWithoutDiscount = this._getTotalTaxFree();\n\n const totalWithTaxAndDiscount =\n Math.round((this.discountMultiplier * totalWithTaxWithoutDiscount) * 100) / 100;\n\n const totalWithoutTax = (totalWithTaxWithoutDiscount / (1 + this.taxPercent)).toFixed(2);\n const totalWithoutTaxWithDiscount =\n Math.round((this.discountMultiplier * parseFloat(totalWithoutTax)) * 100) / 100;\n\n this.totalPrice = totalWithoutTax;\n this.gst = totalWithTaxAndDiscount - totalWithoutTaxWithDiscount;\n this.totalPriceWithGst = totalWithTaxAndDiscount;\n this.totalPriceWithDiscount = totalWithoutTaxWithDiscount;\n },\n\n _getOrderItems() {\n return this.orderSummaryItems.filter((i) => i.summaryType !== SummaryTypeEnum.Shipping);\n },\n },\n\n mounted() {\n this._resetTotalPrice();\n },\n};\n\nfunction initOrderSummaryComponent(app) {\n app.component('order-summary', {\n template: '#order-summary',\n mixins: [actionableCard, orderSummaryMixin],\n props: {\n model: {required: true},\n isCompact: {default: true},\n hasActions: {default: false},\n title: null,\n },\n computed: {\n isAdvertisingPlan() {\n return this.model.advertisingPlansIds.includes(this.model.selectedPack);\n },\n },\n data() {\n return {\n listing: this.model.advertOfferTerms.listing,\n };\n },\n });\n}\n\nexport {\n initOrderSummaryComponent,\n orderSummaryMixin,\n};\n"],"names":["actionableCard","data","forceFocus","primaryAction","computed","primaryActionComponentName","concat","this","actionName","methods","setPrimaryAction","action","_this","nextTick","hidePrimaryAction","initListingCardComponent","app","listingCardBase","props","listing","required","sortIndex","type","Number","default","favoriteUrl","String","previewUrl","loadPhoneUrl","detailsUrl","recommendedAdvertsUrl","forceThumbnailForLazy","Boolean","showContactButton","thumbnailForLazy","isListingVisible","visible","showThumbnailForLazy","thumbImageUrl","coverPhoto","thumbnailHRef","sampleImageUrl","sampleHRef","hRef","priceText","hidePrice","priceTypeText","priceAreaAddon","showFloor","floorText","bedroomsNumberText","bathroomsNumberText","highlightImageText","isRecentlyDealCompleted","media","_subscribeCoverImgLoaded","that","Blazy","success","el","dataset","src","mounted","component","extends","template","mixins","googleAnalyticMixin","isAuthenticated","isClickable","fullRecommendedAdvertsUrl","id","isViewed","preview","_this2","regeneratorRuntime","mark","_callee","wrap","_context","prev","next","_markViewed","globalActions","listingType","stop","_subscribeMarkAsViewedStore","_this3","store","mutation","payload","isMobileDevice","starInfo","shareText","shareUrl","shareTrackUrl","isAdvert","isListingFavorite","isMobile","allRequiredFilled","location","href","change","value","state","engageAction","$refs","moreActionsDropdown","close","$emit","hasActions","actions","length","moreActions","LETTER_REGEXP","MOST_POPULAR_EMAIL_DOMAINS","EmailTyposChecker","_classCallCheck","emailDomainTyposCheckers","flatMap","getMostCommonEmailDomainTypos","key","domain","regexpBase","replace","_toConsumableArray","getMissingLetterDomainTypoCheckers","getExtraLetterDomainTypoCheckers","getWrongLetterDomainTypoCheckers","getIncorrectPositionOfAtSymbolCheckers","getEmailDomainTypoCheckers","index","stringUtils","checkers","addChecker","checker","push","regexp","createTypoRegexp","i","test","correct","email","arguments","undefined","emailDomain","domainPosition","lastIndexOf","emailLogin","substring","generateCheckerRegexp","split","map","char","filter","symbol","regex","RegExp","_lastCachedEmail","_cache","_predictCorrectEmailsVariant","emails","slice","join","emailParts","_emailParts","_slicedToArray","some","popularDomain","predictedEmails","_ref","_ref2","resultDomain","Set","predictedCorrectEmails","predictCorrectEmailsVariant","inheritAttrs","modelValue","inputClasses","inputGroupClasses","isInputGroup","disableTextSuggestions","disableModalSuggestions","onSuggestionAccept","Function","emits","letterRegex","predictedDomains","debounceEmailValidation","emailTyposChecker","isSuggestionModalOpened","emailSuggestions","watch","newValue","oldValue","isEmailInvalid","getPredictedEmails","formatCorrectEmailVariants","_showIfEmailInvalid","isEmailCorrect","closeSuggestionModal","created","debounce","bind","Object","freeze","Pack","Individual","Shipping"],"sourceRoot":""}