{"version":3,"file":"call-bubble.7e891fec.js","sources":["../../src/components/call-bubble.ts"],"sourcesContent":["import { defineComponent, Transition } from \"vue\";\nimport common from \"../core/core\";\nimport { mainModelService } from \"@/services/main.model.service\";\nimport { SimpleTimer } from \"@/utilities\";\nimport anime from \"animejs\";\n\nexport default defineComponent({\n name: \"CallBubble\",\n data() {\n return {\n id: \"call-bubble\",\n isCustomer: false,\n loaded: false,\n dialog: false,\n notificationIndicator: false,\n isHovered: false,\n isSuccess: false,\n isFailure: false,\n mainModelService,\n tariffsService: this.$store.direct.getters.tariffsService,\n simpleTimer: null,\n requiredSecondsElapsed: 30, //default: 30\n requiredSecondsIncrement: 60, //default: 60\n animationTimeline: null,\n };\n },\n components: {\n Transition,\n },\n methods: {\n toggleDialog(): void {\n this.notificationIndicator = false;\n this.dialog = !this.dialog;\n this.simpleTimer.setSecondsElapsed(0);\n if (this.dialog) {\n const event = \"website_interaction\";\n const payload = {\n element: \"call-bubble\",\n status: \"opened\",\n };\n this.$store.direct.getters.exponeaService.track(event, payload);\n }\n },\n enoughTimeElapsed(): boolean {\n if (this.simpleTimer == null) {\n return false;\n }\n\n return (\n this.simpleTimer.getSecondsElapsed() > 0 &&\n this.simpleTimer.getSecondsElapsed() % this.requiredSecondsElapsed == 0\n ); //30, 90, 150, 210, 270, 330, ...\n },\n resetSecondsElapsed(): void {\n if (this.enoughTimeElapsed()) {\n this.simpleTimer.setSecondsElapsed(0);\n this.requiredSecondsElapsed += this.requiredSecondsIncrement; //60\n\n if (!this.dialog && !this.isHovered) {\n this.animationTimeline.restart();\n }\n }\n },\n subscribeToPhoneInput(): void {\n this.AppService.phoneBlockSubject.subscribe(async (data) => {\n const containerTariffsPhone = document.querySelector(\".call-bubble-component #phone-block-\" + this.id);\n\n if (containerTariffsPhone) {\n const tariff = this.$store.direct.getters.tariffsService.getTariff();\n const address = this.$store.direct.getters.addressService.address;\n const hasCoverage = await this.$store.direct.getters.coverageService.getHasCoverage();\n const hasPlannedCoverage = await this.$store.direct.getters.coverageService.getHasPlannedCoverage();\n const token = await this.$store.direct.getters.recaptchaService.getToken(\"order\");\n const phoneNumber = data.code + data.number;\n // Prepare the request\n const reqBuilder = this.$store.direct.getters.createWebOrderRequestBuilderFactory.create();\n reqBuilder.setAddress(address);\n reqBuilder.setPhone(phoneNumber);\n reqBuilder.setTariff(tariff);\n reqBuilder.setHasCoverage(hasCoverage);\n reqBuilder.setHasPlannedCoverage(hasPlannedCoverage);\n reqBuilder.setRecaptcha(token);\n\n if (this.tariffsService.isCompanyTariff) {\n reqBuilder.setCustomerType(\"b2b\");\n }\n\n let webApiResponse = null;\n try {\n webApiResponse = await this.$store.direct.getters.webApiService.createWebOrder(\n await reqBuilder.getRequest()\n );\n this.phoneBlockLoading = false;\n this.isSuccess = true;\n } catch (e) {\n this.phoneBlockLoading = false;\n this.isFailure = true;\n }\n\n const event = \"phone_submit_bubble\";\n const payload = {\n web_order_uuid: webApiResponse?.uuid ?? null,\n url: window.location.pathname,\n city: address?.mesto,\n has_coverage: hasCoverage,\n phone_number: phoneNumber,\n };\n\n await this.$store.direct.getters.exponeaService.trackOncePerSession(event, payload);\n\n await this.$store.direct.getters.gtmService.trackOncePerSession(event, payload);\n }\n });\n },\n },\n async mounted() {\n const customerResponse = await this.$store.direct.getters.customerService.getIsCustomer();\n\n this.isCustomer = customerResponse.isCustomer;\n\n this.subscribeToPhoneInput();\n\n this.loaded = true;\n\n this.animationTimeline = anime.timeline({\n targets: \".call-bubble-component .call-button\",\n duration: 100,\n autoplay: false,\n });\n\n this.animationTimeline.finished.then(() => {\n this.notificationIndicator = true;\n });\n\n this.animationTimeline\n .add({ translateX: 7 })\n .add({ translateX: -7 })\n .add({ translateX: 7 })\n .add({ translateX: -7 })\n .add({ translateX: 7 })\n .add({ translateX: -7 })\n .add({ translateX: 7 })\n .add({ translateX: 0 });\n\n this.simpleTimer = new SimpleTimer(this.resetSecondsElapsed);\n },\n mixins: [common],\n});\n"],"names":["callBubble","defineComponent","mainModelService","Transition","event","payload","data","tariff","address","hasCoverage","hasPlannedCoverage","token","phoneNumber","reqBuilder","webApiResponse","_a","customerResponse","anime","SimpleTimer","common"],"mappings":"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"}