{"version":3,"file":"sim-tariffs.68920715.js","sources":["../../src/assets/img/sim/call.svg","../../src/assets/img/sim/message.svg","../../src/assets/img/sim/data.svg","../../src/assets/img/sim/remote-control.svg","../../src/components/tariff-overview-card.ts","../../src/components/order-form-existing-client.ts","../../src/components/gift-countdown-card.ts","../../src/components/order-form-new-client.ts","../../src/assets/img/sim/hbo-second.png","../../src/components/tariff-order-form.ts","../../src/components/tariff-category-picker.ts","../../src/assets/img/sim/arrow-right.svg","../../src/assets/img/sim/flat-tv.svg","../../src/components/tariff-card.vue","../../src/components/tariff-card-slider.ts","../../src/components/on-exit-modal-view.ts","../../src/components/exit-intent-content.ts","../../src/assets/img/sim/world-map.svg","../../src/assets/img/sim/piggy-bank.svg","../../src/assets/img/sim/computer-network.svg","../../src/assets/img/sim/play-movie.svg","../../src/components/sim-tariffs.vue"],"sourcesContent":["export default \"__VITE_ASSET__6817d358__\"","export default \"__VITE_ASSET__46acad3e__\"","export default \"__VITE_ASSET__2b8aca10__\"","export default \"__VITE_ASSET__d309fe9b__\"","import { defineComponent } from \"vue\";\nimport InlineSvg from \"vue-inline-svg\";\n\nimport callSvg from \"@/assets/img/sim/call.svg\";\nimport messageSvg from \"@/assets/img/sim/message.svg\";\nimport dataSvg from \"@/assets/img/sim/data.svg\";\nimport remoteSvg from \"@/assets/img/sim/remote-control.svg\";\n\nexport default defineComponent({\n template: ` \n
\n
\n

\n Vybraný balíček —\n {{ groupName }} za\n {{ priceVat }} Kč měsíčně\n

\n
\n
\n \n
\n \n
\n Speciální nabídka je platná pro zákazníky PODA.\n
\n
\n \n `,\n name: \"TariffOverviewCard\",\n props: {\n tariff: {\n type: Object,\n },\n includeIptv: {\n type: Boolean,\n default: false,\n required: false,\n },\n iptvPrice: {\n type: Number,\n default: 0,\n required: false,\n },\n },\n computed: {\n containsInfiniteVoice() {\n return this.tariff.group_id === 1;\n },\n containsInfiniteVoiceInNetwork() {\n return this.tariff.group_id === 4;\n },\n groupName() {\n if (this.includeIptv) return \"IPTV + \" + this.tariff.group_name;\n return this.tariff.group_name;\n },\n priceVat() {\n if (this.includeIptv) return this.iptvPrice + this.tariff.price_vat;\n return this.tariff.price_vat;\n },\n },\n data() {\n return {\n callSvg: callSvg,\n messageSvg: messageSvg,\n dataSvg: dataSvg,\n remoteSvg: remoteSvg,\n };\n },\n components: {\n InlineSvg,\n },\n});\n","import { defineComponent } from \"vue\";\nimport MessageAlert from \"@/components/message-alert\";\nimport type { CreateOrderResponse } from \"@/services/sim-tariffs/response/CreateOrderResponse\";\nimport type { SmsVerificationConfirmResponse } from \"@/services/sim-tariffs/response/SmsVerificationConfirmResponse\";\nimport type { SmsVerificationInitResponse } from \"@/services/sim-tariffs/response/SmsVerificationInitResponse\";\nimport { FormKit } from \"@formkit/vue\";\nimport * as Sentry from \"@sentry/vue\";\n\nconst FALLBACK_ERR_MESSAGE =\n \"Nastala neočekávaná chyba. Prosím, kontaktujte naši Zákaznickou linku na čísle 730 430 430.\";\nconst INVALID_PHONE_MESSAGE =\n \"Zadané telefonní číslo nemá platný formát. Musí obsahovat 9 cifer. První cifra musí být 6 nebo 7.\";\nconst INVALID_CLIENT_NO_MESSAGE =\n \"Zadané klientské číslo je neplatné. Pokud se Vám nedaří ověřit Vaše klientské číslo, prosím kontaktujte naši Zákaznickou linku na čísle 730 430 430.\";\nconst INVALID_CODE_MESSAGE =\n \"Zadaný ověřovací kód je neplatný. Pokud se Vám nedaří ověřit Vaše klientské číslo, prosím kontaktujte naši Zákaznickou linku na čísle 730 430 430.\";\nconst FORM_NAME = \"sim order form: existing client\";\nconst CUSTOMER_TYPE = \"existing\";\n\nexport default defineComponent({\n template: `\n
\n \n \n {{ this.stepOne.errorMessage }}\n \n\n \n\n
\n \n
\n\n
\n \n
\n \n\n
Pro přenos vašeho současného telefonního čísla nezapomeňte zaškrtnout možnost Přeji si přenést své současné telefonní číslo.
\n\n
\n \n \n {{ this.stepTwo.errorMessage }}\n \n \n \n \n \n
\n \n Vaše objednávka se zpracovává. Moment strpení, prosím.\n \n \n Vaše objednávka byla úspěšně zpracována. Děkujeme!\n \n \n \n {{\n this.stepFinal.errorMessage ??\n \"Nastala neočekávaná chyba. Prosím, kontaktujte naši Zákaznickou linku na čísle 730 430 430.\"\n }}\n \n \n \n

Objednávka byla dokončena

\n

\n Do Klientské zóny jsme vám připravili smlouvu. Prosím podepište ji, po podpisu smlouvy vám bude odeslána vaše\n nová SIM karta. Nedojde-li k podpisu smlouvy do 10 dní, bude objednávka automaticky stornována.\n

\n
\n \n \n `,\n name: \"OrderFormExistingClient\",\n props: {\n program: {\n type: Object,\n required: true,\n },\n includeIptv: {\n type: Boolean,\n default: false,\n required: false,\n },\n iptvPrice: {\n type: Number,\n default: 0,\n required: false,\n },\n gtmEventPrefix: {\n type: String,\n required: false,\n default: \"sim_order_form_\",\n },\n },\n emits: [\"stepChanged\"],\n data() {\n return {\n clientId: null,\n verificationInstanceId: null,\n verificationCode: null,\n verifiedClientId: null,\n orderCreateToken: null,\n transferNumber: false,\n phoneNoContact: null,\n phoneNoTransfer: null,\n // Steps\n stepOne: {\n isSubmitted: false,\n isPassed: false,\n errorMessage: null,\n },\n stepTwo: {\n isSubmitted: false,\n isPassed: false,\n errorMessage: null,\n },\n stepFinal: {\n isSubmitted: false,\n isPassed: false,\n errorMessage: null,\n },\n };\n },\n computed: {\n phoneNoTransferTrimmed() {\n return this.phoneNoTransfer.replace(/\\s/g, \"\");\n },\n phoneNoContactTrimmed() {\n return this.phoneNoContact.replace(/\\s/g, \"\");\n },\n },\n components: {\n MessageAlert,\n FormKit,\n },\n mounted() {\n this.$emit(\"stepChanged\", {\n current: 1,\n total: 3,\n });\n\n const search = new URLSearchParams(window.location.search);\n this.clientId = search.get(\"customer\");\n\n this.$store.direct.getters.exponeaService.track(\"order_form\", {\n form_name: FORM_NAME,\n form_state: \"opened\",\n form_step: 1,\n url: window.location.href,\n selected_tariff_id: this.program.program_id,\n selected_tariff_name: this.getTariffName(),\n selected_tariff_technology: this.getTariffTechnology(),\n });\n\n this.$store.direct.getters.gtmService.track(this.gtmEventPrefix + \"open\", {\n existing_customer: CUSTOMER_TYPE,\n sim_tariff: this.getTariffName(),\n technology: this.getTariffTechnology(),\n });\n },\n methods: {\n getTariffTechnology(): string {\n if (this.includeIptv) return \"iptv+sim\";\n return \"sim\";\n },\n getTariffName(): string {\n if (this.includeIptv) return \"IPTV + \" + this.program.name;\n return this.program.name;\n },\n async handleFocusOut(payload: FocusEvent) {\n this.$store.direct.getters.exponeaService.track(\"order_form\", {\n form_name: FORM_NAME,\n form_state: \"edited\",\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n field_key: payload.target?.name,\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n field_value: payload.target?._value,\n url: window.location.href,\n selected_tariff_id: this.program.program_id,\n selected_tariff_name: this.getTariffName(),\n selected_tariff_technology: this.getTariffTechnology(),\n });\n },\n async handleTransferNumberChange() {\n await this.$store.direct.getters.exponeaService.track(\"order_form\", {\n form_name: FORM_NAME,\n form_state: \"edited\",\n field_key: \"transfer_number\",\n field_value: this.transferNumber,\n url: window.location.href,\n selected_tariff_id: this.program.program_id,\n selected_tariff_name: this.getTariffName(),\n selected_tariff_technology: this.getTariffTechnology(),\n });\n },\n async handleSubmitStepOne() {\n // Pre-submit check\n const regex = /^[67][0-9]{8}$/;\n if (this.transferNumber && !regex.test(this.phoneNoTransferTrimmed)) {\n this.stepOne.errorMessage = INVALID_PHONE_MESSAGE;\n return;\n }\n // Pre-submit check passed\n let smsInit = {} as SmsVerificationInitResponse;\n try {\n smsInit = await this.$store.direct.getters.simTariffService.smsVerificationInit({\n client_id: parseInt(this.clientId),\n });\n } catch (error) {\n this.stepOne.isSubmitted = false;\n Sentry.captureException(error);\n }\n // Success\n if (smsInit?.code && smsInit?.code === 200) {\n this.verificationInstanceId = smsInit?.data.client.instance_id;\n this.stepOne.isSubmitted = true;\n this.stepOne.isPassed = true;\n this.$emit(\"stepChanged\", {\n current: 2,\n total: 3,\n });\n await this.$store.direct.getters.exponeaService.track(\"order_form\", {\n form_name: FORM_NAME,\n form_state: \"step_changed\",\n form_step: 2,\n url: window.location.href,\n selected_tariff_id: this.program.program_id,\n selected_tariff_name: this.getTariffName(),\n selected_tariff_technology: this.getTariffTechnology(),\n });\n return;\n }\n // Invalid Client No. format\n if (smsInit?.code && smsInit?.code === 422) {\n this.stepOne.errorMessage = INVALID_CLIENT_NO_MESSAGE;\n await this.$store.direct.getters.exponeaService.track(\"order_form\", {\n form_name: FORM_NAME,\n form_state: \"step_change_failed\",\n error_message: INVALID_CLIENT_NO_MESSAGE,\n form_step: 1,\n url: window.location.href,\n selected_tariff_id: this.program.program_id,\n selected_tariff_name: this.getTariffName(),\n selected_tariff_technology: this.getTariffTechnology(),\n });\n this.stepOne.isSubmitted = false;\n return;\n }\n // Invalid Client No. value\n else if (smsInit?.code && smsInit?.code === 404) {\n this.stepOne.errorMessage = INVALID_CLIENT_NO_MESSAGE;\n await this.$store.direct.getters.exponeaService.track(\"order_form\", {\n form_name: FORM_NAME,\n form_state: \"step_change_failed\",\n error_message: INVALID_CLIENT_NO_MESSAGE,\n form_step: 1,\n url: window.location.href,\n selected_tariff_id: this.program.program_id,\n selected_tariff_name: this.getTariffName(),\n selected_tariff_technology: this.getTariffTechnology(),\n });\n this.stepOne.isSubmitted = false;\n return;\n }\n // Any other err\n this.stepOne.errorMessage = FALLBACK_ERR_MESSAGE;\n await this.$store.direct.getters.exponeaService.track(\"order_form\", {\n form_name: FORM_NAME,\n form_state: \"step_change_failed\",\n error_message: FALLBACK_ERR_MESSAGE,\n form_step: 1,\n url: window.location.href,\n selected_tariff_id: this.program.program_id,\n selected_tariff_name: this.getTariffName(),\n selected_tariff_technology: this.getTariffTechnology(),\n });\n this.stepOne.isSubmitted = false;\n },\n async handleSubmitStepTwo() {\n let smsConfirm = {} as SmsVerificationConfirmResponse;\n try {\n smsConfirm = await this.$store.direct.getters.simTariffService.smsVerificationConfirm({\n client_id: parseInt(this.clientId),\n instance_id: parseInt(this.verificationInstanceId),\n password: this.verificationCode.toString(),\n });\n } catch (error) {\n this.stepTwo.isSubmitted = false;\n Sentry.captureException(error);\n }\n // Success\n if (smsConfirm?.code && smsConfirm?.code === 200) {\n this.stepTwo.isSubmitted = true;\n this.orderCreateToken = smsConfirm?.data?.client.token;\n this.verifiedClientId = this.clientId;\n this.stepTwo.isPassed = true;\n this.$emit(\"stepChanged\", {\n current: 3,\n total: 3,\n });\n\n await this.$store.direct.getters.exponeaService.identify({\n customer_number: this.verifiedClientId.toString(),\n });\n\n await this.$store.direct.getters.exponeaService.track(\"order_form\", {\n form_name: FORM_NAME,\n form_state: \"step_changed\",\n form_step: 3,\n url: window.location.href,\n selected_tariff_id: this.program.program_id,\n selected_tariff_name: this.getTariffName(),\n selected_tariff_technology: this.getTariffTechnology(),\n });\n await this.handleSubmitStepFinal();\n return;\n }\n // Invalid Code format\n if (smsConfirm?.code && smsConfirm?.code === 422) {\n this.stepTwo.errorMessage = INVALID_CODE_MESSAGE;\n await this.$store.direct.getters.exponeaService.track(\"order_form\", {\n form_name: FORM_NAME,\n form_state: \"step_change_failed\",\n error_message: INVALID_CODE_MESSAGE,\n form_step: 2,\n url: window.location.href,\n selected_tariff_id: this.program.program_id,\n selected_tariff_name: this.getTariffName(),\n selected_tariff_technology: this.getTariffTechnology(),\n });\n this.stepTwo.isSubmitted = false;\n return;\n }\n // Invalid Code value\n else if (smsConfirm?.code && smsConfirm?.code === 401) {\n this.stepTwo.errorMessage = INVALID_CODE_MESSAGE;\n await this.$store.direct.getters.exponeaService.track(\"order_form\", {\n form_name: FORM_NAME,\n form_state: \"step_change_failed\",\n error_message: INVALID_CODE_MESSAGE,\n form_step: 2,\n url: window.location.href,\n selected_tariff_id: this.program.program_id,\n selected_tariff_name: this.getTariffName(),\n selected_tariff_technology: this.getTariffTechnology(),\n });\n this.stepTwo.isSubmitted = false;\n return;\n }\n // Any other err\n this.stepTwo.errorMessage = FALLBACK_ERR_MESSAGE;\n await this.$store.direct.getters.exponeaService.track(\"order_form\", {\n form_name: FORM_NAME,\n form_state: \"step_change_failed\",\n error_message: FALLBACK_ERR_MESSAGE,\n form_step: 2,\n url: window.location.href,\n selected_tariff_id: this.program.program_id,\n selected_tariff_name: this.getTariffName(),\n selected_tariff_technology: this.getTariffTechnology(),\n });\n this.stepTwo.isSubmitted = false;\n },\n async handleSubmitStepFinal() {\n let submitResponse = {} as CreateOrderResponse;\n try {\n this.stepFinal.errorMessage = null;\n this.stepFinal.isSubmitted = true;\n const submitRequest = {\n token: this.orderCreateToken ?? \"\",\n client_id: this.verifiedClientId ?? 0,\n program_id: this.program.program_id ?? 0,\n transfer_phone: this.transferNumber ?? false,\n instance_id: this.verificationInstanceId ?? 0,\n phone_number: undefined as number,\n };\n if (this.transferNumber) {\n submitRequest.phone_number = this.phoneNoTransferTrimmed;\n }\n submitResponse = await this.$store.direct.getters.simTariffService.createOrder(submitRequest);\n } catch (error) {\n this.stepFinal.errorMessage = FALLBACK_ERR_MESSAGE;\n Sentry.captureException(error);\n }\n // Success\n if (submitResponse?.code && submitResponse?.code === 200) {\n await this.$store.direct.getters.exponeaService.track(\"order_form\", {\n form_name: FORM_NAME,\n form_state: \"submitted\",\n form_step: 3,\n url: window.location.href,\n selected_tariff_id: this.program.program_id,\n selected_tariff_name: this.getTariffName(),\n selected_tariff_technology: this.getTariffTechnology(),\n transfer_phone: this.transferNumber ?? false,\n phone_number: this.transferNumber ? this.phoneNoTransferTrimmed : \"\",\n });\n await this.$store.direct.getters.gtmService.track(this.gtmEventPrefix + \"submit\", {\n existing_customer: CUSTOMER_TYPE,\n sim_tariff: this.getTariffName(),\n technology: this.getTariffTechnology(),\n });\n if (typeof sessionStorage !== undefined && typeof sessionStorage.setItem === \"function\") {\n sessionStorage.setItem(\"OrderFormExistingClient.stepThree.lastSubmittedAt\", new Date().getTime().toString());\n }\n this.stepFinal.isPassed = true;\n return;\n }\n await this.$store.direct.getters.gtmService.track(this.gtmEventPrefix + \"submit_failed\", {\n existing_customer: CUSTOMER_TYPE,\n sim_tariff: this.getTariffName(),\n technology: this.getTariffTechnology(),\n });\n // Invalid Code format\n if (submitResponse?.code && submitResponse?.code === 422) {\n await this.$store.direct.getters.exponeaService.track(\"order_form\", {\n form_name: FORM_NAME,\n form_state: \"submit_failed\",\n error_message: INVALID_PHONE_MESSAGE,\n form_step: 3,\n url: window.location.href,\n selected_tariff_id: this.program.program_id,\n selected_tariff_name: this.getTariffName(),\n selected_tariff_technology: this.getTariffTechnology(),\n });\n this.stepFinal.errorMessage = INVALID_PHONE_MESSAGE;\n return;\n }\n // Any other err\n await this.$store.direct.getters.exponeaService.track(\"order_form\", {\n form_name: FORM_NAME,\n form_state: \"submit_failed\",\n error_message: FALLBACK_ERR_MESSAGE,\n form_step: 3,\n url: window.location.href,\n selected_tariff_id: this.program.program_id,\n selected_tariff_name: this.getTariffName(),\n selected_tariff_technology: this.getTariffTechnology(),\n });\n this.stepFinal.errorMessage = FALLBACK_ERR_MESSAGE;\n },\n },\n});\n","import { defineComponent } from \"vue\";\n\nexport default defineComponent({\n template: `
\n
\n
\n
\n \n
\n {{ hours }}\n
hodin
\n
\n
\n {{ minutes }}\n
minut
\n
\n
\n {{ seconds }}\n
sekund
\n
\n
\n
\n

Čas vypršel!

\n
\n
\n
\n
`,\n name: \"GiftCountdown\",\n props: [\"endTimestamp\"],\n data() {\n return {\n isExpired: null,\n end: null,\n interval: null,\n days: 0,\n minutes: 0,\n hours: 0,\n seconds: 0,\n };\n },\n mounted() {\n this.end = this.endTimestamp ? new Date(parseInt(this.endTimestamp)).getTime() : new Date().getTime();\n\n this.timerCount(this.end);\n\n this.interval = setInterval(() => {\n this.timerCount(this.end);\n }, 1000);\n },\n methods: {\n timerCount: function (end: number) {\n const now = new Date().getTime();\n const passTime = end - now;\n\n if (passTime < 0) {\n this.isExpired = true;\n clearInterval(this.interval);\n } else {\n this.calcTime(passTime);\n }\n },\n calcTime: function (dist: number) {\n this.days = Math.floor(dist / (1000 * 60 * 60 * 24));\n this.hours = Math.floor((dist % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));\n this.minutes = Math.floor((dist % (1000 * 60 * 60)) / (1000 * 60));\n this.seconds = Math.floor((dist % (1000 * 60)) / 1000);\n },\n },\n});\n","import { defineComponent } from \"vue\";\nimport MessageAlert from \"@/components/message-alert\";\nimport { FormKit } from \"@formkit/vue\";\nimport * as Sentry from \"@sentry/vue\";\n\nconst FALLBACK_ERR_MESSAGE =\n \"Nastala neočekávaná chyba. Prosím, kontaktujte naši Zákaznickou linku na čísle 730 430 430.\";\nconst FORM_NAME = \"sim order form: new client\";\nconst CUSTOMER_TYPE = \"new\";\n\nexport default defineComponent({\n template: `\n
\n\n \n \n {{ this.stepOne.errorMessage }}\n \n\n
\n \n
\n \n\n
Vše vyřídíte z domova za pár minut
\n\n
    \n
  1. Zanechte nám kontakt a my se vám co nejdříve ozveme.
  2. \n
  3. Zodpovíme vaše dotazy a v případě zájmu společně dokončíme objednávku.
  4. \n
  5. Operátorovi nahlásíte, zda chcete přenést své současné číslo nebo vám máme vytvořit nové.
  6. \n
  7. Zašleme vám přihlašovací údaje do Klientské zóny, kde na klik podepíšete smlouvu.
  8. \n
  9. Nová SIM vám do několika dní dorazí poštou. Službu IPTV budete mít dostupnou ihned.
  10. \n
\n\n
\n
\n \n Vaše objednávka se zpracovává. Moment strpení, prosím.\n \n \n Vaše objednávka byla úspěšně zpracována. Brzy se Vám ozveme.\n Děkujeme!\n \n \n \n {{\n this.stepOne.errorMessage ??\n \"Nastala neočekávaná chyba. Prosím, kontaktujte naši Zákaznickou linku na čísle 730 430 430.\"\n }}\n \n \n
\n \n `,\n name: \"OrderFormNewClient\",\n props: {\n program: {\n type: Object,\n required: true,\n },\n includeIptv: {\n type: Boolean,\n default: false,\n required: false,\n },\n iptvPrice: {\n type: Number,\n default: 0,\n required: false,\n },\n gtmEventPrefix: {\n type: String,\n required: false,\n default: \"sim_order_form_\",\n },\n },\n data() {\n return {\n clientId: null,\n verificationInstanceId: null,\n verificationCode: null,\n phoneNoContact: null,\n // Steps\n stepOne: {\n isSubmitted: false,\n isPassed: false,\n errorMessage: null,\n },\n };\n },\n emits: [\"stepChanged\"],\n mounted() {\n this.$emit(\"stepChanged\", {\n current: 1,\n total: 1,\n });\n this.$store.direct.getters.exponeaService.track(\"order_form\", {\n form_name: FORM_NAME,\n form_state: \"opened\",\n form_step: 1,\n url: window.location.href,\n selected_tariff_id: this.program.program_id,\n selected_tariff_name: this.getTariffName(),\n selected_tariff_technology: this.getTariffTechnology(),\n });\n\n this.$store.direct.getters.gtmService.track(this.gtmEventPrefix + \"open\", {\n existing_customer: CUSTOMER_TYPE,\n sim_tariff: this.getTariffName(),\n technology: this.getTariffTechnology(),\n });\n },\n computed: {\n phoneNoContactTrimmed() {\n return \"+420\" + this.phoneNoContact.replace(/\\s/g, \"\");\n },\n },\n components: {\n MessageAlert,\n FormKit,\n },\n methods: {\n getTariffTechnology(): string {\n if (this.includeIptv) return \"iptv+sim\";\n return \"sim\";\n },\n getTariffName(): string {\n if (this.includeIptv) return \"IPTV + \" + this.program.name;\n return this.program.name;\n },\n async handleFocusOut(payload: FocusEvent) {\n await this.$store.direct.getters.exponeaService.track(\"order_form\", {\n form_name: FORM_NAME,\n form_state: \"edited\",\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n field_key: payload.target?.name,\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n field_value: payload.target?._value,\n url: window.location.href,\n selected_tariff_id: this.program.program_id,\n selected_tariff_name: this.getTariffName(),\n selected_tariff_technology: this.getTariffTechnology(),\n });\n },\n async handleTransferNumberChange() {\n await this.$store.direct.getters.exponeaService.track(\"order_form\", {\n form_name: FORM_NAME,\n form_state: \"edited\",\n field_key: \"transfer_number\",\n field_value: this.phoneNoContact,\n url: window.location.href,\n selected_tariff_id: this.program.program_id,\n selected_tariff_name: this.getTariffName(),\n selected_tariff_technology: this.getTariffTechnology(),\n });\n },\n async handleSubmitStepOne() {\n try {\n const podaAuthTrack = this.$store.direct.getters.cookieService.getCookieOne(\"poda_auth_track\");\n this.stepOne.errorMessage = null;\n this.stepOne.isSubmitted = true;\n const captcha = await this.$store.direct.getters.recaptchaService.getToken(\"order\");\n const webApiResponse = await this.$store.direct.getters.webApiService.createWebOrder({\n tel_num: this.phoneNoContactTrimmed,\n order_source: \"web\",\n tariff_id: this.program.program_id,\n tariff_name: this.getTariffName(),\n tariff_technology: this.getTariffTechnology(),\n customer_type: \"b2c\",\n lead_info: this.$store.direct.getters.leadInfoService.getLeadInfo(),\n session_storage_id: this.$store.direct.getters.sessionStorageTagger.getTag(),\n persistent_storage_id: this.$store.direct.getters.localStorageTagger.getTag(),\n captcha_score: \"1\",\n is_employee: podaAuthTrack !== \"\" && podaAuthTrack !== null,\n captcha: captcha,\n });\n await this.$store.direct.getters.exponeaService.track(\"order_form\", {\n form_name: FORM_NAME,\n form_state: \"submitted\",\n form_step: 1,\n url: window.location.href,\n selected_tariff_id: this.program.program_id,\n selected_tariff_name: this.getTariffName(),\n selected_tariff_technology: this.getTariffTechnology(),\n });\n await this.$store.direct.getters.gtmService.track(this.gtmEventPrefix + \"submit\", {\n web_order_uuid: webApiResponse?.uuid ?? null,\n existing_customer: CUSTOMER_TYPE,\n sim_tariff: this.getTariffName(),\n technology: this.getTariffTechnology(),\n });\n if (typeof sessionStorage !== undefined && typeof sessionStorage.setItem === \"function\") {\n sessionStorage.setItem(\"OrderFormNewClient.stepOne.lastSubmittedAt\", new Date().getTime().toString());\n }\n this.stepOne.isPassed = true;\n } catch (error) {\n this.stepOne.errorMessage = FALLBACK_ERR_MESSAGE;\n\n Sentry.captureException(error);\n\n await this.$store.direct.getters.exponeaService.track(\"order_form\", {\n form_name: FORM_NAME,\n form_state: \"submit_failed\",\n error_message: FALLBACK_ERR_MESSAGE,\n form_step: 1,\n url: window.location.href,\n selected_tariff_id: this.program.program_id,\n selected_tariff_name: this.getTariffName(),\n selected_tariff_technology: this.getTariffTechnology(),\n });\n\n await this.$store.direct.getters.gtmService.track(this.gtmEventPrefix + \"submit_failed\", {\n existing_customer: CUSTOMER_TYPE,\n sim_tariff: this.getTariffName(),\n technology: this.getTariffTechnology(),\n });\n this.stepOne.isPassed = false;\n }\n },\n },\n});\n","export default \"__VITE_ASSET__a8d1fe12__\"","import { defineComponent } from \"vue\";\nimport TariffOverviewCard from \"@/components/tariff-overview-card\";\nimport OrderFormExistingClient from \"@/components/order-form-existing-client\";\nimport GiftCountdownCard from \"@/components/gift-countdown-card\";\nimport OrderFormNewClient from \"@/components/order-form-new-client\";\n\nimport giftSectionImage from \"@/assets/img/sim/hbo-second.png\";\n\nexport default defineComponent({\n template: `\n
\n
\n \n
\n
\n \n \n
\n
\n
\n
\n

Získejte slevu a dárek

\n \n

Časově omezená nabídka

\n
\n\n
\n

\n Objednejte si mobilní tarif a získejte od nás slevu + speciální dárek.\n

\n \n

Máte-li od nás televizi, získáte:

\n
    \n
  • \n Jednorázová sleva ve výši 200 Kč za každou\n objednanou SIM kartu\n
  • \n
  • \n Dárek za 265 Kč: kanály HBO a Disney na 1 měsíc\n ZDARMA\n
  • \n
\n \n

Máte-li od nás pouze internet, získáte:

\n
    \n
  • Jednorázová sleva ve výši 200 Kč za každou\n objednanou SIM kartu\n
  • \n
  • Dárek: PODA net.TV + HBO kanály v hodnotě 250 Kč na\n 1 měsíc ZDARMA\n
  • \n
\n
\n
\n\n \n `,\n name: \"TariffOrderForm\",\n props: {\n program: {\n type: Object,\n },\n isClient: {\n type: Boolean,\n },\n includeIptv: {\n type: Boolean,\n default: false,\n required: false,\n },\n iptvPrice: {\n type: Number,\n default: 0,\n required: false,\n },\n gtmEventPrefix: {\n type: String,\n required: false,\n default: \"sim_order_form_\",\n },\n },\n emits: [\"stepChanged\"],\n components: {\n TariffOverviewCard,\n OrderFormExistingClient,\n OrderFormNewClient,\n GiftCountdownCard,\n },\n methods: {\n async handleStepChange(payload: any) {\n this.$emit(\"stepChanged\", payload);\n },\n },\n computed: {\n offerEndsAt() {\n const now = new Date();\n // localstorage not available\n if (typeof localStorage === \"undefined\") {\n return new Date(now.getTime() + 86400000).getTime();\n }\n // try to load offer end ts from localStorage\n const expOfferEndsAt = parseInt(localStorage.getItem(\"volani.sim.expOfferEndsAt\"));\n if (expOfferEndsAt && new Date(expOfferEndsAt).getTime() > now.getTime() + 5 * 60 * 1000) {\n // Countdown end already set up and is at least 10min in the future\n return expOfferEndsAt;\n }\n // Countdown end not defined or in the past or too close to end\n const offerEndsAt = new Date(now.getTime() + 86400000).getTime();\n localStorage.setItem(\"volani.sim.expOfferEndsAt\", offerEndsAt.toString());\n return offerEndsAt;\n },\n },\n data() {\n return {\n giftSectionImage: giftSectionImage,\n };\n },\n});\n","import { defineComponent } from \"vue\";\n\nexport default defineComponent({\n template: `\n
\n \n Mám služby od PODY\n \n \n Nemám služby od PODY\n \n
\n `,\n name: \"TariffCategoryPicker\",\n emits: [\"isClientChange\"],\n props: [\"isClient\"],\n methods: {\n async setIsClient(isClient: boolean) {\n this.$emit(\"isClientChange\", isClient);\n },\n },\n});\n","export default \"__VITE_ASSET__eaa4cfa6__\"","export default \"__VITE_ASSET__44660556__\"","\n\n\n","import { defineComponent } from \"vue\";\n\nexport default defineComponent({\n template: `\n
\n
\n \n
\n

\n PODA využívá mobilní síť T-Mobile, která se vyznačuje\n širokým pokrytím, rychlostí a spolehlivostí.\n

\n
\n `,\n name: \"TariffCardSlider.vue\",\n props: {\n isClient: {\n type: Boolean,\n required: true,\n },\n showCarrierInfo: {\n type: Boolean,\n default: true,\n required: false,\n },\n },\n});\n","import { defineComponent } from \"vue\";\nimport ModalView from \"@/components/modal-view\";\n\nexport default defineComponent({\n template: `\n \n \n \n \n \n `,\n name: \"OnExitModalView\",\n components: {\n ModalView,\n },\n data() {\n return {\n lastShownAt: null,\n isOnExitModalVisible: false,\n isOnExitModalSnoozed: false,\n };\n },\n props: [\"name\"],\n methods: {\n async showOnExitModal(e: MouseEvent) {\n if (await this.shouldShowOnExitModal(e)) {\n sessionStorage.setItem(\"OnExitModalView.LastShow.\" + this.name, new Date().getTime().toString());\n\n this.isOnExitModalVisible = true;\n }\n },\n async shouldShowOnExitModal(e: any) {\n if (e.toElement || e.relatedTarget || this.isOnExitModalSnoozed || e.clientY > 0) {\n return false;\n }\n //! Order already submitted => no show\n const [newClientLastSubmit, existingClientLastSubmit] = [\n sessionStorage?.getItem(\"OrderFormNewClient.stepOne.lastSubmittedAt\"),\n sessionStorage?.getItem(\"OrderFormExistingClient.stepThree.lastSubmittedAt\"),\n ];\n if (newClientLastSubmit !== null || existingClientLastSubmit !== null) {\n return false;\n }\n //! Banner already shown this session => no show\n const lastShownAtRaw = sessionStorage.getItem(\"OnExitModalView.LastShow.\" + this.name);\n if (lastShownAtRaw) {\n const lastShownAt = parseInt(lastShownAtRaw);\n if (!isNaN(lastShownAt)) {\n this.lastShownAt = lastShownAt;\n }\n }\n //TODO: ?? Add logic here if the banner should be shown after certain time\n return this.lastShownAt === null;\n },\n async hideOnExitModal() {\n this.isOnExitModalVisible = false;\n this.isOnExitModalSnoozed = true;\n },\n },\n mounted() {\n document.addEventListener(\"mouseout\", this.showOnExitModal);\n },\n unmounted() {\n document.removeEventListener(\"mouseout\", this.showOnExitModal);\n },\n});\n","import { defineComponent } from \"vue\";\nimport MessageAlert from \"@/components/message-alert\";\nimport { FormKit } from \"@formkit/vue\";\nimport * as Sentry from \"@sentry/vue\";\n\nconst FALLBACK_ERR_MESSAGE =\n \"Nastala neočekávaná chyba. Prosím, kontaktujte naši Zákaznickou linku na čísle 730 430 430.\";\nconst FORM_NAME = \"contact me form: on-exit\";\n\nexport default defineComponent({\n template: `\n
\n
\n

Sleva na tarif PODA NEO 7,5 GB bude platit už jen několik dní

\n

\n Stále váháte? Zanechte nám na sebe kontakt. Ozveme se a rádi vám se vším pomůžeme.\n

\n \n Vaše údaje se zpracovávají. Moment strpení, prosím.\n \n \n Děkujeme.\n \n \n Nastala neočekávaná chyba. Prosím, kontaktujte naši Zákaznickou linku\n na čísle 730 430 430.\n \n \n \n \n
\n
\n
\n `,\n name: \"ExitIntentContent\",\n components: {\n MessageAlert,\n FormKit,\n },\n data() {\n return {\n isSubmitted: false,\n isPassed: false,\n errorMessage: null,\n phoneNoContact: null,\n };\n },\n computed: {\n phoneNoContactTrimmed() {\n return \"+420\" + this.phoneNoContact?.replace(/\\s/g, \"\");\n },\n },\n mounted() {\n this.trackOpen();\n },\n methods: {\n getCookie(name: string): string | null {\n const nameEQ = name + \"=\";\n const ca = document.cookie.split(\";\");\n for (let i = 0; i < ca.length; i++) {\n let c = ca[i];\n while (c.charAt(0) === \" \") c = c.substring(1, c.length);\n if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);\n }\n return null;\n },\n async trackOpen() {\n await this.$store.direct.getters.exponeaService.track(\"order_form\", {\n form_name: FORM_NAME,\n form_state: \"opened\",\n url: window.location.href,\n selected_tariff_technology: \"sim\",\n });\n },\n async handleFocusOut() {\n await this.$store.direct.getters.exponeaService.track(\"order_form\", {\n form_name: FORM_NAME,\n form_state: \"edited\",\n field_key: \"phone_no_contact\",\n field_value: this.phoneNoContactTrimmed,\n url: window.location.href,\n selected_tariff_technology: \"sim\",\n });\n },\n async handlePhoneNoContactSubmit() {\n try {\n const podaAuthTrack = this.$store.direct.getters.cookieService.getCookieOne(\"poda_auth_track\");\n this.errorMessage = null;\n this.isSubmitted = true;\n const webApiResponse = await this.$store.direct.getters.webApiService.createWebOrder({\n tel_num: this.phoneNoContactTrimmed,\n order_source: \"web\",\n tariff_technology: \"sim\",\n customer_type: \"b2c\",\n lead_info: this.$store.direct.getters.leadInfoService.getLeadInfo(),\n session_storage_id: this.$store.direct.getters.sessionStorageTagger.getTag(),\n persistent_storage_id: this.$store.direct.getters.localStorageTagger.getTag(),\n captcha: await this.$store.direct.getters.recaptchaService.getToken(\"order\"),\n is_employee: podaAuthTrack !== \"\" && podaAuthTrack !== null,\n });\n await this.$store.direct.getters.exponeaService.track(\"order_form\", {\n form_name: FORM_NAME,\n form_state: \"submitted\",\n form_step: 1,\n url: window.location.href,\n selected_tariff_technology: \"sim\",\n });\n await this.$store.direct.getters.gtmService.track(\"sim_exit_intent_submit\", {\n web_order_uuid: webApiResponse?.uuid ?? null,\n });\n this.isPassed = true;\n } catch (error) {\n this.errorMessage = FALLBACK_ERR_MESSAGE;\n await this.$store.direct.getters.exponeaService.track(\"order_form\", {\n form_name: FORM_NAME,\n form_state: \"submit_failed\",\n error_message: FALLBACK_ERR_MESSAGE,\n form_step: 1,\n url: window.location.href,\n selected_tariff_technology: \"sim\",\n });\n this.isPassed = false;\n Sentry.captureException(error);\n }\n },\n },\n});\n","export default \"__VITE_ASSET__dda46e32__\"","export default \"__VITE_ASSET__1f7289ea__\"","export default \"__VITE_ASSET__db0953a2__\"","export default \"__VITE_ASSET__eb8d7cb4__\"","